TSplus Remote SupportとのWebhooks統合
概要
Webhooksを使用すると、TSplus Remote Supportを独自のシステム(チケッティング、CRM、SIEM、内部ツール)に接続できます。サブスクリプションでイベントが発生すると、Remote SupportはHTTPを送信します。
ポスト
イベントを説明するJSONペイロードを、あなたが管理するURLにリクエストします。
各リクエストは 暗号的に署名された サーバーがそれが本当にRemote Supportから来たものであり、改ざんされていないことを確認できるようにします。
典型的な使用例:
- サポートセッションが終了したときに、チケットを自動的に作成または更新します。
- セッションチャットのトランスクリプトを自分のストレージにアーカイブします。
- 内部通知や自動化ワークフローをトリガーします。
前提条件
Webhookを設定するには、次のことを確認してください:
- サブスクリプション 管理者 アカウント。
-
公開アクセス可能な
HTTPS
エンドポイントが受信可能
ポストリクエスト。 - サーバー上でHTTPリクエストヘッダーと生のリクエストボディを読み取る能力(署名を検証するために必要)。
Webhookの設定
-
開く TSplus Remote Support 管理コンソール。
-
左のメニューで展開してください 統合 そしてクリック ウェブフック .
-
クリック ウェブフックを追加する .
-
フォームに記入してください:
- URL — イベントを受信するHTTPSエンドポイント。
- 説明 (optional) — このエンドポイントを識別するためのラベルです。
- イベント — 少なくとも1つのイベントタイプを選択して購読してください。
-
クリック 保存 .
-
A 秘密 生成され、表示されます 一度 今すぐコピーして安全に保管してください — これは、受信リクエストの署名を確認するために使用され、再表示されることはありません。
セキュリティ: あなたの保護のために、URLは保存時に検証されます。エンドポイントは指し示します。
ローカルホストプライベート/内部IPアドレスは拒否されます。
ウェブフックの管理
Webhooksのリストから、次のことができます:
- テストイベントを送信 (フラスクアイコン)— サンプル配信をキューに追加し、エンドポイントがリクエストを受信し、受け入れることを確認できます。
- 編集 (鉛筆アイコン)— URL、説明、購読したイベントを変更するか、エンドポイントを有効/無効にします。
- 削除 (ゴミ箱アイコン) — エンドポイントを永久に削除します。
各エンドポイントは表示します ステータス :
- アクティブ — エンドポイントが有効で、イベントを受信しています。
- 無効 — エンドポイントは手動で無効にされました。
- 自動無効化 — Remote Supportはエンドポイントを自動的に無効にしました。 10回連続での配達失敗 エンドポイントを修正し、編集フォームから再度有効にしてください。
ペイロード形式
すべてのイベントは次のように配信されます。
ポスト
JSONボディと次のヘッダーを持つリクエスト:
| ヘッダー | 説明 |
|---|---|
コンテンツタイプ
|
アプリケーション/JSON
|
X-Webhook-Signature
|
生のボディのHMAC-SHA256署名、接頭辞付き
sha256=
|
X-Webhook-Id
|
一意のイベント識別子(あなたの側での冪等性に使用してください) |
X-Webhook-Timestamp
|
配達のISO 8601タイムスタンプ |
ユーザーエージェント
|
RemoteSupport-Webhook/1.0
|
すべてのイベントは共通の封筒を共有します。内容のみ
データ
イベントタイプによって変更されます:
{ "id": "evt_abc123def456", "type": "session.ended", "created_at": "2026-07-10T15:00:00Z", "subscription_key": "XXXX-XXXX-XXXX", "data": { }}
セッションが終了しました
サポートセッションが終了したときに送信されます(すべての参加者が切断されました)。ペイロードには、セッション中に収集された完全なチャットトランスクリプトが含まれています。
{ "id": "evt_xyz789ghi012", "type": "session.ended", "created_at": "2026-07-10T15:00:00Z", "subscription_key": "XXXX-XXXX-XXXX", "data": { "remote_support_id": "ABC123", "computer_name": "Front-desk PC", "started_at": "2026-07-10T14:30:00Z", "ended_at": "2026-07-10T15:00:00Z", "duration_seconds": 1800, "is_abnormal_closure": false, "chat_transcript": [ { "timestamp": "2026-07-10T14:31:00Z", "sender": "agent", "user_id": 42, "message": "Hello, how can I help you?" }, { "timestamp": "2026-07-10T14:31:30Z", "sender": "client", "message": "My screen is black" } ] }}
異常な終了ですです真実プラットフォームが予期しない中継再起動後にセッションを閉じた場合のみ。その場合、チャットトランスクリプト空です。
署名の確認
あなたのエンドポイントは、リクエストを信頼する前に常に署名を確認する必要があります。あなたのURLを知っている誰でも、偽のイベントを送信することができます。秘密がなければ、有効な署名を生成することはできません。
リクエストを確認するには:
- 読む 生のリクエストボディ 受信した正確なバイト(JSONを再シリアル化しない)。
-
コンピュート
HMAC-SHA256(rawBody, yourSecret)そしてそれを16進数でエンコードします。 -
接頭辞を付けて
sha256=それと比較してくださいX-Webhook-Signature定数時間比較を使用したヘッダー。
Node.js
const crypto = require('crypto');
function verifyWebhook(rawBody, signatureHeader, secret) { const expected = 'sha256=' + crypto .createHmac('sha256', secret) .update(rawBody, 'utf8') .digest('hex');
const a = Buffer.from(expected); const b = Buffer.from(signatureHeader || ''); return a.length === b.length && crypto.timingSafeEqual(a, b);}
Python
import hmacimport hashlib
def verify_webhook(raw_body: bytes, signature_header: str, secret: str) -> bool: expected = "sha256=" + hmac.new( secret.encode("utf-8"), raw_body, hashlib.sha256 ).hexdigest() return hmac.compare_digest(expected, signature_header or "")
配信と再試行
- あなたのエンドポイントは次のように応答する必要があります 2xx ステータスコードをできるだけ早く。リクエスト 10秒後にタイムアウトします .
- 配達が失敗した場合、Remote Supportは指数バックオフスケジュールで再試行します。 10秒, 30秒, 1分, 5分, 15分, 1時間, 4時間, 24時間 (24時間以内に最大8回の試行)
-
接続エラー、HTTPの際に再試行が発生します。
429、そして5xxレスポンス。その他4xx応答は永久的な失敗として扱われ、 ない 再試行しました。 - 後 10回連続での配信失敗 エンドポイントは 自動的に無効化されました .
同じイベントを二度処理しないようにするため(例えば、再試行後)、次を使用してください。
X-Webhook-Id
ヘッダー (または)
id
ペイロード内のフィールドを冪等性キーとして使用します。
利用可能なイベント
| イベント | 説明 |
|---|---|
セッションが終了しました
|
サポートセッションが終了しました。期間と全チャットのトランスクリプトが含まれています。 |
今後のバージョンでさらに多くのイベントタイプが追加されます。