सीन

इंटेंट के साथ-साथ सीन भी आपकी बातचीत मॉडल को बनाने में अहम भूमिका निभाते हैं. सीन आपकी बातचीत की अलग-अलग स्थितियों को दिखाते हैं. इनका मुख्य मकसद आपकी बातचीत को लॉजिकल हिस्सों में व्यवस्थित करना, टास्क लागू करना, और उपयोगकर्ताओं को प्रॉम्प्ट भेजना होता है.

सीन में ये चीज़ें शामिल हैं:

  • लूप में एक्ज़ीक्यूशन की सुविधा - सीन, लूप के अंदर तब तक चलते हैं, जब तक वह ट्रांज़िशन की आपकी तय की गई शर्तों को पूरा नहीं कर लेता. इससे आपको एक ही सीन में, कंट्रोल लॉजिक फ़्लो ज़्यादा बेहतर तरीके से बनाने में मदद मिलती है.
  • डायलॉग को अलग करना - इंटेंट के साथ मिलकर, सीन की मदद से डायलॉग को लॉजिकल हिस्सों में बांटा जा सकता है. इससे, उपयोगकर्ता अनुरोध और ऐक्शन रिस्पॉन्स पेयर को आसानी से बनाया जा सकता है.
  • इंटेंट के मुताबिक मिलान का दायरा - एक समय में सिर्फ़ एक सीन चालू हो सकता है, इसलिए अपनी पसंद के सीन के लिए इंटेंट मैचिंग का इस्तेमाल किया जा सकता है और उन्हें सिर्फ़ तब मैच किया जा सकता है, जब वे सीन चालू हों.
  • स्लॉट भरना - एक से ज़्यादा इंटेंट बनाए बिना, टाइप किए गए उपयोगकर्ता इनपुट के कई हिस्सों को इकट्ठा करने के लिए, किसी सीन में स्लॉट भरने की सुविधा का इस्तेमाल किया जा सकता है
  • सीन में मौजूद शर्तें - वेबहुक को ट्रिगर किए बिना, आसान और कंडिशनल लॉजिक को लागू करने के लिए, स्लॉट, सेशन, उपयोगकर्ता, और होम स्टोरेज को देखा जा सकता है.

बातचीत के मॉडल में सीन को पसंद के मुताबिक बनाए गए सीन के तौर पर तय किया जा सकता है. Assistant में बातचीत करने के पैटर्न में सिस्टम सीन भी शामिल होते हैं. इनकी मदद से, सामान्य तौर पर बातचीत करने की सुविधा मिलती है.

पसंद के मुताबिक सीन बनाना

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

  • ऐक्टिवेशन - सीन लागू होने से पहले, आपको उसे ग्लोबल इंटेंट मैच या सीन ट्रांज़िशन की मदद से चालू करना होगा.
  • एक्ज़ीक्यूशन - जब कोई सीन चालू होता है, तो उसके लिए तय किए गए लाइफ़साइकल में काम करता है. इससे, कई टास्क पूरे करने में मदद मिलती है. जैसे, स्लॉट भरना, शर्तों के साथ जांच करना, प्रॉम्प्ट जनरेट करना, और वेबहुक इवेंट ट्रिगर करना.
  • ट्रांज़िशन - जब कोई सीन आपकी तय की गई शर्तें पूरी करता है, जैसे कि इंटेंट मैच करना या स्लॉट भरना पूरा करना, तो ज़्यादा लॉजिक के लिए किसी दूसरे सीन पर ट्रांज़िशन किया जा सकता है. इसके अलावा, आपके पास बातचीत खत्म करें सिस्टम पर स्विच करने का विकल्प है. ऐसा करने पर, उपयोगकर्ता से की गई बातचीत खत्म हो जाएगी.
पहली इमेज. सीन में आम तौर पर होने वाला बदलाव. ग्लोबल इंटेंट, शुरू करने के दौरान किसी सीन को चालू करता है. सीन, उपयोगकर्ता के इनपुट का इस्तेमाल करता है और इंटेंट से मैच करता है. इससे दूसरे सीन में बदलाव होता है और सीन चालू हो जाता है.

ऐक्टिवेशन से जुड़ी सेटिंग

किसी सीन को चलाने से पहले, उसका चालू होना ज़रूरी है. किसी भी समय सिर्फ़ एक सीन चालू किया जा सकता है. सीन को चालू करने के लिए, ये तरीके अपनाए जा सकते हैं:

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

एक्ज़ीक्यूशन लाइफ़साइकल

जब कोई सीन चालू होता है, तो यह तय किए गए लाइफ़साइकल के अंदर काम करता है. यह तब तक चलता रहता है, जब तक कि सीन आपके सेट किए गए ट्रांज़िशन की शर्तों को पूरा नहीं कर लेता. किसी सीन को पूरा करने की लाइफ़साइकल को वैकल्पिक चरणों में अलग-अलग किया जाता है, जो नीचे बताए गए क्रम में चलते हैं:

  1. Enter पर - यह स्टेज सिर्फ़ एक बार तब चलता है, जब कोई सीन चालू हो. वेबहुक को ट्रिगर किया जा सकता है या उपयोगकर्ता से अपने सीन का सेटअप एक बार करने के लिए कहा जा सकता है.

  2. शर्तें - शर्तों की मदद से, लाइफ़साइकल के स्टेज पर आगे बढ़ने, वेबहुक ट्रिगर करने या प्रॉम्प्ट भेजने से पहले, कुछ शर्तों का आकलन किया जा सकता है. एक्ज़ीक्यूशन लूप से बाहर निकलने के लिए, यह चरण ट्रांज़िशन की शर्तें तय कर सकता है.

  3. स्लॉट भरना - कोई सीन, उपयोगकर्ताओं को अपने-आप तब तक सूचना दे सकता है, जब तक कि वह सभी ज़रूरी स्लॉट (टाइप किया गया डेटा) इकट्ठा न कर ले. एक सीन, हर बार एक स्लॉट के लिए एक्ज़ीक्यूशन लूप के ज़रिए दिखता है. अगर कोई स्लॉट मौजूद नहीं है, तो सीन का लाइफ़साइकल आखिर में स्लॉट भरने के चरण पर वापस चला जाता है और अगले ज़रूरी स्लॉट के लिए निर्देश देता है. यह चरण एक्ज़ीक्यूशन लूप से बाहर निकलने के लिए, ट्रांज़िशन की शर्तें तय कर सकता है.

  4. प्रॉम्प्ट - Assistant, उपयोगकर्ता को प्रॉम्प्ट की सूची डिलीवर करती है और सूची से क्वेरी हटा देती है. प्रॉम्प्ट सूची, प्रॉम्प्ट का मर्ज किया गया ऐसा कलेक्शन है जो पिछली बार जब इस चरण से सूची को साफ़ किया गया था, तब से इकट्ठा किया गया था.

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

दूसरी इमेज. किसी सीन को पूरा करने की लाइफ़साइकल

यहां दिए गए सेक्शन में, लाइफ़साइकल के हर चरण के बारे में ज़्यादा जानकारी दी गई है.

प्रवेश करने पर

डिफ़ॉल्ट तौर पर, सिर्फ़ ऐसा स्टेज होता है जो किसी सीन के एक्ज़ीक्यूट होने के लूप में काम नहीं करता. यह आपके सीन को एक बार शुरू करने की प्रोसेस इस क्रम में करता है:

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

शर्तें

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

  • Assistant रनटाइम, हर शर्त की जांच उनके बताए गए क्रम के हिसाब से करता है. true का आकलन करने वाली पहली शर्त, असोसिएट किए गए हैंडलर को एक्ज़ीक्यूट करती है और शर्तों का आकलन बंद करती है.
  • स्लॉट भरने पर, else if scene.slots.status = "FINAL" शर्त अपने-आप शर्तों की सूची में जुड़ जाती है. यह शर्त, स्लॉट फ़िलिंग के पूरा होने की जांच करती है. इससे वेबहुक ट्रिगर हो सकता है या प्रॉम्प्ट सूची में प्रॉम्प्ट जोड़े जा सकते हैं.

स्थिति के आकलन के बाद, अगर सीन किसी ट्रांज़िशन के बारे में नहीं बताता है, तो वह स्लॉट भरना जारी रखता है.

स्लॉट भरना

इस चरण में एक, खाली, और ज़रूरी स्लॉट के लिए स्लॉट प्रॉम्प्ट जुड़ जाता है. अगर आपने सीन में किसी स्लॉट के बारे में नहीं बताया है, तो यह चरण कुछ नहीं करता.

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

प्रॉम्प्ट

Assistant रनटाइम, उपयोगकर्ता को प्रॉम्प्ट सूची डिलीवर करता है, सूची को खाली करता है, और उपयोगकर्ता के इनपुट का इस्तेमाल करता है.

इनपुट

Assistant रनटाइम, इनपुट को किसी इंटेंट या स्लॉट से मैच करने की कोशिश करता है:

  • यूज़र इंटेंट मैच की स्थिति में, सीन इससे जुड़े इंटेंट हैंडलर (उपयोगकर्ता या सिस्टम इंटेंट) को एक्ज़ीक्यूट करता है. किसी भी ग्लोबल इंटेंट के मुकाबले सीन के इंटेंट हैंडलर को अहमियत दी जाती है. अगर आपने कोई ट्रांज़िशन तय नहीं किया है, तो सीन का एक्ज़ीक्यूशन लूप, कंडिशन स्टेज में वापस चला जाता है.
  • स्लॉट के मिलते-जुलते होने पर, सीन स्लॉट भरने के स्टेज पर वापस आ जाता है.
  • सिस्टम इंटेंट मैच (उदाहरण के लिए, कोई इनपुट नहीं या कोई मैच नहीं) के मामले में, आपके पास प्रॉम्प्ट सूची में प्रॉम्प्ट जोड़ने, वेबहुक ट्रिगर करने या ट्रांज़िशन करने का विकल्प होता है. अगर एक से ज़्यादा मैच नहीं होने पर प्रॉम्प्ट मिलते हैं, तो Assistant रनटाइम इस क्रम में सबसे ज़्यादा काम का चुनता है: स्लॉट भरना, सीन, फिर ग्लोबल 'कोई मैच नहीं प्रॉम्प्ट' चुनना. लगातार कोई मैच मौजूद नहीं होने पर, इससे जुड़ा इवेंट जनरेट होता है:

    • no_match_1
    • no_match_2
    • no_match_final

    बिना मैच वाले हर लेवल (स्लॉट फ़िलिंग, सीन, और ग्लोबल) से वेबहुक इवेंट ट्रिगर हो सकते हैं. डिफ़ॉल्ट रूप से, तीसरे और आखिरी 'कोई मैच नहीं' विकल्प से बातचीत खत्म हो जाती है.

ट्रांज़िशन

ट्रांज़िशन इन चरणों में हो सकते हैं:

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

सिस्टम सीन

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

नीचे दी गई सूची में, इस्तेमाल किए जा सकने वाले सिस्टम सीन और उन्हें इस्तेमाल करने के तरीके के बारे में बताया गया है:

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