Referência de API – Direct Line API 3.0

Você pode habilitar seu aplicativo cliente para se comunicar com o bot usando Direct Line API 3.0. Direct Line API 3.0 usa REST e JSON padrão do setor por HTTPS.

URI Base

Para acessar Direct Line API 3.0, use uma destas URIs base para todas as solicitações de API:

  • Para bots globais, use https://directline.botframework.com

  • Para um bot regional, insira o seguinte uri de acordo com a região selecionada:

    Região URI Base
    Europa https://europe.directline.botframework.com
    India https://india.directline.botframework.com

Dica

Uma solicitação poderá falhar se você usar o URI de base global para um bot regional, pois algumas solicitações podem ir além dos limites geográficos.

Cabeçalhos

Além dos cabeçalhos de solicitação HTTP padrão, uma solicitação de API Direct Line deve incluir um Authorization cabeçalho que especifica um segredo ou token para autenticar o cliente que está emitindo a solicitação. Especifique o Authorization cabeçalho usando este formato:

Authorization: Bearer SECRET_OR_TOKEN

Para obter detalhes sobre como obter um segredo ou token que seu cliente pode usar para autenticar suas solicitações de API Direct Line, consulte Autenticação.

Códigos de status HTTP

O código de status HTTP retornado com cada resposta indica o resultado da solicitação correspondente.

Código de status de HTTP Meaning
200 O pedido foi bem-sucedido.
201 O pedido foi bem-sucedido.
202 O pedido foi aceito para processamento.
204 A solicitação foi bem-sucedida, mas nenhum conteúdo foi retornado.
400 A solicitação foi malformada ou incorreta.
401 O cliente não está autorizado a fazer a solicitação. Geralmente, esse código de status ocorre porque o Authorization cabeçalho está ausente ou malformado.
403 O cliente não tem permissão para executar a operação solicitada. A operação pode falhar pelos seguintes motivos.
  • Um token inválido: quando a solicitação usa um token que era válido anteriormente, mas expirou, a code propriedade do erro retornado dentro do objeto ErrorResponse é definida como TokenExpired.
  • Uma violação de limite de dados: se o bot for um bot regional, mas o URI base não for regional, algumas solicitações poderão ir além dos limites geográficos.
  • Um recurso de destino inválido: o bot ou site de destino é inválido ou foi excluído.
404 O recurso solicitado não foi encontrado. Normalmente, esse código de status indica um URI de solicitação inválido.
500 Ocorreu um erro interno do servidor no serviço Direct Line.
502 O bot não está disponível ou retornou um erro. Esse é um código de erro comum.

Note

O código de status HTTP 101 é usado no caminho de conexão do WebSocket, embora isso provavelmente seja tratado pelo seu cliente WebSocket.

Errors

Qualquer resposta que especifica um código de status HTTP no intervalo 4xx ou 5xx incluirá um objeto ErrorResponse no corpo da resposta que fornece informações sobre o erro. Se você receber uma resposta de erro no intervalo 4xx, inspecione o objeto ErrorResponse para identificar a causa do erro e resolva o problema antes de reenviar a solicitação.

Note

Os códigos de status HTTP e os code valores especificados na propriedade dentro do objeto ErrorResponse são estáveis. Os valores especificados na message propriedade dentro do objeto ErrorResponse podem ser alterados ao longo do tempo.

Os snippets a seguir mostram uma solicitação de exemplo e a resposta de erro resultante.

Solicitação

POST https://directline.botframework.com/v3/directline/conversations/abc123/activities
[detail omitted]

Resposta

HTTP/1.1 502 Bad Gateway
[other headers]
{
    "error": {
        "code": "BotRejectedActivity",
        "message": "Failed to send activity: bot returned an error"
    }
}

Operações de token

Use essas operações para criar ou atualizar um token que um cliente pode usar para acessar uma única conversa.

Operation Description
Gerar token Gere um token para uma nova conversa.
Atualizar token Atualize um token.

Gerar token

Gera um token válido para uma conversa.

POST /v3/directline/tokens/generate
Conteúdo Description
Corpo da solicitação Um objeto TokenParameters
Retornos Um objeto Conversation

Atualizar token

Atualiza o token.

POST /v3/directline/tokens/refresh
Conteúdo Description
Corpo da solicitação n/a
Retornos Um objeto Conversation

Operações de conversa

Use essas operações para abrir uma conversa com seu bot e trocar atividades entre cliente e bot.

Operation Description
Iniciar Conversa Abre uma nova conversa com o bot.
Obter informações de conversa Obtém informações sobre uma conversa existente. Essa operação gera uma nova URL de fluxo do WebSocket que um cliente pode usar para se reconectar a uma conversa.
Obter atividades Recupera atividades do bot.
Enviar uma atividade Envia uma atividade para o bot.
Carregar e enviar arquivos Carrega e envia arquivos como anexos.

Iniciar a Conversa

Abre uma nova conversa com o bot.

POST /v3/directline/conversations
Conteúdo Description
Corpo da solicitação Um objeto TokenParameters
Retornos Um objeto Conversation

Obter informações de conversa

Obtém informações sobre uma conversa existente e também gera uma nova URL de fluxo do WebSocket que um cliente pode usar para se reconectar a uma conversa. Opcionalmente, você pode fornecer o watermark parâmetro no URI de solicitação para indicar a mensagem mais recente vista pelo cliente.

GET /v3/directline/conversations/{conversationId}?watermark={watermark_value}
Conteúdo Description
Corpo da solicitação n/a
Retornos Um objeto Conversation

Obter atividades

Recupera atividades do bot para a conversa especificada. Opcionalmente, você pode fornecer o watermark parâmetro no URI de solicitação para indicar a mensagem mais recente vista pelo cliente.

GET /v3/directline/conversations/{conversationId}/activities?watermark={watermark_value}
Conteúdo Description
Corpo da solicitação n/a
Retornos Um objeto ActivitySet . A resposta contém watermark como uma propriedade do ActivitySet objeto. Os clientes devem percorrer as atividades disponíveis avançando o watermark valor até que nenhuma atividade seja retornada.

Enviar uma atividade

Envia uma atividade para o bot.

POST /v3/directline/conversations/{conversationId}/activities
Conteúdo Description
Corpo da solicitação Um objeto Activity
Retornos Um ResourceResponse que contém uma id propriedade que especifica a ID da Atividade que foi enviada para o bot.

Carregar e enviar arquivos

Carrega e envia arquivos como anexos. Defina o userId parâmetro no URI da solicitação para especificar a ID do usuário que está enviando os anexos.

POST /v3/directline/conversations/{conversationId}/upload?userId={userId}
Conteúdo Description
Corpo da solicitação Para um único anexo, preencha o corpo da solicitação com o conteúdo do arquivo. Para vários anexos, crie um corpo de solicitação de várias partes que contenha uma parte para cada anexo e também (opcionalmente) uma parte para o objeto Atividade que deve servir como o contêiner para os anexos especificados. Para obter mais informações, consulte Enviar uma atividade para o bot.
Retornos Um ResourceResponse que contém uma id propriedade que especifica a ID da Atividade que foi enviada para o bot.

Note

Os arquivos carregados são excluídos após 24 horas.

Schema

O esquema Direct Line 3.0 inclui todos os objetos definidos pelo esquema do Bot Framework, bem como alguns objetos específicos para Direct Line.

Objeto ActivitySet

Define um conjunto de atividades.

Propriedade Tipo Description
atividades Activity[] Matriz de objetos activity .
marca d'água cadeia Marca d'água máxima das atividades dentro do conjunto. Um cliente pode usar o watermark valor para indicar a mensagem mais recente que viu ao recuperar atividades do bot ou ao gerar uma nova URL de fluxo do WebSocket.

Objeto Conversation

Define uma conversa Direct Line.

Propriedade Tipo Description
conversationId cadeia ID que identifica exclusivamente a conversa para a qual o token especificado é válido.
eTag cadeia Uma ETag HTTP (marca de entidade).
expires_in número Número de segundos até que o token expire.
referenceGrammarId cadeia ID da gramática de referência para este bot.
streamUrl cadeia URL do fluxo de mensagens da conversa.
token cadeia Token válido para a conversa especificada.

Objeto TokenParameters

Parâmetros para criar um token.

Propriedade Tipo Description
eTag cadeia Uma ETag HTTP (marca de entidade).
trustedOrigins string[] Origens confiáveis a serem inseridas no token.
user ChannelAccount Conta de usuário a ser inserida no token.

Activities

Para cada atividade que um cliente recebe de um bot por meio de Direct Line:

  • Cartões de anexo são preservados.
  • As URLs para anexos carregados estão ocultas com um link privado.
  • A channelData propriedade é preservada sem modificação.

Os clientes podem receber várias atividades do bot como parte de um ActivitySet.

Quando um cliente envia um Activity bot por meio de Direct Line:

  • A type propriedade especifica a atividade de tipo que está enviando (normalmente mensagem).
  • A from propriedade deve ser preenchida com uma ID de usuário, escolhida pelo cliente.
  • Anexos podem conter URLs para recursos ou URLs existentes carregados por meio do ponto de extremidade de anexo Direct Line.
  • A channelData propriedade é preservada sem modificação.
  • O tamanho total da atividade, quando serializada para JSON e criptografada, não deve exceder 256 mil caracteres. Recomendamos que você mantenha atividades abaixo de 150 mil. Se mais dados forem necessários, considere dividir a atividade ou usar anexos.

Os clientes podem enviar uma única atividade por solicitação.

Recursos adicionais