config.conversation decides what a new call starts with. It is the answer
whenever someone wants an agent to remember, or to forget, earlier calls with the
same person.
context policy, which is a
different field — see context policies.
context
"none" | "summary" | "transcript"
default:"\"none\""
How much of the past comes into a new call.
none — the default. Every call starts clean. The agent is pointed at a brand
new conversation and is told nothing about earlier ones. Those earlier conversations
are still saved against that caller and still readable in the dashboard and over the
API; the agent does not see them.
summary — the agent is told, as background, what happened on recent calls.
One system message goes in ahead of everything else, oldest call first, each entry
carrying the call’s timestamp, its duration, its outcome where analysis produced one,
and the summary itself. It opens with a line that is doing real work:
transcript — one long conversation across every call. The stored timeline is
replayed in full, and a marker is inserted where the replay stops:
transcript costs what it says: every turn of every past call is in the context of
every turn of this one, and you pay for it on your own provider key each time. On a
caller who rings weekly, prefer summary.summary_limit
integer | null
default:"null"
How many recent calls
summary describes. Minimum 1. Leave it empty for all of
them. Read only under summary.initialize_userdata
boolean
default:"true"
Start the call already knowing what the agent learned about this person before.
Read under
summary and transcript only.userdata, not the transcript. On, the call opens
with the person’s contact record as its starting bag; anything the request supplied
is layered on top and wins. Off, the call starts with only what the request supplied.
A none call always starts empty regardless — it loads nothing, and that includes
the contact record.
The two hard rules
summary needs call analysis with its summary switched on. Those summaries are
what post-call analysis writes; without them the agent would start every call clean
and look broken. Publish refuses it:
transcript and cannot be changed. Saving a text agent
with any other value normalizes it to transcript, except summary, which is
refused outright:
initialize_userdata is still a real choice on
text — a text agent told not to start from what it knows about this person opens
each cold conversation window with an empty bag.
How a person is identified
Memory hangs off the person, not the call. That identity is:
A web call with no
contact_key gets a freshly minted single-use one, so it has
no history to continue and leaves none behind that a later call can find. Two calls
from the same person arrive as two strangers. If you set conversation.context and
your callers come back, send a contact_key.
On a phone call the identity is the pair of numbers, so a caller who rings your
other DID is a different identity, and a caller who rings from a second handset is
too.
What each mode actually loads
Setting it
Next
Call analysis
The summaries
summary mode reads, and how to switch them on.Userdata
The contact record
initialize_userdata loads.Context policies
The other
context field: what the next agent starts from on a handoff.