重新連線至 Direct Line API 3.0 中的交談
如果用戶端使用 WebSocket 介面來接收訊息,但卻失去連線,此時可能需要重新連線。 在此情況下,用戶端必須產生新的 WebSocket 串流 URL,用它來重新連線到對話。
產生新的 WebSocket 串流 URL
若要產生新的 WebSocket 串流 URL,以用來重新連線到現有對話,請發出此要求:
GET https://directline.botframework.com/v3/directline/conversations/{conversationId}?watermark={watermark_value}
Authorization: Bearer SECRET_OR_TOKEN
在此要求 URI 中,使用對話識別碼取代 {conversationId} ,以及使用 watermark 值來取代 {watermark_value} (如果有提供 watermark
參數的話)。
watermark
是選用參數。 如果要求 URI 中有指定 watermark
參數,對話會從浮水印 重新執行,以保證沒有任何訊息遺失。 如果 watermark
參數從要求 URI 中省略,則只會收到重新連線要求執行之後的訊息。
下列程式碼片段提供重新連線要求和回應的範例。
要求
GET https://directline.botframework.com/v3/directline/conversations/abc123?watermark=0000a-42
Authorization: Bearer RCurR_XV9ZA.cwA.BKA.iaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0y8qbOF5xPGfiCpg4Fv0y8qqbOF5x8qbOF5xn
回應
如果要求成功,回應會包含對話識別碼、語彙基元和新的 WebSocket 串流 URL。
HTTP/1.1 200 OK
[other headers]
{
"conversationId": "abc123",
"token": "RCurR_XV9ZA.cwA.BKA.iaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0y8qbOF5xPGfiCpg4Fv0y8qqbOF5x8qbOF5xn",
"streamUrl": "https://directline.botframework.com/v3/directline/conversations/abc123/stream?watermark=000a-4&t=RCurR_XV9ZA.cwA..."
}
重新連線到對話
用戶端必須使用新的 WebSocket 串流 URL,以在 60 秒內重新連線到對話。 如果目前無法建立連線,用戶端必須發出另一個重新連線要求來產生新的資料流程 URL。
如果您已在 Direct Line 設定中啟用「增強型驗證選項」,但未正確設定附加至要求的權杖,則可能會收到 400 "MissingProperty" 錯誤。