Docs menu

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, or announce is on.
  • done, once: the answer, or ok: false with why it couldn't be done. The voice tells the person at the next natural pause. Links and numbers go in details; 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.