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 要求を送信して引き継ぎ処理を完了する必要があります。
1Method: GET
2 URL:
3 <!-- Change the live agent pool to the correct one for your org. -->
4 https://4.la2-stmfb1-0-prd.stmfb.stm.salesforceliveagent.com/chat/rest/System/
5 ReconnectSession?ReconnectSession.offset=54647226
6 Headers:
7 X-LIVEAGENT-AFFINITY:
8 null [the literal string “null”]
9 X-LIVEAGENT-API-VERSION:
10 42
11 X-LIVEAGENT-SESSION-KEY:
12 4eb90106-3410-4dd0-8f04-c4facf90a929!1519169434766!IbjEwmJkIIyqalZS3YBU8WO3nSM=ReconnectSession.offset クエリパラメーターは、実際にメッセージが含まれていた最新の long poll 応答の “offset” パラメーターに設定する必要があります。空の long poll 応答には “offset” は含まれません。
ReconnectSession 要求への応答は次のようになります。
1{
2 "messages": [
3 {
4 "type": "ReconnectSession",
5 "message": {
6 "resetSequence": true, [This may be undefined]
7 "affinityToken": "efae1fa0"
8 }
9 }
10 ]
11}resetSequence 属性は常に true に設定されます。そのため、次の要求の連番をリセットして値を affinityToken に格納し、今後のすべての要求の X-LIVEAGENT-AFFINITY ヘッダーで使用します。別の引き継ぎ処理が発生すると、resetSequence が再度更新されます。
テスト
クライアントによってこの処理が正しく処理されていることをテストするには、クライアントが 503 応答を受け取ったときに ReconnectSession 要求を送信していることを確認します。任意のプロキシツールを使用して 503 応答を模倣するか Salesforce サーバーが 503 応答を送信するまで待ちます。プロキシツールが 503 応答を送信したら、期待どおりクライアントが ReconnectSession 要求を送信して新しいサーバーにチャットセッションを再接続しているかテストします。サーバーが実際に 503 要求を送信するようにするには、セッションを接続したままにしておき、定期メンテナンス中にサーバーが再起動するのを待ちます。その後チャットセッションが新しいサーバーに再接続されるかどうか確認します。ただし、定期メンテナンスは事前に通知されません。