在 整合 → 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 seconds>,v1=<hex HMAC-SHA256 of "<t>.<raw body>">
EvaSay-Delivery: <delivery id>
用建立 Webhook 時顯示的 Webhook 密鑰驗證簽章,並回應 2xx 狀態。傳送失敗會在 1 分鐘、5 分鐘、30 分鐘、2 小時和 12 小時後重試,內容和 EvaSay-Delivery ID 都相同,所以可以忽略重複的。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"] } 建立 Webhook。回應包含訂閱和產生的簽章密鑰,密鑰只在建立時傳回。驗證 EvaSay-Signature、依 EvaSay-Delivery 去重,再更新你的 CRM。事件 Webhook 是非同步通知;通話中的工具會直接把結果傳回給 Agent。