ReconnectSession
この要求は、アフィニティトークンがチャットセッション用に変更されたことを示す 503 応答状況コードを受信した場合にのみ行います。503 応答状況コードを受信した場合は、既存の着信要求または発信要求をすべてキャンセルする必要があります。
発信要求に含まれるデータは、一時的に保存され、セッションが再確立されると再送信されます。ReconnectSession 要求の応答を受信したら、メッセージのポーリングを開始できます。
最初の応答は ChasitorSessionData メッセージです。このメッセージにはセッションが再確立されると復元される、前のセッションのデータが含まれます。このメッセージを受信したら、503 応答状況コードを受信したときにキャンセルされた既存のメッセージを送信できます。
構文
- URI
- https://hostname/chat/rest/System/ReconnectSession
- 適用開始バージョン
- このリソースは API バージョン 37.0 以降で使用できます。
- 形式
- JSON
- HTTP のメソッド
- GET
- 要求ヘッダー
- X-LIVEAGENT-API-VERSION
- X-LIVEAGENT-AFFINITY
- X-LIVEAGENT-SESSION-KEY
- 要求パラメータ
-
名前 型 説明 ReconnectSession.offset 数値 クライアントが受信した最新のメッセージ要求からのイベントオフセット。 - クエリパラメータ
- なし
- リクエストボディ
- なし
- レスポンスボディ
- ReconnectSession
例
REST クライアントが「503 無効なアフィニティトークン」応答を取得する場合があります。たとえば long poll 要求 (/chat/rest/System/Messages) に対して返されます。
503 応答を取得した要求の種類にかかわらず、/chat/rest/System/ReconnectSession 要求を送信して引き継ぎ処理を完了する必要があります。
ReconnectSession.offset クエリパラメータは、実際にメッセージが含まれていた最新の long poll 応答の “offset” パラメータに設定する必要があります。空の long poll 応答には “offset” は含まれません。
ReconnectSession 要求への応答は次のようになります。
resetSequence 属性は常に true に設定されます。そのため、次の要求の連番をリセットして値を affinityToken に格納し、今後のすべての要求の X-LIVEAGENT-AFFINITY ヘッダーで使用します。別の引き継ぎ処理が発生すると、resetSequence が再度更新されます。
テスト
クライアントによってこの処理が正しく処理されていることをテストするには、クライアントが 503 応答を受け取ったときに ReconnectSession 要求を送信していることを確認します。任意のプロキシツールを使用して 503 応答を模倣するか Salesforce サーバが 503 応答を送信するまで待ちます。プロキシツールが 503 応答を送信したら、期待どおりクライアントが ReconnectSession 要求を送信して新しいサーバにチャットセッションを再接続しているかテストします。サーバが実際に 503 要求を送信するようにするには、セッションを接続したままにしておき、定期メンテナンス中にサーバが再起動するのを待ちます。その後チャットセッションが新しいサーバに再接続されるかどうか確認します。ただし、定期メンテナンスは事前に通知されません。