チャットのセッションでは、セッションのステータスが何度も変わることがあります。たとえば、チャットがボットから担当者に転送されたり、ステータスが対応中から保留中、割り当て待ちから終了へと変わったりすることがあります。インスタントメッセージのセッションのステータスに関するWebhookは、こうしたステータスの変更が発生するたびに実行されます。これにより、チームでは最新の状況をすぐに把握し、対応、担当者の割り当て、報告などをすばやく行うことができます。
実行条件
このWebhookは、インスタントメッセージのやりとり(セッション)のステータスが変わるたびに実行されます。たとえば、セッションがボットから担当者へと引き継がれた場合、セッションが保留中のステータスになった場合、担当者が変わった場合、やりとりが終了した場合などです。個々のメッセージを対象とするIM_Message_Addの処理とは異なり、この処理ではやりとり全体のステータスが対象とされます。
メモ
処理の種類:IM_Session_Status
送信されるデータのサンプル
チャットまたはインスタントメッセージのセッションのステータスが変更されるたびに、指定したURLに対して次のデータが送信されます。
[{ "payload": { "currentAssigneeId": "106554156", "sessionStatus": "ON_HOLD", "replyStatus": "ACCEPTED", "sessionOldStatus": "ENDED", "sessionId": "65403000000038063", "messagesCount": "23", "assigneeType": "AGENT", "channelId": "65403000000038011" }, "eventTime": "1751022087019", "eventType": "IM_Session_Status", "orgId": "106553778" }]
送信されるデータの項目の一覧
| 項目 |
種類 |
説明 |
| sessionId |
テキスト |
やりとりのセッションを識別するための一意のID |
| sessionStatus |
テキスト |
セッションの新しいステータスまたは現在のステータス(下記の「ステータス値」をご参照ください) |
| sessionOldStatus |
テキスト |
更新前のステータス |
| currentAssigneeId |
テキスト |
現在セッションに対応している担当者またはボットのID |
| assigneeType |
テキスト |
AGENT またはBOT(現在セッションを担当している対象) |
| replyStatus |
テキスト |
返信が受け付けられたかどうか(ACCEPTEDまたはPENDING) |
| messagesCount |
テキスト |
セッションでこれまでにやりとりされたメッセージの合計件数 |
| channelId |
テキスト |
セッションが行われているインスタントメッセージの経路ID |
| eventTime |
日時 |
Webhookが実行された時点のUnixエポック(ミリ秒) |
セッションのステータス値
ステータスの変化を正確に把握するには、sessionStatusとsessionOldStatusを組み合わせて使用します。たとえば、ACTIVEからON_HOLDへの変更は、担当者が対応中のやりとりを保留にしたことを示します。OPENからON_HOLDへの変更とは意味が異なります。
| ステータス |
意味 |
| OPEN |
セッションが作成され、割り当てを待っている状態 |
| ACTIVE |
セッションが割り当てられ、やりとりが進行中の状態 |
| ON_HOLD |
セッションが一時停止され、担当者またはボットによって保留にされた状態 |
| ENDED |
セッションが終了した状態 |
| ASSIGNED |
セッションが担当者またはボットに割り当てられた状態 |
| BLOCKED |
セッションがブロックされ、それ以降メッセージを送信できない状態 |
設定方法
ポータルでインスタントメッセージのセッションのステータスに関するWebhookを設定するには、次の手順を実行します。
設定手順
1. [設定]→[開発者向け情報]→[Webhook]の順に移動します。
2. [新しいWebhook]をクリックします。
3. 処理の選択欄で、[タブ]から[IM](インスタントメッセージ)を選択し、[処理]から[セッションのステータス]を選択します。
4. Webhook URLを入力します。ここで指定したURLに送信データが送られます。
5. 必要に応じて部門IDを指定し、特定の部門の通知だけを受信するように設定します。
6. [保存する]をクリックし、動作をテストします。
メモ:
IM_Session_Status処理では、項目のフィルターを利用できません。ステータスが変わるたびに、すべての送信データを受信します。特定のステータス変更に際してのみ処理を行うには、独自の処理でsessionStatusとsessionOldStatusを使用します。
利用例
1. 担当者へのリアルタイム割り当て:保留中のセッションへの対応
sessionStatusがON_HOLDのまま設定時間を超えた場合(例:5分間更新がない場合)、Zoho Desk APIを使用して再割り当てするか、スーパーバイザーに通知します。これにより、顧客を長時間待たせることなく対応できます。
2. SLAと対応状況のダッシュボード
ACTIVEからENDEDへの変更ごとに、sessionId、messagesCount、currentAssigneeId、eventTimeが記録されます。これらを集計すると、Zoho Deskの画面を操作せずに、平均対応時間、担当者1人あたりの1日のセッション数、保留率を測定できます。
3. ボットから担当者への引き継ぎ処理の記録
assigneeTypeがBOTからAGENTに変わったら、引き継ぎ処理が記録されます。これにより、担当者への引き継ぎなしでボットがやりとりを解決できた割合を把握できます。自動化が適切に機能しているかどうかを確認することが可能です。
4. 対応待ちの増加に関する通知
OPENステータスのセッションがcurrentAssigneeIdなしで増えている場合、対応待ちが滞留しています。未割り当ての未完了セッション数がしきい値を超えたら、スーパーバイザーに通知するか、Zoho Flowの自動処理を実行して担当件数を再配分します。
5. やりとり終了時の履歴の記録
ENDEDの処理ごとに、sessionId、messagesCount、currentAssigneeId、eventTimeを含むセッション全体の概要が記録されます。これにより、品質管理、問題解決、コンプライアンスなどに利用できる履歴データを作成できます。
6. Zoho CRMのデータの自動更新
セッションが終了したとき(sessionStatus: "ENDED")、関連するZoho Deskの問い合わせを自動で完了するか、Zoho CRMの関連する連絡先にセッション概要のメモを追加します。channelIdとsessionIdを使用し、Zoho Desk APIを通じて問い合わせを検索します。
トラブルシューティングとよくある質問
質問:Webhookを受信できません。何を確認すればよいですか?
回答:主な原因として、Webhookが無効になっている、送信先の応答が遅いまたは正しくない、Webhook作成時の検証に失敗した、などが考えられます。利用中のプランの上限を確認します。有効にできるWebhookは、プロフェッショナルプランでは5件、エンタープライズプランでは10件、アルティメットプランでは20件です。上限に達している場合、新しく作成したWebhookは無効のままになります。また、Webhookの送信先サーバーから、データの受信後5秒以内に正常な応答(HTTPステータスコード200)が返されるように設定されていることをご確認ください。Webhookを作成すると、Zoho Deskから最初に検証用のGETリクエストが指定URLに送信されます。送信先から正常な応答(HTTPステータスコード200)が返されない場合、Zoho DeskからHTTP POSTリクエストが送信され、接続確認が再試行されます。どちらも失敗すると、Webhookは作成されません。
質問:送信先から、送信先URLが削除されていることを示す応答(HTTPステータスコード410)が返されました。何が起きたのでしょうか?
回答:HTTPステータスコード410が返されると、Zoho Deskでは送信先URLが存在しなくなったと判断され、Webhookの登録が自動で解除されます。送信先を修正した後、Webhookを作成し直す必要があります。
質問:Webhookは受信できますが、どのステータス変更によって実行されたか分かりません。
回答:必ずsessionStatus(新しいステータス)とsessionOldStatus(変更前のステータス)を組み合わせて確認します。たとえば、sessionOldStatus: "ACTIVE"とsessionStatus: "ON_HOLD"の組み合わせは、対応中のチャットが保留にされたことを示します。一方、sessionOldStatus: "OPEN"とsessionStatus: "ENDED"の組み合わせは、誰も対応を開始しないままセッションが終了したことを示します。
質問:特定の部門のWebhookだけを受信できますか?
回答:はい、できます。Webhookの登録時にdepartmentIdsの一覧を指定します。経路ごとに別のチームが対応しており、各チームに関連するセッションの通知だけを受信したい場合などに役立ちます。
質問:Webhookを作成する権限がありません。
回答:Webhookの作成可否は権限ごとに設定されます。権限設定でWebhook権限が有効になっているユーザーのみが、Webhookを作成できます。Zoho Deskの管理者に、[設定]→[ユーザーと権限]→[権限]→[権限]の順に移動し、対象の権限でWebhook権限を有効にするよう依頼してください。
質問:Webhookを公開前にテストするにはどうすればよいですか?
回答:開発中は、webhook.siteやngrokなどのサービスを使用して、ローカルの送信先を外部からアクセス可能にします。テスト用URLを送信先としてWebhookを作成し、Zoho Deskでセッションの変更を再現します(例:テストチャットを開始し、保留にしてから終了します)。本番URLに切り替える前に、想定した送信データを受信できるかどうかを確認します。