Referencia de API: DIRECT LINE API 3.0

Puede permitir que la aplicación cliente se comunique con el bot mediante Direct Line API 3.0. Direct Line API 3.0 usa REST estándar del sector y JSON a través de HTTPS.

Base URI

Para acceder a Direct Line API 3.0, use uno de estos URI base para todas las solicitudes de API:

  • En el caso de los bots globales, use https://directline.botframework.com

  • En el caso de un bot regional, escriba el siguiente URI según la región seleccionada:

    Region Base URI
    Europe https://europe.directline.botframework.com
    India https://india.directline.botframework.com

Sugerencia

Es posible que se produzca un error en una solicitud si usa el URI base global para un bot regional, ya que algunas solicitudes podrían ir más allá de los límites geográficos.

Headers

Además de los encabezados de solicitud HTTP estándar, una solicitud de API de Direct Line debe incluir un Authorization encabezado que especifique un secreto o token para autenticar al cliente que emite la solicitud. Especifique el Authorization encabezado con este formato:

Authorization: Bearer SECRET_OR_TOKEN

Para más información sobre cómo obtener un secreto o token que el cliente puede usar para autenticar sus solicitudes de API de Direct Line, consulte Autenticación.

Códigos de estado HTTP

El código de estado HTTP que se devuelve con cada respuesta indica el resultado de la solicitud correspondiente.

Código de estado HTTP Meaning
200 La solicitud tuvo éxito.
201 La solicitud tuvo éxito.
202 La solicitud ha sido aceptada para su procesamiento.
204 La solicitud se realizó correctamente, pero no se devolvió contenido.
400 La solicitud tiene un formato incorrecto o es incorrecto.
401 El cliente no está autorizado para realizar la solicitud. A menudo, este código de estado se produce porque falta el Authorization encabezado o tiene un formato incorrecto.
403 El cliente no puede realizar la operación solicitada. La operación puede producir un error por los siguientes motivos.
  • Un token no válido: cuando la solicitud usa un token que era válido anteriormente pero ha expirado, la code propiedad del error que se devuelve dentro del objeto ErrorResponse se establece TokenExpireden .
  • Infracción de límite de datos: si el bot es un bot regional, pero el URI base no es regional, algunas solicitudes pueden ir más allá de los límites geográficos.
  • Un recurso de destino no válido: el bot o sitio de destino no es válido o se eliminó.
404 No se encontró el recurso solicitado. Normalmente, este código de estado indica un URI de solicitud no válido.
500 Error interno del servidor en el servicio Direct Line.
502 El bot no está disponible o devolvió un error. Se trata de un código de error común.

Note

El código de estado HTTP 101 se usa en la ruta de acceso de conexión de WebSocket, aunque es probable que el cliente de WebSocket lo controle.

Errors

Cualquier respuesta que especifique un código de estado HTTP en el intervalo 4xx o el intervalo 5xx incluirá un objeto ErrorResponse en el cuerpo de la respuesta que proporciona información sobre el error. Si recibe una respuesta de error en el intervalo 4xx, inspeccione el objeto ErrorResponse para identificar la causa del error y resolver el problema antes de volver a enviar la solicitud.

Note

Los códigos de estado HTTP y los valores especificados en la code propiedad dentro del objeto ErrorResponse son estables. Los valores especificados en la message propiedad dentro del objeto ErrorResponse pueden cambiar con el tiempo.

Los fragmentos de código siguientes muestran una solicitud de ejemplo y la respuesta de error resultante.

Solicitud

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

Respuesta

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

Operaciones de token

Use estas operaciones para crear o actualizar un token que un cliente pueda usar para acceder a una sola conversación.

Operation Description
Generar token Genere un token para una nueva conversación.
Token de actualización Actualice un token.

Generar token

Genera un token válido para una conversación.

POST /v3/directline/tokens/generate
Contenido Description
Cuerpo de la solicitud Un objeto TokenParameters
Devolución Un objeto Conversation

Actualizar token

Actualiza el token.

POST /v3/directline/tokens/refresh
Contenido Description
Cuerpo de la solicitud n/a
Devolución Un objeto Conversation

Operaciones de conversación

Use estas operaciones para abrir una conversación con el bot y intercambiar actividades entre el cliente y el bot.

Operation Description
Iniciar conversación Abre una nueva conversación con el bot.
Obtener información de conversación Obtiene información sobre una conversación existente. Esta operación genera una nueva dirección URL de secuencia de WebSocket que un cliente puede usar para volver a conectarse a una conversación.
Obtener actividades Recupera las actividades del bot.
Enviar una actividad Envía una actividad al bot.
Cargar y enviar archivos Carga y envía archivos como datos adjuntos.

Iniciar conversación

Abre una nueva conversación con el bot.

POST /v3/directline/conversations
Contenido Description
Cuerpo de la solicitud Un objeto TokenParameters
Devolución Un objeto Conversation

Obtener información de conversación

Obtiene información sobre una conversación existente y también genera una nueva dirección URL de secuencia de WebSocket que un cliente puede usar para volver a conectarse a una conversación. Opcionalmente, puede proporcionar el watermark parámetro en el URI de solicitud para indicar el mensaje más reciente visto por el cliente.

GET /v3/directline/conversations/{conversationId}?watermark={watermark_value}
Contenido Description
Cuerpo de la solicitud n/a
Devolución Un objeto Conversation

Obtener actividades

Recupera las actividades del bot para la conversación especificada. Opcionalmente, puede proporcionar el watermark parámetro en el URI de solicitud para indicar el mensaje más reciente visto por el cliente.

GET /v3/directline/conversations/{conversationId}/activities?watermark={watermark_value}
Contenido Description
Cuerpo de la solicitud n/a
Devolución Objeto ActivitySet . La respuesta contiene watermark como propiedad del ActivitySet objeto . Los clientes deben paginar las actividades disponibles avanzando el watermark valor hasta que no se devuelva ninguna actividad.

Enviar una actividad

Envía una actividad al bot.

POST /v3/directline/conversations/{conversationId}/activities
Contenido Description
Cuerpo de la solicitud Un objeto Activity
Devolución ResourceResponse que contiene una id propiedad que especifica el identificador de la actividad que se envió al bot.

Cargar y enviar archivos

Carga y envía archivos como datos adjuntos. Establezca el userId parámetro en el URI de solicitud para especificar el identificador del usuario que envía los datos adjuntos.

POST /v3/directline/conversations/{conversationId}/upload?userId={userId}
Contenido Description
Cuerpo de la solicitud Para un único dato adjunto, rellene el cuerpo de la solicitud con el contenido del archivo. Para varios datos adjuntos, cree un cuerpo de solicitud de varias partes que contenga una parte para cada dato adjunto y también (opcionalmente) una parte para el objeto Activity que debe servir como contenedor para los datos adjuntos especificados. Para más información, consulte Envío de una actividad al bot.
Devolución ResourceResponse que contiene una id propiedad que especifica el identificador de la actividad que se envió al bot.

Note

Los archivos cargados se eliminan después de 24 horas.

Schema

El esquema Direct Line 3.0 incluye todos los objetos definidos por el esquema de Bot Framework, así como algunos objetos específicos de Direct Line.

ActivitySet (objeto)

Define un conjunto de actividades.

Propiedad Tipo Description
actividades Activity[] Matriz de objetos Activity .
marca de agua string Marca máxima de agua de las actividades dentro del conjunto. Un cliente puede usar el watermark valor para indicar el mensaje más reciente que ha visto al recuperar actividades del bot o al generar una nueva dirección URL de secuencia de WebSocket.

Objeto Conversation

Define una conversación Direct Line.

Propiedad Tipo Description
conversationId string Identificador que identifica de forma única la conversación para la que el token especificado es válido.
eTag string Una ETag HTTP (etiqueta de entidad).
expires_in número Número de segundos hasta que expire el token.
referenceGrammarId string Identificador de la gramática de referencia para este bot.
streamUrl string Dirección URL de la secuencia de mensajes de la conversación.
token string Token válido para la conversación especificada.

TokenParameters (objeto)

Parámetros para crear un token.

Propiedad Tipo Description
eTag string Una ETag HTTP (etiqueta de entidad).
trustedOrigins string[] Orígenes de confianza para insertar dentro del token.
usuario ChannelAccount Cuenta de usuario que se va a insertar en el token.

Activities

Para cada actividad que un cliente recibe de un bot a través de Direct Line:

  • Se conservan las tarjetas de datos adjuntos.
  • Las direcciones URL de los datos adjuntos cargados se ocultan con un vínculo privado.
  • La channelData propiedad se conserva sin modificaciones.

Los clientes pueden recibir varias actividades del bot como parte de un ActivitySet.

Cuando un cliente envía un Activity objeto a un bot a través de Direct Line:

  • La type propiedad especifica la actividad de tipo que envía (normalmente el mensaje).
  • La from propiedad debe rellenarse con un identificador de usuario, elegido por el cliente.
  • Los datos adjuntos pueden contener direcciones URL a los recursos o direcciones URL existentes cargados a través del punto de conexión de datos adjuntos de Direct Line.
  • La channelData propiedad se conserva sin modificaciones.
  • El tamaño total de la actividad, cuando se serializa en JSON y se cifra, no debe superar los 256 000 caracteres. Se recomienda mantener las actividades en menos de 150 000. Si se necesitan más datos, considere la posibilidad de dividir la actividad o usar datos adjuntos.

Los clientes pueden enviar una sola actividad por solicitud.

Recursos adicionales