Habilita Cloud Logging para tu agente
Activa Cloud Logging para tu agente. Esto es fundamental para capturar datos y diagnosticar problemas en conversaciones reales.
Recopila IDs de conversación
Cuando se produzca un comportamiento inesperado, recopila los IDs de conversación de Dialogflow. Estos IDs, que se encuentran en el historial de conversaciones, proporcionan una forma de rastrear la ruta de ejecución de una conversación y examinar interacciones específicas.
Se rechazó el permiso para la llamada a la API
Problema
Se recibió una respuesta PERMISSION_DENIED para la llamada a la API.
Solución
Asegúrate de haber configurado correctamente la autenticación y los roles (Dialogflow CX, Dialogflow ES). En particular, comprueba si completaste estos pasos:
- Creaste una cuenta de servicio y no la borraste por accidente.
- Proporcionaste a la cuenta de servicio un rol que otorga permiso para llamar al método elegido.
- Descargaste el archivo de claves privadas de la cuenta de servicio.
- Configuraste la variable de entorno
GOOGLE_APPLICATION_CREDENTIALSen el archivo de claves privadas.
La llamada a la API menciona un proyecto desconocido
Problema
Aparece un error Dialogflow API has not been used in project 32555940559 para la llamada a la API.
Solución
Comprueba si completaste estos pasos:
- Configuraste la variable de entorno
GOOGLE_APPLICATION_CREDENTIALS(consultaPERMISSION_DENIED). - Proporcionaste el ID del proyecto correcto a la llamada a la API.
Se obtiene un error de credenciales de autenticación no válido para la llamada a la API
Problema
Se recibió una respuesta Request had invalid authentication credentials.
Expected OAuth 2 access token, login cookie
or other valid authentication credential. para la llamada a la API.
Solución
Esto puede deberse a la creación manual de credenciales con tu biblioteca cliente mientras se especifica una región no predeterminada. Consulta una de las siguientes secciones para obtener orientación:
La respuesta de la llamada a la API solicita un cambio a otro host
Problema
Se recibió una respuesta Please switch to 'REGION-dialogflow.googleapis.com' to access resources
located in 'REGION' para la llamada a la API, en la que REGION es un ID de la región específico.
Solución
Esto sucede cuando especificas la región en la solicitud, pero no el extremo. Consulta una de las siguientes secciones para obtener orientación:
Faltan campos en la respuesta de la llamada a la API
Problema
Faltan algunos campos en la respuesta de la API.
Solución
Si esperas un valor numérico para un campo específico en la respuesta de la API, es posible que el campo no esté presente en la respuesta si el valor devuelto es 0.
Para obtener más información sobre el comportamiento de los valores predeterminados (incluidos los valores no numéricos), consulta los siguientes recursos:
No se puede borrar el proyecto debido a una retención
Problema
Cuando intentas borrar un proyecto de Google Cloud , recibes una notificación que indica que no se puede borrar porque tiene retenciones y una de ellas está relacionada con Dialogflow ES.
Solución
Asegúrate de que ya no necesites el agente de Dialogflow ES asociado al proyecto. Si recibes una notificación que indica que el agente no existe, significa que ya se borró.
Consola de Dialogflow ES
Abre https://dialogflow.cloud.google.com/#/agent/project-id/intents.
Ten en cuenta que este vínculo es diferente del que se encuentra en el diálogo de eliminación del proyecto Google Cloud .
API de Dialogflow
Usa el método
searchdel tipoagent.Obtén el nombre de la retención.
gcloud
Usa el comando gcloud alpha resource-manager liens list, como se describe en la documentación sobre Crea una lista de retenciones de un proyecto.
Explorador de API
Usa el panel Probar esta API en la página Método: liens.list:
- Completa el campo
parent, como se indica en la descripción del parámetro. - Haz clic en Ejecutar.
- Completa el campo
Borra la retención.
gcloud
Usa el comando gcloud alpha resource-manager liens delete LIEN_NAME, como se describe en la documentación sobre Quita las retenciones de un proyecto.
Explorador de API
Usa el panel Probar esta API en la página Método: liens.delete:
- Completa el campo
namecon el nombre de la retención que obtuviste en el paso 2. - Haz clic en Ejecutar.
- Completa el campo
Cierra el proyecto.
El webhook de Dialogflow CX falla con el error de tiempo límite excedido
Problema
Es posible que un webhook al que se llamó desde Dialogflow CX falle y muestre el siguiente mensaje de error:
Webhook call failed. Error: DEADLINE_EXCEEDED
Esto puede suceder porque la llamada al webhook supera el límite de tiempo de espera del webhook. Estos son los posibles motivos por los que la llamada de webhook puede exceder el límite de tiempo de espera:
- Se intentó activar un intent inexistente.
- Un problema de inicio en frío con el backend del webhook (por ejemplo, Cloud Functions).
- El webhook llama a otros servicios, lo que aumenta el tiempo de respuesta.
- No hay conexión entre el agente y el backend del webhook (por ejemplo, un balanceador de cargas mal configurado).
- Política de la organización que impide que se ejecuten el tráfico de entrada o los métodos de Dialogflow.
Solución alternativa
De forma predeterminada, un webhook tiene un límite de tiempo de espera de 5 segundos. Puedes aumentar el límite de tiempo de espera del webhook cuando crees o edites el recurso de webhook, lo que le proporcionará más tiempo para responder.
Console no pudo configurar un proyecto
Problema
Aparece un error Failed to set up GCP project cuando se crea un agente con la consola.
Solución
Es posible que no tengas permiso para crear Google Cloud proyectos. Comprueba si puedes crear un proyecto de Google Cloud directamente desde la consola. Si no puedes crear un proyecto, sigue las recomendaciones que se proporcionan en el mensaje de error.
Referencia del parámetro de sesión que se muestra en la respuesta
Problema
Las respuestas que devuelve Dialogflow incluyen las referencias de los parámetros en lugar de los valores de los parámetros.
Por ejemplo:
Hello, $session.params.customer_name
Los parámetros no se resolverán y se mostrará la referencia del parámetro si no se encuentra en la sesión actual o si no se usa según su tipo.
Solución
Este problema puede aparecer porque el parámetro utilizado no se incluye en la conversación, tiene un error tipográfico o tiene un tipo diferente del tipo utilizado.
Console no pudo crear el agente cuando no se habilitó la API
Problema
Aparece un error Dialogflow API has not been enabled for the project. Code: FAILED_PRECONDITION cuando se crea un agente con la consola.
Solución
Sigue los pasos de configuración para habilitar la API de Dialogflow.
Cuando se intentó acceder a la consola desde la cuenta de la organización, se produjo un error del servicio
Problema
Se recibió el error You don't have access to this service al intentar acceder a la consola desde la cuenta de la organización.
Solución
Comunícate con el administrador del sistema de tu organización y verifica que la configuración de la organización proporcione acceso a la consola. De lo contrario, verifica si Google marcó tu cuenta migrada de otra organización como restringida. Es probable que este sea el problema si otros usuarios de tu organización pueden acceder a la consola, pero tú no.
También puedes comunicarte con el equipo de asistencia para obtener ayuda.
No se puede exportar el agente en formato JSON porque falta un flujo
Problema
La exportación del agente como bytes sin procesar se completa correctamente, pero la exportación del agente en formato JSON falla con un mensaje de error similar a este:
Flow 'projects/PROJECT_ID/locations/LOCATION_ID/agents/AGENT_ID/flows/FLOW_ID' does not exist in the agent
Este problema puede deberse a un caso de prueba que hace referencia a un flujo que se borró.
Solución
Para resolver este problema, explora los casos de prueba no utilizados para confirmar si el flujo al que se hace referencia en el mensaje de error se usa en algún caso de prueba y, luego, borra los casos de prueba confirmados.
Conectividad telefónica de puerta de enlace
Problema
Cuando se usa una puerta de enlace telefónica, se obtiene una señal de ocupado o la llamada se cae.
Solución
Existen cuotas y límites para esta función. Si recibes una señal de ocupado o la llamada se interrumpe, puede que hayas excedido tu cuota.
Error RESOURCE_EXHAUSTED al intentar crear un número de teléfono nuevo
Problema
Cuando intentas crear un número de teléfono nuevo en Dialogflow CX, Dialogflow ES o Agent Assist, se devuelve un error RESOURCE_EXHAUSTED.
Solución
Este error significa que superaste el límite de números de teléfono por proyecto. Para crear un número de teléfono nuevo, borra los números de teléfono no utilizados asociados a tu proyecto hasta que estés por debajo del límite.
Si creaste números de teléfono en Dialogflow CX Phone Gateway o Dialogflow ES Phone Gateway, puedes borrarlos en la consola. Ten en cuenta que borrar el agente sin borrar el número de teléfono no borra el número de teléfono asociado.
Como alternativa, puedes usar la API siguiendo estos pasos.
Paso 1. Identifica todos los números de teléfono asociados con tu proyecto
Para identificar los números de teléfono asociados a tu proyecto, usa el método de la API de projects.phoneNumbers/list o projects.locations.phoneNumbers.list para todas las regiones en las que hayas creado números de teléfono.
Para la región
global, usa el siguiente comando:curl -X GET \ -H "Authorization: Bearer "$(gcloud auth print-access-token) \ -H "X-Goog-User-Project: PROJECT_ID" \ -H "Content-Type: application/json; charset=utf-8" \ https://dialogflow.googleapis.com/v2beta1/projects/PROJECT_ID/locations/global/phoneNumbersEn el caso de otras regiones, debes especificar la región en dos lugares:
curl -X GET \ -H "Authorization: Bearer "$(gcloud auth print-access-token) \ -H "X-Goog-User-Project: PROJECT_ID" \ -H "Content-Type: application/json; charset=utf-8" \ https://REGION_ID-dialogflow.googleapis.com/v2beta1/projects/PROJECT_ID/locations/REGION_ID/phoneNumbers
Paso 2. (Opcional) Identifica los agentes asociados con los perfiles de conversación
Obtener el ID del agente de Dialogflow CX asociado al número de teléfono a través del perfil de conversación podría ayudarte a identificar si el agente aún está en uso y si aún se necesita el número de teléfono. Puedes hacerlo con el método de la API de projects.conversationProfiles/get. Puedes encontrar los IDs de los perfiles de conversación en las respuestas a los comandos que ejecutaste en el paso 1.
Para la región
global, usa el siguiente comando:curl -X GET \ -H "Authorization: Bearer "$(gcloud auth print-access-token) \ -H "X-Goog-User-Project: PROJECT_ID" \ -H "Content-Type: application/json; charset=utf-8" \ https://dialogflow.googleapis.com/v2beta1/projects/PROJECT_ID/locations/global/conversationProfiles/CONVERSATION_PROFILE_IDEn el caso de otras regiones, especifica la región en dos lugares:
curl -X GET \ -H "Authorization: Bearer "$(gcloud auth print-access-token) \ -H "X-Goog-User-Project: PROJECT_ID" \ -H "Content-Type: application/json; charset=utf-8" \ https://REGION_ID-dialogflow.googleapis.com/v2beta1/projects/PROJECT_ID/locations/REGION_ID/conversationProfiles/CONVERSATION_PROFILE_ID
Puedes encontrar el agente por su ID en la consola de Dialogflow CX con la opción Buscar en la página Ver todos los agentes.
En el caso de Dialogflow ES, un proyecto solo se puede asociar con un máximo de cinco agentes, y un agente de Dialogflow ES se puede asociar con un número de teléfono. Por lo tanto, puedes abrir el agente en la consola de Dialogflow ES a través de https://dialogflow.cloud.google.com/#/editAgent/PROJECT_ID/intents.
Si no se encuentra ningún agente, puedes borrar el número de teléfono si tienes la certeza de que ya no es necesario.
Paso 3. Borra los números de teléfono que no se usen
Para borrar los números de teléfono que ya no son necesarios, usa el método de la API projects.phoneNumbers/delete o projects.locations.phoneNumbers.delete. Puedes encontrar los IDs de números de teléfono en la respuesta a los comandos que ejecutaste en el paso 1.
Para la región
global, usa el siguiente comando:curl -X DELETE \ -H "Authorization: Bearer "$(gcloud auth print-access-token) \ -H "X-Goog-User-Project: PROJECT_ID" \ -H "Content-Type: application/json; charset=utf-8" \ https://dialogflow.googleapis.com/v2beta1/PHONE_NUMBER_IDPara otras regiones, especifica la región:
curl -X DELETE \ -H "Authorization: Bearer "$(gcloud auth print-access-token) \ -H "X-Goog-User-Project: PROJECT_ID" \ -H "Content-Type: application/json; charset=utf-8" \ https://REGION_ID-dialogflow.googleapis.com/v2beta1/PHONE_NUMBER_ID
No hay respuesta de Dialogflow CX Messenger
Problema
No hay respuesta del agente para las interacciones de Dialogflow CX Messenger.
Solución
Si no ves ninguna respuesta de Dialogflow CX Messenger, asegúrate de que la facturación esté habilitada en el proyecto y que la API de Dialogflow esté habilitada en el proyecto. Consulta las instrucciones de configuración.
El valor del parámetro coincidió, pero no es un sinónimo de entidad
Problema
- Caso general: Se extrae un valor de parámetro en el tiempo de ejecución, aunque la entidad correspondiente al parámetro no contenga el valor coincidente como sinónimo.
- Un caso más específico: Después de que se borra un sinónimo de una entidad y se vuelve a entrenar al agente, este sinónimo se sigue extrayendo como un valor de parámetro para esta entidad.
Solución
- Usa la opción de búsqueda para verificar si el valor coincidente puede estar presente en el agente como una entidad implícita (Dialogflow CX, Dialogflow ES). Encuentra todas las intenciones que tienen anotaciones con este parámetro y entidad.
- Para corregir las anotaciones, asegúrate de que ninguna de ellas se aplique al texto que representa el valor coincidente no deseado.
- Prueba el agente en el tiempo de ejecución para verificar si se resolvió el problema.
- Si el problema persiste, asegúrate de que las opciones Expansión automática y Coincidencia aproximada no estén marcadas en la configuración avanzada de la entidad y vuelve a probar el agente.
El bot de voz omite algunas respuestas
Problema
En el caso de un agente diseñado para texto y voz, el bot de voz no lee algunas respuestas.
Solución
Si se define al menos una respuesta de texto de audio de salida para un turno de conversación en particular, asegúrate de que la opción de texto de audio de salida esté presente de manera coherente en todas las respuestas de cumplimiento y webhook del agente en todos los pasos de este turno de conversación.
Las etiquetas de SSML no tienen efecto
Problema
Las etiquetas SSML se definen en el cumplimiento del agente, pero el bot de voz lee el texto sintetizado sin efectos de SSML.
Solución
Asegúrate de que solo haya un par <speak></speak> por cada tarjeta de respuesta en la consola de Dialogflow o por cada objeto de mensaje de respuesta si la API o el webhook proporcionan las respuestas.
El agente de voz pronuncia el cero como la letra O
Problema
En el caso de un agente diseñado para voz, el agente de voz lee los ceros como la letra O en lugar de cero.
Solución
- Cambia Agent says para usar la opción de diálogo Output audio text.
- Marca la casilla de verificación SSML.
- Encierra el texto entre una etiqueta de SSML:
<speak> <say-as interpret-as='verbatim'>YOUR_TEXT</say-as> </speak> - Guardar.
Por ejemplo, los ceros de los números de tarjetas de crédito se deletrearán como ceros:
<speak>
<say-as interpret-as='verbatim'>5177 7702 8500 4578</say-as>
</speak>Pronunciación sintetizada inesperada
Problema
La pronunciación sintetizada de las respuestas del agente (p.ej., nombres propios, acrónimos) no es la esperada.
Solución
Para garantizar pronunciaciones específicas de palabras poco conocidas, usa las etiquetas say-as o phoneme de SSML en las respuestas del agente.
Se alcanzó la cantidad máxima permitida de pasos de ejecución de la máquina de estados
Problema
Recibí el siguiente mensaje de error en la consola de Dialogflow CX o en los registros cuando envié solicitudes de tiempo de ejecución al agente:
You have reached the maximum allowed state machine execution steps. You may consider simplifying your agent/flow design. Current execution steps are: [<array_of_objects>]
El array del mensaje de error contiene una lista de los pasos de ejecución de la solicitud. Es posible que la lista esté incompleta si la cantidad de pasos es demasiado grande.
Solución
Por lo general, este mensaje de error indica que la cantidad de transiciones para un solo turno de conversación es demasiado grande. Un ejemplo común es la transición a la misma página, lo que crea un bucle infinito.
Para solucionar el problema, haz lo siguiente:
- Copia el array JSON del mensaje de error.
- (Opcional) Formatea el array copiado como JSON legible para mejorar la legibilidad. Si el mensaje de error está truncado, busca el último objeto "Step", borra el objeto de paso incompleto y la coma anterior, y agrega un corchete de cierre del array antes de validar y embellecer el JSON.
- Observa los valores de
"TriggeredTransitionRouteId"y"TargetPage"para cada paso. En el caso de un bucle infinito, los campos"TriggeredTransitionRouteId"y"TargetPage"tienen valores repetidos en la mayoría de los pasos. - Modifica el diseño de tu agente para quitar las transiciones de bucle infinito o reducir la cantidad de transiciones para un solo turno de conversación.
La coincidencia de expresión regular es demasiado amplia
Problema
Se recibió un error Regular expression match is too broad al crear una entidad de expresión regular (Dialogflow CX, Dialogflow ES).
Solución
Considera el siguiente enfoque:
- Usa
^y$en la expresión regular para indicar el principio y el final del texto, respectivamente. - Usa la entidad de expresión regular con un parámetro obligatorio (Dialogflow CX, Dialogflow ES).
- Define los mensajes de parámetros obligatorios para solicitar al usuario final que proporcione solo el valor de la entidad sin palabras circundantes.
Caracteres no alfanuméricos no deseados insertados por el reconocimiento de voz
Problema
Cuando se intenta hacer coincidir caracteres alfanuméricos, el reconocedor de voz inserta caracteres no alfanuméricos no deseados (espacios, guiones, etc.), lo que provoca que no se encuentre la entidad.
Solución
- Si usas entidades del sistema para hacer coincidir números, considera usar entidades de expresiones regulares (Dialogflow CX, Dialogflow ES) en su lugar.
- Sigue todas las recomendaciones de la sección Reconocimiento de voz alfanumérico impreciso por entidades de expresión regular.
- Para los números coincidentes que usan integraciones de telefonía, considera una opción de DTMF, además del reconocimiento de voz.
Transcripciones vacías para entradas de voz
Problema
Las respuestas de Dialogflow para las entradas de voz muestran transcripciones vacías. Las solicitudes se manejan como si no hubiera entrada o no hubiera coincidencias.
Solución
Escucha la grabación de audio para confirmar que contiene voz.
Asegúrate de que la adaptación de voz esté habilitada en la configuración del agente (Dialogflow CX, Dialogflow ES).
Si habilitar la adaptación del discurso no ayuda, experimenta con los siguientes modelos de voz en una configuración que no sea de producción y usa el que genere los mejores resultados:
latest_shortphone_callcommand_and_search
Para otros idiomas, consulta los modelos de voz admitidos en la documentación de Idiomas admitidos por Speech-to-Text.
La forma de especificar un modelo de voz depende de cómo configures las interacciones con Dialogflow.
Para las solicitudes a la API, proporciona el nombre del modelo en el campo
modeldel objetoInputAudioConfig(Dialogflow CX, Dialogflow ES).Si usas Phone Gateway (Dialogflow CX, Dialogflow ES), puedes actualizar el modelo de voz en el perfil de conversación que creó Dialogflow cuando habilitaste la integración:
Recupera el ID del perfil de conversación:
- Usa el método
conversationProfiles.listpara recuperar todos los perfiles de conversación vinculados a tu proyecto. - Busca el perfil de conversación que deseas actualizar y copia el valor del campo
name.
En el caso de Dialogflow CX Phone Gateway, el nombre visible del perfil de conversación se puede encontrar en la configuración de la integración. En el caso de Dialogflow ES Phone Gateway, el nombre visible del perfil de conversación corresponde al nombre del agente en el que se habilitó la integración.
Si tienes varios perfiles de conversación con el mismo nombre visible, verifica el ID del agente en el campo
automatedAgentConfigde la respuesta del métodoconversationProfiles.list.- Usa el método
Usa el método de la API de
conversationProfiles.patchpara actualizar el campomodelenSpeechToTextConfig.
Para las integraciones de Contact Center AI, consulta con tu integrador de telefonía cómo actualizar el modelo de voz para la integración o para solicitudes individuales.
Información sobre los errores de bucle de la guía
Problema
Cuando vinculas guías, se produce el error Playbook <playbookID> caused loop in playbook routes.
Solución
Se puede producir un bucle si intentas dirigir el flujo a un playbook "principal", es decir, uno que llamó al actual de forma directa o indirecta. Para corregir este problema, verifica que el enrutamiento del manual sea unidireccional y no vuelva a un manual principal en la misma ruta de conversación.
Error de pantalla en blanco "El tamaño del archivo supera los 2 MB" cuando se comparan versiones del agente
Problema
Cuando intentas comparar dos versiones diferentes del agente, la pantalla se pone en blanco y aparece el siguiente mensaje de error:
File size exceeds 2MB
Este problema se debe a que uno de los archivos supera los 2 MB de tamaño.
Solución
Para comparar versiones del agente en las que uno de los archivos supera los 2 MB, se recomienda usar el método de la API compareVersion.
Reconocimiento de voz alfanumérico impreciso por entidades de expresión regular
Problema
Se recibieron transcripciones imprecisas para las entradas de voz de caracteres alfanuméricos diseñados para coincidir con una entidad de expresión regular (Dialogflow CX, Dialogflow ES).
Solución
- Asegúrate de que la adaptación de voz esté habilitada en la configuración del agente (Dialogflow CX, Dialogflow ES).
- Asegúrate de que al menos una entrada de entidad cumpla con todos los requisitos de entrada de regex (Dialogflow CX, Dialogflow ES).
- Para patrones específicos, usa las expresiones regulares más específicas. Por ejemplo, para un código alfanumérico que comienza con dos letras seguidas de cinco dígitos, usa
[a-zA-Z]{2}\d{5}en lugar de[a-zA-Z0-9]{7}. - Asegúrate de que tu entidad de expresión regular permita la coincidencia de caracteres no alfanuméricos (espacios, guiones, etc.) que pueda insertar el reconocedor de voz. Para cumplir con el requisito 2 de esta lista, crea varias entradas de entidades: una entrada para satisfacer los requisitos 2 de esta lista y otra para tener en cuenta los caracteres no alfanuméricos. Por ejemplo, para que coincidan cinco dígitos y se permitan caracteres no alfanuméricos, haz lo siguiente:
\d{5}(\d[^a-zA-Z0-9]*){5} - Asegúrate de que tu agente cumpla con el requisito de definición de parámetros (Dialogflow CX, Dialogflow ES).
Ejemplo para Dialogflow CX
Ejemplo para Dialogflow ES
- Asegúrate de que tu agente cumpla con el requisito de anotación de frases de entrenamiento (Dialogflow CX, Dialogflow ES).
Ejemplo para Dialogflow ES
- Asegúrate de que tus pruebas sigan los lineamientos de pruebas (Dialogflow CX, Dialogflow ES).
- Para quitar los caracteres no alfanuméricos que el reconocedor de voz pudo haber insertado, usa lo siguiente:
- Para Dialogflow CX: Función del sistema SUBSTITUTE o webhook
- Para Dialogflow ES: webhook
- Verifica las limitaciones de la adaptación del discurso (Dialogflow CX, Dialogflow ES).
Diseña conversaciones controladas
Crea tu agente con rutas de conversación claramente definidas. Asegúrate de que el agente pueda solicitar la información necesaria para satisfacer los requisitos del usuario. Evita un alcance conversacional demasiado amplio, ya que puede generar un comportamiento impredecible.
Analizar los registros
Las entradas y salidas de las guías, las herramientas y los almacenes de datos se registran en los registros. Usa los IDs de conversación recopilados para seguir la cadena de llamadas e identificar dónde falló la ejecución.
Experimenta con las instrucciones
Si un conjunto específico de instrucciones no funciona como esperabas, intenta reformularlo. Como alternativa, puedes usar Gemini para generar instrucciones (meta-instrucciones). Este enfoque iterativo puede ayudarte a encontrar la redacción óptima para tu caso de uso.
Proporciona información completa para la asistencia
Cuando abras un caso de asistencia con el equipo de asistencia de Cloud, incluye los IDs de conversación y los registros pertinentes que recopilaste durante la investigación. Esta información es fundamental para depurar problemas de manera eficiente.