Agregar autenticación al bot Teams usuario

Hay ocasiones en las que 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 del SDK de Azure Bot Service v4, basada en OAuth 2.0. Esto facilita el desarrollo de 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 otros muchos proveedores de identidad. Un conocimiento básico de OAuth 2.0 es un requisito previo para trabajar con la autenticación en Teams.

Consulta OAuth 2 Simplified para obtener una descripción básica y OAuth 2.0 para obtener la especificación completa.

Para obtener más información acerca de cómo el Servicio de bots de Azure controla 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 autenticación. Usará cs-auth-sample para controlar las credenciales de inicio de sesión del usuario y la generación del token de autenticación.
  • Cómo implementar el bot en Azure y asociarlo a 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 recursos, como un servicio de correo, que requieren autenticación. Para obtener más información, vea Microsoft Teams de autenticación para bots.
  • Cómo integrar el bot en Microsoft Teams. Una vez integrado el bot, puedes iniciar sesión e 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 permiten liberar cómodamente los recursos que cree. Este es un buen procedimiento para mantener los recursos organizados y manejables.

Se usa un grupo de recursos para crear recursos individuales para Bot Framework. Para obtener rendimiento, asegúrese de que estos recursos se encuentran en la misma región 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 parte superior izquierda de la ventana mostrada, seleccione La pestaña Agregar 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 Validación pasada.
    5. Seleccione el botón Crear. Puede tardar unos minutos en crear el grupo de recursos.

Sugerencia

Al igual que con los recursos que crearás más adelante en este tutorial, es buena idea anclar este grupo de recursos al panel para facilitar el acceso. Si quieres hacerlo, selecciona el icono de patilla 📌 en la parte superior derecha del panel.

Crear el plan de servicio

  1. En Azure Portal, en el panel de navegación izquierdo, seleccione Crear un recurso.
  2. En el cuadro de búsqueda, escriba Plan de App Service. Seleccione la tarjeta Plan 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 el sistema operativo aplicable.
    5. Región. Seleccione Oeste de EE. UU. o una región cercana a las aplicaciones.
    6. Plan de precios. Asegúrese de que standard S1 está seleccionado. Este debe ser el valor predeterminado.
    7. Seleccione el botón Revisar y crear. Debería ver un banner que lee Validación pasada.
    8. Seleccione Crear. Puede tardar unos minutos en crear el plan de servicio de aplicaciones. El plan se enumerará en el grupo de recursos.

Crear el registro de canales de bot

El registro de 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 necesita registrar el bot si no está hospedado en Azure. Si creó un bot a través de Azure Portal, ya está registrado en el servicio. Si creó el bot a través de Bot Framework 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 de búsqueda, escriba "bot". Y en la lista desplegable, seleccione Registro de canales de bot.

  3. Seleccione el botón Crear.

  4. En la hoja Registro del canal bot, proporcione la información solicitada sobre el bot.

  5. Deje el cuadro Punto de conexión 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 bot

  6. Haga clic en Id. de aplicación y contraseña de Microsoft y, a continuación, cree nuevo.

    Crear id. de aplicación de Microsoft  Crear nuevo id. de aplicación de Microsoft

  7. Haz clic en Crear id. de aplicación en el vínculo Portal de registro de aplicaciones.

    Registros de aplicaciones

  8. En la ventana de registro de aplicaciones mostrada, haga clic en la pestaña Nuevo registro de la parte superior izquierda.

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

  10. Para los tipos de cuentas compatibles, seleccione Cuentas en cualquier directorio de la organización (cualquier directorio de Azure AD - Multitenant) y cuentas personales de Microsoft (por ejemplo, Skype, Xbox).

  11. Haga clic en el botón Registrar. Una vez completada, Azure muestra la página Información general de la aplicación.

  12. Copie y guarde en un archivo el valor del identificador de aplicación (cliente).

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

    1. En Secretos de cliente, haga clic en Nuevo secreto de cliente.
    2. Agrega una descripción para identificar este secreto de otros usuarios que podrías necesitar crear para esta aplicación.
    3. Establece Expira en la selección.
    4. Seleccione Agregar.
    5. Copie el secreto de cliente y guárdelo en un archivo.
  14. Vuelva a la ventana Registro del canal bot y copie el identificador de aplicación y el secreto de cliente en los cuadros Id. de aplicación de Microsoft y Contraseña, respectivamente.

  15. Haga clic en Aceptar.

  16. Por último, haga clic en Crear.

Después de 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 bot

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

  1. En Azure Portal, en Servicios de Azure, seleccione el registro del canal bot que acaba de crear.
  2. En el panel izquierdo, haga clic en Canales.
  3. Haga clic en el Microsoft Teams y, a continuación, elija Guardar.

Nota

El recurso Registro de canales bot mostrará la región Global incluso si seleccionó Oeste de EE. UU. Esto es normal.

Para obtener más información, vea Create a bot for Teams.

Crear el proveedor de identidades

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

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

    Sugerencia

    Deberá crear y registrar este recurso Azure AD en un espacio empresarial en el que pueda dar su consentimiento para delegar los permisos solicitados por una aplicación. Para obtener instrucciones sobre cómo crear un inquilino, vea Access the portal and create a tenant.

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

  3. En el panel derecho, seleccione la pestaña Nuevo registro, 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 la aplicación. Selecciona Cuentas en cualquier directorio de la organización (cualquier directorio Azure AD - Multitenant) y cuentas personales de Microsoft (por ejemplo, Skype, Xbox).
    3. Para el URI de redireccionamiento:
      ✓Seleccione Web.
      ✓ Establezca la dirección URL en https://token.botframework.com/.auth/web/redirect .
    4. Seleccione Registrar.
  5. Una vez creado, Azure muestra la página Información general de la aplicación. Copie y guarde la siguiente información en un archivo:

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

    1. En Secretos de cliente, ➕ Nuevo secreto de cliente.
    2. Agrega una descripción para identificar este secreto de otros usuarios que podrías necesitar crear para esta aplicación, como la aplicación de identidad bot en Teams.
    3. Establece Expira en la selección.
    4. Seleccione Agregar.
    5. Antes de salir de esta página, registre el secreto. Este valor se usará más adelante como secreto de cliente al registrar la aplicación Azure AD con el bot.

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

Nota: hay dos opciones para los proveedores de servicios aquí Azure AD V1 y Azure AD V2. Las diferencias entre los dos proveedores se resumen aquí,pero, en general, V2 proporciona más flexibilidad con respecto a cambiar los permisos del bot. Graph Los permisos de API se enumeran en el campo ámbitos y, a medida que se agregan los nuevos, los bots permitirán a los usuarios dar su consentimiento a los nuevos permisos en el siguiente inicio de sesión. Para V1, el usuario debe eliminar el consentimiento del bot para que se pidan nuevos permisos en el cuadro de diálogo OAuth.

Azure AD V1

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

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

  3. Abra la página de recursos y seleccione Configuración en Configuración.

  4. Seleccione Agregar conexión de OAuth Configuración.
    La siguiente imagen muestra la selección correspondiente en la página de recursos:
    Configuración de SampleAppDemoBot

  5. Complete el formulario de la siguiente manera:

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

    2. Proveedor de servicios. Seleccione Azure Active Directory. Una vez seleccionado, se mostrarán Azure AD campos específicos del usuario.

    3. Id. de cliente. Escriba el identificador de aplicación (cliente) que registró para la aplicación proveedora de identidades de Azure en los pasos anteriores.

    4. Secreto de cliente. Escriba el secreto que registró para la aplicación proveedora de identidades de Azure en los pasos anteriores.

    5. Tipo de concesión. Escriba authorization_code .

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

    7. Identificador de inquilino, escriba el id. de directorio (espacio empresarial) que registró anteriormente para la aplicación de identidad de Azure o común según el tipo de cuenta admitido seleccionado al crear la aplicación del proveedor de identidades. Para decidir qué valor asignar, siga estos criterios:

      • Si seleccionó Cuentas solo en este directorio de la organización (Solo Microsoft - Inquilino único) o Cuentas en cualquier directorio de la organización(Directorio de Microsoft AAD - Inquilino múltiple) escriba el identificador de inquilino que registró anteriormente para la aplicación AAD. Este será el espacio empresarial asociado con los usuarios que se pueden autenticar.

      • Si seleccionó Cuentas en cualquier directorio de la organización (cualquier directorio AAD: cuentas de Microsoft multiinquilino y personales, por ejemplo, Skype, Xbox, Outlook) escriba la palabra común en lugar de un identificador de inquilino. De lo contrario, AAD la aplicación comprobará a través del inquilino cuyo identificador se seleccionó y excluirá las cuentas personales de Microsoft.

    h. En Dirección URL de recurso , escriba https://graph.microsoft.com/ . Esto no se usa en el ejemplo de código actual.
    i. Deje ámbitos en blanco. La siguiente imagen es un ejemplo:

    vista de cadena de conexión de la aplicación de bots de teams adv1

  6. Seleccione Guardar.

Azure AD V2

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

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

  3. Abra la página de recursos y seleccione Configuración en Configuración.

  4. Seleccione Agregar conexión de OAuth Configuración.
    La siguiente imagen muestra la selección correspondiente en la página de recursos:
    Configuración de SampleAppDemoBot

  5. Complete el formulario de la siguiente manera:

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

    2. Proveedor de servicios. Seleccione Azure Active Directory v2. Una vez seleccionado, se mostrarán Azure AD campos específicos del usuario.

    3. Id. de cliente. Escriba el identificador de aplicación (cliente) que registró para la aplicación proveedora de identidades de Azure en los pasos anteriores.

    4. Secreto de cliente. Escriba el secreto que registró para la aplicación proveedora de identidades de Azure en los pasos anteriores.

    5. Dirección URL Exchange token. Deje esto en blanco.

    6. Identificador de inquilino, escriba el id. de directorio (espacio empresarial) que registró anteriormente para la aplicación de identidad de Azure o común según el tipo de cuenta admitido seleccionado al crear la aplicación del proveedor de identidades. Para decidir qué valor asignar, siga estos criterios:

      • Si seleccionó Cuentas solo en este directorio de la organización (Solo Microsoft - Inquilino único) o Cuentas en cualquier directorio de la organización(Directorio de Microsoft AAD - Inquilino múltiple) escriba el identificador de inquilino que registró anteriormente para la aplicación AAD. Este será el espacio empresarial asociado con los usuarios que se pueden autenticar.

      • Si seleccionó Cuentas en cualquier directorio de la organización (cualquier directorio AAD: cuentas de Microsoft multiinquilino y personales, por ejemplo, Skype, Xbox, Outlook) escriba la palabra común en lugar de un identificador de inquilino. De lo contrario, AAD la aplicación comprobará a través del inquilino cuyo identificador se seleccionó y excluirá las cuentas personales de Microsoft.

    7. Para Ámbitos, escriba una lista delimitada por espacios de permisos de gráfico que esta aplicación requiere, por ejemplo: User.Read User.ReadBasic.All Mail.Read

  6. Seleccione 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 hagas, se abrirá una nueva ventana del explorador que te pedirá que selecciones una cuenta. Seleccione la que desea usar.

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

    cadena de conexión de autenticación de bots de teams adv1

  5. Seleccione Aceptar.

  6. A continuación, debería redirigirle a una página Conexión de prueba a <your-connection-name> Correcta. Actualice la página si recibe un error. La siguiente imagen es un ejemplo:

    teams bots app auth connection str adv1

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

Preparar el código de ejemplo del bot

Una vez realizada la configuración preliminar, vamos a centrarnos 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 -> Project/Solución y abra el proyecto de bot.

  4. En C# Update appsettings.json de la siguiente manera:

    • Establezca ConnectionName el nombre de la conexión del proveedor de identidades que agregó al registro del canal de bot. El nombre que se usa en este ejemplo es BotTeamsAuthADv1.
    • Se MicrosoftAppId establece en el identificador de aplicación del bot que guardó en el momento del registro del canal del bot.
    • Se MicrosoftAppPassword establece en el secreto de cliente que guardó en el momento del registro del canal del bot.

    Dependiendo de los caracteres del secreto del bot, es posible que deba escapar de la contraseña mediante XML. Por ejemplo, cualquier ampersands (&) tendrá que codificarse como &amp; .

    {
      "MicrosoftAppType": "",
      "MicrosoftAppId": "",
      "MicrosoftAppPassword": "",
      "ConnectionName": "",
    
  5. En el Explorador de soluciones, vaya a la carpeta, abra y establezca y al identificador de aplicación del bot que guardó en el momento del registro TeamsAppManifest manifest.json del canal del id botId bot.

Implementar el bot en Azure

Para implementar el bot, siga los pasos descritos en el procedimiento para implementar el bot en Azure.

Como alternativa, mientras esté Visual Studio, puede seguir estos pasos:

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

  2. En el menú desplegable, seleccione Publicar.

  3. En la ventana mostrada, seleccione el vínculo Nuevo.

  4. En la ventana de diálogo, seleccione App Service 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 verlo reflejado en Visual Studio. Además, se muestra una página en el explorador predeterminado que dice Que el 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 demás 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 bot (vínculo).

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

  13. En el cuadro Punto de conexión de mensajería, escriba la dirección URL obtenida anteriormente seguida de api/messages . Este es un ejemplo: https://botteamsauth.azurewebsites.net/api/messages .

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

Pruebe el bot con el Emulator

Si aún no lo ha hecho, instale el archivo Microsoft Bot Framework Emulator. Vea también Depurar con el Emulator.

Para que el inicio de sesión de ejemplo del bot funcione, debe configurar el Emulator.

Configurar el Emulator para la autenticación

Si un bot requiere autenticación, debe configurar el Emulator. Para configurar:

  1. Inicie el Emulator.
  2. En la Emulator, seleccione el icono de engranaje ⚙ la parte inferior izquierda o la pestaña Emulator Configuración en la parte superior derecha.
  3. Active la casilla usar tokens de autenticación de la versión 1.0.
  4. Escriba la ruta de acceso local a la herramienta ngrok. Vea el wiki Bot Framework Emulator / ngrok tunneling integration Wiki. Para obtener más información sobre la herramienta, vea ngrok.
  5. Active la casilla Ejecutar ngrok cuando el Emulator se inicie.
  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 Emulator 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, el bot puede actuar en nombre del usuario.

Probar el bot localmente

Después de configurar el mecanismo de autenticación, puede realizar las pruebas de bot reales.

  1. Ejecute el ejemplo de bot localmente en el equipo, por Visual Studio por ejemplo.

  2. Inicie el Emulator.

  3. Seleccione el botón Abrir bot.

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

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

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

  7. Seleccione Conectar.

  8. Después de que el bot esté en funcionamiento, escriba cualquier 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 dirección URL abierta. Esto permite que el usuario del bot (usted) se autentique.

  11. Seleccione Confirmar.

  12. Si se le pide, seleccione la cuenta del usuario aplicable.

  13. Según la configuración que usó para la Emulator, se obtiene una de las siguientes opciones:

    1. Uso del código de verificación de inicio de sesión
      ✓ Se abre una ventana que muestra el código de validación.
      ✓ copiar y escribir el código de validación en el cuadro de 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 del bot después de haber iniciado sesión:

    Emulador de inicio de sesión del bot de autenticación

  14. Si selecciona Sí cuando el bot le pregunta ¿Le gustaría ver el token?, tendrá una respuesta similar a la siguiente:

    Token de emulador de inicio de sesión del bot de autenticación

  15. Escriba cerrar sesión en el cuadro de 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 inicie sesión de nuevo.

Nota

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

Probar el bot implementado

  1. En el explorador, vaya a Azure Portal.

  2. Busque el grupo de recursos.

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

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

  5. Escriba cualquier cosa en el cuadro de chat.

  6. Seleccione el cuadro Iniciar sesión.

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

  8. Seleccione Confirmar.

  9. Si se le pide, seleccione la cuenta del usuario aplicable. La siguiente imagen es un ejemplo de la interfaz de usuario del bot después de haber iniciado sesión:

    Inicio de sesión del bot de autenticación implementado.

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

    Token de inicio de sesión del bot de autenticación implementado.

  11. Escriba cerrar sesión para cerrar sesión.

    Inicio de sesión implementado por el bot de autenticación

Nota

Si tiene problemas para iniciar sesión, intente probar la conexión de nuevo 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 carpeta contiene la junto TeamsAppManifest con un y los manifest.json outline.png color.png archivos.

  2. En el Explorador de soluciones, vaya a la TeamsAppManifest carpeta. Para manifest.json editar, asigne los siguientes valores:

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

  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, selecciona Upload una aplicación personalizada.

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

    Carga de equipos de bots de autenticación

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

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

  10. Seleccione el botón Configurar un bot.

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

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

  13. Además, deberías poder ver el bot como un contacto en la lista de chat que puedes usar para intercambiar mensajes con el bot.

Probar el bot localmente en Teams

Microsoft Teams es un producto totalmente basado en la nube, requiere que todos los servicios a los que tiene acceso estén disponibles desde la nube mediante puntos de conexión HTTPS. Por lo tanto, para permitir que el bot (nuestro ejemplo) funcione en Teams, debe publicar el código en la nube de su elección o hacer que una instancia en ejecución local sea accesible externamente a través de una herramienta de túnel. Se recomienda ngrok, que crea una dirección URL direccionable externamente para un puerto que se abre localmente en el equipo. Para configurar ngrok en preparación para ejecutar la aplicación Microsoft Teams localmente, siga estos pasos:

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

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

    cadena de conexión de la aplicación bot de teams adv1.

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

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

  5. Un último paso para realizar es actualizar el extremo de mensajes del bot implementado. En el ejemplo, implementamos el bot en Azure. Así que **vamos a realizar estos pasos:

    1. En el explorador, vaya a Azure Portal.
    2. Seleccione el registro del canal 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 localmente, por ejemplo, en Visual Studio modo de depuración.

  7. Pruebe el bot mientras se ejecuta localmente con el chat web de prueba del portal de Bot Framework . Al igual que Emulator, esta prueba no permite tener acceso a Teams funcionalidad específica.

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

    Pruebas de auth bot teams ngrok.

Nota

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

Información adicional

TeamsAppManifest/manifest.json

Este manifiesto contiene la información necesaria Microsoft Teams para conectarse con el bot:

{
  "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.8/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 diferente que otros canales, como se explica a continuación.

Controlar actividad de invocación

Se envía una actividad Invoke al bot en lugar de a la actividad de evento usada por otros canales. Para ello, se subclase 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 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;
}

Consulte también

Agregar autenticación a través del servicio bot de Azure