Hanging up
Hangs up is on for a new agent. Once the caller has what they needed, it asks if there’s anything else, and ends the call on a no or a goodbye, after saying goodbye itself. Add your own reason under “Also hangs up when”, like “the caller is selling something”. Switched off, the call ends when the caller hangs up, or at the agent’s longest call.
Transfers
Transfers the call hands the caller to a person. Give it up to 10 destinations, each with a name (“Sales”), an extension or number, and when to send callers there (“they want to buy”). The agent only ever picks from this list, by name, and can say something first, like “Putting you through now, one moment.”
Your phone system or carrier takes the call back and rings the number, then the agent leaves the call. So your PBX must accept transfers on the trunk, and a carrier must allow them: on Twilio, Call Transfer (SIP REFER) switched on; on Telnyx, an Outbound Voice Profile on the connection. If the transfer is refused, the call goes to your fallback. A test call in the browser doesn’t ring anyone: the agent tells you where it would have transferred.
Keys pressed on the phone
Every agent understands keys a caller presses, like an account number typed on the keypad. A run of keys is read as one entry once the caller presses # or stops for two seconds. Say in the agent’s role when it should ask for one, for example “ask for the order number; they can type it”.
Booking appointments
Connect a calendar under Tools → Booking calendar, then switch on Books appointments for the agents that use it. The agent checks the free times, offers some, reads the one the caller picks back to them, and books it. A caller who rings again can find, move or cancel the booking they made.
- Cal.com. Paste an API key from Cal.com under Settings → Developer → API keys, then pick which of your event types callers can book. Cal.com books only with an email address, so the agent asks for one, has the caller spell it and reads it back; Cal.com sends the confirmation. It also takes their name and phone number. An event type whose booking form needs more than that can’t be offered until you make the extra fields optional in Cal.com.
- Google Calendar is coming soon.
Each calendar has a time zone. Free times are offered and booked on that clock, and the agent assumes callers are on it too. One calendar per location works well: connect another and give it to that location’s agent.
Your own API
A tool is a request the agent makes to your systems during a call: check an order, look up a booking, create a ticket. Make one under Tools, then give it to any agent.
- Name and when it’s used. The agent reads “When the agent uses it” to decide, so say what it’s for and what to ask the caller first.
- The request. A method and an https address. The details the agent fills in (up to 20: text, a number, or yes or no) go in the address as
{booking_number}, and the rest in the JSON body, or the query for GET and DELETE. - Headers. Lock a header to keep its value secret, like an Authorization key. A secret value is stored encrypted and never shown again.
- Gives up after 3, 5 or 8 seconds. The caller waits while it runs, so keep it quick; the agent tells them if it fails.
Each request also carries X-Vorelai-Call-Id and, when your phone system or carrier passes it on, the caller’s number as X-Vorelai-Caller. The agent sees the first 4,000 characters of the answer. Requests don’t follow redirects, and can’t reach private or local network addresses. Use Test it on the tool to send a real request and see what comes back.
After the call: summaries and webhooks
Every phone call is summarized as it ends: what the caller wanted, who they were, a number to call back, and whether someone must get back to them. A new workspace sends it to the owner’s email, for every call. Under Notifications, change that, or add more:
- An inbox, for every call or only the calls needing a follow-up.
- A webhook, to your CRM, helpdesk or an automation. It gets a
POSTwith the call, the summary and the transcript as JSON once a call ends. Answer with any 2xx within 10 seconds, or we try again later.
Each webhook has a signing secret. The X-Vorelai-Signature header holds t= the time and v1= an HMAC-SHA256 of the time, a dot and the raw body, made with that secret. X-Vorelai-Delivery stays the same when a send is tried again, so you can skip one you already have. Test calls, and Send a test, set "test": true. Notifications → What a webhook receives shows a full example and the code to check the signature.
Every tool adds a little to what a call costs, because the agent is told about it with every reply. See What a call costs.