Agregar autenticación al bot de Teams
Puede crear bots en Microsoft Teams que accedan a recursos en nombre del usuario, como un servicio de correo. Puede usar la autenticación del SDK de Azure Bot Service v4, basada en OAuth 2.0. Este método facilita el desarrollo de un bot que puede usar tokens de autenticación en función de las credenciales del usuario. La clave es el uso de proveedores de identidades.
OAuth 2.0 es un estándar abierto para la autenticación y autorización que usan Microsoft Entra ID y muchos otros proveedores de identidades. Tener conocimientos básicos del flujo de concesión implícito de OAuth 2.0 es un requisito previo para trabajar con la autenticación en pestañas de Microsoft Teams.
Consulte OAuth 2 Simplificado para obtener una descripción básica y OAuth 2.0 para obtener la especificación completa.
Para obtener más información sobre cómo el Azure Bot Service controla la autenticación, vea Autenticación de usuario dentro de una conversación.
En este artículo, aprenderá lo siguiente:
- Cómo crear un bot habilitado para autenticación. Use 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 a un proveedor de identidades. El proveedor emite un token basado en las credenciales de inicio de sesión del usuario. El bot puede usar el token para acceder a recursos, como un servicio de correo, que requiere autenticación. Para obtener más información, consulte Flujo de autenticación de Microsoft Teams para bots.
- Cómo integrar el bot en Microsoft Teams. Una vez integrado el bot, puede iniciar sesión e intercambiar mensajes con él en un chat.
Requisitos previos
Conocimientos sobre los conceptos básicos del bot, la administración del estado, la biblioteca de diálogos y cómo implementar el flujo de conversación secuencial.
Conocimientos sobre el desarrollo de Azure y OAuth 2.0.
Las versiones más recientes de Microsoft Visual Studio y Git.
Cuenta de Azure. Si es necesario, puede crear una cuenta gratuita de Azure.
El ejemplo siguiente:
Muestra Versión de BotBuilder Demuestra Autenticación de bot en cs-auth-sample v4 Compatibilidad con OAuthCard Autenticación de bots en js-auth-sample v4 Compatibilidad con OAuthCard Autenticación de bots en py-auth-sample v4 Compatibilidad con OAuthCard
Creación del 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. Se recomienda mantener los recursos organizados y administrables.
Use un grupo de recursos para crear recursos individuales para el Bot Framework. Para mejorar el rendimiento, asegúrese de que estos recursos se encuentran en la misma región de Azure.
- En el explorador, inicie sesión en el portal de Microsoft Azure.
- En el panel de navegación izquierdo, seleccione Grupos de recursos.
- En la parte superior izquierda de la ventana mostrada, seleccione la pestaña Agregar para crear un nuevo grupo de recursos. Proporcione los detalles siguientes:
- Suscripción. Use su suscripción existente.
- Grupo de recursos. Escriba el nombre del grupo de recursos. Un ejemplo podría ser TeamsResourceGroup. Recuerde que el nombre debe ser único.
- En el menú desplegable Región , seleccione Oeste de EE. UU. o una región cercana a las aplicaciones.
- Seleccione el botón Revisar y crear. Debería ver un banner que dice Validación superada.
- Seleccione el botón Crear. Puede tardar unos minutos en crear el grupo de recursos.
Sugerencia
Al igual que con los recursos que creará más adelante en este tutorial, es una buena idea anclar este grupo de recursos al panel para facilitar el acceso. Si quiere hacerlo, seleccione el icono 📌 de anclaje en la esquina superior derecha del panel.
Creación del plan de servicio
- En el Azure Portal, en el panel de navegación izquierdo, seleccione Crear un recurso.
- En el cuadro de búsqueda, escriba Plan de servicio de la aplicación. Seleccione la tarjeta Plan de servicio de la aplicación en los resultados de la búsqueda.
- Seleccione Crear.
- Proporcione la siguiente información de envío:
- Suscripción. Puede usar una suscripción existente.
- Grupo de recursos. Seleccione el grupo que creó anteriormente.
- Nombre. Escriba el nombre del plan de servicio. Un ejemplo podría ser TeamsServicePlan. Recuerde que el nombre debe ser único dentro del grupo.
- Sistema operativo. Seleccione Windows o el sistema operativo aplicable.
- Región. Seleccione Oeste de EE. UU. o una región cercana a las aplicaciones.
- Plan de tarifa. Seleccione Estándar S1, que es el valor predeterminado.
- Seleccione el botón Revisar y crear. Debería ver un banner que dice Validación superada.
- Seleccione Crear. Puede tardar unos minutos en crear el plan de App Service. El plan aparece en el grupo de recursos.
Creación del registro de recursos del bot de Azure
El registro de recursos de Bot de Azure registra el servicio web como bot con Bot Framework, que le proporciona un identificador de aplicación de Microsoft y una contraseña de aplicación (secreto de cliente).
Importante
Solo debe registrar el bot si no está hospedado en Azure. Si ha creado 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 el Portal para desarrolladores, el bot no está registrado en Azure.
Visite Azure Portal y busque Bot de Azure en la sección Crear un recurso.
Abra Bot de Azure y seleccione Crear.
Escriba el nombre del identificador del bot en el campo Identificador de bot.
Seleccione su Suscripción en la lista desplegable.
Seleccione el Grupo de recursos en la lista desplegable.
Seleccione Tipo de aplicación como Multiinquilino para el Identificador de aplicación de Microsoft.
Seleccione Revisar y crear.
Si se supera la validación, seleccione Crear.
Azure aprovisiona el bot en unos instantes.
Seleccione Ir a recursos. El bot y los recursos relacionados aparecen en el grupo de recursos.
Se crea el bot de Azure.
Para crear el secreto de cliente:
En Configuración, seleccione Configuración. Guarde el identificador de aplicación de Microsoft (id. de cliente) para futuras referencias.
Junto a Id. de aplicación de Microsoft, seleccione Administrar.
En la sección Secretos de cliente, seleccione Nuevo secreto de cliente. Aparece la ventana Agregar un secreto de cliente.
Escriba Descripción y seleccione Agregar.
En la columna Valor, seleccione Copiar en el Portapapeles y guarde el identificador de secreto de cliente para futuras referencias.
Para agregar el canal de Microsoft Teams:
Ve a Inicio.
Abra el bot en la sección Recursos recientes .
Seleccione Canales en el panel izquierdo y seleccione Microsoft Teams .
Active la casilla para aceptar los términos de servicio y seleccione Aceptar.
Haga clic en Guardar.
Para obtener más información, vea Crear un bot para Teams.
Creación del proveedor de identidades
Necesita un proveedor de identidades para la autenticación. En este procedimiento, se usa un proveedor de Microsoft Entra. Como alternativa, también puede usar otros proveedores de identidades compatibles con Microsoft Entra ID.
En Azure Portal, en el panel de navegación izquierdo, seleccione Microsoft Entra ID..
Sugerencia
Debe crear y registrar este recurso de Microsoft Entra en un inquilino 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, consulte Acceso al portal y creación de un inquilino.
En el panel izquierdo, seleccione Registros de aplicaciones.
En el panel derecho, seleccione la pestaña Nuevo registro, en la esquina superior izquierda.
Proporcione la siguiente información de envío:
- Nombre. Escriba el nombre de la aplicación. Un ejemplo podría ser BotTeamsIdentity. Recuerde que el nombre debe ser único.
- Seleccione los tipos de cuenta admitidos para la aplicación. Seleccione Cuentas en cualquier directorio organizativo (cualquier inquilino de Microsoft Entra ID : multiinquilino) y cuentas personales de Microsoft (por ejemplo, Skype, Xbox).
- Para el URI de redireccionamiento:
✓Seleccione Web.
✓ Establezca la dirección URL enhttps://token.botframework.com/.auth/web/redirect
. - Seleccione Registrar.
Una vez que Azure crea la aplicación, muestra la página Información general de la aplicación. Copie y guarde la siguiente información en un archivo:
- El valor de la Id. de aplicación (cliente). Use este valor más adelante como identificador de cliente al registrar esta aplicación de identidad de Azure con el bot.
- Valor del Identificador del directorio (inquilino). Use este valor más adelante como identificador de inquilino al registrar esta aplicación de identidad de Azure con el bot.
En el panel izquierdo, seleccione Certificados y secretos para crear un secreto de cliente para la aplicación.
- En Secretos de cliente, seleccione ➕ Nuevo secreto de cliente.
- Agregue una descripción para identificar este secreto de otros usuarios que pueda necesitar crear para esta aplicación, como aplicación de identidad de bot en Teams.
- Establezca la Caducidad respecto a la selección.
- Seleccione Agregar.
- Antes de salir de esta página, registre el secreto. Use este valor más adelante como secreto de cliente al registrar la aplicación Microsoft Entra con el bot.
Configuración de la conexión del proveedor de identidades y registro con el bot
Nota:
Aquí hay dos opciones para proveedores de servicios: Azure Active Directory v1 y Azure Active Directory v2. Las diferencias entre los dos proveedores se resumen aquí, pero, en general, v2 proporciona más flexibilidad con respecto al cambio de permisos de bot. Los permisos Graph API se muestran en el campo ámbitos y, a medida que se agregan nuevos, los bots permitirán a los usuarios dar su consentimiento a los nuevos permisos en el siguiente inicio de sesión. Para la versión v1, el usuario debe eliminar el consentimiento del bot para que se le soliciten nuevos permisos en el cuadro de diálogo de OAuth.
Microsoft Azure Active Directory (Azure AD) v1
En el Portal de Azure, seleccione el grupo de recursos en el panel.
Seleccione el vínculo de registro del bot.
Abra la página del recurso y seleccione Configuración en Configuración.
Seleccione el botón Agregar ajustes de conexión de OAuth en la pantalla Configuración. En la imagen siguiente se muestra la selección correspondiente en la página de recursos:
Complete el formulario de la siguiente manera:
Nombre. Escriba un nombre para la conexión. Use este nombre en el bot en el
appsettings.json
archivo. Por ejemplo, BotTeamsAuthADv1.Proveedor de servicios Seleccione Azure Active Directory. Una vez seleccionada esta opción, se muestran los campos específicos de Azure Active Directory.
Id. de cliente. Escriba el identificador de aplicación (cliente) que registró para la aplicación del proveedor de identidades de Azure.
Secreto de cliente Escriba el secreto que registró para la aplicación del proveedor de identidades de Azure.
Tipo de concesión. Escriba
authorization_code
.Dirección URL de inicio de sesión. Escriba
https://login.microsoftonline.com
.Id. de inquilino, escriba el identificador de directorio (inquilino) que registró anteriormente para la aplicación de identidad de Azure o común en función del tipo de cuenta compatible seleccionado al crear la aplicación del proveedor de identidades. Para decidir qué valor asignar, siga estos criterios:
Si seleccionó Solo cuentas en este directorio organizativo (solo Microsoft: inquilino único) o Cuentas en cualquier directorio organizativo (cualquier inquilino de Microsoft Entra ID : multiinquilino), escriba el identificador de inquilino que registró anteriormente para la aplicación Microsoft Entra. Este será el inquilino asociado a los usuarios que se pueden autenticar.
Si seleccionó Cuentas en cualquier directorio organizativo (cualquier inquilino de Microsoft Entra ID : multiinquilino) y cuentas personales de Microsoft (por ejemplo, Skype, Xbox) escriba la palabra común en lugar de un identificador de inquilino. De lo contrario, la aplicación Microsoft Entra comprueba a través del inquilino cuyo identificador se seleccionó y excluye las cuentas personales de Microsoft.
h. En Dirección URL del recurso, escriba
https://graph.microsoft.com/
. Esta dirección URL no se usa en el ejemplo de código.
i. Deje ámbitos en blanco. La siguiente imagen es un ejemplo:Haga clic en Guardar.
Microsoft Azure Active Directory (Azure AD) v2
En el Portal de Azure, seleccione el bot de Azure en el panel.
En la página del recurso, seleccione Configuración en Configuración.
Seleccione el botón Agregar ajustes de conexión de OAuth en la pantalla Configuración.
En la imagen siguiente se muestra la selección correspondiente en la página de recursos:Complete el formulario de la siguiente manera:
Nombre. Escriba un nombre para la conexión. Use este nombre en el bot del
appsettings.json
archivo. Por ejemplo, BotTeamsAuthADv2.Proveedor de servicios Seleccione Azure Active Directory v2. Una vez seleccionada esta opción, se muestran los campos específicos de Azure AD v2.
Id. de cliente. Escriba el identificador de aplicación (cliente) que registró para la aplicación del proveedor de identidades de Azure.
Secreto de cliente Escriba el secreto que registró para la aplicación del proveedor de identidades de Azure.
Dirección URL de intercambio de tokens. Déjelo en blanco.
Id. de inquilino, escriba el identificador de directorio (inquilino) que registró anteriormente para la aplicación de identidad de Azure o común en función del tipo de cuenta compatible seleccionado al crear la aplicación del proveedor de identidades. Para decidir qué valor asignar, siga estos criterios:
Si seleccionó Solo cuentas en este directorio organizativo (solo Microsoft: inquilino único) o Cuentas en cualquier directorio organizativo (cualquier inquilino de Microsoft Entra ID : multiinquilino), escriba el identificador de inquilino que registró anteriormente para la aplicación Microsoft Entra. Este será el inquilino asociado a los usuarios que se pueden autenticar.
Si seleccionó Cuentas en cualquier directorio organizativo (cualquier inquilino de Microsoft Entra ID : multiinquilino) y cuentas personales de Microsoft (por ejemplo, Skype, Xbox) escriba la palabra común en lugar de un identificador de inquilino. De lo contrario, la aplicación Microsoft Entra comprueba a través del inquilino cuyo identificador se seleccionó y excluye las cuentas personales de Microsoft.
En Ámbitos, escriba una lista delimitada por espacios de permisos de grafos que requiere esta aplicación, como User.Read, User.ReadBasic.All o Mail.Read.
Seleccione Guardar.
Pruebe la conexión
Seleccione la entrada de conexión para abrir la conexión que ha creado.
Seleccione Probar conexión en la parte superior del panel Configuración de conexión del proveedor de servicios.
Por primera vez, se abre una nueva ventana del explorador que le pide que seleccione una cuenta. Seleccione el que quiera usar.
A continuación, permita al proveedor de identidades usar los datos (credenciales). La siguiente imagen es un ejemplo:
Seleccione Aceptar.
Se abre una página Probar conexión al <nombre> de la conexión correcta . Actualice la página si recibe un error. La siguiente imagen es un ejemplo:
El código del bot usa el nombre de conexión para recuperar tokens de autenticación de usuario.
Preparación del código de ejemplo del bot
Una vez finalizada la configuración preliminar, vamos a centrarnos en la creación del bot que se va a usar en este artículo.
Clone cs-auth-sample.
Abra Visual Studio.
En la barra de herramientas, seleccione Archivo > Abrir > proyecto o solución y abra el proyecto de bot.
En C#, actualice appsettings.json como se indica a continuación:
- Establezca
ConnectionName
en el nombre de la conexión del proveedor de identidades que agregó al registro del bot. El nombre que usamos en este ejemplo es BotTeamsAuthADv1. - Establezca
MicrosoftAppId
en el identificador de aplicación del bot que guardó en el momento del registro del bot. - Establezca
MicrosoftAppPassword
en el secreto de cliente que guardó en el momento del registro del bot.
En función de los caracteres del secreto del bot, es posible que tenga que aplicar escape XML a la contraseña. Por ejemplo, las y comercial (&) deben codificarse como
&
.{ "MicrosoftAppType": "", "MicrosoftAppId": "", "MicrosoftAppPassword": "", "ConnectionName": "",
- Establezca
En el Explorador de soluciones, vaya a la
TeamsAppManifest
carpeta , abramanifest.json
y establezcaid
ybotId
en el identificador de aplicación del bot que guardó en el momento del registro del bot. Para obtener más información, vea manifiesto de aplicación.
Implementar el bot en Azure
Para implementar el bot, siga los pasos descritos en How to Deploy your bot to Azure (Cómo implementar el bot en Azure).
Como alternativa, mientras esté en Visual Studio, puede seguir estos pasos:
En el Explorador de soluciones de Visual Studio, seleccione y mantenga presionado (o haga clic con el botón derecho) el nombre del proyecto.
En el menú desplegable, seleccione Publicar.
En la ventana mostrada, seleccione el vínculo Nuevo.
En la ventana de diálogo, seleccione App Service y Crear nuevo.
Seleccione el botón Publicar.
En la siguiente ventana de diálogo, escriba la información necesaria.
Seleccione Crear.
Si la implementación se completa correctamente, debería verla reflejada en Visual Studio. Se abre una página en el explorador predeterminado con el mensaje ¡El bot está listo!. La dirección URL es similar a
https://botteamsauth.azurewebsites.net/
. Guárdelo en un archivo.En el explorador, vaya a Azure Portal.
Compruebe el grupo de recursos, el bot aparece junto con los demás recursos. La siguiente imagen es un ejemplo:
En el grupo de recursos, seleccione el nombre de registro del bot (vínculo).
En el panel izquierdo, seleccione Configuración.
En el cuadro Punto de conexión de mensajería , escriba la dirección URL que acaba de obtener seguida de
api/messages
. Por ejemplo,https://botteamsauth.azurewebsites.net/api/messages
.Nota:
Solo se permite un punto de conexión de mensajería para un bot.
Seleccione el botón Guardar en la esquina superior izquierda.
Prueba del bot mediante el emulador
Instale Microsoft Bot Framework Emulator. Para obtener más información, vea Probar y depurar con el emulador.
Para que el inicio de sesión de ejemplo del bot funcione, debe configurar el emulador.
Configuración del emulador para la autenticación
Si un bot requiere autenticación, debe configurar el emulador. Para configurar:
- Inicie el emulador.
- 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.
- Active la casilla Use los tokens de autenticación de la versión 1.0.
- Escriba la ruta de acceso local a la herramientangrok. Consulte la wiki de la integración de túnel del emulador de Bot Framework/ngrok. Para obtener más información sobre las herramientas, consulte ngrok.
- Active la casilla Ejecutar ngrok cuando el emulador se inicie.
- 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, 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 reales del bot.
Ejecute el ejemplo de bot localmente en la máquina, a través de Visual Studio por ejemplo.
Inicie el emulador.
Seleccione el botón Abrir bot.
En la dirección URL del bot, escriba la dirección URL local del bot. Normalmente,
http://localhost:3978/api/messages
.En Id . de aplicación de Microsoft, escriba el identificador de la aplicación del bot desde
appsettings.json
.En Contraseña de la aplicación de Microsoft, escriba la contraseña de la aplicación del bot desde .
appsettings.json
Seleccione Conectar.
Una vez que el bot esté en funcionamiento, escriba cualquier texto para mostrar la tarjeta de inicio de sesión.
Seleccione el botón Iniciar sesión.
Aparece un cuadro de diálogo emergente para confirmar la dirección URL abierta para autenticar al usuario del bot (usted).
Seleccione Confirmar.
Si se le pide, seleccione la cuenta del usuario aplicable.
Dependiendo de la configuración que haya usado para el emulador, obtendrá una de las siguientes opciones:
-
Usar el código de verificación de inicio de sesión
✓ Se abre una ventana que muestra el código de validación.
✓ Copie y escriba el código de validación en el cuadro de chat para completar el inicio de sesión. -
Usar 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 iniciar sesión:
-
Usar el código de verificación de inicio de sesión
Si selecciona Sí cuando el bot le pregunta ¿Desea ver el token?, obtendrá la siguiente respuesta:
Escriba logout en el cuadro de chat de entrada para cerrar la sesión. 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 bots requiere el uso del Conector de servicio del bot. El servicio accede a la información de registro de bots del bot.
Probar el bot implementado
En el explorador, vaya a Azure Portal.
Busque el grupo de recursos.
Seleccione el vínculo del recurso. Se muestra la página de recursos.
En la página de recursos, seleccione Probar en el chat de web. El bot se inicia y muestra los saludos predefinidos.
Escriba cualquier cosa en el cuadro de chat.
Seleccione el cuadro Iniciar sesión.
Aparece un cuadro de diálogo emergente para confirmar la dirección URL abierta para autenticar al usuario del bot (usted).
Seleccione Confirmar.
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 iniciar sesión:
Seleccione el botón Sí para mostrar el token de autenticación. La siguiente imagen es un ejemplo:
Escriba logout en el cuadro de chat de entrada para cerrar la sesión.
Nota:
Si tiene problemas para iniciar sesión, intente probar de nuevo la conexión como se describe en los pasos anteriores. Esto podría volver a crear el token de autenticación. Con el cliente del chat de web de Bot Framework en Azure, es posible que tenga que iniciar sesión varias veces antes de que la autenticación se establezca correctamente.
Instalar y probar el bot en Teams
En el proyecto de bot, asegúrese de que la carpeta
TeamsAppManifest
contiene elmanifest.json
junto con unoutline.png
y archivoscolor.png
.En el Explorador de soluciones, vaya a la
TeamsAppManifest
carpeta . Editemanifest.json
asignando los siguientes valores:- Asegúrese de que el identificador de la aplicación del bot que recibió en el momento del registro del bot esté asignado a
id
ybotId
. - Asigne este valor:
validDomains: [ "token.botframework.com" ]
.
- Asegúrese de que el identificador de la aplicación del bot que recibió en el momento del registro del bot esté asignado a
Seleccione y comprima los archivos
manifest.json
,outline.png
ycolor.png
.Abra Microsoft Teams.
En el panel izquierdo, en la parte inferior, seleccione el icono Aplicaciones.
En el panel derecho, en la parte inferior, seleccione Cargar una aplicación personalizada.
Vaya a la
TeamsAppManifest
carpeta y cargue el manifiesto comprimido. Aparece la siguiente ventana:Seleccione el botón Agregar a un equipo.
En la ventana siguiente, seleccione el equipo en el que desea usar el bot.
Seleccione el botón Configurar un bot.
Seleccione los tres puntos (●●●) en el panel izquierdo. A continuación, seleccione el icono Portal para desarrolladores .
Seleccione la pestaña Editor de manifiestos. Debería ver el icono del bot que cargó.
Además, debería poder ver que el bot aparece como un contacto en la lista de chats que puede usar para intercambiar mensajes con el bot.
Probando el bot localmente en Teams
Teams es un producto totalmente basado en la nube. Requiere que todos los servicios a los que accede 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 que prefiera o hacer que una instancia de ejecución local sea accesible externamente a través de una herramienta de tunelización. Se recomienda ngrok, que crea una dirección URL direccionable externamente para un puerto que abra localmente en el equipo. Para configurar ngrok como preparación para ejecutar la aplicación de Teams localmente, siga estos pasos:
En una ventana de terminal, vaya al directorio donde
ngrok.exe
ha instalado. Se recomienda configurar la ruta de la variable de entorno para que apunte a ella.Ejecute, por ejemplo,
ngrok http 3978 --host-header=localhost:3978
. Reemplace el número de puerto según sea necesario. Inicia ngrok para escuchar en el puerto especificado. A cambio, proporciona una dirección URL direccionable externamente, válida mientras se ejecute ngrok. La siguiente imagen es un ejemplo:Copie la dirección HTTPS de reenvío similar a:
https://dea822bf.ngrok.io/
.Anexe para obtener
https://dea822bf.ngrok.io/api/messages
, que 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 Teams./api/messages
Un último paso que se debe realizar es actualizar el punto de conexión de mensajes del bot implementado. En el ejemplo, se implementó el bot en Azure. Se van a realizar estos pasos:
- En el explorador, vaya a Azure Portal.
- Seleccione el registro del bot.
- En el panel izquierdo, seleccione Configuración.
- En el panel derecho, en el cuadro Punto de conexión de mensajería, escriba la dirección URL de ngrok, en el ejemplo,
https://dea822bf.ngrok.io/api/messages
.
Inicie el bot localmente, por ejemplo, en Visual Studio modo de depuración.
Pruebe el bot mientras se ejecuta localmente mediante el chat web de prueba del portal de Bot Framework. Al igual que el emulador, esta prueba no le permite acceder a la funcionalidad específica de Teams.
En la ventana de terminal donde se ejecuta
ngrok
puede ver el tráfico HTTP entre el bot y el cliente de chat en web. Si desea obtener una vista más detallada, en una ventana del explorador, escribahttp://127.0.0.1:4040
obtuvo de la ventana de terminal anterior. La siguiente imagen es un ejemplo:
Nota:
Si detiene y reinicia ngrok, la dirección URL cambia. Para usar ngrok en el proyecto y, en función de las funcionalidades que use, debe actualizar todas las referencias de dirección URL.
Información adicional
TeamsAppManifest/manifest.json
Este manifiesto contiene la información necesaria por 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": "",
"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 diferente que otros canales.
Controlar la actividad Invoke
Una actividad invoke se envía al bot en lugar de a la actividad de eventos usada por otros canales, que se realiza mediante la subclases 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;
}
Ejemplo de código
En esta sección se proporciona un ejemplo del SDK de Bot Authentication v3.
Ejemplo de nombre | Descripción | .NET | Node.js | Python | Manifiesto |
---|---|---|---|---|---|
Autenticación del bot | En este ejemplo se muestra cómo empezar a usar la autenticación en un bot para Teams. | View | View | View | Ver |
Inicio de sesión único de tab, bot y extensión de mensaje (ME) | En este ejemplo se muestra el inicio de sesión único de Microsoft Entra para Tab, Bot y ME: búsqueda, acción y desenlazamiento de vínculos. | View | Ver | ND | Ver |