Creación de un bot con el servicio Bot Connector con Bot Connector API

El servicio Bot Connector permite al bot intercambiar mensajes con canales configurados en el Azure Portal mediante REST estándar del sector y JSON a través de HTTPS. Este tutorial le guiará a través del proceso para obtener un token de acceso de Bot Framework y utilizar el servicio Bot Connector para intercambiar mensajes con el usuario.

Obtención de un token de acceso

Importante

Si aún no lo ha hecho, debe registrar el bot con Bot Framework para obtener su identificador de aplicación y contraseña. Necesitará el AppID y la contraseña del bot para obtener un token de acceso.

Para comunicarse con el servicio Bot Connector, debe especificar un token de acceso en el encabezado Authorization de cada solicitud de API, con este formato:

Authorization: Bearer ACCESS_TOKEN

Puede obtener el token de acceso para el bot si emite una solicitud de API.

Solicitud

Para solicitar un token de acceso que se pueda usar para autenticar las solicitudes al servicio Bot Connector, emita la siguiente solicitud, reemplace MICROSOFT-APP-ID y MICROSOFT-APP-PASSWORD con el identificador de aplicación y la contraseña que obtuvo cuando registró su bot con Bot Framework.

POST https://login.microsoftonline.com/botframework.com/oauth2/v2.0/token
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&client_id=MICROSOFT-APP-ID&client_secret=MICROSOFT-APP-PASSWORD&scope=https%3A%2F%2Fapi.botframework.com%2F.default

Response

Si la solicitud se realiza correctamente, recibirá una respuesta HTTP 200 que especifica el token de acceso y la información sobre su expiración.

{
    "token_type":"Bearer",
    "expires_in":3600,
    "ext_expires_in":3600,
    "access_token":"eyJhbGciOiJIUzI1Ni..."
}

Sugerencia

Para obtener más información sobre la autenticación en el servicio Bot Connector, consulte Autenticación.

Intercambiar mensajes con el usuario

Una conversación es una serie de mensajes que se intercambian un usuario y su bot.

Recibir un mensaje del usuario

Cuando el usuario envía un mensaje, Bot Framework Connector envía una solicitud al punto de conexión que se especificó cuando se registró el bot. El cuerpo de la solicitud es un objeto Actividad. En el siguiente ejemplo se muestra el cuerpo de la solicitud que recibe un bot cuando el usuario le envía un mensaje simple.

{
    "type": "message",
    "id": "bf3cc9a2f5de...",
    "timestamp": "2016-10-19T20:17:52.2891902Z",
    "serviceUrl": "https://smba.trafficmanager.net/teams",
    "channelId": "channel's name/id",
    "from": {
        "id": "1234abcd",
        "name": "user's name"
    },
    "conversation": {
        "id": "abcd1234",
        "name": "conversation's name"
    },
    "recipient": {
        "id": "12345678",
        "name": "bot's name"
    },
    "text": "Haircut on Saturday"
}

Responder al mensaje del usuario

Cuando el punto de conexión del bot recibe una POST solicitud que representa un mensaje del usuario (por ejemplo, type = mensaje), use la información de esa solicitud para crear el objeto Activity para la respuesta.

  1. Establezca la propiedad conversation en el contenido de la propiedad conversation del mensaje del usuario.
  2. Establezca la propiedad from en el contenido de la propiedad recipient del mensaje del usuario.
  3. Establezca la propiedad recipient en el contenido de la propiedad from del mensaje del usuario.
  4. Establezca las propiedades text y attachments según corresponda.

Use la propiedad serviceUrl de la solicitud entrante para identificar el URI base que el bot debería usar para emitir su respuesta.

Para enviar la respuesta, envíe mediante POST el objeto Activity a /v3/conversations/{conversationId}/activities/{activityId}, tal como se muestra en el siguiente ejemplo. El cuerpo de esta solicitud es un objeto Activity que solicita al usuario que seleccione una hora de cita disponible. Para obtener más información sobre cómo establecer el URI base, consulte API Reference (Referencia de la API).

POST https://smba.trafficmanager.net/teams/v3/conversations/abcd1234/activities/bf3cc9a2f5de... 
Authorization: Bearer eyJhbGciOiJIUzI1Ni...
Content-Type: application/json
{
    "type": "message",
    "from": {
        "id": "12345678",
        "name": "bot's name"
    },
    "conversation": {
        "id": "abcd1234",
        "name": "conversation's name"
   },
   "recipient": {
        "id": "1234abcd",
        "name": "user's name"
    },
    "text": "I have these times available:",
    "replyToId": "bf3cc9a2f5de..."
}

En la solicitud del ejemplo, https://smba.trafficmanager.net/teams representa el URI base; el URI base para solicitudes que su bot emita puede ser distinto. Para obtener más información sobre cómo establecer el URI base, consulte API Reference (Referencia de la API).

Importante

Tal como se muestra en este ejemplo, el encabezado Authorization de cada solicitud de API que envíe debe contener la palabra Bearer (portador) seguida del token de acceso que obtuvo en Bot Framework.

Para enviar otro mensaje que permita al usuario seleccionar una hora de cita disponible al hacer clic en un botón, POST otra solicitud para el mismo punto de conexión:

POST https://smba.trafficmanager.net/teams/v3/conversations/abcd1234/activities/bf3cc9a2f5de... 
Authorization: Bearer eyJhbGciOiJIUzI1Ni...
Content-Type: application/json
{
    "type": "message",
    "from": {
        "id": "12345678",
        "name": "bot's name"
    },
    "conversation": {
        "id": "abcd1234",
        "name": "conversation's name"
   },
   "recipient": {
        "id": "1234abcd",
        "name": "user's name"
    },
    "attachmentLayout": "list",
    "attachments": [
      {
        "contentType": "application/vnd.microsoft.card.thumbnail",
        "content": {
          "buttons": [
            {
              "type": "imBack",
              "title": "10:30",
              "value": "10:30"
            },
            {
              "type": "imBack",
              "title": "11:30",
              "value": "11:30"
            },
            {
              "type": "openUrl",
              "title": "See more",
              "value": "http://www.contososalon.com/scheduling"
            }
          ]
        }
      }
    ],
    "replyToId": "bf3cc9a2f5de..."
}

Pasos siguientes

En este tutorial obtuvo un token de acceso de Bot Framework y usó el servicio Bot Connector para intercambiar mensajes con el usuario. Puede usar Bot Framework Emulator para probar y depurar el bot. Si desea compartir su bot con otros usuarios, deberá configurarlo para que se ejecute en uno o más canales.