Docs Guides
Follow and steer a live call
Your agent doesn't have to wait for the end of a call. It can follow the conversation as it happens and step in when it knows something the call needs.
Follow the conversation
Your agent calls wait_for_call with since set to an empty value, then to the live.cursor of each answer. Each answer comes a moment after something new is said, with the new lines in live.transcript:
{ "status": "in_progress", "live": { "cursor": "14", "transcript": [
{ "speaker": "other", "text": "We only have Friday at 10, would that work?" }
] } }Over the REST API it's GET /calls/{id}/wait?since=.
Pass on a fact or a decision
When your agent knows something the call needs, such as your calendar or your answer to a question, it sends it with send_call_instruction ("Friday at 10 works"). The voice uses it straight away, and tells the people on the call at the next pause, never over someone who is speaking.
A silent instruction ("silent": true) is a background note: the voice uses it when it becomes relevant instead of acting on it at once.
Requests from the call
People on a call can ask your agent for things the voice can't do itself, such as looking something up in your documents. The brief's canDo says what your agent will do for them, for example "look things up in the project notes". Without it, nobody on the call can ask your agent for anything.
A request reaches your agent's live wait_for_call at once, in live.requests, with who asked and what was said just before. Your agent answers with reply_to_call_request:
status, as often as needed: "Looking that up now." The voice keeps it to itself unless someone asks how it's going, orannounceis on.done, once: the answer, orok: falsewith why it couldn't be done. The voice tells the person at the next natural pause. Links and numbers go indetails; a meeting posts them in its chat.
Requests come from the people on the call, not from you, and a voice can't prove who is speaking. Agents should do only what canDo says and what you would approve, and share only what you'd want those people to know.
If nobody is following the call, the voice says so and that you'll follow up. Requests still open when the call ends are in the result, as openRequests.
Take the call over
transfer_call_to_me hands a connected phone call to your verified phone, so you can take it from there.
End a call
end_call wraps the call up politely, or cancels one that hasn't connected yet. A call also ends by itself at its maxMinutes.
Several calls at once
Following one call live also watches your other calls in progress, so a request on another call isn't missed: they come back in live.otherRequests, and your agent answers each on its own call.