在“集成 → Webhook 与通知”里添加 https 地址,接收通话事件:
| 事件 | 何时发送 |
|---|---|
call.started | Agent 接起通话 |
call.ended | 通话结束,包含时长和点数 |
call.analyzed | 摘要、结果、提取字段和逐字稿已生成 |
call.transcript | 通话进行中,每隔几秒发送新增的逐字稿 |
call.tool_called | Agent 调用了你的函数:name、arguments、status、durationMs |
call.handed_off | 通话交给了另一个 Agent:fromAgentId、toAgentId |
call.transferred | 通话转接给了真人:destination |
call.voicemail | 外呼接到了语音信箱 |
call.do_not_call | 外呼时对方要求不要再打来:phone |
call.recording_ready | 双声道录音已保存:recordingUrl(24 小时内有效)、durationMs |
call.message_sent | Agent 在网页或 App 通话里给客户发了卡片:items、quickReplies |
alert.triggered | 你设置的告警(Webhook 与通知 → 告警)越过了告警线 |
alert.resolved | 该告警恢复正常 |
通话进行中的事件在 data.call 里带上通话信息(id、agentId、channel、direction、号码)。每个请求都带签名:
EvaSay-Signature: t=<unix 秒>,v1=<对 "<t>.<原始请求体>" 的 HMAC-SHA256 十六进制>
EvaSay-Delivery: <投递 ID>
用创建 Webhook 时显示的密钥校验签名,并返回 2xx 状态码。投递失败会在 1 分钟、5 分钟、30 分钟、2 小时和 12 小时后重试,请求体和 EvaSay-Delivery 不变,可以据此去重。每个 Webhook 最近的投递记录(实际发送的内容和你的接口返回的状态码)可以在工作台查看,也可以用 GET /webhooks/{id}/deliveries 读取;POST /webhooks/{id}/deliveries/{delivery_id} 会把某一条再发一次。
告警除了邮件和 alert.triggered / alert.resolved Webhook,还可以在“Webhook 与通知 → 告警 → 同时发到”里发到 Slack 频道(Incoming Webhook)、企业微信群机器人或 Telegram。
向 POST /webhooks 发送 { "url": "https://crm.example.com/evasay-events", "events": ["call.analyzed"] }。结果包含订阅和只在创建时返回的签名密钥。接收端验证 EvaSay-Signature,按 EvaSay-Delivery 去重,再更新 CRM。通话事件 Webhook 用于异步通知;通话中的工具请求直接把执行结果返回给 Agent。