Solución de problemas generales de bots de Servicio de Bot de Azure AI

SE APLICA A: SDK v4

Estas preguntas más frecuentes pueden ayudarle a solucionar problemas comunes de desarrollo de bots o problemas de funcionamiento.

¿Cómo puedo solucionar problemas con mi bot?

  1. Depure el código de fuente del bot con Visual Studio Code o Visual Studio.
  2. Pruebe el bot con el Bot Framework Emulator antes de implementarlo en la nube.
  3. Implemente el bot en una plataforma de hosting en la nube como Azure y, a continuación, pruebe la conectividad con el bot mediante el control de chat en web integrado en el panel del bot de Azure Portal. Si tiene problemas con el bot después de implementarlo en Azure, puede consultar este artículo de blog: Understanding Azure troubleshooting and support (Descripción de la solución de problemas de Azure y soporte técnico).
  4. Descarte la autenticación como un posible problema.
  5. Pruebe el bot en Web Chat, Teams o cualquier otro canal que pretenda usar con el bot. Esto le ayudará a validar la experiencia del usuario de un extremo a otro.
  6. Considere la posibilidad de probar el bot en canales que tienen requisitos de autenticación adicionales, como Direct Line o Web Chat.
  7. Consulte el tema de procedimientos para depurar un bot y los otros artículos de depuración de esa sección.

¿Cómo puedo solucionar los problemas de autenticación?

Para más información acerca de cómo solucionar problemas de autenticación con el bot, consulte la solución de problemas de la autenticación de Bot Framework.

¿Cómo probar la conexión red entre bots y un canal?

Puede usar las direcciones IP, generadas por los pasos siguientes, para comprobar si hay alguna regla que bloquee la conexión con esas direcciones. Consulte la sección Comprobación de los seguimientos del servidor de seguridad en conexiones con errores.

Prueba de conexión del bot al canal

  1. En el explorador, vaya a Azure Portal.

  2. Seleccione el bot App Service cuya conexión desea probar.

  3. En el panel izquierdo, en la sección Herramientas de desarrollo, seleccione Herramientas avanzadas.

  4. Seleccione Go (Ir) en el panel derecho. Se mostrará la página de información de Kudu.

  5. En la barra de menús, elija Consola de depuración. Luego, en el menú desplegable, seleccione CMD. Se abre la consola de la aplicación web del bot de Kudu. Para más información, consulte Kudu.

    kudu cmd console

  6. Ejecute nslookup directline.botframework.com y compruebe si la resolución DNS funciona. Observe que nslookup (búsqueda de servidor de nombres) es una herramienta de línea de comandos de administración de red para consultar el sistema de nombres de dominio (DNS) para obtener el nombre de dominio o la asignación de direcciones IP, u otros registros DNS. Si la resolución DNS funciona, la respuesta a este comando contendrá la información pertinente.

    kudu cmd console bot channel dns

    La herramienta de búsqueda de IP de WHOIS es útil para obtener información sobre las direcciones IP.

  7. Ejecute curl -I directline.botframework.com. (La opción -I se usa para obtener una respuesta que contenga solo el encabezado). Compruebe que se devuelve un estado HTTP de 301 para comprobar que hay conectividad.

    kudu cmd console http 301

Prueba de conexión del canal al bot

Dado que curl no tiene acceso al sitio de producción y directline.botframework.com está en la red pública de Internet, debe usar curl en modo de simulación. Realice los pasos que se muestran a continuación fuera de una red privada virtual (VNET), por ejemplo, mediante una zona con cobertura inalámbrica de teléfono móvil. Consulte también ¿Qué es Azure Virtual Network?.

  1. Ejecute nslookup ivr-sr-bot.botapps.amat.com. La resolución DNS funciona si la respuesta a este comando contiene información relevante.

    kudu cmd console channel bot dns

  2. Ejecute curl -I https://ivr-sr-bot.botapps.amat.com/api/messages y compruebe si se devuelve un código de estado HTTP adecuado (por ejemplo, no se permite el método 405). El método especificado en la solicitud no se permite para el recurso identificado por el URI especificado. Esta es simplemente una manera de comprobar que hay conectividad.

    kudu cmd console http 405

  3. Si no obtiene la respuesta del bot, anote la dirección IP del cliente.

Comprobación de seguimientos de servidor de seguridad en conexiones con errores

Use las direcciones IP de nslookup ivr-sr-bot.botapps.amat.com y nslookup directline.botframework.com compruebe si hay una conexión de bloqueo de reglas con esas direcciones en cualquier dirección.

Estoy usando Bot Framework SDK para .NET. ¿Cómo puedo solucionar problemas con mi bot?

Busque las excepciones

En Visual Studio 2019, vaya a Depurar>Windows>Configuración de excepciones. En la ventana Configuración de excepciones, seleccione la casilla de verificación Interrumpir cuando se produzcan junto a Excepciones de Common Language Runtime. También puede ver la salida del diagnóstico en la ventana de salida cuando hay excepciones iniciadas o no controladas.

Examine la pila de llamadas

En Visual Studio, puede elegir si depura Solo mi código o no. Examinar la pila de llamadas completa puede proporcionar información adicional sobre los problemas.

Asegúrese de que todos los métodos de diálogo finalizan con un plan para tratar el mensaje siguiente.

Todos los pasos del diálogo deben ir al paso siguiente de la cascada o finalizar el diálogo actual para que se extraigan de la pila. Si un paso no se controla correctamente, la conversación no continuará como se espera. Eche un vistazo al artículo de conceptos de diálogos para más información sobre los diálogos.

¿Qué provoca un error con código de estado HTTP 429 "Demasiadas solicitudes"?

Una respuesta de error con código de estado HTTP 429 indica que se han emitido demasiadas solicitudes en un período de tiempo determinado. El cuerpo de la respuesta debe incluir una explicación del problema y también puede especificar el intervalo mínimo necesario entre solicitudes. Un posible origen de este error es la herramienta ngrok. Si está en un plan gratuito y alcanza los límites de ngrok, vaya a la página de precios y límites en su sitio web para más opciones.

¿Por qué el usuario no recibe los mensajes del bot?

La actividad de mensaje generada en la respuesta se debe dirigir correctamente, de lo contrario no llega a su destino previsto. En la mayoría de los casos no necesitará controlar esto de forma explícita; el SDK se encarga del direccionamiento de la actividad de mensaje.

Para el direccionamiento correcto de una actividad, incluya los detalles de los id. de conversación adecuados junto con los detalles sobre el remitente. En la mayoría de los casos, la actividad de mensaje se envía como respuesta a una que ha llegado. Por lo tanto, los detalles de direccionamiento se pueden obtener de la actividad de entrada.

Si examina los seguimientos o los registros de auditoría, puede comprobar para asegurarse de que los mensajes se direccionan correctamente. Si no es así, establezca un punto de interrupción en el bot y compruebe dónde se establecen los identificadores para el mensaje.

¿Cómo puedo ejecutar tareas en segundo plano en ASP.NET?

En algunos casos, es posible que desee iniciar una tarea asincrónica que espera unos segundos y, a continuación, ejecuta algún código para borrar el perfil de usuario o restablecer el estado de la conversación o el diálogo. Para más información sobre cómo lograr esto, consulte Cómo ejecutar tareas en segundo plano en ASP.NET. En particular, considere el uso de HostingEnvironment.QueueBackgroundWorkItem.

Mi bot es lento para responder al primer mensaje que recibe. ¿Cómo puedo hacerlo más rápido?

Los bots son servicios web y algunas plataformas de hospedaje, incluida Azure, ponen automáticamente el servicio en modo de suspensión si no recibe tráfico en un periodo de tiempo determinado. Si le ocurre esto al bot, este debe comenzar desde cero la próxima vez que recibe un mensaje, lo que hace que su respuesta sea mucho más lenta que si ya se estaba ejecutando.

Algunas plataformas de hosting le permiten configurar el servicio para que no entre en suspensión. Si el bot está hospedado en Web Apps de Servicio de Bot de Azure AI, vaya al servicio del bot en Azure Portal, seleccione Configuración de la aplicación y, a continuación, seleccione Siempre activa. Esta opción está disponible en la mayoría, pero no para todos los planes de servicio.

¿Cómo puedo garantizar el orden de entrega de los mensajes?

Bot Framework conservará el orden de los mensajes tanto como sea posible. Por ejemplo, si se envía el mensaje A y se espera a que se complete esa operación HTTP antes de iniciar otra operación HTTP para enviar el mensaje B, algunos canales, como SMS y correo electrónico, no garantizan el orden en el que el usuario recibirá mensajes.

¿Por qué se eliminan partes del texto del mensaje?

Bot Framework y muchos canales interpretan el texto como si tuviese formato Markdown. Compruebe si el texto contiene caracteres que se puedan interpretar como sintaxis de Markdown.

¿Cómo puedo admitir varios bots en el mismo punto de conexión de servicio de bots?

Este ejemplo muestra cómo configurar el elemento Conversation.Container con el elemento MicrosoftAppCredentials correcto y usar un simple elemento MultiCredentialProvider para autenticar varios identificadores de aplicación y contraseñas.

¿Cómo funcionan los identificadores en Bot Framework?

Para más información acerca de los identificadores en Bot Framework, consulte la guía de identificadores de Bot Framework.

¿Cómo se puede obtener acceso al identificador de usuario?

Los canales de Bot Framework presentan el identificador del usuario en el campo from.Id de cualquier actividad enviada por el usuario. Los SMS y los mensajes de correo electrónico proporcionarán el identificador de usuario sin procesar en esta propiedad. Algunos canales ocultan la propiedad from.Id para que contenga un identificador único para el usuario, que difiere del identificador del usuario en el canal. Si necesita conectarse a una cuenta existente, puede usar una tarjeta de inicio de sesión e implementar su propio flujo de OAuth para conectar el identificador de usuario con el identificador de usuario de su propio servicio.

¿Por qué ya no se muestran los nombres de usuario de Facebook?

¿Ha cambiado la contraseña de Facebook? Si lo ha hecho, invalidará el token de acceso y deberá actualizar la configuración del bot para el canal de Facebook Messenger en Azure Portal.

¿Cómo puedo usar servicios autenticados desde mi bot?

Para la autenticación de Microsoft Entra ID, consulte el tutorial Incorporación de autenticación al bot.

Nota:

Si agrega funcionalidades de seguridad y autenticación al bot, debe asegurarse de que los patrones que implementa en el código cumplen con los estándares de seguridad adecuados para la aplicación.

¿Cómo puedo limitar el acceso al bot a una lista predefinida de usuarios?

Algunos canales, como SMS y el correo electrónico, proporcionan direcciones sin ámbito. En estos casos, los mensajes del usuario contendrán el identificador de usuario sin procesar en la propiedad from.Id.

Otros canales, como Facebook y Slack, proporcionan direcciones de ámbito o con inquilinos de forma que se impide que un bot pueda predecir el id. de usuario antes de tiempo. En estos casos, deberá autenticar al usuario mediante un vínculo de inicio de sesión o un secreto compartido para determinar si están o no autorizados para usar el bot.

¿Por qué mi conversación de Direct Line 1.1 se inicia después de cada mensaje?

Nota:

Esta sección no se aplica a la última versión del protocolo de Direct Line, la versión 3.0.

Si la conversación de Direct Line se inicia después de cada mensaje, probablemente falta la propiedad from o tiene valor null en los mensajes que el cliente de Direct Line envió al bot. Cuando un cliente de Direct Line envía un mensaje sin la propiedad from o con valor null, el servicio de Direct Line asigna automáticamente un identificador, por lo que todos los mensajes que envía el cliente parecerán provenir de un usuario nuevo y diferente.

Para solucionar este problema, establezca la propiedad from en cada mensaje que envía el cliente de Direct Line en un valor estable que identifique de forma única al usuario que envía el mensaje. Por ejemplo, si un usuario ya ha iniciado sesión en una página web o aplicación, podría usar ese identificador de usuario existente como el valor de la propiedad from en los mensajes que envía el usuario. Como alternativa, puede generar un identificador de usuario aleatorio en la carga de la página o en la carga de la aplicación, almacenar ese identificador en una cookie o en un estado de dispositivo y usar este identificador como el valor de la propiedad from en los mensajes que envía el usuario.

¿Qué hace que el servicio de Direct Line 3.0 responda con código de estado HTTP 502 "Puerta de enlace incorrecta"?

Direct Line 3.0 devuelve el código de estado HTTP 502 cuando intenta ponerse en contacto con el bot pero la solicitud no finaliza correctamente. Este error indica que el bot devolvió un error o que se agotó el tiempo de espera de la solicitud. Para más información sobre los errores que genera el bot, vaya al panel del bot en Azure Portal y haga clic en el vínculo "Problemas" del canal afectado. Si configuró Application Insights para el bot, también puede encontrar allí información detallada del error.

¿Por qué obtengo una excepción Authorization_RequestDenied al crear un bot?

El permiso para crear bots de Servicio de Bot de Azure AI se administra a través del portal de Microsoft Entra ID. Si los permisos no están configurados correctamente en el centro de administración de Microsoft Entra ID, los usuarios obtendrán la excepción Authorization_RequestDenied al intentar crear un servicio de bot.

En primer lugar, compruebe si usted es un "Invitado" del directorio:

  1. Inicie sesión en Azure Portal.
  2. Seleccione Todos los servicios y busque activo.
  3. Seleccione Microsoft Entra ID.
  4. Seleccione Usuarios.
  5. Busque el usuario en la lista y asegúrese de que el Tipo de usuario no es un Invitado.

Microsoft Entra ID User-type

Una vez que haya comprobado que no es un Invitado, para asegurarse de que los usuarios de un directorio activo pueden crear el servicio de bot, el administrador de directorio debe configurar las opciones siguientes:

  1. Inicie sesión en el centro de administración de Microsoft Entra ID. Vaya a Usuarios y grupos y seleccione Configuración de usuario.
  2. En la sección Registro de aplicación, establezca Los usuarios pueden registrar aplicaciones en . Esto permite a los usuarios del directorio crear el servicio de bots.
  3. En la sección Usuarios externos, establezca Los permisos de los usuarios invitados están limitados en No. Esto permite a los usuarios invitados del directorio crear el servicio de bots.

Microsoft Entra ID Admin Center

¿Por qué no puedo migrar mi bot?

Si el bot está registrado en dev.botframework.com y desea migrarlo a Azure, pero tiene problemas para migrar el bot, podría deberse a que el bot pertenece a un directorio distinto del directorio predeterminado. Siga estos pasos:

  1. Desde el directorio de destino, agregue un nuevo usuario (mediante la dirección de correo electrónico) que no sea miembro del directorio predeterminado y conceda al usuario el rol de colaborador en las suscripciones que son el destino de la migración.

  2. Desde el Portal para desarrolladores, agregue la dirección de correo electrónico del usuario como copropietario del bot que se va a migrar. A continuación, cierre la sesión.

  3. Inicie sesión en el Portal para desarrolladores como el nuevo usuario y proceda a migrar el bot.

¿Dónde puedo obtener más ayuda?

  • Busque la información de las preguntas respondidas previamente en Stack Overflow o publique sus propias preguntas utilizando la etiqueta botframework. Stack Overflow posee unas pautas que requieren un título descriptivo, un resumen completo y conciso del problema y detalles suficientes para reproducir el problema. Las solicitudes de características o las preguntas demasiado amplias no se tendrán en cuenta; los nuevos usuarios deben visitar el Centro de ayuda de Stack Overflow para más detalles.
  • Consulte Problemas de BotBuilder en GitHub para obtener información sobre los problemas conocidos con Bot Framework SDK o para notificar un problema nuevo.
  • El debate de la comunidad de BotBuilder en Gitter.