Cómo funciona la entrega

Puedes habilitar la entrega para cualquiera de los intents de tu agente. A fin de usar la entrega, debes configurar un webhook. Un webhook es un extremo de servidor web server que creaste y alojaste.

Solicitud de webhook

Cuando un intent con una entrega habilitada tiene una coincidencia, Dialogflow realizará una solicitud POST HTTP a tu webhook con un objeto JSON que contiene información sobre el intent coincidente.

Después de recibir una solicitud, el webhook puede realizar cualquier tarea necesaria. Por ejemplo, el webhook puede usar la información de la solicitud para buscar un producto en una base de datos o realizar un pedido.

Finalmente, tu webhook debería responder con instrucciones sobre lo que debería hacer Dialogflow a continuación.

Formato de la solicitud

Consulta la documentación de referencia para obtener una descripción de los campos de WebhookRequest:

Solicitud de muestra al servicio

Aquí hay ejemplos de las solicitudes al servicio en formatos de API V2 y V1:

    POST https://my-service.com/action

    Headers:
    //user defined headers
    Content-type: application/json

    POST body:
    {
      "responseId": "ea3d77e8-ae27-41a4-9e1d-174bd461b68c",
      "session": "projects/your-agents-project-id/agent/sessions/88d13aa8-2999-4f71-b233-39cbf3a824a0",
      "queryResult": {
        "queryText": "user's original query to your agent",
        "parameters": {
          "param": "param value"
        },
        "allRequiredParamsPresent": true,
        "fulfillmentText": "Text defined in Dialogflow's console for the intent that was matched",
        "fulfillmentMessages": [
          {
            "text": {
              "text": [
                "Text defined in Dialogflow's console for the intent that was matched"
              ]
            }
          }
        ],
        "outputContexts": [
          {
            "name": "projects/your-agents-project-id/agent/sessions/88d13aa8-2999-4f71-b233-39cbf3a824a0/contexts/generic",
            "lifespanCount": 5,
            "parameters": {
              "param": "param value"
            }
          }
        ],
        "intent": {
          "name": "projects/your-agents-project-id/agent/intents/29bcd7f8-f717-4261-a8fd-2d3e451b8af8",
          "displayName": "Matched Intent Name"
        },
        "intentDetectionConfidence": 1,
        "diagnosticInfo": {},
        "languageCode": "en"
      },
      "originalDetectIntentRequest": {}
    }

Respuesta de webhook

Una vez que se solicita, tu webhook debe proporcionar una respuesta. En la respuesta, puedes especificar lo siguiente:

  • La respuesta que Dialogflow le muestra al usuario.
  • Actualizaciones de los contextos adjuntos a la conversación.
  • Un nombre de evento de seguimiento que provocaría que se invoque otro intent.
  • Una carga útil arbitraria que se puede enviar al emisor de Dialogflow original.

Limitaciones de respuesta:

  • La respuesta debe ocurrir dentro de los 10 segundos para las aplicaciones de Actions on Google o de los 5 segundos para todas las otras aplicaciones; de lo contrario, se agotará el tiempo de espera de la solicitud.
  • La respuesta debe tener un tamaño menor o igual que 64 KiB.

Formato de la respuesta

Consulta la documentación de referencia para obtener una descripción de los campos WebhookResponse:

El servicio proporciona la siguiente respuesta de muestra:

    {
      "fulfillmentText": "This is a text response",
      "fulfillmentMessages": [
        {
          "card": {
            "title": "card title",
            "subtitle": "card text",
            "imageUri": "https://assistant.google.com/static/images/molecule/Molecule-Formation-stop.png",
            "buttons": [
              {
                "text": "button text",
                "postback": "https://assistant.google.com/"
              }
            ]
          }
        }
      ],
      "source": "example.com",
      "payload": {
        "google": {
          "expectUserResponse": true,
          "richResponse": {
            "items": [
              {
                "simpleResponse": {
                  "textToSpeech": "this is a simple response"
                }
              }
            ]
          }
        },
        "facebook": {
          "text": "Hello, Facebook!"
        },
        "slack": {
          "text": "This is a text response for Slack."
        }
      },
      "outputContexts": [
        {
          "name": "projects/${PROJECT_ID}/agent/sessions/${SESSION_ID}/contexts/context name",
          "lifespanCount": 5,
          "parameters": {
            "param": "param value"
          }
        }
      ],
      "followupEventInput": {
        "name": "event name",
        "languageCode": "en-US",
        "parameters": {
          "param": "param value"
        }
      }
    }

Administra errores

Si tu webhook excede el tiempo de espera, no está disponible o muestra uno de los siguientes códigos de estado HTTP que indican un error, Dialogflow responde al usuario con cualquier respuesta predeterminada definida en la sección Respuestas del intent.

  • 400 Solicitud incorrecta
  • 401 Sin autorización
  • 403 Prohibido
  • 404 No encontrado
  • 500 Falla del servidor
  • 503 Servicio no disponible

Además, si originalmente se invocó Dialogflow a través de la API detectIntent, el campo status en la respuesta que se le envía al cliente será el siguiente:

"status": {
    "code": 206,
    "errorType": "webhook call failed with %error Code% error"
}

En el fragmento anterior, code es el ID de error recibido del servicio.

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

Documentación de Dialogflow
¿Necesitas ayuda? Visita nuestra página de asistencia.