Agregar autenticación a su bot de Teams

En ocasiones, es posible que necesite crear bots en Microsoft teams que puedan tener acceso a recursos en nombre del usuario, como un servicio de correo.

En este artículo se muestra cómo usar la autenticación de SDK de Azure bot Service V4, basada en OAuth 2,0. Esto hace que sea más fácil desarrollar un bot que puede usar tokens de autenticación en función de las credenciales del usuario. La clave en todo esto es el uso de proveedores de identidades, como veremos más adelante.

OAuth 2,0 es un estándar abierto para la autenticación y autorización usado por Azure Active Directory (Azure AD) y muchos otros proveedores de identidades. Una descripción básica de OAuth 2,0 es un requisito previo para trabajar con la autenticación en Microsoft Teams.

Consulte OAuth 2 simplificado para conocer los conocimientos básicos y OAuth 2,0 para la especificación completa.

Para obtener más información sobre cómo administra el servicio de robots de Azure la autenticación, vea autenticación de usuario en una conversación.

En este artículo, aprenderá lo siguiente:

  • Cómo crear un bot habilitado para la autenticación. Usar CS-auth-Sample para controlar las credenciales de inicio de sesión de usuario y la generación del token de autenticación.
  • Cómo implementar el bot en Azure y asociarlo con un proveedor de identidades. El proveedor emite un token en función de las credenciales de inicio de sesión del usuario. El bot puede usar el token para obtener acceso a los recursos, como un servicio de correo, que requieren autenticación. Para obtener más información, vea flujo de autenticación de Microsoft Teams para bots.
  • Cómo integrar el bot en Microsoft Teams. Una vez que se ha integrado el bot, puede iniciar sesión y intercambiar mensajes con él en un chat.

Requisitos previos

Crear el grupo de recursos

El grupo de recursos y el plan de servicio no son estrictamente necesarios, pero le permiten liberar de forma cómoda los recursos que cree. Esta es una buena práctica para mantener los recursos organizados y fáciles de administrar.

Puede usar un grupo de recursos para crear recursos individuales para el marco de robots. Para el rendimiento, asegúrese de que estos recursos se encuentran en el mismo área de Azure.

  1. En el explorador, inicie sesión en Azure portal.
  2. En el panel de navegación izquierdo, seleccione grupos de recursos.
  3. En la esquina superior izquierda de la ventana que se muestra, seleccione Agregar ficha para crear un nuevo grupo de recursos. Se le pedirá que proporcione lo siguiente:
    1. Suscripción. Use la suscripción existente.
    2. Grupo de recursos. Escriba el nombre del grupo de recursos. Un ejemplo podría ser TeamsResourceGroup. Recuerde que el nombre debe ser único.
    3. En el menú desplegable región , seleccione oeste de EE. UU. o una región cercana a las aplicaciones.
    4. Seleccione el botón revisar y crear . Debería ver un banner que lee la validación pasada.
    5. Seleccione el botón crear . La creación del grupo de recursos puede tardar unos minutos.

Sugerencia

Como con los recursos que creará más adelante en este tutorial, es una buena idea anclar este grupo de recursos en el panel para facilitar el acceso. Si quiere hacerlo, seleccione el icono PIN & # 128204; en la esquina superior derecha del panel.

Crear el plan de servicio

  1. En el panel de navegación izquierdo de Azure portal, seleccione crear un recurso.
  2. En el cuadro de búsqueda, escriba plan de App Service. Seleccione la tarjeta de planeación de App Service en los resultados de la búsqueda.
  3. Seleccione Crear.
  4. Se le pedirá que proporcione la siguiente información:
    1. Suscripción. Puede usar una suscripción existente.
    2. Grupo de recursos. Seleccione el grupo que creó anteriormente.
    3. Nombre. Escriba el nombre del plan de servicio. Un ejemplo podría ser TeamsServicePlan. Recuerde que el nombre debe ser único dentro del grupo.
    4. Sistema operativo. Seleccione Windows o su sistema operativo aplicable.
    5. Región. Seleccione oeste de EE. UU. o una región cercana a sus aplicaciones.
    6. Plan de tarifa. Asegúrese de que está seleccionado el estándar S1 . Este debe ser el valor predeterminado.
    7. Seleccione el botón revisar y crear . Debería ver un banner que lee la validación pasada.
    8. Seleccione Crear. Puede tardar unos minutos en crear el plan de App Service. El plan se mostrará en el grupo de recursos.

Crear el registro de los canales de bot

El registro de los canales de bot registra el servicio web como un bot con bot Framework, siempre que tenga un identificador de aplicación de Microsoft y una contraseña de aplicación (secreto de cliente).

Importante

Solo tiene que registrar el bot si no está hospedado en Azure. Si ha creado un bot a través de Azure portal, ya está registrado con el servicio. Si ha creado el bot a través del marco de robots o AppStudio , el bot no está registrado en Azure.

  1. En Azure portal, en servicios de Azure, seleccione crear un recurso.

  2. En el cuadro Buscar, escriba "bot". En la lista desplegable, seleccione Registro de canales de bot.

  3. Seleccione el botón crear .

  4. En la hoja de registro del canal del bot , especifique la información solicitada sobre el bot.

  5. Deje el cuadro extremo de mensajería vacío por ahora, escribirá la dirección URL necesaria después de implementar el bot. En la siguiente imagen se muestra un ejemplo de la configuración de registro:

    registro de canales de aplicación de bot

  6. Haga clic en identificador y contraseña de Microsoft App y, a continuación, cree un nuevo.

  7. Haga clic en Crear identificador de aplicación en el vínculo portal de registro de aplicaciones .

  8. En la ventana de registro de la aplicación que aparece, haga clic en la pestaña registro nuevo en la parte superior izquierda.

  9. Escriba el nombre de la aplicación de bot que está registrando, hemos usado BotTeamsAuth (debe seleccionar su propio nombre único).

  10. Para los tipos de cuenta admitidos , seleccione cuentas en cualquier directorio de la organización (cualquier directorio de Azure ad-multiinquilino) y cuentas personales de Microsoft (por ejemplo, Skype, Xbox).

  11. Haga clic en el botón registrar . Una vez completado, Azure muestra la página de información general de la aplicación.

  12. Copiar y guardar en un archivo el valor del identificador de la aplicación (cliente) .

  13. En el panel izquierdo, haga clic en certificado y secretos.

    1. En clientes secretos, haga clic en nuevo secreto de cliente.
    2. Agregue una descripción para identificar este secreto con respecto a otros que puede que tenga que crear para esta aplicación.
    3. El valor establecido expira en la selección.
    4. Haga clic en Agregar.
    5. Copie el secreto de cliente y guárdelo en un archivo.
  14. Vuelva a la ventana de registro del canal de bot y copie el identificador de aplicación y el secreto de cliente en los cuadros identificador de aplicación y contraseña de Microsoft , respectivamente.

  15. Haga clic en Aceptar.

  16. Por último, haga clic en crear.

Una vez que Azure haya creado el recurso de registro, se incluirá en la lista de grupos de recursos.

Grupo de registro de canales de aplicación de bot

Una vez que se haya creado el registro de los canales de bot, deberá habilitar el canal de Teams.

  1. En Azure portal, en servicios de Azure, seleccione el registro del canal de bot que acaba de crear.
  2. En el panel izquierdo, haga clic en canales.
  3. Haga clic en el icono de Microsoft Teams y elija Guardar.

Nota

El recurso de registro de los canales de bot mostrará la región global aunque haya seleccionado oeste de EE. UU.. Esto es lo que se espera.

Para obtener más información, consulte crear un bot para Teams.

Crear el proveedor de identidades

Necesita un proveedor de identidad que se pueda usar para la autenticación. En este procedimiento, usará un proveedor de Azure AD; también se pueden usar otros proveedores de identidades compatibles con Azure AD.

  1. En el panel de navegación izquierdo de Azure portal, seleccione Azure Active Directory.

    Sugerencia

    Deberá crear y registrar este recurso de Azure AD en un espacio empresarial en el que pueda dar su consentimiento para delegar permisos solicitados por una aplicación. Para obtener instrucciones sobre cómo crear un inquilino, vea obtener acceso al portal y crear un inquilino.

  2. En el panel izquierdo, seleccione registros de aplicaciones.

  3. En el panel derecho, seleccione la pestaña registro nuevo , en la parte superior izquierda.

  4. Se le pedirá que proporcione la siguiente información:

    1. Nombre. Escriba el nombre de la aplicación. Un ejemplo podría ser BotTeamsIdentity. Recuerde que el nombre debe ser único.
    2. Seleccione los tipos de cuenta admitidos para su aplicación. Seleccione cuentas en cualquier directorio de la organización (cualquier directorio de Azure ad-multiinquilino) y cuentas personales de Microsoft (por ejemplo, Skype, Xbox).
    3. Para el URI de redireccionamiento:
      ✓seleccione Web.
      ✓ establece la dirección URL en https://token.botframework.com/.auth/web/redirect .
    4. Seleccione registrar.
  5. Una vez creado, Azure muestra la página de información general de la aplicación. Copie y guarde la siguiente información en un archivo:

    1. Valor del identificador de la aplicación (cliente) . Este valor se usará más adelante como identificador de cliente al registrar esta aplicación de identidad de Azure en el bot.
    2. El valor del identificador de directorio (tenant) . También usará este valor más adelante como identificador de inquilino para registrar esta aplicación de identidad de Azure en su bot.
  6. En el panel izquierdo, seleccione certificados & secretos para crear un secreto de cliente para la aplicación.

    1. En Client Secrets, seleccione ➕ nuevo secreto de cliente.
    2. Agregue una descripción para identificar este secreto con respecto a otros que puede que necesite crear para esta aplicación, como aplicación de identidad de bot en Teams.
    3. El valor establecido expira en la selección.
    4. Elija Agregar.
    5. Antes de salir de esta página, Anote el secreto. Este valor se usará más adelante como secreto de cliente al registrar la aplicación de Azure ad en el bot.

Configurar la conexión del proveedor de identidad y registrarla con el bot

  1. En el portal de Azure, seleccione su grupo de recursos en el panel.

  2. Seleccione el vínculo de registro del canal de bot.

  3. En la página recurso, seleccione configuración.

  4. En configuración de conexión de OAuth cerca de la parte inferior de la página, seleccione Agregar configuración.

  5. Complete el formulario de la siguiente manera:

    1. Nombre. Escriba un nombre para la conexión. Usará este nombre en el bot en el appsettings.json archivo. Por ejemplo BotTeamsAuthADv1.

    2. Proveedor de servicios. Seleccione Azure Active Directory. Una vez que seleccione esto, se mostrarán los campos específicos de Azure AD.

    3. Identificador de cliente. Escriba el identificador de la aplicación (cliente) que anotó para su aplicación de proveedor de identidades de Azure en los pasos anteriores.

    4. Secreto de cliente. Escriba el secreto que anotó para su aplicación de proveedor de identidades de Azure en los pasos anteriores.

    5. Tipo de concesión. Entrar authorization_code .

    6. Dirección URL de inicio de sesión. Entrar https://login.microsoftonline.com .

    7. Identificador de inquilino, escriba el identificador de directorio (inquilino) que anotó anteriormente para la aplicación de identidad de Azure o Common , según el tipo de cuenta compatible que se haya seleccionado cuando se creó la aplicación de proveedor de identidad. Para decidir qué valor asignar, siga estos criterios:

      • Si seleccionó solo cuentas en este directorio de la organización (solo Microsoft-inquilino único) o cuentas en cualquier directorio de la organización (Microsoft AAD Directory-multiinquilino) , escriba el identificador de inquilino que ha registrado anteriormente para la aplicación de AAD. Este será el inquilino asociado con los usuarios que se pueden autenticar.

      • Si seleccionó cuentas en cualquier directorio de la organización (cualquier espacio empresarial de AAD y cuentas personales de Microsoft, por ejemplo, Skype, Xbox, Outlook), escriba la palabra Common en lugar de un identificador de inquilino. De lo contrario, la aplicación de AAD comprobará en el inquilino cuyo identificador se haya seleccionado y excluya las cuentas personales de Microsoft.

    h. En dirección URL del recurso, escriba https://graph.microsoft.com/ . No se usa en el ejemplo de código actual.
    sigo. Deje los ámbitos en blanco. La siguiente imagen es un ejemplo:

    la cadena de conexión de autenticación de la aplicación bots de Microsoft Teams Adv1

  6. Haga clic en Guardar.

Probar la conexión

  1. Seleccione la entrada de conexión para abrir la conexión que acaba de crear.

  2. Seleccione probar conexión en la parte superior del panel configuración de conexión del proveedor de servicios .

  3. La primera vez que lo haga, se abrirá una nueva ventana del explorador en la que se le pedirá que seleccione una cuenta. Seleccione el que desee usar.

  4. A continuación, se le pedirá que lo permita al proveedor de identidades para usar sus datos (credenciales). La siguiente imagen es un ejemplo:

    la cadena de conexión de autenticación de la aplicación bots de Microsoft Teams Adv1

  5. Seleccione Aceptar.

  6. Esto debería redirigirlo a una conexión de prueba con < el nombre de-conexión-nombre> Página realizada correctamente . Actualice la página si recibe un error. La siguiente imagen es un ejemplo:

la cadena de conexión de autenticación de la aplicación bots de Microsoft Teams Adv1

El código de bot usa el nombre de la conexión para recuperar los tokens de autenticación de usuario.

Preparar el código de ejemplo de bot

Una vez finalizada la configuración preliminar, vamos a centrarse en la creación del bot que se va a usar en este artículo.

  1. Clone CS-auth-Sample.

  2. Inicie Visual Studio.

  3. En la barra de herramientas , seleccione archivo > abrir > proyecto/solución y abra el proyecto de bot.

  4. En C#, actualice appSettings. JSON de la siguiente manera:

    • Establezca ConnectionName el nombre de la conexión del proveedor de identidad que agregó al registro del canal del bot. El nombre usado en este ejemplo es BotTeamsAuthADv1.
    • Establezca MicrosoftAppId el identificador de la aplicación de bot que guardó en el momento del registro del canal de bot? n.
    • Establezca MicrosoftAppPassword el secreto de cliente que guardó en el momento del registro del canal de bot?
    • Establezca el ConnectionName como el nombre de la conexión del proveedor de identidad.

    Según los caracteres del secreto de bot, es posible que deba omitir la contraseña XML. Por ejemplo, cualquier "y" comercial (&) tendrá que codificarse como &amp; .

    {
      "MicrosoftAppId": "",
      "MicrosoftAppPassword": "",
      "ConnectionName": ""
    }
    
  5. En el explorador de soluciones, vaya a la TeamsAppManifest carpeta, Abra manifest.json y defina id y botId el identificador de la aplicación de Bot que guardó en el momento del registro del canal de bot? n.

Implementar el bot en Azure

Para implementar el bot, siga los pasos descritos en How to deploy Your bot to Azure.

Como alternativa, en Visual Studio, puede seguir estos pasos:

  1. En el Explorador de soluciones de Visual Studio, seleccione y mantenga presionado (o haga clic con el botón derecho) en el nombre del proyecto.

  2. En el menú desplegable, seleccione publicar.

  3. En la ventana que se muestra, seleccione el nuevo vínculo.

  4. En la ventana de diálogo, seleccione servicio de aplicaciones a la izquierda y crear nuevo a la derecha.

  5. Seleccione el botón publicar .

  6. En la siguiente ventana de diálogo, escriba la información necesaria. A continuación puede ver un ejemplo:

    auth-App-Service

  7. Seleccione Crear.

  8. Si la implementación se completa correctamente, debería verse reflejada en Visual Studio. Además, se muestra una página en el explorador predeterminado que indica que su bot está listo. La dirección URL será similar a esta: https://botteamsauth.azurewebsites.net/ . Guárdelo en un archivo.

  9. En el explorador, vaya a Azure portal.

  10. Compruebe el grupo de recursos, el bot debe aparecer junto con los otros recursos. La siguiente imagen es un ejemplo:

    Teams-bot-auth-App-Service-Group

  11. En el grupo de recursos, seleccione el nombre de registro del canal del bot (vínculo).

  12. En el panel izquierdo, seleccione configuración.

  13. En el cuadro extremo de mensajería , escriba la dirección URL que se ha obtenido anteriormente y, a continuación, api/messages . Este es un ejemplo: https://botteamsauth.azurewebsites.net/api/messages .

  14. Seleccione el botón Guardar en la esquina superior izquierda.

Probar el bot con el emulador

Si aún no lo ha hecho, instale el emulador de Microsoft bot Framework. Vea también depurar con el emulador.

Para que el inicio de sesión de ejemplo de bot funcione, debe configurar el emulador como se muestra a continuación.

Configurar el emulador para la autenticación

Si un bot requiere autenticación, debe configurar el emulador tal y como se muestra a continuación.

  1. Inicie el emulador.
  2. En el emulador, seleccione el icono de engranaje ⚙ en la parte inferior izquierda o la pestaña configuración del emulador en la esquina superior derecha.
  3. Active la casilla para usar los tokens de autenticación de la versión 1,0.
  4. Escriba la ruta de acceso local a la herramienta ngrok . Consulte el wikidel emulador/ngrok de la integración de túneles de bot Framework. Para obtener más información sobre herramientas, consulte ngrok.
  5. Para activar la casilla, ejecute ngrok cuando se inicie el emulador.
  6. Seleccione el botón Guardar .

Cuando el bot muestra una tarjeta de inicio de sesión y el usuario selecciona el botón de inicio de sesión, el emulador abre una página que el usuario puede usar para iniciar sesión con el proveedor de autenticación. Una vez que el usuario lo hace, el proveedor genera un token de usuario y lo envía al bot. Después de eso, el bot puede actuar en nombre del usuario.

Probar el bot localmente

Una vez que haya configurado el mecanismo de autenticación, puede realizar las pruebas de bot reales.

  1. Ejecute el ejemplo de bot de forma local en el equipo, a través de Visual Studio, por ejemplo.

  2. Inicie el emulador.

  3. Seleccione el botón abrir bot .

  4. En la dirección URL del bot, escriba la dirección URL local del bot? n. Normalmente, http://localhost:3978/api/messages .

  5. En el identificador de aplicación de Microsoft , escriba el identificador de aplicación del bot appsettings.json .

  6. En la contraseña de aplicación de Microsoft , escriba la contraseña de aplicación del bot desde el appsettings.json .

  7. Seleccione conectar.

  8. Una vez que el bot esté funcionando, escriba el texto para mostrar la tarjeta de inicio de sesión.

  9. Seleccione el botón iniciar sesión .

  10. Se muestra un cuadro de diálogo emergente para confirmar la dirección URL abierta. Esto permite que el usuario del bot (usted) se autentique.

  11. Seleccione confirmar.

  12. Si se le solicita, seleccione la cuenta de usuario correspondiente.

  13. En función de la configuración que haya usado para el emulador, puede obtener una de las siguientes opciones:

    1. Usar el código de comprobación de inicio de sesión
      ✓ se abre una ventana en la que se muestra el código de validación.
      ✓ copiar y escriba el código de validación en el cuadro chat para completar el inicio de sesión.
    2. Uso de tokens de autenticación.
      ✓ ha iniciado sesión en función de sus credenciales.

    La siguiente imagen es un ejemplo de la interfaz de usuario de bot una vez que ha iniciado sesión:

    emulador de inicio de sesión de bot auth

  14. Si selecciona cuando el robot le pregunta si desea ver el token?, obtendrá una respuesta similar a la siguiente:

    token del emulador de inicio de sesión del robot de auth

  15. Escriba Logout en el cuadro chat de entrada para cerrar la sesión. Esto libera el token de usuario y el bot no podrá actuar en su nombre hasta que vuelva a iniciar sesión.

Nota

La autenticación de bot requiere el uso del servicio de conector de bot. El servicio tiene acceso a la información de registro de los canales de bot para el bot.

Probar el bot implementado

  1. En el explorador, vaya a Azure portal.

  2. Busque su grupo de recursos.

  3. Seleccione el vínculo de recursos. Se muestra la página recurso.

  4. En la página recurso, seleccione probar en chat web. El bot se inicia y muestra los saludos predefinidos.

  5. Escriba cualquier cosa en el cuadro chat.

  6. Seleccione el cuadro iniciar sesión .

  7. Se muestra un cuadro de diálogo emergente para confirmar la dirección URL abierta. Esto permite que el usuario del bot (usted) se autentique.

  8. Seleccione confirmar.

  9. Si se le solicita, seleccione la cuenta de usuario correspondiente. La siguiente imagen es un ejemplo de la interfaz de usuario de bot una vez que ha iniciado sesión:

    Inicio de sesión de robot de autenticación implementado.

  10. Seleccione el botón para mostrar el token de autenticación. La siguiente imagen es un ejemplo:

    token de inicio de sesión de robot de autenticación implementado.

  11. Escriba Logout para cerrar sesión.

    cierre de sesión de auth bot

Nota

Si tiene problemas para iniciar sesión, intente probar la conexión de nuevo tal como se describe en los pasos anteriores. Esto podría volver a crear el token de autenticación. Con el cliente de chat Web de bot Framework en Azure, es posible que deba iniciar sesión varias veces antes de que la autenticación se establezca correctamente.

Instalar y probar el bot en Teams

  1. En el proyecto de bot, asegúrese de que la TeamsAppManifest carpeta contiene el manifest.json junto con los outline.png color.png archivos y.

  2. En el explorador de soluciones, desplácese hasta la TeamsAppManifest carpeta. Modifique asignando manifest.json los siguientes valores:

    1. Asegúrese de que el identificador de la aplicación de bot que ha recibido en el momento del registro del canal de bot esté asignado a id y botId .
    2. Asigne este valor: validDomains: [ "token.botframework.com" ] .
  3. Seleccione y zip los manifest.json outline.png archivos, y color.png .

  4. Abra Microsoft Teams.

  5. En el panel izquierdo, en la parte inferior, seleccione el icono aplicaciones.

  6. En el panel derecho, en la parte inferior, seleccione cargar una aplicación personalizada.

  7. Desplácese a la TeamsAppManifest carpeta y cargue el manifiesto comprimido. Se muestra el siguiente asistente:

    cargar equipos de robot de autenticación

  8. Seleccione el botón Agregar a un equipo .

  9. En la siguiente ventana, seleccione el equipo en el que desea usar el bot.

  10. Seleccione el botón configurar un bot .

  11. Seleccione los puntos suspensivos (●●●) en el panel de la izquierda. A continuación, selecciona el icono de App Studio .

  12. Seleccione la pestaña Editor de manifiestos . Debe ver el icono del bot que ha cargado.

  13. Además, debería poder ver el bot enumerado como un contacto en la lista de chats que puede usar para intercambiar mensajes con el bot.

Probar el bot localmente en Teams

Microsoft Teams es un producto basado en la nube completamente, por lo que todos los servicios a los que tiene acceso se encuentran disponibles desde la nube con puntos de conexión HTTPS. Por lo tanto, para habilitar el bot (nuestro ejemplo) para trabajar en Microsoft Teams, debe publicar el código en la nube que prefiera, o bien hacer que una instancia de ejecución local sea accesible externamente mediante una herramienta de túnel . Se recomienda ngrok, que crea una dirección URL externamente direccionable para un puerto que se abre de forma local en el equipo. Para configurar ngrok en preparación para la ejecución local de la aplicación de Microsoft Teams, siga estos pasos:

  1. En una ventana de terminal, vaya al directorio en el que ha ngrok.exe instalado. Se recomienda establecer la ruta de la variable de entorno para que apunte a ella.

  2. Ejecutar, por ejemplo, ngrok http 3978 --host-header=localhost:3978 . Reemplace el número de Puerto según sea necesario. Se inicia ngrok para escuchar en el puerto especificado. A cambio, le proporciona una dirección URL que se puede direccionar externamente, válida durante el tiempo que se ejecute ngrok. La siguiente imagen es un ejemplo:

    la cadena de conexión de autenticación de la aplicación bots de Microsoft Teams Adv1.

  3. Copie la dirección HTTPS de reenvío. Debe ser similar a la siguiente: https://dea822bf.ngrok.io/ .

  4. Anexe /api/messages para obtener https://dea822bf.ngrok.io/api/messages . Este es el punto de conexión de mensajes para que el bot se ejecute localmente en el equipo y sea accesible a través de la web en un chat en Microsoft Teams.

  5. Un último paso para realizar es actualizar el punto de conexión de mensajes del componente implementado. En el ejemplo, implementamos el bot en Azure. Por lo tanto, * * vamos a realizar estos pasos:

    1. En el explorador, navegue a Azure portal.
    2. Seleccione el registro del canal del bot.
    3. En el panel izquierdo, seleccione configuración.
    4. En el panel derecho, en el cuadro extremo de mensajería , escriba la dirección URL de ngrok, en nuestro ejemplo https://dea822bf.ngrok.io/api/messages .
  6. Inicie el bot de forma local, por ejemplo, en el modo de depuración de Visual Studio.

  7. Pruebe el bot mientras se ejecuta de forma local mediante el chat webdel portal de bot Framework. Al igual que en el emulador, esta prueba no permite el acceso a funciones específicas de Teams.

  8. En la ventana de terminal donde ngrok se está ejecutando, puede ver el tráfico HTTP entre el bot y el cliente de chat Web. Si desea una vista más detallada, en una ventana del explorador, escriba http://127.0.0.1:4040 lo que obtuvo en la ventana de terminal anterior. La siguiente imagen es un ejemplo:

    autenticación Team bot ngrok pruebas.

Nota

Si detiene y reinicia ngrok, la dirección URL cambia. Para usar ngrok en su proyecto, y según las capacidades que use, debe actualizar todas las referencias a direcciones URL.

Información adicional

TeamsAppManifest/manifest. JSON

Este manifiesto contiene la información que Microsoft Teams necesita para conectarse con el bot.

{
  "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.5/MicrosoftTeams.schema.json",
  "manifestVersion": "1.5",
  "version": "1.0.0",
  "id": "",
  "packageName": "com.teams.auth.bot",
  "developer": {
    "name": "TeamsBotAuth",
    "websiteUrl": "https://www.microsoft.com",
    "privacyUrl": "https://www.teams.com/privacy",
    "termsOfUseUrl": "https://www.teams.com/termsofuse"
  },
  "icons": {
    "color": "color.png",
    "outline": "outline.png"
  },
  "name": {
    "short": "TeamsBotAuth",
    "full": "Teams Bot Authentication"
  },
  "description": {
    "short": "TeamsBotAuth",
    "full": "Teams Bot Authentication"
  },
  "accentColor": "#FFFFFF",
  "bots": [
    {
      "botId": "",
      "scopes": [
        "groupchat",
        "team"
      ],
      "supportsFiles": false,
      "isNotificationOnly": false
    }
  ],
  "permissions": [
    "identity",
    "messageTeamMembers"
  ],
  "validDomains": [ "token.botframework.com" ]
}

Con la autenticación, Teams se comporta de forma ligeramente distinta a otros canales, tal como se explica a continuación.

Controlar la actividad de invocación

Se envía una actividad Invoke al bot en lugar de a la actividad de evento usada por otros canales. Esto se realiza mediante la subclase de ActivityHandler.

Bots/DialogBot. CS

    public class DialogBot<T> : TeamsActivityHandler where T : Dialog
    {
        protected readonly BotState ConversationState;
        protected readonly Dialog Dialog;
        protected readonly ILogger Logger;
        protected readonly BotState UserState;

        public DialogBot(ConversationState conversationState, UserState userState, T dialog, ILogger<DialogBot<T>> logger)
        {
            ConversationState = conversationState;
            UserState = userState;
            Dialog = dialog;
            Logger = logger;
        }

        public override async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default(CancellationToken))
        {
            await base.OnTurnAsync(turnContext, cancellationToken);

            // Save any state changes that might have occurred during the turn.
            await ConversationState.SaveChangesAsync(turnContext, false, cancellationToken);
            await UserState.SaveChangesAsync(turnContext, false, cancellationToken);
        }

        protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
        {
            Logger.LogInformation("Running dialog with Message Activity.");

            // Run the Dialog with the new message Activity.
            await Dialog.RunAsync(turnContext, ConversationState.CreateProperty<DialogState>(nameof(DialogState)), cancellationToken);
        }
    }
}

Bots/TeamsBot. CS

La actividad Invoke debe reenviarse al cuadro de diálogo si se usa la OAuthPrompt .

protected override async Task OnTeamsSigninVerifyStateAsync(ITurnContext<IInvokeActivity> turnContext, CancellationToken cancellationToken)
{
    Logger.LogInformation("Running dialog with signin/verifystate from an Invoke Activity.");

    // The OAuth Prompt needs to see the Invoke Activity in order to complete the login process.

    // Run the Dialog with the new Invoke Activity.
    await Dialog.RunAsync(turnContext, ConversationState.CreateProperty<DialogState>(nameof(DialogState)), cancellationToken);
}

TeamsActivityHandler.cs


protected virtual Task OnInvokeActivityAsync(ITurnContext<IInvokeActivity> turnContext, CancellationToken cancellationToken)
{
    switch (turnContext.Activity.Name)
    {
        case "signin/verifyState":
            return OnSigninVerifyStateAsync(turnContext, cancellationToken);

        default:
            return Task.CompletedTask;
    }
}

protected virtual Task OnSigninVerifyStateAsync(ITurnContext<IInvokeActivity> turnContext, CancellationToken cancellationToken)
{
    return Task.CompletedTask;
}