Interacciones con la API

Usar la API para CX es similar a usar la API para ES, excepto que se modificaron algunas rutas de recursos y métodos para admitir nuevos tipos, métodos y campos.

Tu sistema debe controlar lo siguiente:

  • Dialogflow CX aún no admite ninguna integración, por lo que tu sistema debe proporcionar una interfaz de usuario para interactuar directamente con los usuarios finales.
  • Debes llamar 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.

En el siguiente diagrama, se muestran los pasos que se deben seguir para un turno de conversación de una sesión.

Diagrama de flujo de la API.

  1. El usuario final escribe o dice algo, conocido como entrada de usuario final.
  2. Tu sistema de interfaz de usuario recibe la entrada y la reenvía a la API de Dialogflow en una solicitud de intent de detección.
  3. 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.
  4. 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.
  5. Tu servicio de webhook compila una respuesta y envía una respuesta de webhook a Dialogflow.
  6. 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 intent de detección a tu sistema de interfaz de usuario.
  7. Tu sistema de interfaz de usuario recibe la respuesta de intent de detección y reenvía la respuesta de texto o audio al usuario final.
  8. El usuario final ve o escucha la respuesta.

Enviar una entrada del usuario final a la API de CX para su procesamiento es muy similar a la API de ES. En el siguiente ejemplo, se llama al método detectIntent del recurso Sessions.

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.
  • session-id: Es el ID de sesión.
  • end-user-input: La entrada del usuario final

Método HTTP y URL:

POST https://dialogflow.googleapis.com/v3beta1/projects/project-id/locations/us/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": "89dd432b-1df4-48c4-be6b-d6550c3422b0",
  "queryResult": {
    "text": "I want to ask about data plans for international travel.",
    "languageCode": "en",
    "responseMessages": [
      {
        "text": {
          "text": [
            "Sure! I can help with that. "
          ]
        }
      },
      {
        "text": {
          "text": [
            "I need to ask a few questions before I can find the best option for you."
          ]
        }
      },
      {
        "text": {
          "text": [
            "What's your name?"
          ]
        }
      }
    ],
    "currentPage": {
      "name": "projects/project-id/locations/us/agents/027ac861-f275-45ed-a879-92aeb554df4e/pages/48d4352f-c995-4e46-8857-999709882959",
      "displayName": "Collect Customer Info"
    },
    "intent": {
      "name": "projects/project-id/locations/us/agents/027ac861-f275-45ed-a879-92aeb554df4e/intents/d48acf76-10f6-491f-be0c-cb58e1ce74d6",
      "displayName": "Data Plan Intent"
    },
    "intentDetectionConfidence": 1
  }
}