Reconecte-se a uma conversa em Direct Line API 3.0
Se um cliente estiver a utilizar a interface WebSocket para receber mensagens, mas perder a sua ligação, poderá ter de voltar a ligar-se. Neste cenário, o cliente deve gerar um novo URL de stream WebSocket que pode usar para reconectar-se à conversa.
Gere um novo URL de stream webSocket
Para gerar um novo URL de fluxo WebSocket que pode ser usado para reconectar-se a uma conversa existente, emita este pedido:
GET https://directline.botframework.com/v3/directline/conversations/{conversationId}?watermark={watermark_value}
Authorization: Bearer SECRET_OR_TOKEN
Neste pedido URI, substitua {conversationId} pelo ID de conversação e substitua {watermark_value} pelo valor da marca de água (se o watermark
parâmetro estiver disponível). O watermark
parâmetro é opcional. Se o watermark
parâmetro for especificado no pedido URI, a conversa reproduz-se a partir da marca de água, garantindo que não se perdem mensagens. Se o watermark
parâmetro for omitido do pedido URI, apenas as mensagens recebidas após o pedido de reconexão são reproduzidas.
Os seguintes snippets fornecem um exemplo do pedido e resposta de Reconnect.
Pedir
GET https://directline.botframework.com/v3/directline/conversations/abc123?watermark=0000a-42
Authorization: Bearer RCurR_XV9ZA.cwA.BKA.iaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0y8qbOF5xPGfiCpg4Fv0y8qqbOF5x8qbOF5xn
Resposta
Se o pedido for bem sucedido, a resposta conterá um ID para a conversação, um token e um novo URL de stream WebSocket.
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..."
}
Reconecte-se à conversa
O cliente deve utilizar o novo URL de fluxo WebSocket para voltar a ligar-se à conversação dentro de 60 segundos. Se a ligação não puder ser estabelecida durante este tempo, o cliente deve emitir outro pedido de Reconnect para gerar um novo URL de fluxo.
Se tiver "Opção de autenticação melhorada" ativada nas definições Direct Line, poderá obter um erro de 400 "Faltando Deperte" se não tiver um token corretamente configurado anexado ao pedido.