Webhookリファレンス
Webhook を設定すると、nocall の通話完了時に指定した URL へ通話情報を HTTP POST で送信します。Webhook はエージェント単位で設定します。
Webhookを登録する
Section titled “Webhookを登録する”- nocall 管理画面で対象のエージェントを開きます。
- Webhook 設定を開きます。
- Webhook 名と送信先 URL を入力します。
- 必要に応じてカスタムヘッダーを追加し、保存します。
- テスト送信を実行し、受信側が
2xxを返すことを確認します。
カスタムヘッダー
Section titled “カスタムヘッダー”認証トークンなど、送信先が必要とするヘッダーを最大 10 件設定できます。
Authorization: Bearer YOUR_TOKENX-Webhook-Secret: YOUR_SECRETContent-Type は nocall が application/json に設定するため、カスタムヘッダーで上書きできません。
- メソッド:
POST - Content-Type:
application/json - 成功レスポンス:
2xx
ペイロード例
Section titled “ペイロード例”{ "id": "call_test_1234567890", "timestamp": "2026-07-10T15:45:05.240+09:00", "callStatus": "completed", "direction": "outbound", "from": "+815012345678", "to": "+819098765432", "duration": 120, "isVoicemail": false, "isCallback": false, "phoneNumberType": "mobile", "phoneNumberCountry": "JP", "detailsUrl": "https://console.nocall.ai/workspace/ws_xxx/project/prj_xxx/call-logs/call_xxx", "endUser": { "id": "edu_test_1234567890", "phoneNumber": "+819098765432", "attributions": { "会社名": "テスト株式会社", "部署": "営業部" }, "attributes": [ { "label": "会社名", "value": "テスト株式会社" }, { "label": "部署", "value": "営業部" } ] }, "conversation": { "startTime": "2026-07-10T15:43:05.240+09:00", "endTime": "2026-07-10T15:45:05.240+09:00", "duration": 120, "messages": [ { "role": "assistant", "content": "こんにちは。" }, { "role": "user", "content": "お願いします。" } ] }, "analysis": [ { "label": "商談化", "type": "boolean", "description": "商談化したか", "isOptional": false, "value": true }, { "label": "目標ステータス", "type": "goal_status", "description": "目標の達成状況", "isOptional": false, "value": "achieved" } ], "agent": { "id": "agt_test_1234567890", "name": "テストエージェント" }}トップレベル
Section titled “トップレベル”| フィールド | 型 | 説明 |
|---|---|---|
id |
string | 通話 ID |
timestamp |
string | Webhook 生成日時。ISO 8601 形式 |
callStatus |
string | 通話ステータス |
direction |
string | null | outbound、inbound、web、または null |
from |
string | 発信元 |
to |
string | 発信先 |
duration |
number | null | 通話時間(秒) |
isVoicemail |
boolean | 留守番電話と判定されたか |
isCallback |
boolean | コールバック通話か |
phoneNumberType |
string | null | 電話番号種別。例: mobile |
phoneNumberCountry |
string | null | 国コード。例: JP |
detailsUrl |
string | null | nocall の通話詳細 URL |
endUser |
object | null | コンタクト情報 |
conversation |
object | null | 会話情報 |
analysis |
array | null | 目標分析結果 |
agent |
object | 通話に使ったエージェント |
callStatus には preparing、ringing、completed、no_answer、failed、unreachable などが入ります。
endUser
Section titled “endUser”| フィールド | 型 | 説明 |
|---|---|---|
id |
string | コンタクト ID |
phoneNumber |
string | E.164 形式の電話番号 |
attributions |
object | 属性をラベルと値のマップで表した互換フィールド |
attributes |
array | { label: string, value: string } 形式の属性一覧 |
新しい連携では、属性の順序と重複をそのまま扱える attributes を使用してください。
conversation
Section titled “conversation”| フィールド | 型 | 説明 |
|---|---|---|
startTime |
string | null | 通話開始日時。ISO 8601 形式 |
endTime |
string | null | 通話終了日時。ISO 8601 形式 |
duration |
number | null | 通話時間(秒) |
messages |
array | null | 発話された assistant / user メッセージ |
会話が作成されていない場合、conversation は null になります。
analysis
Section titled “analysis”| フィールド | 型 | 説明 |
|---|---|---|
label |
string | 分析項目名 |
type |
string | boolean、text、number、selector、multi_selector、goal_status |
description |
string | 分析項目の説明 |
options |
string[] | 選択式項目の選択肢。該当しない場合は省略されることがあります |
isOptional |
boolean | 任意項目か |
value |
boolean | string | number | string[] | null | 分析結果 |
goal_status の value は achieved、failed、pending のいずれかです。分析結果がない場合、analysis は null になります。
analysis.value の型
Section titled “analysis.value の型”type |
value の型 |
例 |
|---|---|---|
boolean |
boolean | true |
text |
string | "折り返しを希望" |
number |
number | 5 |
selector |
string | "資料送付" |
multi_selector |
string[] | ["資料送付", "担当者連絡"] |
goal_status |
string | "achieved"、"failed"、"pending" |
| フィールド | 型 | 説明 |
|---|---|---|
id |
string | number | エージェント ID。互換性のため数値になる場合があります |
name |
string | エージェント名 |
受信側では id を文字列へ変換して扱うと安全です。
旧連携から移行する
Section titled “旧連携から移行する”古い Webhook ペイロードを利用している場合は、次のように受信処理を変更してください。
| 旧フィールド・扱い | 現行の扱い |
|---|---|
endUser.attributions |
新しい連携では endUser.attributes を使用する。attributions は互換フィールドとして現在も送信されます |
conversation.goalStatus |
削除済み。analysis から type="goal_status" の項目を参照します |
conversation.goalResult |
削除済み。必要な結果は analysis の text 項目を参照します |
agent.id を number として固定 |
string または number を受け付け、受信側で文字列へ正規化します |
select / multi_select |
現行の型名は selector / multi_selector です |
direction、duration、isVoicemail、isCallback、phoneNumberType、phoneNumberCountry、analysis は旧ペイロードに存在しなかった追加フィールドです。受信側のスキーマで未知フィールドを拒否している場合は、現行ペイロードを受け付けるよう更新してください。
