यह सेक्शन, JSON पेलोड के फ़ॉर्मैट के बारे में बताता है. ऐसा तब होता है, जब Actions on Google कार्रवाई SDK टूल की मदद से, कार्रवाई करना शुरू करता है.
बातचीत शुरू होने पर, उसकी पहचान एक यूनीक conversationId
से की जाती है. Assistant से की जाने वाली हर एक उपयोगकर्ता क्वेरी के लिए, आपके फ़ुलफ़िलमेंट को एक ऐसा इंटेंट मिलता है जिसे आपके वेबहुक को प्रोसेस करना होगा और उसका जवाब देना होगा. यह conversationId
, बातचीत खत्म होने तक हर अनुरोध और
जवाब के जोड़े में बना रहता है.
अनुरोध का मुख्य भाग
जब उपयोगकर्ता कोई शुरुआती क्वेरी करते हैं या बाद में कुछ इनपुट देते हैं, तो Assistant आपको ऑर्डर पूरा करने का अनुरोध भेजती है. Assistant से मिलने वाले, बातचीत वाले वेबहुक अनुरोधों में डेटा जैसे कि ट्रिगर किए गए इंटेंट, उपयोगकर्ता के इनपुट का रॉ टेक्स्ट, और उपयोगकर्ता के डिवाइस की परफ़ॉर्मेंस के बारे में जानकारी शामिल होती है.
बातचीत के वेबहुक फ़ॉर्मैट में, अनुरोध के लिए मुख्य फ़ील्ड की खास जानकारी यहां दी गई है:
फ़ील्ड | ब्यौरा |
---|---|
isInSandbox |
इस बूलियन वैरिएबल का इस्तेमाल मुख्य रूप से
ट्रांज़ैक्शन सुविधा के लिए किया जाता है. इससे यह पता चलता है कि आपके वेबहुक को सैंडबॉक्स मोड में यह अनुरोध मैनेज करना चाहिए या नहीं. सैंडबॉक्स मोड में, आपके वेबहुक को उपयोगकर्ताओं के किसी भी परचेज़ ऑर्डर (पीओ) से शुल्क नहीं लेना चाहिए और न ही उसे पूरा करना चाहिए.
डिफ़ॉल्ट रूप से, यह "true " पर सेट होता है. |
surface |
Assistant के जिस प्लैटफ़ॉर्म से उपयोगकर्ता इंटरैक्ट कर रहा है उसके बारे में जानकारी और उसकी क्षमताओं के बारे में जानकारी. |
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" } ] } ] }
जवाब का मुख्य भाग
Assistant के लिए आपके फ़ुलफ़िलमेंट एंडपॉइंट से
एचटीटीपी पोस्ट के हेडर में मौजूद Content-Type
, application/json
होना चाहिए.
बातचीत के वेबहुक फ़ॉर्मैट में रिस्पॉन्स में, उपयोगकर्ता को दिखाने के लिए असल यूज़र इंटरफ़ेस (यूआई) जैसा डेटा (इसमें ऑडियो और विज़ुअल कॉम्पोनेंट शामिल होते हैं) और वह इंटेंट शामिल होता है जिसे बाद के अनुरोध में ट्रिगर किया जा सकता है. इसे उम्मीद के मुताबिक इंटेंट कहा जाता है. उम्मीद के मुताबिक इंटेंट, ऐसे कोई भी इंटेंट हो सकते हैं जिन्हें Assistant समझती है, जैसा कि Intents API के रेफ़रंस में बताया गया है.
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" } ] } } } ] }
बातचीत खत्म करने का उदाहरण
नीचे दिया गया स्निपेट, बातचीत के वेबहुक रिस्पॉन्स फ़ॉर्मैट में किसी बातचीत के सेशन को खत्म करने के लिए, आसान जवाब का उदाहरण दिखाता है.
जवाब के तौर पर दिखने वाले मैसेज में, false
की expectedUserResponse
वैल्यू से Assistant को यह पता चलता है कि आगे किसी उपयोगकर्ता इनपुट की ज़रूरत नहीं है. साथ ही, इससे मौजूदा बातचीत खत्म हो जानी चाहिए. finalResponse
की वैल्यू से पता चलता है कि बातचीत खत्म होने से पहले, Assistant को उपयोगकर्ता को क्या दिखाना चाहिए या क्या आउटपुट देना चाहिए.
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "simpleResponse": { "textToSpeech": "Good bye" } } ] } } }
Assistant के साथ बातचीत खत्म करने के लिए, जब उपयोगकर्ता किसी स्टैंडर्ड वाक्यांश का इस्तेमाल करते हैं, तब डिफ़ॉल्ट व्यवहार को बदलने का तरीक़ा जानने के लिए बातचीत से बाहर निकलना देखें.