hooks 在通话的特定时刻自动做一件事,最多 10 条:on: "silence"(Agent 说完后来电者沉默 seconds 秒,3–600;来电者再开口前只触发一次)、on: "time_elapsed"(通话进行到第 seconds 秒,10–3600)或 on: "call_ending"(通话结束时)。每条的 do 最多 3 个动作:{type: "say", text}、{type: "transfer", destination?}、{type: "end_call", text?}、{type: "tool", name, args?};通话结束时的规则只能调用函数。被规则结束的通话 ended_reason 为 rule_ended。
电话通话里,来电者按的键会作为回答交给 Agent:按 # 或停顿两秒算一次输入结束。外呼时,Agent 也能按键走对方公司的电话菜单。
transfer_number 是转接人工的主号码,余额用完时来电也转到这里。transfer_destinations 可以再加几个带名称的号码,每个写上什么时候转(例如“财务:发票和退款问题”),由 Agent 选择。打开 transfer_briefing 后,Agent 转接时写一段简短介绍,接听人接起后先听到这段介绍(EvaSay 的声音,语言与通话摘要相同),再接通来电者。这类通话的 ended_reason 为 transferred。
设置 handoffs 后,Agent 可以把通话交给工作区里另一个已发布的 Agent,例如前台把预约交给预约 Agent,按 when 选择。接手的 Agent 知道之前说过的所有内容,用自己的提示词、声音、知识库、工具和交接设置继续这通电话。通话仍记在第一个 Agent 名下(列表、分析和计费),逐字稿里会标出每次交接。
通过你自己的运营商打进打出的电话里,Agent 可以把网页通话里会发成卡片的内容用短信发给对方:一条短信最多 3 项(标题、一行说明、链接),从这通电话的号码发出。发之前会先征得对方同意。用 send_to_caller 里的 sms 打开;允许的网站和预设内容与卡片共用。短信费由你的运营商收取。
"send_to_caller": {
"enabled": true,
"allowed_hosts": ["shop.example.com"],
"sms": { "enabled": true, "signature": "Acme Salon", "countries": ["CA"] }
}
signature 是每条短信开头的署名(不填时用 Agent 名称)。短信只发到和你的号码同一国家的号码,以及你加在 countries 里的国家。call.message_sent 通知你(channel 为 sms,带 status),结果以 call.message_status 通知(delivered、带 reason 的 failed 或 unconfirmed)。GET /calls/{id} 返回这通电话的 texts。