Para cada turno de la conversación, se realiza una interacción. Durante una interacción, un usuario final envía una entrada a Dialogflow y Dialogflow envía una respuesta. Tienes dos opciones para implementar tu sistema a fin de controlar las interacciones: con la API o con una integración.
Cuando uses la API, tu sistema debe manejar lo siguiente:
- Compila un agente.
- Proporciona una interfaz de usuario para 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 se usa una integración, tu sistema solo necesita manejar los siguientes elementos:
- 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 Dialogflow.
- Dialogflow crea una respuesta de intent de detección. 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. Dialogflow envía una respuesta de detección de intent a la interfaz de usuario o al sistema de integración.
- Tu interfaz de usuario o sistema de integración recibe la respuesta de detección de intent y reenvía la respuesta de texto o audio al usuario final.
- El usuario final ve o escucha la respuesta.
Propósito de la guía
En esta guía, se muestra cómo llamar a la API para un turno de conversación de un agente que no usa una integración (paso 2 del diagrama anterior). Esta guía no te muestra cómo implementar una interfaz de usuario para tu usuario final.
Recopilar ID
Los siguientes ejemplos requieren varios ID como entrada. Para encontrar tu ID del proyecto, ID de región y ID de agente, haz lo siguiente:
- Abre la consola de Dialogflow CX.
- Selecciona tu proyecto de GCP para abrir el selector de agentes.
- Haz clic en el menú de opciones more_vert para un agente de la lista.
- Haz clic en el botón Copiar nombre filter_none.
- Esto copia el nombre de identificación completo del 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.
Una sesión representa una conversación entre un agente de Dialogflow y un usuario final.
Creas un ID de sesión único al comienzo de una conversación y lo usas para cada turno de la conversación.
Para probar la API, puedes usar cualquier ID de string que tenga un máximo de 36 bytes, como test-session-123
.
Intención de detección de llamada
En los siguientes ejemplos, se llama al método detectIntent
del tipo Sessions
.
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# | No disponible | No disponible |
Go | No disponible | No disponible |
Java | SessionsClient | SessionsClient |
Node.js | SessionsClient | SessionsClient |
PHP | No disponible | No disponible |
Python | SessionsClient | SessionsClient |
Ruby | No disponible | No disponible |
LÍNEA DE REST Y CMD
Antes de usar cualquiera de los datos de solicitud siguientes, realiza los siguientes reemplazos:
- PROJECT_ID: Es el ID del proyecto de GCP.
- 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
Node.js
Python
Producción
Antes de ejecutar tu agente en producción, asegúrate de implementar las prácticas recomendadas de producción.