連携 → Webhook と通知 で https のアドレスを追加すると、通話イベントを受け取れます。
| イベント | タイミング |
|---|---|
call.started | エージェントが応答した |
call.ended | 通話が終了した(通話時間とクレジット付き) |
call.analyzed | 要約、結果、抽出フィールド、文字起こしの準備ができた |
call.transcript | 通話中、数秒ごとに文字起こしの新しい行 |
call.tool_called | エージェントがあなたの関数を呼び出した:name、arguments、status、durationMs |
call.handed_off | 通話が別のエージェントに引き継がれた:fromAgentId、toAgentId |
call.transferred | 通話が担当者に転送された:destination |
call.voicemail | 発信した通話が留守番電話につながった |
call.do_not_call | 発信先の相手がもう電話しないでほしいと言った:phone |
call.recording_ready | 2 チャンネルの録音が保存された:recordingUrl(24 時間有効)、durationMs |
call.message_sent | エージェントが Web またはアプリの発信者の画面にカードを表示した: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} で 1 件を再送できます。
メールと alert.triggered / alert.resolved Webhook のほか、アラートは Webhook と通知 → アラート → ほかの送信先 で Slack チャンネル(Incoming Webhook)、WeCom のグループロボット、Telegram にも送れます。
POST /webhooks に { "url": "https://crm.example.com/evasay-events", "events": ["call.analyzed"] } を送って Webhook を作成します。レスポンスには購読と生成された署名シークレットが含まれ、シークレットは作成時にのみ返されます。EvaSay-Signature を検証し、EvaSay-Delivery で重複を排除して、CRM を更新します。イベント Webhook は非同期の通知で、通話中のツールは結果を直接エージェントに返します。