Para cada turno de la conversación, se produce una interacción. Durante una interacción, un usuario final envía una entrada a los agentes conversacionales (Dialogflow CX) y estos envían una respuesta. Tienes dos opciones cuando implementas tu sistema para manejar las interacciones mediante la API o una integración.
Cuando usas la API, tu sistema debe controlar lo siguiente:
- Compila un agente.
- Proporciona una interfaz de usuario para los usuarios finales.
- Llama a la API de Dialogflow para cada turno de conversación a fin de enviar la entrada del usuario final a la API.
- A menos que tus respuestas de agente sean estáticas (poco comunes), debes alojar un servicio de webhook para manejar la entrega habilitada para webhook.
Cuando usas una integración, tu sistema solo necesita controlar lo siguiente:
- Compila un agente.
- De manera opcional, implementa un servicio de webhook.
En el siguiente diagrama, se muestran los pasos que se deben seguir para un turno de conversación de una sesión.
- El usuario final escribe o dice algo, conocido como entrada de usuario final.
- Tu interfaz de usuario o sistema de integración recibe la entrada y la reenvía a la API de Dialogflow en una solicitud de intent de detección.
- La API de Dialogflow recibe la solicitud de intent de detección. Coincide con la entrada a un intent o parámetro de formulario, establece los parámetros según sea necesario y actualiza el estado de la sesión. Si necesita llamar a una entrega habilitada para webhook, envía una solicitud de webhook a tu servicio de webhook, de lo contrario, va al paso 6.
- Tu servicio de webhook recibe la solicitud de webhook. Tu servicio realiza las acciones necesarias, como llamar a API externas, consultar o actualizar una base de datos, etcétera.
- Tu servicio de webhook compila una respuesta y envía una respuesta de webhook a los agentes de conversación (Dialogflow CX).
- Los agentes de conversación (Dialogflow CX) crean una respuesta de detección de intent. Si se llamó a un webhook, usa la respuesta proporcionada en la respuesta de webhook. Si no se llamó a ningún webhook, usa la respuesta estática que se define en el agente. Los agentes de conversación (Dialogflow CX) envían una respuesta de detección de intent a tu interfaz de usuario o sistema de integración.
- Tu interfaz de usuario o sistema de integración recibe la respuesta de intent de detección y reenvía la respuesta de texto o audio al usuario final.
- El usuario final ve o escucha la respuesta.
Objetivo de la guía
En esta guía, se muestra cómo llamar a la API para un turno de conversación en un agente que no usa una integración (paso 2 del diagrama anterior). En esta guía no se muestra cómo implementar una interfaz de usuario para el usuario final.
Antes de comenzar
Debes hacer lo siguiente antes de leer esta guía:
- Lee los conceptos básicos del flujo.
- Realiza los pasos de configuración.
- Crea un agente nuevo o continúa usando el que creaste en Crea un agente con flujos.
Recopila ID
Los siguientes ejemplos requieren varios IDs como entrada. Para encontrar el ID del proyecto, el ID de la región y el ID del agente, haz lo siguiente:
- Abre la consola de Dialogflow CX.
- Selecciona tu proyecto de Google Cloud para abrir el selector de agentes.
- Haz clic en el menú de opción more_vert de un agente de la lista.
- Haz clic en el botón de nombre de la copia filter_none.
- Esto copia el nombre completo de la identificación de tu agente, que incluye el ID del proyecto, el ID de la región y el ID del agente con el siguiente formato:
projects/PROJECT_ID/locations/REGION_ID/agents/AGENT_ID
También necesitas un ID de sesión.
R
sesión
representa una conversación entre un agente de Conversational Agents (Dialogflow CX) y un usuario final.
Debes crear un ID de sesión único al comienzo de una conversación
y usarla en cada turno de la conversación.
Para probar la API, puedes usar cualquier ID de cadena de 36 bytes como máximo, como test-session-123
.
Llama al intent de detección
En los siguientes ejemplos, se llama al método Sessions.detectIntent
.
Selecciona un protocolo y una versión para la referencia de sesión:
Protocolo | V3 | V3beta1 |
---|---|---|
REST | Recurso de sesión | Recurso de sesión |
RPC | Interfaz de sesión | Interfaz de sesión |
C++ | SessionsClient | No disponible |
C# | SessionsClient | No disponible |
Go | SessionsClient | No disponible |
Java | SessionsClient | SessionsClient |
Node.js | SessionsClient | SessionsClient |
PHP | No disponible | No disponible |
Python | SessionsClient | SessionsClient |
Ruby | No disponible | No disponible |
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto de Google Cloud.
- AGENT_ID: Es el ID del agente.
- REGION_ID: Es el ID de región
- SESSION_ID: Es el ID de sesión.
- END_USER_INPUT: La entrada del usuario final
Método HTTP y URL:
POST https://REGION_ID-dialogflow.googleapis.com/v3/projects/PROJECT_ID/locations/REGION_ID/agents/AGENT_ID/sessions/SESSION_ID:detectIntent
Cuerpo JSON de la solicitud:
{ "queryInput": { "text": { "text": "END_USER_INPUT" }, "languageCode": "en" }, "queryParams": { "timeZone": "America/Los_Angeles" } }
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "responseId": "38e8f23d-eed2-445e-a3e7-149b242dd669", "queryResult": { "text": "I want to buy a shirt", "languageCode": "en", "responseMessages": [ { "text": { "text": [ "Ok, let's start a new order." ] } }, { "text": { "text": [ "I'd like to collect a bit more information from you." ] } }, { "text": { "text": [ "What color would you like?" ] } }, {} ], "currentPage": { "name": "projects/PROJECT_ID/locations/us-central1/agents/133b0350-f2d2-4928-b0b3-5b332259d0f7/flows/00000000-0000-0000-0000-000000000000/pages/ce0b88c4-9292-455c-9c59-ec153dad94cc", "displayName": "New Order" }, "intent": { "name": "projects/PROJECT_ID/locations/us-central1/agents/133b0350-f2d2-4928-b0b3-5b332259d0f7/intents/0adebb70-a727-4687-b8bc-fbbc2ac0b665", "displayName": "order.new" }, "intentDetectionConfidence": 1, "diagnosticInfo": { ... }, "match": { "intent": { "name": "projects/PROJECT_ID/locations/us-central1/agents/133b0350-f2d2-4928-b0b3-5b332259d0f7/intents/0adebb70-a727-4687-b8bc-fbbc2ac0b665", "displayName": "order.new" }, "resolvedInput": "I want to buy a shirt", "matchType": "INTENT", "confidence": 1 } } }
Java
Para autenticarte en Dialogflow, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Node.js
Para autenticarte en Dialogflow, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Para autenticarte en Dialogflow, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Producción
Antes de ejecutar el agente en producción, asegúrate de implementar las prácticas recomendadas de producción.