बातचीत का वेबहुक फ़ॉर्मैट {:#conversation-webhook-format} (Dialogflow)

इस सेक्शन में, JSON पेलोड के फ़ॉर्मैट के बारे में बताया गया है. इसे तब भेजा जाएगा, जब Actions on Google ने कार्रवाइयां SDK टूल के ज़रिए कार्रवाई पूरी करनी होगी.

बातचीत शुरू होने पर, उसकी पहचान एक यूनीक conversationId से की जाती है. हर एक बाद के उपयोगकर्ता के लिए Assistant से क्वेरी करते हैं, तो आपके पूरे ऑर्डर को एक मकसद मिलता है जो आपका वेबहुक प्रोसेस होना चाहिए और उसे जवाब देना चाहिए. यह conversationIdहर अनुरोध में मौजूद रहता है और बातचीत खत्म होने तक, जवाब देने वाला जोड़ा.

अनुरोध का मुख्य भाग

जब लोग कोई शुरुआती क्वेरी करते हैं या बाद में कोई इनपुट देते हैं, तब Assistant एक अनुरोध भेजती है आपकी ज़रूरत को पूरा करते हैं. बातचीत के लिए वेबहुक के अनुरोध इसमें ट्रिगर किया गया इंटेंट और उपयोगकर्ता का रॉ टेक्स्ट शामिल होता है और उपयोगकर्ता के डिवाइस की सतह की क्षमताओं को शामिल किया जाता है.

बातचीत के वेबहुक फ़ॉर्मैट में, किसी अनुरोध के मुख्य फ़ील्ड की खास जानकारी यहां दी गई है:

फ़ील्ड ब्यौरा
isInSandbox इस बूलियन वैरिएबल का इस्तेमाल मुख्य रूप से लेन-देन सुविधा की मदद से यह बताना चाहते हैं कि आपके वेबहुक को सैंडबॉक्स में इस अनुरोध को हैंडल करना चाहिए या नहीं मोड. सैंडबॉक्स मोड में, वेबहुक को न तो उपयोगकर्ताओं के किसी परचेज़ ऑर्डर (पीओ) से शुल्क लेना चाहिए और न ही उसे पूरा करना चाहिए. डिफ़ॉल्ट रूप से, यह "true" पर सेट होता है.
surface उपयोगकर्ता किस प्लैटफ़ॉर्म से इंटरैक्ट कर रहा है और उसकी क्षमताओं के बारे में जानकारी.
Inputs कॉल शुरू करने के अनुरोध के बारे में जानकारी. ट्रिगर करने के लिए, इसमें इंटेंट जो किसी कार्रवाई पर मैप होता है. बाद वाले अनुरोध है, तो इस ऑब्जेक्ट में आपके फ़ुलफ़िलमेंट के ज़रिए तय किए गए अनुमानित इनपुट.
User अनुरोध करने वाले उपयोगकर्ता की जानकारी. इस जानकारी में अनुमतियां शामिल हैं और उपयोगकर्ता की भाषा से मिलती है.
Conversation बातचीत के कॉन्टेक्स्ट के बारे में जानकारी. इसमें बातचीत का आईडी, टाइप (उदाहरण के लिए, क्या यह अनुरोध नई बातचीत शुरू कर रहा है) और बातचीत टोकन का इस्तेमाल किया जा सकता है.
availableSurfaces इस जानकारी का इस्तेमाल इसके लिए किया जाता है कई प्लैटफ़ॉर्म पर बातचीत करने के लिए.

बातचीत शुरू करने के अनुरोध का आसान उदाहरण

नीचे दिया गया स्निपेट बातचीत के वेबहुक फ़ॉर्मैट में शुरू करने के अनुरोध का एक उदाहरण दिखाता है.

{
  "user": {
    "userId": "ABwppHEF...",
    "locale": "en-US",
    "lastSeen": "2018-03-21T17:59:52Z",
    "userStorage": "{\"data\":{}}"
  },
  "device": {},
  "surface": {
    "capabilities": [
      {
        "name": "actions.capability.SCREEN_OUTPUT"
      },
      {
        "name": "actions.capability.AUDIO_OUTPUT"
      },
      {
        "name": "actions.capability.MEDIA_RESPONSE_AUDIO"
      },
      {
        "name": "actions.capability.WEB_BROWSER"
      }
    ]
  },
  "conversation": {
    "conversationId": "1521784527171",
    "type": "NEW"
  },
  "inputs": [
    {
      "intent": "actions.intent.MAIN",
      "rawInputs": [
        {
          "inputType": "VOICE",
          "query": "Talk to my test app"
        }
      ]
    }
  ],
  "availableSurfaces": [
    {
      "capabilities": [
        {
          "name": "actions.capability.SCREEN_OUTPUT"
        },
        {
          "name": "actions.capability.AUDIO_OUTPUT"
        },
        {
          "name": "actions.capability.MEDIA_RESPONSE_AUDIO"
        },
        {
          "name": "actions.capability.WEB_BROWSER"
        }
      ]
    }
  ]
}

बातचीत के अनुरोध का उदाहरण

नीचे दिए गए स्निपेट में, बातचीत के वेबहुक फ़ॉर्मैट में बातचीत वाले अनुरोध का एक उदाहरण दिया गया है. जहां उपयोगकर्ता का इनपुट एक टेक्स्ट स्ट्रिंग है (उदाहरण के लिए, “मेरा लकी नंबर 88 है.”):

{
  "user": {
    "userId": "ABwppHEF...",
    "locale": "en-US",
    "lastSeen": "2018-03-21T17:59:52Z",
    "userStorage": "{\"data\":{}}"
  },
  "device": {},
  "surface": {
    "capabilities": [
      {
        "name": "actions.capability.SCREEN_OUTPUT"
      },
      {
        "name": "actions.capability.AUDIO_OUTPUT"
      },
      {
        "name": "actions.capability.MEDIA_RESPONSE_AUDIO"
      },
      {
        "name": "actions.capability.WEB_BROWSER"
      }
    ]
  },
  "conversation": {
    "conversationId": "1521784527171",
    "type": "NEW"
  },
  "inputs": [
    {
      "intent": "actions.intent.TEXT",
      "rawInputs": [
        {
          "inputType": "VOICE",
          "query": "My lucky number is 88."
        }
      ]
    }
  ],
  "availableSurfaces": [
    {
      "capabilities": [
        {
          "name": "actions.capability.SCREEN_OUTPUT"
        },
        {
          "name": "actions.capability.AUDIO_OUTPUT"
        },
        {
          "name": "actions.capability.MEDIA_RESPONSE_AUDIO"
        },
        {
          "name": "actions.capability.WEB_BROWSER"
        }
      ]
    }
  ]
}

जवाब का मुख्य भाग

आपके फ़ुलफ़िलमेंट एंडपॉइंट से जुड़े एचटीटीपी पोस्ट के हेडर में Content-Type और Assistant, application/json होनी चाहिए.

जवाब: बातचीत के वेबहुक फ़ॉर्मैट में, असल यूज़र इंटरफ़ेस (यूआई) जैसा डेटा होता है. इस फ़ॉर्मैट में, उपयोगकर्ता (इसमें ऑडियो और विज़ुअल कॉम्पोनेंट भी शामिल हैं) और इंटेंट बाद वाले अनुरोध में ट्रिगर किया जाता है (इसे उम्मीद के मुताबिक कहा जाता है). उम्मीद इंटेंट ऐसा कोई भी इंटेंट हो सकता है जिसे Assistant समझती है. जैसा कि बताया गया है को Intents एपीआई के रेफ़रंस में देख सकते हैं.

अपने जवाबों के लिए यूज़र इंटरफ़ेस को फ़ॉर्मैट करने के बारे में ज़्यादा जानने के लिए, वे Assistant में दिखते हैं, तो जवाबों से जुड़ा दस्तावेज़.

जवाब का आसान उदाहरण

नीचे दिया गया स्निपेट बातचीत में आसान जवाब का एक उदाहरण दिखाता है वेबहुक फ़ॉर्मैट.

{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "possibleIntents": [
        {
          "intent": "actions.intent.TEXT"
        }
      ],
      "inputPrompt": {
        "richInitialPrompt": {
          "items": [
            {
              "simpleResponse": {
                "textToSpeech": "You are using the Actions SDK. Do you want to hear more about it?"
              }
            }
          ]
        }
      }
    }
  ]
}

हेल्पर का उदाहरण

नीचे दिए गए स्निपेट में, बातचीत में हेल्पर इंटेंट का इस्तेमाल करने का उदाहरण दिया गया है वेबहुक फ़ॉर्मैट. इस उदाहरण में, वेबहुक actions.intent.OPTIONS हेल्पर, Assistant को कई विकल्पों में से उपयोगकर्ता को चुना जाता है.

हेल्पर इंटेंट का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, मददगार गाइड.

{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "possibleIntents": [
        {
          "intent": "actions.intent.OPTION",
          "inputValueData": {
            "@type": "type.googleapis.com/google.actions.v2.OptionValueSpec",
            "carouselSelect": {
              "items": [
                {
                  "optionInfo": {
                    "key": "one",
                    "synonyms": [
                      "synonym of KEY_ONE 1",
                      "synonym of KEY_ONE 2"
                    ]
                  },
                  "description": "Description of number one",
                  "title": "Number one"
                },
                {
                  "optionInfo": {
                    "key": "two",
                    "synonyms": [
                      "synonym of KEY_TWO 1",
                      "synonym of KEY_TWO 2"
                    ]
                  },
                  "description": "Description of number two",
                  "title": "Number two"
                }
              ]
            }
          }
        }
      ],
      "inputPrompt": {
        "richInitialPrompt": {
          "items": [
            {
              "simpleResponse": {
                "textToSpeech": "this shows an example of a carousel"
              }
            }
          ],
          "suggestions": [
            {
              "title": "1"
            },
            {
              "title": "2"
            }
          ]
        }
      }
    }
  ]
}

बातचीत खत्म करने का उदाहरण

नीचे दिया गया स्निपेट बातचीत खत्म करने के लिए एक आसान जवाब का उदाहरण दिखाता है सेशन के दौरान वेबहुक रिस्पॉन्स फ़ॉर्मैट में होना चाहिए.

expectedUserResponse जवाब में आने वाले मैसेज में false की वैल्यू, Assistant को यह सिग्नल देती है कि कोई और उपयोगकर्ता नहीं है इनपुट ज़रूरी है और इसे मौजूदा बातचीत को खत्म करना चाहिए. कॉन्टेंट बनाने finalResponse वैल्यू से पता चलता है कि Assistant को उपयोगकर्ता को पहले क्या दिखाना चाहिए या क्या आउटपुट देना चाहिए बातचीत खत्म हो जाती है.

{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "simpleResponse": {
            "textToSpeech": "Good bye"
          }
        }
      ]
    }
  }
}

जब उपयोगकर्ता किसी स्टैंडर्ड को शुरू करते हैं, तो डिफ़ॉल्ट ऐक्शन को बदलने का तरीका जानने के लिए Assistant के साथ बातचीत को ख़त्म करने के लिए, वाक्यांश देखें, बातचीत के एग्ज़िट.