fulfillment의 작동 방식

모든 에이전트의 인텐트에 대해 처리를 사용 설정할 수 있습니다. 처리를 사용하려면 웹훅을 설정해야 합니다. 웹훅은 생성 및 호스팅하는 웹 서버 엔드포인트입니다.

웹훅 요청

처리가 사용 설정된 인텐트가 일치되면 Dialogflow는 일치된 인텐트에 대한 정보가 포함된 JSON 객체로 웹훅에 HTTP POST 요청을 수행합니다.

요청을 수신한 후 웹훅은 필요한 작업을 수행할 수 있습니다. 예를 들어 웹훅은 요청의 정보를 사용하여 데이터베이스에서 제품을 찾거나 주문을 할 수 있습니다.

마지막으로, 웹훅은 Dialogflow가 다음에 해야 하는 작업에 대한 안내로 응답해야 합니다.

요청 형식

WebhookRequest 필드에 대한 설명은 다음 참조 문서를 참조하세요.

서비스에 대한 샘플 요청

다음은 V2 및 V1 API 형식으로 된 서비스에 대한 샘플 요청입니다.

    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": {}
    }

웹훅 응답

요청이 되면 웹훅은 응답을 제공해야 합니다. 응답에서 다음을 지정할 수 있습니다.

  • Dialogflow가 사용자에게 반환하는 응답
  • 대화에 연결된 컨텍스트에 대한 업데이트
  • 다른 인텐트 호출을 유발하는 후속 조치 이벤트 이름
  • 원본 Dialogflow 호출자에 전송할 수 있는 임의 페이로드

응답 제한사항:

  • 응답은 Actions on Google 애플리케이션의 경우 10초, 다른 모든 애플리케이션의 경우 5초 이내에 실행되어야 하며 그렇지 않은 경우 요청이 타임아웃됩니다.
  • 응답의 크기는 64KiB 이하여야 합니다.

응답 형식

WebhookResponse 필드에 대한 설명은 다음 참조 문서를 참조하세요.

서비스의 샘플 응답:

    {
      "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"
        }
      }
    }

오류 처리

웹훅이 타임아웃을 초과하거나 사용할 수 없거나 오류를 나타내는 다음 HTTP 상태 코드 중 하나를 반환하는 경우 Dialogflow는 인텐트의 응답 섹션에 정의된 기본 응답을 사용하여 사용자에게 응답합니다.

  • 400 잘못된 요청
  • 401 승인되지 않음
  • 403 금지됨
  • 404 찾을 수 없음
  • 500 서버 오류
  • 503 서비스를 사용할 수 없음

또한 Dialogflow가 최초 detectIntent API에 의해 호출된 경우 클라이언트로 전송되는 응답의 status 필드는 다음과 같습니다.

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

위 스니펫에서 code는 서비스로부터 수신된 오류 ID입니다.

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Dialogflow 문서
도움이 필요하시나요? 지원 페이지를 방문하세요.