Reconectar-se a uma conversa na API 3.0 Direct Line
Se um cliente estiver usando a interface do WebSocket para receber mensagens, mas perder a conexão, talvez ele precise se reconectar. Nesse cenário, o cliente precisa gerar uma nova URL de fluxo do WebSocket que ele pode usar para se reconectar à conversa.
Gerar uma nova URL de fluxo do WebSocket
Para gerar uma nova URL de fluxo do WebSocket que pode ser usada para se reconectar a uma conversa existente, emita esta solicitação:
GET https://directline.botframework.com/v3/directline/conversations/{conversationId}?watermark={watermark_value}
Authorization: Bearer SECRET_OR_TOKEN
Nesse URI de solicitação, substitua {conversationId} pela ID de conversa e {watermark_value} pelo valor de marca-d'água (caso o parâmetro watermark
esteja disponível). O watermark
é opcional. Se o parâmetro watermark
for especificado no URI de solicitação, a conversa será reproduzida com base na marca-d'água, garantindo que nenhuma mensagem seja perdida. Se o parâmetro watermark
for omitido do URI de solicitação, apenas as mensagens recebidas após a solicitação de reconexão serão reproduzidas.
Os snippets a seguir fornecem um exemplo da solicitação de Reconexão e da resposta.
Solicitação
GET https://directline.botframework.com/v3/directline/conversations/abc123?watermark=0000a-42
Authorization: Bearer RCurR_XV9ZA.cwA.BKA.iaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0y8qbOF5xPGfiCpg4Fv0y8qqbOF5x8qbOF5xn
Resposta
Se a solicitação for bem-sucedida, a resposta conterá uma ID da conversa, um token e uma nova URL de fluxo do 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..."
}
Reconectar-se à conversa
O cliente precisa usar a nova URL de fluxo do WebSocket para se reconectar à conversa em até 60 segundos. Se a conexão não puder ser estabelecida durante esse tempo, o cliente deverá emitir outra solicitação Reconectar para gerar uma nova URL de fluxo.
Se você tiver a "Opção de autenticação avançada" habilitada nas configurações do Direct Line, poderá receber um erro 400 "MissingProperty" se não tiver um token configurado corretamente anexado à solicitação.