1. शुरू करने से पहले
इस कोडलैब में, आपको Dialogflow CX की मदद से खुदरा दुकान के लिए चैटबॉट बनाने का तरीका पता चलेगा. यह बातचीत वाले यूज़र इंटरफ़ेस (यूआई) बनाने के लिए, बातचीत वाले एआई प्लैटफ़ॉर्म (सीएआईपी) है. Dialogflow CX, वर्चुअल एजेंट लागू कर सकता है. जैसे, चैटबॉट, वॉइस बॉट, फ़ोन गेटवे. साथ ही, यह 50 से ज़्यादा अलग-अलग भाषाओं में कई चैनलों के साथ काम कर सकता है.
इस कोडलैब में, खुदरा दुकानदारों के लिए वेबसाइट पर चैटबॉट बनाने का तरीका बताया गया है. हम जिस काल्पनिक कारोबार के लिए चैटबॉट बना रहे हैं उसका नाम: G-Records है. G-Records एक रॉक रिकॉर्ड लेबल है, जो कैलिफ़ोर्निया में स्थित है. इस लेबल ने चार रॉक बैंड के साथ समझौता किया है: ऐलिस Googler, G's N' Roses, The Goo Fighters, और The Google Dolls. G-Records, रॉक के सभी प्रशंसकों को बैंड का मर्चंडाइज़ बेच रहा है.
इस कोडलैब के आखिर में, शर्ट या संगीत ऑर्डर करने के लिए चैटबॉट का इस्तेमाल किया जा सकता है. इसके अलावा, अपने ऑर्डर के बारे में भी पूछा जा सकता है.
आपको क्या सीखने को मिलेगा
ऐसा करके, आपको Dialogflow ES की तुलना में Dialogflow CX के फ़ायदों के बारे में पता चलेगा! इसमें ये कॉन्सेप्ट शामिल हैं:
- Google Cloud में Dialogflow CX वर्चुअल एजेंट बनाने का तरीका
- फ़्लो बनाने का तरीका जानें
- इकाइयां बनाने का तरीका जानें
- इंटेंट बनाने का तरीका जानें
- स्टेटस हैंडलर की मदद से पेज बनाने और पेजों को ट्रांज़िशन करने का तरीका जानें
- इंटेंट रूट की मदद से पेजों को ट्रांज़िशन करने का तरीका जानें
- पैरामीटर और शर्त वाले रूट के साथ पेजों का ट्रांज़िशन करने का तरीका जानें
- सिस्टम फ़ंक्शन की मदद से, शर्तों के हिसाब से जवाब देने का तरीका जानें
- फ़ॉलबैक मैसेज बनाने का तरीका जानें
- सिम्युलेटर इस्तेमाल करने का तरीका जानें
- टेस्ट केस और टेस्ट कवरेज बनाने का तरीका जानें
Dialogflow CX एजेंट का फ़ाइनल डिज़ाइन ऐसा दिखेगा:
आपको किन चीज़ों की ज़रूरत होगी
- Dialogflow CX एजेंट बनाने के लिए, आपके पास Google Identity / Gmail पता होना ज़रूरी है.
- Google Cloud का ऐक्सेस.
2. एनवायरमेंट सेटअप करना
Google Cloud प्रोजेक्ट बनाना
Dialogflow CX, Google Cloud में काम करता है. इसलिए, आपको Google Cloud प्रोजेक्ट बनाना होगा. प्रोजेक्ट, आपके सभी Google Cloud संसाधनों को व्यवस्थित करता है. इसमें, साथ मिलकर काम करने वाले लोगों का एक सेट, चालू एपीआई (और अन्य संसाधन), मॉनिटरिंग टूल, बिलिंग की जानकारी, और पुष्टि करने और ऐक्सेस कंट्रोल करने की सुविधा शामिल होती है.
नया प्रोजेक्ट बनाते समय, आपको प्रोजेक्ट का नाम डालना होगा. साथ ही, आपको इसे किसी मौजूदा बिलिंग खाते और संगठन से लिंक करना होगा.
बिलिंग खाते का इस्तेमाल यह तय करने के लिए किया जाता है कि संसाधनों के किसी सेट के लिए कौन पैसे चुकाएगा. साथ ही, इसे एक या उससे ज़्यादा प्रोजेक्ट से लिंक किया जा सकता है. प्रोजेक्ट के इस्तेमाल के लिए, लिंक किए गए बिलिंग खाते से शुल्क लिया जाता है. ज़्यादातर मामलों में, प्रोजेक्ट बनाते समय बिलिंग को कॉन्फ़िगर किया जाता है. ज़्यादा जानकारी के लिए, बिलिंग से जुड़ा दस्तावेज़ देखें. पक्का करें कि आपके Cloud प्रोजेक्ट के लिए बिलिंग की सुविधा चालू हो.
Dialogflow API चालू करना
Dialogflow का इस्तेमाल करने के लिए, आपको अपने प्रोजेक्ट के लिए Dialogflow API को चालू करना होगा.
- वह प्रोजेक्ट चुनें जिसके लिए आपको एपीआई चालू करना है और जारी रखें पर क्लिक करें.
- एपीआई और सेवाओं के मेन्यू को छोटा करें और क्रेडेंशियल बनाएं पर क्लिक करें
- ऐप्लिकेशन का डेटा पर क्लिक करें
- अगर फ़िलहाल Kubernetes Engine, App Engine या Cloud Functions का इस्तेमाल नहीं किया जा रहा है, तो नहीं, मैं इनका इस्तेमाल नहीं कर रहा/रही हूं कहें.
- हो गया पर क्लिक करें
नया Dialogflow CX एजेंट बनाना
नया Dialogflow CX एजेंट बनाने के लिए, पहले Dialogflow CX Console खोलें:
- पहले से बनाया गया Google Cloud प्रोजेक्ट चुनें.
- एजेंट बनाएं पर क्लिक करें.
एजेंट की बुनियादी सेटिंग के लिए यह फ़ॉर्म भरें:
- आपके पास कोई भी डिसप्ले नेम चुनने का विकल्प होता है.
- जगह के तौर पर, us-central1 चुनें
- अपना पसंदीदा टाइम ज़ोन चुनें.
- डिफ़ॉल्ट भाषा के तौर पर en - अंग्रेज़ी चुनें
बनाएं पर क्लिक करें.
ठीक है, हम तैयार हैं. आखिरकार, हम अपने वर्चुअल एजेंट को मॉडल करना शुरू कर सकते हैं.
3. फ़्लो
जटिल डायलॉग में अक्सर बातचीत के कई विषय शामिल होते हैं. G-Records के लिए, हम एक चैटबॉट बना रहे हैं. इसका मकसद बैंड का मर्चंडाइज़ बेचना है. इसमें प्रॉडक्ट कैटलॉग, पेमेंट, ऑर्डर की स्थिति, और ग्राहक सेवा से जुड़े सवालों के बारे में बातचीत की जाएगी. हम बातचीत के इन विषयों को फ़्लो में बांट सकते हैं.
फ़्लो की मदद से, टीमें बातचीत के अलग-अलग पाथ पर काम कर सकती हैं. फ़्लो को आसान बनाना एक अच्छा तरीका है, ताकि यह स्क्रीन पर आसानी से फ़िट हो जाए और यह ज़्यादा मॉड्यूलर हो.
फ़्लो, Dialogflow CX का एक नया कॉन्सेप्ट है. Dialogflow Essentials में मेगा एजेंट का कॉन्सेप्ट है, जो फ़्लो से मिलता-जुलता है. हालांकि, फ़्लो का इस्तेमाल ज़्यादा बार किया जाता है.
इस लैब में आगे, हम स्टेटस हैंडलर का इस्तेमाल करेंगे. इनकी मदद से, किसी फ़्लो को खत्म किया जा सकता है, ताकि वह अगले या पिछले फ़्लो पर वापस जा सके. इसके अलावा, एजेंट सेशन को भी खत्म किया जा सकता है.
चलिए, कुछ फ़्लो बनाते हैं.
फ़्लो बनाना
- Dialogflow CX में, + आइकॉन > फ़्लो बनाएं पर क्लिक करें.
- नाम डालें:
Catalog
और Enter दबाएं.
आपका पहला फ़्लो कैटलॉग बन गया है. अब दूसरे फ़्लो बनाएं:
Order Process
My Order
Customer Care
बाद में, इस लैब में हम पेज स्थिति हैंडलर सेट करेंगे, इससे यह पक्का होगा कि आखिरकार विज़ुअलाइज़ेशन ऐसा दिखेगा:
सिम्युलेटर
Dialogflow CX Console की दाईं ओर, पहले से मौजूद सिम्युलेटर की मदद से वर्चुअल एजेंट को टेस्ट किया जा सकता है. बातचीत की शुरुआत से या किसी खास फ़्लो से, बातचीत की जांच की जा सकती है.
- स्क्रीन पर सबसे ऊपर दाईं ओर, टेस्ट एजेंट बटन पर क्लिक करें.
- एजेंट से बात करें फ़ील्ड में यह लिखें:
Hello
वर्चुअल एजेंट, वेलकम मैसेज के तौर पर डिफ़ॉल्ट टेक्स्ट के साथ जवाब देगा: नमस्ते! मैं आपकी मदद कैसे करूं?
चलिए, वेलकम मैसेज के इस डिफ़ॉल्ट टेक्स्ट में बदलाव करते हैं.
डिफ़ॉल्ट स्टार्ट फ़्लो
आइए, इंटेंट रूट बनाकर शुरुआत करते हैं. यह रूट, वर्चुअल एजेंट को नमस्ते करने के बाद ट्रिगर होगा.
- बाईं ओर मौजूद बिल्ड > फ़्लो साइडबार में, डिफ़ॉल्ट स्टार्ट फ़्लो पर क्लिक करें. इसके बाद, शुरू करें ट्री नोड चुनें.
इससे स्टार्ट पेज खुल जाएगा. इससे, बिल्ड > पेज साइडबार सेक्शन में, स्टार्ट पेज अपने-आप चुन लिया गया.
- शुरू करें > रूट में जाकर, डिफ़ॉल्ट वेलकम इंटेंट पर क्लिक करें.
इंटेंट, बातचीत के एक चरण के लिए असली उपयोगकर्ता के इंटेंट की कैटगरी तय करता है. Dialogflow CX में, इंटेंट को स्टेटस हैंडलर का हिस्सा बनाया जा सकता है, ताकि अगले चालू पेज या फ़ुलफ़िलमेंट पर भेजा जा सके
- एजेंट की ओर से कहा गया वाली सभी एंट्री हटाएं और यह नया टेक्स्ट जोड़ें:
Welcome, I am the virtual agent of G-Records, a fictional rock label. You can order artists merchandise, ask questions about your order or shipping, and I can tell you more which artists are currently signed with us. How can I help?
बातचीत को आसान बनाने के लिए, हमें तुरंत जवाब देने के लिए बटन / सुझाव वाले चिप भी चाहिए होंगे.
- डायलॉग विकल्प जोड़ें > कस्टम पेलोड पर क्लिक करें और नीचे दिए गए कोड स्निपेट का इस्तेमाल करें.
- नीचे दिए गए कोड स्निपेट को कस्टम पेलोड के तौर पर इस्तेमाल करें और सेव करें पर क्लिक करें.
कस्टम पेलोड के बारे में ज़्यादा जानने के लिए, दस्तावेज़ देखें.
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Which artists?"
},
{
"text": "Which products?"
},
{
"text": "About my order..."
}
]
}
]
]
}
- सिम्युलेटर में वेलकम इंटेंट की जांच करें.
आपको शायद यह जानना हो कि आपको कोई रिच कॉन्टेंट क्यों नहीं दिख रहा. ऐसा इसलिए है, क्योंकि सुझाव वाले चिप जैसे रिच कॉन्टेंट, इंटिग्रेशन पर निर्भर होते हैं. यहां दिए गए चरणों को पूरा करने के लिए, आपके पास बिलिंग खाता होना चाहिए. हालांकि, अगर आपके पास बिलिंग खाता नहीं है, तो इन चरणों को छोड़ा जा सकता है.
- बाएं साइडबार में, मैनेज करें > इंटिग्रेशन पर क्लिक करें.
- Dialogflow Messenger चुनें और कनेक्ट करें पर क्लिक करें.
- पॉप-अप में, चालू करें पर क्लिक करें.
आपको एक और पॉप-अप दिखेगा. इस बार इसमें इंटिग्रेशन JavaScript कोड होगा. इस कोड को अपनी वेबसाइट पर चिपकाकर, Dialogflow Messenger कॉम्पोनेंट को अपनी वेबसाइट पर इंटिग्रेट किया जा सकता है. हमारे पास अभी तक कोई वेबसाइट नहीं है. इसलिए, हम वर्चुअल एजेंट की जांच सीधे टूल में करेंगे.
- अभी आज़माएं लिंक पर क्लिक करें.
- चैट विंडो खोलने के लिए, सबसे नीचे दाईं ओर मौजूद चैटबॉट आइकॉन पर क्लिक करें. बातचीत शुरू करने के लिए,
Hello
लिखें.
फ़िलहाल, सुझाव वाले चिप पर क्लिक करने पर, वर्चुअल एजेंट को आपकी बात समझ नहीं आएगी. ऐसा इसलिए है, क्योंकि हमारा वर्चुअल एजेंट अभी तक एक स्टेटस से दूसरे स्टेटस पर स्विच नहीं कर रहा है. हम Dialogflow CX में पेजों की मदद से ऐसा कर सकते हैं. आइए, लैब को जारी रखते हैं. सबसे पहले, हम कुछ इकाइयां और इंटेंट बनाएंगे.
4. इकाई के टाइप
इकाई टाइप का इस्तेमाल करके यह कंट्रोल किया जाता है कि असली उपयोगकर्ता के इनपुट से डेटा कैसे निकाला जाए. Dialogflow CX इकाई टाइप, Dialogflow ES इकाई टाइप से काफ़ी मिलते-जुलते हैं. Dialogflow, पहले से तय की गई सिस्टम इकाइयां उपलब्ध कराता है. ये इकाइयां, कई तरह के सामान्य डेटा से मेल खा सकती हैं. उदाहरण के लिए, तारीखों, समय, रंगों, ईमेल पतों वगैरह से मेल खाने के लिए सिस्टम की इकाइयां होती हैं. कस्टम डेटा से मैच करने के लिए, अपनी कस्टम इकाइयां भी बनाई जा सकती हैं.
आइए, फ़्लो में पेजों को डिज़ाइन करने से पहले, सभी कस्टम इकाइयों को तैयार करके शुरू करें. हम ये इकाइयां बनाएंगे:
इकाइयां बनाना
आइए, कलाकार इकाई बनाते हैं.
- मैनेज करें > इकाई के टाइप पर क्लिक करें
- + बनाएं पर क्लिक करें
- डिसप्ले नेम:
Artist
- इकाइयां:
The Google Dolls
(इसका समानार्थी शब्द:Google Dolls
)The Goo Fighters
(इसका समानार्थी शब्द:Goo Fighters
)G's N' Roses
(इसका समानार्थी शब्द:Gs and Roses
)Alice Googler
- 'बेहतर विकल्प' पर क्लिक करें और फ़ज़ी मैचिंग को चुनें. (अगर बैंड के नाम की स्पेलिंग गलत है, तो हो सकता है कि यह अब भी सही इकाई से मेल खाए.)
- बेहतर विकल्पों में, लॉग में बदलाव करें को भी चुनें. (अगर बैंड के नाम की स्पेलिंग गलत है, तो यह लॉग में नाम सही कर देगा.)
- सेव करें पर क्लिक करें
हमें मर्चंडाइज़ के लिए भी एक इकाई की ज़रूरत होगी:
- मैनेज करें > इकाई के टाइप पर क्लिक करें
- + बनाएं पर क्लिक करें
- डिसप्ले नेम:
Merch
- इकाइयां:
T-shirt
Longsleeve
(इसका समानार्थी शब्द:Longsleeve shirt
)Tour Movie
Digital Album
(इसका समानार्थी शब्द:MP3 Album
,MP3
)CD
(इसमेंDisc
,Physical CD
जैसे समानार्थी शब्द शामिल हैं)
- सेव करें पर क्लिक करें
हमें एल्बम के लिए एक इकाई की भी आवश्यकता होगी:
- मैनेज करें > इकाई के टाइप पर क्लिक करें
- + बनाएं पर क्लिक करें
- डिसप्ले नेम:
Album
- इकाइयां:
Live
Greatest Hits
(इसका समानार्थी शब्द:Hits
)
- सेव करें पर क्लिक करें
हमें कपड़ों के साइज़ के लिए भी एक इकाई की ज़रूरत होगी:
- मैनेज करें > इकाई के टाइप पर क्लिक करें
- + बनाएं पर क्लिक करें
- डिसप्ले नेम:
ShirtSize
- इकाइयां:
XS
(इसका समानार्थी शब्द:Extra Small
)S
(इसका समानार्थी शब्द:Small
)M
(समानार्थी शब्द:Medium
के साथ)L
(इसका समानार्थी शब्द:Large
)XL
(इसका समानार्थी शब्द:Extra Large
)2XL
(इसका समानार्थी शब्द:Extra Extra Large
)3XL
- सेव करें पर क्लिक करें
साथ ही, ऑर्डर नंबर के लिए एक इकाई, जो आम तौर पर चार अक्षर और तीन अंकों की होती है. (जैसे, ABCD123)
- मैनेज करें > इकाई के टाइप पर क्लिक करें
- + बनाएं पर क्लिक करें
- डिसप्ले नेम:
OrderNumber
- रेगुलर एक्सप्रेशन इकाइयां
- इकाई: [A-Z]{4}[0-9]{3}
- सेव करें पर क्लिक करें
आपकी इकाई का कॉन्फ़िगरेशन, कुछ ऐसा दिखना चाहिए:
@Artist:
@मर्चंडाइज़:
@Album:
@शर्ट का साइज़:
@OrderNumber:
कस्टम इकाइयां तैयार होने के बाद, हम इंटेंट तैयार कर सकते हैं. चलिए, लैब जारी रखते हैं.
5. मूड
इंटेंट, बातचीत के एक चरण के लिए असली उपयोगकर्ता के इंटेंट की कैटगरी तय करता है. Dialogflow CX में, उन्हें काफ़ी आसान बना दिया गया है. अब यह बातचीत के कंट्रोल के लिए बुनियादी ब्लॉक नहीं है. Dialogflow CX, उपयोगकर्ताओं की बातों से मैच करने के लिए सिर्फ़ इंटेंट का इस्तेमाल करता है. Dialogflow ES में, आपको हर चीज़ को किसी इंटेंट (पैरामीटर, इवेंट, फ़ुलफ़िलमेंट वगैरह) से जोड़ना पड़ता था. Dialogflow CX में इंटेंट में सिर्फ़ ट्रेनिंग वाले वाक्यांश होते हैं. इसलिए, इन्हें फिर से इस्तेमाल किया जा सकता है. यह अब बातचीत को कंट्रोल नहीं करता. इंटेंट बनाने की प्रोसेस आसान होगी:
इंटेंट में ट्रेनिंग वाले वाक्यांश, 'वैरिएबल' इनपुट निकालने के लिए इकाइयों का इस्तेमाल कर सकते हैं. इसलिए, इकाई के टाइप को पहले से बनाना एक अच्छा तरीका है. हमने लैब के चरणों के पिछले पेज पर ऐसा ही किया था.
इंटेंट बनाना
फ़्लो में पेजों को डिज़ाइन करने से पहले, सभी इंटेंट तैयार करना शुरू करें.
- मैनेज करें > इंटेंट पर क्लिक करें.
- + बनाएं पर क्लिक करें
नीचे दी गई जानकारी का इस्तेमाल करें:
- डिसप्ले नेम
redirect.artists.overview
- ब्यौरा
Artists overview: The bands supported by the label
नीचे की ओर स्क्रोल करें और ये ट्रेनिंग वाक्यांश बनाएं:
Which bands are signed?
Which bands
Which artists
Which artists are part of the record label
Who is part of the label
From which bands can I buy merchandise
Band merchandise
Which music do you have?
I would like to know who are signed to the label
Who are supported by the label
From who can I buy shirts
What music can I order
Can I get an overview of all the artists
- सेव करें पर क्लिक करें.
- अब आगे बढ़ते हैं और बाकी सभी इंटेंट बनाते हैं. ट्रेनिंग के लिए ज़्यादा वाक्यांश बनाने के लिए, अपनी कल्पना का इस्तेमाल करें. सबसे सही तरीका यह है कि हर इंटेंट के लिए कम से कम 10 ट्रेनिंग वाक्यांश हों, ताकि उपयोगकर्ता उस इंटेंट को अलग-अलग तरीकों से ट्रिगर कर सके. इस लैब के लिए, कम होना भी ठीक होना चाहिए.
इन बातों का ध्यान रखें:
- ध्यान दें कि ट्रेनिंग वाला वाक्यांश डालते ही, Dialogflow CX आपकी इकाइयों के बारे में अपने-आप जानकारी दे देगा. अगर ऐसा नहीं होता है, तो आपको अपनी इकाई को अपडेट करना पड़ सकता है. इसके लिए, कोई समानार्थी शब्द जोड़ें या ट्रेनिंग वाक्यांश को मैन्युअल तरीके से एनोटेट करें.
- छोटे ट्रेनिंग वाक्यांश: Dialogflow का एनएलयू सिस्टम, छोटे ट्रेनिंग वाक्यांशों के साथ भी काम कर सकता है. हमने यहां कुछ उदाहरण दिए हैं.
- ज़रूरत से ज़्यादा ट्रेनिंग: किसी इंटेंट के लिए बहुत ज़्यादा ट्रेनिंग फ़्रेज़ इस्तेमाल करने से, ज़रूरत से ज़्यादा ट्रेनिंग हो सकती है और खराब नतीजे मिल सकते हैं. बार-बार और धीरे-धीरे टेस्ट करने का तरीका अपनाना सबसे अच्छा होता है. साथ ही, अगर कोई इंटेंट मैच नहीं होता है, तो ट्रेनिंग वाक्यांश जोड़ें.
डिसप्ले नेम | ट्रेनिंग के लिए वाक्यांश |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
अब हमारे फिर से इस्तेमाल किए जा सकने वाले एलिमेंट (फ़्लो, इकाइयां, और इंटेंट) तैयार हैं. इसलिए, हम पेज और स्टेटस हैंडलर बनाकर, इन्हें एक साथ जोड़ सकते हैं.
6. पेज और स्टेट हैंडलर
Dialogflow CX बातचीत (सेशन) को फ़ाइनाइट स्टेट मशीन के तौर पर बताया और दिखाया जा सकता है. किसी वेंडिंग मशीन का उदाहरण लें. इसे फ़ाइनाइट स्टेट मशीन की तरह बनाया जा सकता है. इसमें ये स्टेटस होते हैं: 'सिक्का मिलने का इंतज़ार', 'कैंडी चुनें', 'कैंडी दें'. इनपुट के एक सेट के आधार पर, यह इन स्टेटस के बीच स्विच करता है. उदाहरण के लिए, सिक्का डालने पर, वेंडिंग मशीन की स्थिति 'सिक्का डालने की प्रतीक्षा में है' से 'कैंडी चुनें' पर स्विच हो जाती है. पेजों की मदद से, Dialogflow CX वर्चुअल एजेंट के लिए इन स्थितियों को मॉडल किया जा सकता है.
जब कोई असली उपयोगकर्ता किसी बातचीत में Dialogflow CX के साथ इंटरैक्ट करता है, तो बातचीत एक पेज से दूसरे पेज पर चलती रहती है. इसलिए, किसी भी समय एक ही पेज को मौजूदा पेज माना जाता है. मौजूदा पेज को चालू माना जाता है और उस पेज से जुड़े फ़्लो को भी चालू माना जाता है.
हर फ़्लो के लिए, ऐसे कई पेज तय किए जाते हैं जहां आपके मिले-जुले पेज पर उन विषयों पर पूरी बातचीत हो सके जिनके लिए फ़्लो को डिज़ाइन किया गया है. हर फ़्लो का एक खास स्टार्ट पेज होता है. जब कोई फ़्लो शुरू में चालू होता है, तो स्टार्ट पेज मौजूदा पेज बन जाता है. बातचीत के हर मोड़ के लिए, मौजूदा पेज पहले जैसा ही रहेगा या किसी दूसरे पेज पर ट्रांसफ़र हो जाएगा. इस सिद्धांत की मदद से, कई पेजों और बातचीत के कई मोड़ वाले बड़े एजेंट बनाए जा सकते हैं.
पेजों में फ़ुलफ़िलमेंट (स्टैटिक एंट्री डायलॉग और/या वेबहुक), पैरामीटर, और स्टेटस हैंडलर शामिल होते हैं. बातचीत को कंट्रोल करने की सुविधा, स्टेटस हैंडलर की मदद से मिलती है. इसकी मदद से, Dialogflow CX के किसी दूसरे पेज पर जाने के लिए अलग-अलग ट्रांज़िशन रूट बनाए जा सकते हैं. साथ ही, बातचीत को अलग-अलग दिशाओं में ले जाने के लिए, इन रूट को शर्तों के हिसाब से भी बनाया जा सकता है.
किसी बातचीत की स्थिति को तीन अलग-अलग तरह के रूट वाले पेजों के बीच ट्रांज़िशन हैंडल करके कंट्रोल किया जाता है:
- इंटेंट रूट: किसी इंटेंट का मैच कब होना चाहिए (उदाहरण के लिए, असली उपयोगकर्ता की बातों के आधार पर पेज बदलना). (विज़ुअल डायग्राम में नीली लाइनें.)
- शर्त के हिसाब से रूट: जब किसी शर्त की जांच की जानी हो (उदाहरण के लिए, सेशन में सेव किए गए कुछ पैरामीटर के आधार पर पेज बदलना) (विज़ुअल डायग्राम में ऑरेंज लाइनें.)
- इवेंट हैंडलर: जब किसी खास फ़ॉलबैक इवेंट को मैनेज करना हो (उदाहरण के लिए, कोई इनपुट न होने, मैच न होने पर, उपयोगकर्ता को किसी इंटेंट या शर्त वाले रूट के बारे में बताने के लिए) (विज़ुअल डायग्राम में हरी लाइनें.)
बातचीत में बोले गए वाक्य (यानी उपयोगकर्ता को दिया गया कॉन्टेंट या जवाब), फ़ुलफ़िलमेंट के हिसाब से तय किए जाते हैं. यह स्टैटिक या डाइनैमिक हो सकता है:
- स्टैटिक फ़ुलफ़िलमेंट: जब स्टैटिक फ़ुलफ़िलमेंट रिस्पॉन्स दिया जाता है
- डाइनैमिक फ़ुलफ़िलमेंट: जब डाइनैमिक रिस्पॉन्स के लिए फ़ुलफ़िलमेंट वेबहुक को कॉल किया जाता है
अपने रीटेल बॉट के लिए, हम कुछ इंटेंट रूट बनाएंगे और कुछ स्टैटिक एंट्री फ़ुलफ़िलमेंट के जवाब देंगे. ये जवाब, पेज चालू होने के तुरंत बाद उपयोगकर्ता को दिखाए जाएंगे. इसके बाद, हम शर्तों के रास्तों के साथ पैरामीटर बनाएंगे. इससे हमें वह जानकारी इकट्ठा करने में मदद मिलेगी जो मर्चंडाइज़ ऑर्डर करने के लिए ज़रूरी है.
पेज इंटेंट के रूट
डिफ़ॉल्ट स्टार्ट फ़्लो में पेज बनाना
यहां डिफ़ॉल्ट स्टार्ट फ़्लो का फ़्लो चार्ट दिया गया है:
आइए, इस पर एक साथ क्लिक करें:
- बिल्ड करें > डिफ़ॉल्ट स्टार्ट फ़्लो पर क्लिक करें
- होम पेज पर क्लिक करें
- रास्ते के बगल में मौजूद, + आइकॉन पर क्लिक करें
- redirect.artists.overview जोड़ें
- नीचे की ओर स्क्रोल करके ट्रांज़िशन पर जाएं और कैटलॉग फ़्लो पर जाएं.
- सेव करें पर क्लिक करें
- इस टेबल में
redirect.product.overview
और अन्य 11 पंक्तियों के लिए, ऊपर दिया गया तरीका दोहराएं:
पेज (फ़्लो में) | रूट > इंटेंट | रास्ते > ट्रांज़िशन |
शुरू करें |
| - |
शुरू करें |
| फ़्लो: कैटलॉग |
शुरू करें |
| फ़्लो: कैटलॉग |
शुरू करें |
| फ़्लो: कैटलॉग |
शुरू करें |
| फ़्लो: कैटलॉग |
शुरू करें |
| फ़्लो: कैटलॉग |
शुरू करें |
| फ़्लो: कैटलॉग |
शुरू करें |
| फ़्लो: ग्राहक सेवा |
शुरू करें |
| फ़्लो: ग्राहक सेवा |
शुरू करें |
| फ़्लो: ग्राहक सेवा |
शुरू करें |
| फ़्लो: मेरा ऑर्डर |
शुरू करें |
| फ़्लो: मेरा ऑर्डर |
शुरू करें |
| फ़्लो: मेरा ऑर्डर |
शुरू करें |
| पेज: सेशन खत्म करें |
डिफ़ॉल्ट स्टार्ट फ़्लो, कॉल सेंटर को कॉल करते समय विकल्प मेन्यू की तरह काम करेगा. हालांकि, इस वर्चुअल एजेंट में इसे नैचुरल लैंग्वेज के ज़रिए ट्रेनिंग दी गई है. साथ ही, ट्रेनिंग के वाक्यांश को इंटेंट के हिसाब से बनाया गया है. इसलिए, यह इंटरैक्शन बातचीत से तय होता है, न कि डीटीएमएफ़ के विकल्पों से. यह ज़्यादा स्वाभाविक और लोगों की तरह होता है.
कैटलॉग फ़्लो में पेज बनाना
यहां दी गई चैट ट्रांसक्रिप्ट, कैटलॉग फ़्लो से जुड़ी है:
> "Hi"
"Welcome, I am the virtual agent of G-Records, a fictional rock label.
You can order artists merchandise, ask questions about your order or shipping,
and I can tell you more which artists are currently signed with us. How can I help?"
> "Which bands are signed with this record label?"
"The following bands are signed with G-Records:
Alice Googler, G's N' Roses, The Goo Fighters and The Google Dolls.
From which of these artists would you like to order merchandise?"
> "Alice Googler"
"You want to rock with Alice Googler merchandise. Awesome!
We sell shirts, music or the tour movie.
Which merchandise item do you want?"
"(Suggestion chips: [Shirts] [Music] [Tour Movie])"
> "I would like to buy a Shirt"
"Do you want a longsleeve or a t-shirt?"
"(Suggestion chips: [T-shirt, Longsleeve, Price?])"
> "What's the price difference?"
"A t-shirt costs $25 and a longsleeve costs $30.
Do you want a longsleeve or a t-shirt?"
> "A t-shirt",
"What shirt size do you want?"
"(Suggestion chips: [XS, S, M, L, XL, 2XL, 3XL])"
> "M"
"A T-shirt of Alice Googler size: M costs $25. Shall I continue to order?"
संगीत या टूर मूवी चुनने पर, डायलॉग अलग होगा: संगीत के लिए डायलॉग इस तरह दिखेगा:
> "Music"
"We have a Greatest Hits Album or the Live Album. Which one do you want?"
"(Suggestion chips: [Greatest Hits, Live, Price?])"
> "The Live Album"
"Do you want this album on CD or MP3?"
"(Suggestion chips: [CD, MP3])"
> "What's the price difference?"
"A CD costs $15. The digital album on MP3 costs $10.
Do you want this album on CD or MP3?"
> "Digital Album",
"The Digital Album: Alice Googler - Live costs $10. Shall I continue to order?"
टूर मूवी के लिए डायलॉग इस तरह दिखेगा:
> "Tour Movie"
"The Tour Movie of G's N' Roses costs $25. Shall I continue to order?
यहां कैटलॉग फ़्लो में मौजूद सभी पेजों का फ़्लो चार्ट दिया गया है:
इस फ़्लो की जटिलता पर ध्यान दें:
- मैं किस कलाकार से जुड़ा सवाल छोड़कर, सीधे "कौनसे मर्चंडाइज़ आइटम उपलब्ध हैं" पूछ सकता/सकती हूं.
- डिफ़ॉल्ट स्टार्ट फ़्लो में, मैं यह कह सकता/सकती हूं: "मुझे Google Dolls की टी-शर्ट खरीदनी है" या "मुझे कुछ खरीदना है". इसका मतलब है कि ज़रूरी पैरामीटर के स्लॉट भरने के लिए, वर्चुअल एजेंट फ़ॉलो-अप सवाल पूछेगा. यह सीधे प्रॉडक्ट पेज पर ले जाता है.
- मूल्य डायलॉग उस मूल्य पेज से आता है जिसे फिर से इस्तेमाल किया जाएगा.
- हालांकि, टूर मूवी का डायलॉग सबसे आसान डायलॉग लगता है, लेकिन असल में हम इसके साथ कुछ खास करने वाले हैं. हम डायलॉग के इस हिस्से का फिर से इस्तेमाल करेंगे, ताकि असली उपयोगकर्ता सीधे किसी दूसरे प्रॉडक्ट के लिए भी इसे डाल सकें. ऐसा तब होगा, जब वे एक साथ सारी जानकारी डालेंगे:
> "I want The Goo Fighters longsleeve size S."
"The longsleeve of The Goo Fighters size S costs $30. Shall I continue to order?"
सबसे पहले, पेजों को जोड़ने से शुरू करते हैं.
- बिल्ड > कैटलॉग पर क्लिक करें
- होम पेज पर क्लिक करें
- रास्ते के बगल में मौजूद, + आइकॉन पर क्लिक करें
- redirect.artists.overview जोड़ें
- नीचे की ओर स्क्रोल करके ट्रांज़िशन पर जाएं. इसके बाद, पेज चुनें और: + नया पेज चुनें
- पेज का नाम इस्तेमाल करें:
Artist Overview
और सेव करें पर क्लिक करें
चलिए, अब बाकी फ़्लो को खत्म करते हैं:
- नीचे दिए गए पेजों, इंटेंट, और फ़ुलफ़िलमेंट के साथ, पिछले चरणों को दोहराया जा सकता है. इस टेबल को टेक ओवर करें. पेज, वह पेज होता है जिसे आपको फ़्लो में चुनना होता है, रूट > यहां ट्रांज़िशन एक नया फ़्लो या पेज है.
पेज (फ़्लो में) | रूट > इंटेंट | रूट > ट्रांज़िशन |
कैटलॉग शुरू करना |
| कलाकार की खास जानकारी |
कैटलॉग प्रारंभ |
| प्रॉडक्ट |
कैटलॉग शुरू करना |
| प्रॉडक्ट की खास जानकारी |
कैटलॉग शुरू करना |
| प्रॉडक्ट की खास जानकारी |
कैटलॉग शुरू करना |
| शर्ट |
कैटलॉग शुरू करना |
| संगीत |
कैटलॉग शुरू करना |
| सेशन खत्म करना |
कैटलॉग शुरू करना |
| फ़्लो खत्म करें |
कलाकार की खास जानकारी |
| प्रॉडक्ट की खास जानकारी |
अब चलिए, ज़्यादा स्टैटिक फ़ुलफ़िलमेंट जोड़ते हैं.
- कैटलॉग फ़्लो में, कलाकार की खास जानकारी पेज पर क्लिक करें.
- एंट्री की जानकारी सेक्शन में, पूरी करने का तरीका बदलें पर क्लिक करें.
- स्टैटिक फ़ुलफ़िलमेंट (एजेंट का कहना है) का इस्तेमाल करें:
The following bands are signed with G-Records: Alice Googler, G's N' Roses, The Goo Fighters and The Google Dolls.
- सेव करें पर क्लिक करें
- कैटलॉग फ़्लो में, प्रॉडक्ट की खास जानकारी पेज पर क्लिक करें.
- एंट्री की जानकारी सेक्शन में, पूरी करने का तरीका बदलें पर क्लिक करें.
- स्टैटिक फ़ुलफ़िलमेंट (एजेंट का कहना है) का इस्तेमाल करें:
We sell shirts, music or the tour movie.
- सेव करें बटन दबाएं.
पेज पैरामीटर
पैरामीटर का इस्तेमाल, सेशन के दौरान असली उपयोगकर्ता से मिली वैल्यू को कैप्चर और रेफ़र करने के लिए किया जाता है. हर पैरामीटर का एक नाम और इकाई टाइप होता है. मर्चंडाइज़ ऑर्डर करने के लिए, हमें @Artist
और @Merch
पैरामीटर इकट्ठा करने होंगे. टी-शर्ट या लॉन्ग्लेव के लिए, आपको @ShirtSize
भी इकट्ठा करना होगा. अगर आपको संगीत ऑर्डर करना है, तो आपको @Carrier
और @Album
का नाम भी चाहिए.
उन पैरामीटर को ज़रूरी के तौर पर मार्क करना होगा. ज़रूरत पड़ने पर अपने असली उपयोगकर्ता को याद रखने के लिए कस्टम प्रॉम्प्ट दें, ताकि सही जवाब दिए जा सकें. इससे ये पैरामीटर इकट्ठा किए जा सकेंगे. Dialogflow CX में कुछ ऐसे तरीके हैं जिनकी मदद से, आपको इस काम में मदद मिल सकती है.
उदाहरण के लिए, पैरामीटर सेक्शन में, ऑर्डर पूरा होने के बारे में कस्टम स्टैटिक मैसेज दिए जा सकते हैं. अगर पैरामीटर ज़रूरी है, तो पैरामीटर की शर्तें पूरी करने वाले ये आइटम दिखाए जाएंगे. जवाब के तौर पर भेजे गए इन मैसेज को जवाब की सूची में जोड़ दिया जाएगा. एजेंट की बारी के दौरान, एक से ज़्यादा फ़ुलफ़िलमेंट कॉल किए जा सकते हैं. ऐसा करना कभी-कभी ज़रूरी भी होता है. इनमें से हर फ़ुलफ़िलमेंट से एक रिस्पॉन्स मैसेज जनरेट हो सकता है. Dialogflow, इन जवाबों को जवाबों की सूची में सेव करता है. पेज के लाइफ़ साइकल और जवाब की सूची में इन फ़ुलफ़िलमेंट को जोड़े जाने के क्रम के बारे में ज़्यादा जानने के लिए, Dialogflow CX पेज के दस्तावेज़ पढ़ें.
कलाकार की खास जानकारी वाले पेज पर पैरामीटर बनाना
आइए, कुछ पेज पैरामीटर तय करते हैं:
- कैटलॉग फ़्लो में, कलाकार की खास जानकारी पेज पर क्लिक करें.
- पैरामीटर ब्लॉक में, + पर क्लिक करें. artist पैरामीटर जोड़ें:
- डिसप्ले नेम:
artist
- इकाई किस तरह की है:
@Artist
- ज़रूरी है: सही का निशान लगाएं
- लॉग में बदलाव करना: सही का निशान लगाएं
- अब हम कस्टम पैरामीटर के पूरा होने की जानकारी देने वाले कुछ मैसेज जोड़ेंगे. अगर वर्चुअल एजेंट ने अभी तक artist पैरामीटर की जानकारी इकट्ठा नहीं की है, तो असली उपयोगकर्ता को एजेंट के इस जवाब को जवाब की सूची में जोड़ दिया जाएगा:
From which of these artists would you like to order merchandise?
- दूसरा डायलॉग विकल्प जोड़ें, जो बेहतर सुझाव वाले चिप दिखाता हो. डायलॉग विकल्प जोड़ें पर क्लिक करें और इस कोड (JSON में) का इस्तेमाल करें:
{
"richContent": [
[
{
"options": [
{
"text": "The Google Dolls"
},
{
"text": "The Goo Fighters"
},
{
"text": "Alice Googler"
},
{
"text": "G's N' Roses"
}
],
"type": "chips"
}
]
]
}
आपके असली उपयोगकर्ता ने इन सवालों के जवाब देने की कितनी कोशिशें की हैं, इसके आधार पर फ़ॉलबैक के लिए अलग-अलग प्रॉम्प्ट मैनेज किए जा सकते हैं. ऐसा करने के लिए, पैरामीटर इवेंट हैंडलर का इस्तेमाल करें. इसमें पहले से मौजूद कई इवेंट हैं, जैसे कि अमान्य पैरामीटर, बोले गए शब्द बहुत लंबे हैं, कोई इनपुट नहीं है, पहली कोशिश में कोई इनपुट नहीं है, दूसरी कोशिश या कोई मैच नहीं है. कोई इनपुट नहीं और कोई मैच नहीं, दोनों में अंतर यह है कि कोई इनपुट नहीं होने पर, उपयोगकर्ता ने कभी कोई जवाब नहीं दिया. वहीं, कोई मैच नहीं होने पर, उपयोगकर्ता ने जवाब दिया, लेकिन Dialogflow CX, इस जवाब को किसी पेज से मैच नहीं कर सका.
- नीचे की ओर स्क्रोल करके, फिर से अनुरोध करने वाले इवेंट हैंडलर सेक्शन पर जाएं.
- इवेंट हैंडलर जोड़ें पर क्लिक करें और इवेंट चुनें:
No-match default
- नीचे दिए गए इवेंट के स्टैटिक टेक्स्ट फ़ुलफ़िलमेंट का इस्तेमाल करें:
I missed that. Please, specify the artist. You can choose between: Alice Googler, G's N' Roses, The Google Dolls or The Goo Fighters. Which artist do you want to buy merchandise from?
- सेव करें पर क्लिक करें
- इवेंट हैंडलर जोड़ें पर क्लिक करें और इवेंट चुनें:
No-input default
- इवेंट के लिए, स्टैटिक टेक्स्ट फ़ुलफ़िलमेंट का इस्तेमाल करें:
I am sorry, I could understand the artist's name. You can choose between Alice Googler, G's N' Roses, The Google Dolls or The Goo Fighters. Which artist do you want to buy merchandise from?
- सेव करें पर क्लिक करें
पेज की स्थिति के हिसाब से रूट
पेज के कंडीशनल रूट के साथ पैरामीटर का इस्तेमाल करना काफ़ी असरदार होता है. जब किसी शर्त का आकलन 'सही' के तौर पर किया जाता है, तो उससे जुड़े पेज के रूट को कॉल किया जाएगा. शर्त यह हो सकती है कि कोई पैरामीटर किसी खास वैल्यू के बराबर हो या कोई पैरामीटर मौजूद न हो या पूरा किया गया फ़ॉर्म वगैरह. Dialogflow CX दस्तावेज़ में, पैरामीटर और शर्तों के बारे में ज़्यादा जानकारी मिल सकती है.
अपने रीटेल वर्चुअल एजेंट के लिए, हमें पैरामीटर का क्रम इकट्ठा करना होगा. इसलिए, हमें एक शर्त बनानी होगी, ताकि यह जांच की जा सके कि ‘फ़ॉर्म' पूरा हो गया है या नहीं. फ़ॉर्म, पैरामीटर की एक ऐसी सूची होती है जिसे पेज के लिए असली उपयोगकर्ता से इकट्ठा किया जाना चाहिए. वर्चुअल एजेंट, असली उपयोगकर्ता से कई बार बातचीत करने के दौरान इंटरैक्ट करता है. ऐसा तब तक होता है, जब तक वह फ़ॉर्म के सभी ज़रूरी पैरामीटर इकट्ठा नहीं कर लेता. इन पैरामीटर को पेज पैरामीटर भी कहा जाता है.
Dialogflow CX, फ़ॉर्म भरने के दौरान असली उपयोगकर्ता से मिली पैरामीटर वैल्यू को अपने-आप सेट करता है. यह देखने के लिए कि मौजूदा पेज का पूरा फ़ॉर्म भरा गया है या नहीं, इस शर्त का इस्तेमाल करें: $page.params.status = "FINAL"
कलाकार की खास जानकारी वाले पेज पर, शर्तों के हिसाब से रूट बनाना
आइए, एक शर्त वाला रूट बनाएं, जो कलाकार के नाम के पता चलने के बाद, अगले पेज पर ट्रांज़िशन करेगा:
- कलाकार की खास जानकारी पेज पर, रास्ते सेक्शन में जाकर, + आइकॉन पर क्लिक करें.
- नीचे की ओर स्क्रोल करके, स्थिति सेक्शन पर जाएं.
- कम से कम एक (या) चुनें
- इसके बाद, हम एक ऐसा एक्सप्रेशन लिखेंगे
- पैरामीटर:
$page.params.status
- ऑपरेटर:
=
- मान:
"FINAL"
- अब हम रूट पर एक खास स्टैटिक फ़ुलफ़िलमेंट मैसेज बनाएंगे, जिसमें असली उपयोगकर्ता की पसंद की पुष्टि की जाएगी. नीचे की ओर स्क्रोल करके, पूरी करने की प्रोसेस ब्लॉक पर जाएं और ऑर्डर पूरा होने के बारे में ये मैसेज लिखें:
$session.params.artist, great choice! Rock on!
You want to rock with $session.params.artist merchandise. Awesome!
- शर्त पूरी होने पर, आपको प्रॉडक्ट की खास जानकारी पेज पर जाना चाहिए. नीचे ट्रांज़िशन सेक्शन तक स्क्रोल करें और इस पेज का इस्तेमाल करें:
Product Overview
- सेव करें बटन दबाएं.
प्रॉडक्ट की खास जानकारी वाले पेज पर रूट बनाना
हम जानते हैं कि पैरामीटर और कंडिशनल रूट बनाने का तरीका क्या है, तो अब नीचे दिए गए पेजों के लिए और पैरामीटर बनाते हैं:
प्रॉडक्ट की खास जानकारी
- प्रॉडक्ट की खास जानकारी पेज पर,
artist
पैरामीटर बनाएं:
- डिसप्ले नेम:
artist
- इकाई किस तरह की है:
@Artist
- ज़रूरी है: सही का निशान लगाएं
- लॉग में बदलाव करना: सही का निशान लगाएं
- शुरुआती प्रॉम्प्ट को पूरा करने की तारीख:
From which of these artists would you like to order merchandise?
{
"richContent": [
[
{
"options": [
{
"text": "The Google Dolls"
},
{
"text": "The Goo Fighters"
},
{
"text": "Alice Googler"
},
{
"text": "G's N' Roses"
}
],
"type": "chips"
}
]
]
}
- इवेंट हैंडलर >
No-match default
:To buy merchandise you can choose between the following artists: Alice Googler, G's N' Roses, The Google Dolls or The Goo Fighters. Which artist do you want to buy merchandise from?
- कस्टम पेलोड:
{
"richContent": [
[
{
"options": [
{
"text": "The Google Dolls"
},
{
"text": "The Goo Fighters"
},
{
"text": "Alice Googler"
},
{
"text": "G's N' Roses"
}
],
"type": "chips"
}
]
]
}
- इवेंट हैंडलर >
No-input default
:To buy merchandise you can choose between the following artists: Alice Googler, G's N' Roses, The Google Dolls or The Goo Fighters. Which artist were you trying to mention?
- पसंद के मुताबिक पेलोड:
{
"richContent": [
[
{
"options": [
{
"text": "The Google Dolls"
},
{
"text": "The Goo Fighters"
},
{
"text": "Alice Googler"
},
{
"text": "G's N' Roses"
}
],
"type": "chips"
}
]
]
}
merch
पैरामीटर बनाएं:
- डिसप्ले नेम:
merch
- इकाई का टाइप:
@Merch
- ज़रूरी है: सही का निशान लगाएं
- लॉग में बदलाव करना: सही का निशान लगाएं
- ग्राहक का ऑर्डर:
Which merchandise item do you want?
- डायलॉग विकल्प जोड़ें > कस्टम पेलोड पर क्लिक करें:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Shirts"
},
{
"text": "Music"
},
{
"text": "Tour movie"
}
]
}
]
]
}
- इवेंट हैंडलर >
No-match default
- इवेंट हैंडलर की सुविधा:
We sell Shirts, Music or the Tour movie. Which of these items do you want?
- कस्टम पेलोड:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Shirts"
},
{
"text": "Music"
},
{
"text": "Tour movie"
}
]
}
]
]
}
- इवेंट हैंडलर >
No-input default
- इवेंट हैंडलर का ऑर्डर पूरा करना:
I couldn't understand which merchandise item you wanted to buy. You can choose between: Shirts, Music or the Tour movie. Which item do you want?
- पसंद के मुताबिक पेलोड:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Shirts"
},
{
"text": "Music"
},
{
"text": "Tour movie"
}
]
}
]
]
}
- एक ऐसा रूट बनाएं जो
artist
दिए जाने औरmerch
आइटम दिए जाने पर, प्रॉडक्ट पेज पर ले जाएगा.
- शर्त:
- हर नियम से मेल खाता है (AND)
- एक्सप्रेशन:
$session.params.artist != null
- एक्सप्रेशन:
$session.params.merch != null
- ग्राहक का ऑर्डर:
Alright! $session.params.merch of $session.params.artist, let's go!
- ट्रांज़िशन: पेज:
Product
- उपयोगकर्ता के "शर्ट" बोलने पर, उसे शर्ट के पेज पर ले जाने के लिए रूट बनाएं
- इंटेंट: redirect.shirts
- ट्रांज़िशन: पेज:
Shirts
- उपयोगकर्ता के "संगीत" बोलने पर, उसे चलाने के लिए कोई रूट बनाएं
- इंटेंट: redirect.music
- ट्रांज़िशन: पेज:
Music
- जब उपयोगकर्ता किराये की जानकारी मांगे, तब उसे भेजने के लिए कोई रूट बनाएं
- इंटेंट: redirect.price
- ट्रांज़िशन: नया पेज बनाएं:
Price
ऊपर दिया गया कॉन्फ़िगरेशन सेट करने के बाद, आपको नीचे दी गई इमेज जैसा विज़ुअलाइज़ेशन दिखेगा. ध्यान दें कि डायग्राम में इंटेंट रूट नीले रंग के होते हैं और शर्त वाले रूट नारंगी रंग के होते हैं. जब दिखाया नहीं जाता है, तब इवेंट हैंडलर हरे रंग के होते हैं. जब एक से ज़्यादा तरह के रास्तों से किसी पेज पर ट्रांज़िशन किया जाता है, तो लाइन स्लेटी रंग की हो जाती है.
अब तक, आपने स्टेटस हैंडलर की मदद से फ़्लो, इकाइयां, इंटेंट, और पेज बनाने का तरीका जाना है. जैसे: पैरामीटर के आधार पर इंटेंट रूट और शर्त के हिसाब से रूट. इस लैब में आगे चलकर, हम इनपुट के आधार पर अलग-अलग डायलॉग बॉक्स उपलब्ध कराने के लिए, कॉन्टेंट को कंडिशनल (शर्त के साथ) ब्रांचिंग की सुविधा का इस्तेमाल करेंगे.
वर्चुअल एजेंट को फ़ाइनल करने के लिए, नीचे दिए गए कॉन्फ़िगरेशन का इस्तेमाल किया जा सकता है.
शर्ट पेज:
- शर्ट पेज में ये कॉन्फ़िगरेशन बनाएं:
- एंट्री की पुष्टि:
Do you want a longsleeve or a t-shirt?
- एंट्री की जानकारी देने वाला कस्टम पेलोड:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "T-shirt"
},
{
"text": "Longsleeve"
},
{
"text": "Price?"
}
]
}
]
]
}
- एक इंटेंट रूट बनाएं:
Price
पेज पर ट्रांज़िशन के साथredirect.price
- यह पैरामीटर बनाएं:
- पैरामीटर:
merch
- इकाई का टाइप:@Merch
,Required
, औरRedact in log
- पैरामीटर > इवेंट हैंडलर >
No-match default
- पैरामीटर > इवेंट हैंडलर फ़ुलफ़िलमेंट:
You can choose between a t-shirt or a longsleeve. Which of these do you want?
- पैरामीटर > इवेंट हैंडलर फ़ुलफ़िलमेंट कस्टम पेलोड:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "T-shirt"
},
{
"text": "Longsleeve"
}
]
}
]
]
}
- पैरामीटर > इवेंट हैंडलर >
No-input default
- पैरामीटर > इवेंट हैंडलर की सुविधा:
I couldn't understand if you want the t-shirt or the longsleeve. Which of these do you want?
- पैरामीटर > इवेंट हैंडलर फ़ुलफ़िलमेंट कस्टम पेलोड:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "T-shirt"
},
{
"text": "Longsleeve"
}
]
}
]
]
}
- एंट्री फ़ुलफ़िलमेंट पर क्लिक करें और नीचे की ओर स्क्रोल करके पैरामीटर प्रीसेट पर जाएं. शर्ट पेज के चालू होने पर, कैटगरी पैरामीटर शर्ट पर सेट हो जाएगा:
पैरामीटर | वैल्यू |
|
|
- शर्त के हिसाब से रूट जोड़ें:
- कम से कम एक नियम से मैच करें (या)
- एक्सप्रेशन:
$session.params.merch = "T-shirt"
- एक्सप्रेशन:
$session.params.merch = "Longsleeve"
- नए पेज पर ट्रांज़िशन:
Shirt Size
कीमत वाला पेज:
कीमतों के मैसेज, चुने गए मर्चंडाइज़ आइटम या कैटगरी (संगीत या शर्ट) के हिसाब से दिखेंगे. इसलिए, हम इस हिस्से को बाद में लैब में ठीक करेंगे. फ़िलहाल, सिर्फ़ प्लेसहोल्डर डालना ही काफ़ी है.
- कीमत पेज में ये कॉन्फ़िगरेशन बनाएं:
- एंट्री की पुष्टि:
PRICE TODO
आप बातचीत में अलग-अलग जगहों से कीमत का अनुरोध कर सकते हैं, इसलिए ऑर्डर जारी रखने के लिए, हमेशा आपको जवाब देना चाहिए और बातचीत के पिछले हिस्से पर वापस ले जाना चाहिए. डायलॉग ट्री में पांच ऐसी जगहें हैं जहां कीमत की जानकारी पाने के लिए, आपके पास अलग से पूछने का विकल्प होता है. (शर्ट, शर्ट का साइज़, संगीत, कैरियर और एक इंटेंट रूट से भी डायरेक्ट करना). इसलिए, हमें वापस जाने के लिए कुछ कंडिशनल रूट देखने होंगे:
- शर्त के साथ कोई रास्ता जोड़ें:
- हर नियम से मेल खाता है (AND)
- एक्सप्रेशन:
$session.params.category = "shirts"
- एक्सप्रेशन:
$session.params.merch = "null"
- नए पेज पर ट्रांज़िशन:
Shirts
- शर्त के हिसाब से रूट जोड़ें:
- हर नियम से मेल खाता है (AND)
- एक्सप्रेशन:
$session.params.category = "shirts"
- एक्सप्रेशन:
$session.params.size = "null"
- नए पेज पर ट्रांज़िशन:
Shirt Size
- शर्त के हिसाब से रूट जोड़ें:
- हर नियम से मेल खाता है (और)
- एक्सप्रेशन:
$session.params.category = "music"
- एक्सप्रेशन:
$session.params.album = "null"
- नए पेज पर ट्रांज़िशन:
Music
- शर्त के हिसाब से रूट जोड़ें:
- हर नियम से मेल खाता है (और)
- एक्सप्रेशन:
$session.params.category = "music"
- एक्सप्रेशन:
$session.params.merch = "null"
- नए पेज पर ट्रांज़िशन:
Carrier
- शर्त के हिसाब से रूट जोड़ें:
- हर नियम से मेल खाता है (AND)
- एक्सप्रेशन:
$session.params.category = "null"
- नए पेज पर ट्रांज़िशन:
Product Overview
शर्ट के साइज़ का पेज:
- शर्ट का साइज़ पेज में ये कॉन्फ़िगरेशन बनाएं:
- ऑर्डर पूरा करने का समय:
What shirt size do you want?
- एंट्री की जानकारी देने वाला कस्टम पेलोड:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "XS"
},
{
"text": "S"
},
{
"text": "M"
},
{
"text": "L"
},
{
"text": "XL"
},
{
"text": "2XL"
},
{
"text": "3XL"
}
]
}
]
]
}
Price
पेज पर ट्रांज़िशन के साथ, इंटेंट रूट:redirect.price
बनाएं.- यह पैरामीटर बनाएं:
- पैरामीटर:
shirtsize
- इकाई का टाइप:@ShirtSize
-Required
,Redact In Log
- पैरामीटर > इवेंट हैंडलर >
No-match default
- पैरामीटर > इवेंट हैंडलर की सुविधा:
Please tell me the shirt size, such as XL.
- पैरामीटर > इवेंट हैंडलर फ़ुलफ़िलमेंट कस्टम पेलोड:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "XS"
},
{
"text": "S"
},
{
"text": "M"
},
{
"text": "L"
},
{
"text": "XL"
},
{
"text": "2XL"
},
{
"text": "3XL"
}
]
}
]
]
}
- पैरामीटर > इवेंट हैंडलर >
No-input default
- पैरामीटर > इवेंट हैंडलर फ़ुलफ़िलमेंट:
I couldn't understand the shirt size. What size do you want?
- पैरामीटर > इवेंट हैंडलर फ़ुलफ़िलमेंट कस्टम पेलोड:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "XS"
},
{
"text": "S"
},
{
"text": "M"
},
{
"text": "L"
},
{
"text": "XL"
},
{
"text": "2XL"
},
{
"text": "3XL"
}
]
}
]
]
}
- शर्त के साथ कोई रूट जोड़ें:
- हर नियम से मेल खाता है (और)
- एक्सप्रेशन:
$page.params.shirtsize != "null"
- पेज पर ट्रांज़िशन:
Product
संगीत पेज:
- संगीत पेज में ये कॉन्फ़िगरेशन बनाएं:
- ऑर्डर पूरा करने का समय:
We have a Greatest Hits Album or the Live Album. Which one do you want?
- एंट्री की जानकारी देने वाला कस्टम पेलोड:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Greatest Hits"
},
{
"text": "Live"
},
{
"text": "Price?"
}
]
}
]
]
}
- इंटेंट रूट बनाएं:
redirect.price
, जो पेज:Price
पर ट्रांज़िशन करता है. - यह पैरामीटर बनाएं:
- पैरामीटर:
album
- इकाई का टाइप:@Album
-Required
,Redact In Log
- पैरामीटर > इवेंट हैंडलर >
No-match default
- पैरामीटर > इवेंट हैंडलर फ़ुलफ़िलमेंट:
You can choose between Greatest Hits and Live Album. Which of these do you want?
- पैरामीटर > इवेंट हैंडलर फ़ुलफ़िलमेंट कस्टम पेलोड:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Greatest Hits"
},
{
"text": "Live"
}
]
}
]
]
}
- पैरामीटर > इवेंट हैंडलर >
No-input default
- पैरामीटर > इवेंट हैंडलर की सुविधा:
I couldn't understand if you want the album: Greatest Hit or Live. Which of these do you want?
- पैरामीटर > इवेंट हैंडलर फ़ुलफ़िलमेंट कस्टम पेलोड:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Greatest Hits"
},
{
"text": "Live"
}
]
}
]
]
}
- एंट्री फ़ुलफ़िलमेंट पर क्लिक करें और नीचे की ओर स्क्रोल करके पैरामीटर प्रीसेट पर जाएं. हर बार जब संगीत पेज चालू होगा, तो कैटगरी पैरामीटर संगीत पर सेट हो जाएगा:
पैरामीटर | वैल्यू |
|
|
- शर्त के साथ कोई रूट जोड़ें:
- हर नियम से मेल खाता है (AND)
- एक्सप्रेशन:
$page.params.album != "null"
- इस पेज पर ट्रांज़िशन:
Carrier
मोबाइल और इंटरनेट सेवा देने वाली कंपनी का पेज:
- कैरियर पेज में ये कॉन्फ़िगरेशन बनाएं:
- ऑर्डर पूरा करने का समय:
Do you want this album on CD or MP3?
- एंट्री की जानकारी देने वाला कस्टम पेलोड:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "CD"
},
{
"text": "MP3"
},
{
"text": "Price?"
}
]
}
]
]
}
- एक इंटेंट रूट बनाएं:
redirect.price
जोPrice
पेज पर ले जाता है. - यह पैरामीटर बनाएं:
- पैरामीटर:
merch
- इकाई का टाइप:@Merch
-Required
,Redact In Log
- पैरामीटर > इवेंट हैंडलर >
No-match default
- पैरामीटर > इवेंट हैंडलर फ़ुलफ़िलमेंट:
Do you want a physical CD or the digital album?
- पैरामीटर > इवेंट हैंडलर की सुविधा: कस्टम पेलोड:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "CD"
},
{
"text": "Digital Album"
}
]
}
]
]
}
- पैरामीटर > इवेंट हैंडलर >
No-input default
- पैरामीटर > इवेंट हैंडलर की सुविधा:
I couldn't understand if you mean CD or MP3. Which one do you want?
- पैरामीटर > इवेंट हैंडलर की सुविधा: कस्टम पेलोड:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "CD"
},
{
"text": "MP3"
}
]
}
]
]
}
- शर्त के हिसाब से रूट जोड़ें:
- हर नियम से मेल खाता है (और)
- एक्सप्रेशन:
$page.params.merch != "null"
- इस पेज पर ट्रांज़िशन:
Product
प्रॉडक्ट पेज:
- ये पैरामीटर बनाएं:
पैरामीटर का डिसप्ले नेम | पैरामीटर इकाई का टाइप | जांच करना |
|
| ज़रूरी है, लॉग में बदलाव करें |
|
| ज़रूरी है, लॉग इन छिपाने के लिए उसमें बदलाव करें |
- artist पैरामीटर के लिए, नीचे दिए गए निर्देश को पूरा करना ज़रूरी है. यह तब दिखेगा, जब कलाकार के बारे में जानकारी न हो.
You didn't mention which artist you are interested in. You can ask me to buy the $session.params.merch of the artist you like or ask which artists we signed. How can I help?
{
"richContent": [
[
{
"options": [
{
"text": "Which artists?"
}
],
"type": "chips"
}
]
]
}
- फ़ुलफ़िलमेंट के साथ
No-input default
इवेंट हैंडलर भी जोड़ें:I couldn't understand what you just said. Ask me which artists are signed.
- साथ ही,
No-match default
इवेंट हैंडलर, जिसे पूरा किया गया है:I missed that. Please ask me which artists are signed.
- merch पैरामीटर के लिए दोहराव वाले इवेंट हैंडलर भी ज़रूरी हैं.
- फ़ुलफ़िलमेंट:
I couldn't understand what you just said. Which merchandise item do you want?
के साथ एकNo-input default
इवेंट हैंडलर जोड़ें - साथ ही,
No-match default
इवेंट हैंडलर, जिसे पूरा किया गया है:I missed that. Which merchandise item do you want?
जब कलाकार की जानकारी हो और उपयोगकर्ता "टूर की फ़िल्म" चुनता है, तो अगला रूट पुष्टि करने वाले पेज पर ट्रांज़िशन हो जाएगा.
- शर्त के साथ कोई रूट जोड़ें:
- हर नियम से मेल खाता है (और)
- एक्सप्रेशन:
$session.params.artist != null
- एक्सप्रेशन:
$session.params.merch = "Tour Movie"
- पैरामीटर प्रीसेट पैरामीटर जोड़ें >
price = 25
- नए पेज पर ट्रांज़िशन:
Confirmation
जब कलाकार की जानकारी मिल जाएगी और उपयोगकर्ता ने "टी-शर्ट" चुन ली होगी और शर्ट का साइज़ चुन लिया होगा, तब अगला रूट पुष्टि करने वाले पेज पर ट्रांज़िशन हो जाएगा.
- शर्त के हिसाब से रूट जोड़ें:
- कस्टम एक्सप्रेशन:
$session.params.artist != null AND $session.params.merch = "T-shirt" AND $session.params.shirtsize != null
- पैरामीटर प्रीसेट पैरामीटर जोड़ें >
price = 25
- पेज पर ट्रांज़िशन:
Confirmation
जब कलाकार का नाम पता चल जाएगा और उपयोगकर्ता "लंबी बाजू" और शर्ट का साइज़ चुन लेगा, तो अगला रूट पुष्टि करने वाले पेज पर ट्रांज़िशन हो जाएगा.
- शर्त के साथ कोई रूट जोड़ें:
- कस्टम एक्सप्रेशन:
$session.params.artist != null AND $session.params.merch = "Longsleeve" AND $session.params.shirtsize != null
- पैरामीटर प्रीसेट, पैरामीटर जोड़ें >
price = 30
- पेज पर ट्रांज़िशन:
Confirmation
जब कलाकार की पहचान हो जाएगी और उपयोगकर्ता "सीडी" चुन लेगा, तब अगला रूट पुष्टि करने वाले पेज पर ट्रांज़िशन हो जाएगा. साथ ही, एल्बम का नाम भी चुना जाएगा.
- शर्त के हिसाब से रूट जोड़ें:
- कस्टम एक्सप्रेशन:
$session.params.artist != null AND $session.params.merch = "CD" AND $session.params.album != null
- पैरामीटर प्रीसेट, पैरामीटर जोड़ें >
price = 15
- पेज पर ट्रांज़िशन:
Confirmation
कलाकार के ज्ञात होने और उपयोगकर्ता द्वारा "डिजिटल एल्बम" चुनने और एल्बम का नाम चुने जाने पर अगला मार्ग, पुष्टि पेज पर ट्रांज़िशन कर दिया जाएगा.
- शर्त के साथ कोई रूट जोड़ें:
- कस्टम एक्सप्रेशन:
$session.params.artist != null AND $session.params.merch = "Digital Album" AND $session.params.album != null
- पैरामीटर प्रीसेट, पैरामीटर जोड़ें >
price = 10
- इस पेज पर ट्रांज़िशन:
Confirmation
इसके बाद, हम कुछ बेहतर शर्तें तय करेंगे. इन शर्तों में, जानकारी मौजूद न होने का पता लगाने वाले प्रॉम्प्ट शामिल होंगे. कलाकार के ज्ञात होने और उपयोगकर्ता के "सीडी" या "डिजिटल एल्बम" चुनने, लेकिन एल्बम का नाम नहीं चुने जाने के बाद, अगला रूट संगीत पेज पर वापस चला जाएगा.
- शर्त के हिसाब से रूट जोड़ें:
- कस्टम एक्सप्रेशन:
$session.params.artist != null AND ($session.params.merch = "CD" OR $session.params.merch = "Digital Album") AND $session.params.album = null
- पूरा करना:
I would also need to know which album you would like to buy!
- पेज पर ट्रांज़िशन:
Music
आखिरी रूट, पुष्टि करने वाले पेज पर तब ट्रांज़िशन होगा, जब कलाकार की जानकारी हो और उपयोगकर्ता ने "टी-शर्ट" या "लंबी आस्तीन वाली शर्ट" चुनी हो, लेकिन टी-शर्ट का साइज़ न चुना हो.
- शर्त के साथ रूट जोड़ें:
- कस्टम एक्सप्रेशन:
$session.params.artist != null AND ($session.params.merch = "T-shirt" OR $session.params.merch = "Longsleeve") AND $session.params.shirtsize = null
- पूरा करना:
I would also need to know which shirt size you need!
- पेज पर ट्रांज़िशन:
Shirt Size
लैब के अगले हिस्से में, हम शर्त के हिसाब से टास्क पूरा करने की सुविधा का इस्तेमाल करेंगे. इससे, इनपुट के आधार पर टास्क पूरा होने के अलग-अलग मैसेज दिए जा सकेंगे.
7. शर्तों के हिसाब से जवाब
कुछ जवाब, इनपुट के आधार पर अलग डायलॉग दिखाएंगे. डायलॉग अलग-अलग दिशाओं में जाएंगे. हम इन्हें शर्त के हिसाब से दिए जाने वाले जवाब कहते हैं. यह तब दिलचस्प हो सकता है, जब वेबहुक फ़ुलफ़िलमेंट का इस्तेमाल न किया जा रहा हो. वेबहुक फ़ुलफ़िलमेंट में, शर्तों के हिसाब से जवाब, बैक-एंड पर तय किए जाते हैं. एक उदाहरण ऐसा दिख सकता है:
if [condition]
[response]
elif [condition]
[response]
elif [condition]
[response]
else
[response]
endif
- [condition] का एक उदाहरण यह हो सकता है:
$session.params.user-age >= 21
. इसमें, रूट की शर्तों के जैसे फ़ॉर्मैट का इस्तेमाल किया जाता है. - [response] स्टैटिक टेक्स्ट वाला जवाब लेता है
- शर्तों के हिसाब से मिलने वाले जवाब, हमेशा
if
से शुरू होते हैं elif
औरelse
ब्लॉक ज़रूरी नहीं हैं
Dialogflow CX में पहले से मौजूद सिस्टम फ़ंक्शन भी इस्तेमाल किए जा सकते हैं, ताकि इनका इस्तेमाल किया जा सके. उदाहरण के लिए, तारीख या समय को फ़ॉर्मैट करने या मौजूदा समय ($sys.func.NOW()
) दिखाने के लिए
पुष्टि और कीमत पेजों को ठीक करके, कैटलॉग फ़्लो को फ़ाइनल कर लेते हैं.
पुष्टि करने वाला पेज:
अब हम पुष्टि करने वाला पेज बनाएंगे. इसमें ये शर्तें शामिल हैं:
- अगर मर्चंडाइज़, सीडी या डिजिटल एल्बम है. हम पुष्टि करने के लिए, ये फ़ील्ड दिखाएंगे: कलाकार, मर्चेंडाइज़, एल्बम, और कीमत.
- अगर मर्चंडाइज़ टी-शर्ट या लंबी बाजू वाली शर्ट है. पुष्टि में हम ये फ़ील्ड दिखाएंगे: artist, merch, size, और price.
- ऐसा नहीं होने पर (अगर मर्चंडाइज़, टूर मूवी है). हम पुष्टि करने के लिए, ये फ़ील्ड दिखाएंगे: कलाकार, मर्चेंडाइज़, और कीमत.
- पुष्टि पेज पर क्लिक करें.
- कार्रवाई में बदलाव करें > एजेंट के जवाब > डायलॉग बॉक्स जोड़ें विकल्प > शर्त के साथ जवाब पर क्लिक करें:
if ($session.params.merch = "CD" OR $session.params.merch = "Digital Album")
The $session.params.merch: $session.params.artist - $session.params.album costs $$session.params.price. Shall I continue to order?
elif ($session.params.merch = "T-shirt" OR $session.params.merch = "Longsleeve")
A $session.params.merch of $session.params.artist size: $session.params.shirtsize costs $$session.params.price. Shall I continue to order?
elif $session.params.merch = "Tour Movie"
The $session.params.merch of $session.params.artist costs $$session.params.price. Shall I continue to order?
else
It looks like something went wrong with your order. You can say "Reset", to restart the order process.
endif
- Create the following Custom payload:
- Custom payload:
{
"richContent": [
[
{
"options": [
{
"text": "Yes, confirm"
}
],
"type": "chips"
}
]
]
}
Next, create two intent routes:
confirm.proceed.order
transitions to:Order Process
Flow.decline.proceed.order
transitions toEnd Flow
When the user declines the order, and does not want to proceed the order process, we will have to transition back to the welcome page, but all the parameters have to be cleared. We can do this by specifically setting null to all the possible parameters. You can do this with Parameter presets.
- In the decline.proceed.order intent route, scroll down to Parameter presets and add the following parameters:
Parameter | Value |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Notice that we have created an additional parameter called restart
. If this parameter is present, the Default Start Flow, should know to continue the conversation by showing a customized message.
- Click on the Default Start Flow, Start Page, and create another Conditional Route:
$session.params.restart = "true"
- Fulfillment:
"Welcome back, as the virtual agent of G-Records, I can help you order artists merchandise, you can ask questions about your order or shipping, and I can tell you more which artists are currently signed with us. How can I help?"
- Custom payload:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Which artists?"
},
{
"text": "Which products?"
},
{
"text": "About my order..."
}
]
}
]
]
}
- Select the Start Page and click on the
redirect.end
intent. Create the following fulfillment:Thank you for contacting G-Records! Have a nice day!
Price Page:
Let's also fix the Price TODOs. The price information will be static for now. Click on the Price Page in the Catalog Flow, and use the following entry fulfillment:
- Delete the Agent Says entry fulfillment.
- Create a new Conditional Response:
if $session.params.category = "shirts"
A t-shirt costs $25 and a longsleeve costs $30.
elif $session.params.category = "music"
A CD costs $15. The digital album on MP3 costs $10.
else
A t-shirt costs $25 and a longsleeve costs $30. A CD costs $15 and a digital album on MP3 $10. In case you are interested in the Tour Movie, that one is $25.
endif
Well done, by now you completed the Catalog flow. Your flow should look similar to this diagram:
8. Wrapping up the agent
We are almost at the end of this lab. Let's configure the last flows together, and take in practice all the new things that we have learned.
Creating the My Order Flow
- Go to the My Order Flow, and create the following intent transitions:
Page (In Flow) | Routes > Intent | Routes > Transition To |
My Order Start |
| My Order |
My Order Start |
| My Order Status |
My Order Start |
| My Order Cancellation |
My Order Start |
| End Session |
My Order Start |
| End Flow |
My Order |
| My Order Status |
My Order |
| My Order Cancellation |
Default Start Flow |
| Flow: My Order |
Default Start Flow |
| Flow: My Order |
- Let's create the following entry fulfillment for the My Order Page:
- Entry fulfillment:
I can look up the status of your order, or I can cancel an order.
- In the My Order Page create the following parameter:
- Displayname:
ordernumber
- Entity Type:
@OrderNumber
- Required: checked
- Initial prompt fulfillment:
What's the order number? For example ABCD123.
- Event Handler:
No-match default
:To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- Event Handler:
No-input default
:I missed that. To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- Create the following conditional route:
- Customize Expression:
$page.params.status = "FINAL"
- Fulfillment:
And do you want to Cancel your order, or should I look up the status?
- Click on Add state handler > Event Handlers and create the Event Handler:
No-input default
- Fulfillment:
I'm sorry, what was that? Would you like me to cancel an order or look up the status?
- Custom payload:
{
"richContent": [
[
{
"options": [
{
"text": "Status"
},
{
"text": "Cancel"
}
],
"type": "chips"
}
]
]
}
- Create the Event Handler:
No-match default
- Fulfillment:
Would you like me to cancel an order or lookup the status?
- Custom payload:
{
"richContent": [
[
{
"options": [
{
"text": "Status"
},
{
"text": "Cancel"
}
],
"type": "chips"
}
]
]
}
- In the My Order Status Page create the following parameter:
- Displayname:
ordernumber
- Entity Type:
@OrderNumber
- Required checked
- Initial prompt fulfillment:
What's the order number? For example ABCD123.
- Event Handler:
No-match default
:To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- Event Handler:
No-input default
:I missed that. To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- In the My Order Status Page create the following conditional route:
- Customize Expression:
$session.params.ordernumber != null
- Fulfillment:
Your order $session.params.ordernumber has been shipped, it can take up to approx 2 weeks before you will receive your items.
- Add dialogue option > Text:
Is there anything else I can help you with?
- In the My Order Cancelation Page create the following parameter:
- Displayname:
ordernumber
- Entity Type:
@OrderNumber
- Required checked
- Initial prompt fulfillment:
What's the order number? For example ABCD123.
- Event Handler:
No-match default
:To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- Event Handler:
No-input default
:I missed that. To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- In the My Order Cancelation Page create the following conditional route:
- Customize Expression:
$session.params.ordernumber != null
- Fulfillment:
Your order $session.params.ordernumber has been canceled.
- Add dialogue option > Text:
Is there anything else I can help you with?
- Test the flow and create the following two test scenarios:
>"About my order"
>"ABCD123"
>"Status"
And:
>"What's the status of order DEFG222"
- Select the Start Page and click on the
redirect.end
intent. Create the following fulfillment:Thank you for contacting G-Records! Have a nice day!
- Select the Start Page and click on the
redirect.home
intent. Create the following parameter preset:restart = true
Default Negative intents (Fallback)
When you create a virtual agent, a default negative intent is created for you. You can add training phrases to this intent that act as negative examples that will trigger a No-match event. There may be cases where end-user input has a slight resemblance to training phrases in normal intents, but you do not want these inputs to match any normal intents.
- Try in the simulator:
I don't like Alice Googler
.
You will see that the virtual agent answers with the Product Overview Page, to continue ordering Alice Googler merchandise. However, your end user does not like that artist. Let's use the Default Negative Intent for this.
- Go to Manage > Intents and select the Default Negative Intent.
- Add the following training phrases that will trigger the No-match event.
I don't like Alice Googler
I am not a fan of G's N' Roses
I can't stand the music of the Google Dolls
- Hit Save and test the following sentence in the simulator:
I am really not a fan of the Goo Fighters
This time the No-match
event was triggered, you stayed on the Start Page.
Default Fallback Messages
- Click the Default Start Flow, select the
sys.no-input-default
event handler.
The No-input fallback basically means: No text or speech answers were detected. Likely no answers were given, or the system couldn't hear it. Therefore, let's make the fallback messages more specific. Use the tab key, to create alternative dialogues:
- Remove all answers, and add these text dialogues:
I'm sorry, I didn't receive an answer. Can you say it again?
I missed your answer, can you say it again?
Sorry, I didn't hear anything. Can you say it again?
I couldn't hear what you were saying, what was that?
I'm sorry, I missed your answer. What were you trying to say?
Don't forget to click Save.
- Click the Default Start Flow, select the
sys.no-match-default
event handler.
The No Match fallback basically means: Text or speech answers were detected but nothing in Dialogflow CX got matched.
- Remove all answers, and add these text dialogues:
Sorry, I didn't get that. Can you please rephrase?
I'm sorry, I don't understand. Can you please rephrase?
I don't understand, please rephrase.
Sorry, I didn't get that. What was that?
I didn't get that, can you please rephrase?
Don't forget to click Save.
- It's advised to repeat these steps for the Catalog, My Order, Order Process and Customer Care flows.
Here's a tip: when creating fallback messages, make them more explicit, by rephrasing the previous question or by mentioning an example. You could create these type of No-match and No-input events on Page level when creating parameters. In our labs, we have already done this.
Creating the Order Process Flow
- Go to the Order Process Flow, and create the following intent transitions:
Page (In Flow) | Routes > Intent | Routes > Transition To |
Order Process Start |
| End Session |
Order Process Start |
| End Flow |
Order Process Start |
| New Page: Shipping Details |
- Let's create the following entry fulfillment for the Shipping Details Page:
- Entry fulfillment:
To complete your order I will first need to collect your shipping details.
- Create the following parameters:
These parameters will make use of built-in system entities. System entity support differs for each language. See the docs for more information.
Parameter Display name | Entity | Required? | Initial prompt fulfillment | No-match default | No-input default |
| @sys.person | Required |
|
|
|
| @sys.person | Required |
|
|
|
| @sys.address | Required |
|
|
|
| @sys.any | Required |
|
|
|
| @sys.geo-city | Required |
|
|
|
| @sys.geo-country | Required |
|
|
|
| @sys.email | Required |
|
|
|
- Create the following conditional route:
- Customize Expression:
$page.params.status = "FINAL"
- Transition to new Page:
Payment Details
- Create the following entry fulfillment.
Let's fake it that this virtual agent makes use of Google Pay. Don't worry this tutorial won't make real transactions. Create the following entry dialogues:
- Agent Says:
Alright $session.params.firstname! We will make use of Google Pay, that's connected to your email account: $session.params.email.
- Conditional Response
if $session.params.merch != "Digital Album"
Shipping costs an additional 5 dollars. This will make the total price $$sys.func.TO_TEXT($sys.func.ADD($session.params.price, 5)).
Your merchandise will be shipped to:
$session.params.firstname $session.params.lastname
$session.params.address
$session.params.zipcode $session.params.city
$session.params.country
To continue the order process please explicitly say "I confirm". Do you want to confirm your $session.params.artist $session.params.merch order?
else
The total costs will be: $$session.params.price.
After purchasing the digital album, you will receive an email with the download link.
To continue the order process please explicitly say "I confirm".
Do you want to confirm your $session.params.artist $session.params.merch order?
endif
- यहां दिया गया इंटेंट रूट बनाएं
- इंटेंट:
confirm.proceed.order
- एजेंट ने कहा:
Thank you for your order! Your merchandise will be shipped today!
- डायलॉग विकल्प जोड़ें > टेक्स्ट:
Here's the order number: ABCD123
. - डायलॉग विकल्प जोड़ें > टेक्स्ट:
Have a good day!
- ट्रांज़िशन:
End Session
- शुरू करें पेज चुनें और
redirect.end
इंटेंट पर क्लिक करें. इस तरह का वाहन बनाएं:Thank you for contacting G-Records! Have a nice day!
- शुरू करें पेज चुनें और
redirect.home
इंटेंट पर क्लिक करें. यह पैरामीटर प्रीसेट बनाएं:restart = true
बहुत बढ़िया! अब हमारे पास खुदरा दुकानदारों के लिए, पूरी तरह से काम करने वाला चैटबॉट है! अगले लैब में, हम यह जांच करेंगे कि वर्चुअल एजेंट की परफ़ॉर्मेंस कैसी है!
9. अपने वर्चुअल एजेंट की जांच करना
अपने वर्चुअल एजेंट के डायलॉग की जांच करने के लिए, पहले से मौजूद सिम्युलेटर का इस्तेमाल किया जा सकता है. सिम्युलेटर में फ़्लो की जांच करने का फ़ायदा यह है कि आपको फ़्लो, पेजों, पैरामीटर, और (DTMF) इवेंट की एक अच्छी खासी खास जानकारी दिखेगी. ये ऐसे इवेंट होते हैं जिन्हें सिम्युलेटर ने आपके फ़्लो के दौरान इकट्ठा किया है. इससे, इंटिग्रेशन में सीधे तौर पर टेस्ट करने के मुकाबले, टेस्ट करना आसान हो जाता है. ऐसा इसलिए, क्योंकि इस तरह की जानकारी असली उपयोगकर्ता से छिपी रहेगी. साथ ही, टेस्ट केस बनाए जा सकते हैं, उन्हें सेव किया जा सकता है, और उनका फिर से इस्तेमाल किया जा सकता है. समय के साथ अपने फ़्लो को मैनेज करने या उनमें बदलाव करने के लिए, यह सुविधा बहुत काम की है. इससे आपको यह पक्का करने में मदद मिलती है कि आपके किए गए किसी भी बदलाव से आपके पिछले काम पर असर न पड़े.
पहले से बनाए गए टेस्ट केस को एक्सपोर्ट और इंपोर्ट भी किया जा सकता है. इसके लिए, टेस्ट को Google Cloud Storage या लोकल स्टोरेज में सेव करें. किसी टेस्ट को एक्सपोर्ट करने पर, ब्लॉब फ़ाइल डाउनलोड हो जाएगी. सिम्युलेटर और टेस्ट केस के बारे में ज़्यादा जानने के लिए, सिम्युलेटर / टेस्ट केस के दस्तावेज़ देखें.
कुछ टेस्ट केस बनाने से पहले, आइए अपने वर्चुअल एजेंट के बाकी हिस्से को फ़ाइनल कर लें:
ग्राहक सेवा फ़्लो बनाना
- ग्राहक सहायता फ़्लो पर जाएं और इन इंटेंट ट्रांज़िशन बनाएं:
पेज (फ़्लो में) | रूट > इंटेंट | रूट > ट्रांज़िशन |
ग्राहक सहायता सेवा शुरू करें |
| शिपिंग |
ग्राहक सहायता सेवा शुरू करें |
| रिफ़ंड |
ग्राहक सहायता सेवा शुरू करें |
| स्वैप करना |
Customer Care Start |
| फ़्लो खत्म करें |
Customer Care Start |
| सेशन खत्म करना |
- शिपिंग पेज के लिए ये एंट्री फ़ुलफ़िलमेंट बनाएं:
Shipping physical merchandise items can take up to 2 weeks.
Is there anything else I can help you with?
- रिफ़ंड पेज के लिए, इन एंट्री फ़ुलफ़िलमेंट बनाएं:
We offer free returns and refunds. We provide one free return label for each order. You can use it within 30 days from receiving your order. If your refund is accepted, we will refund the price you paid for your item back to your original payment method.
Is there anything else I can help you with?
- स्वैपिंग पेज के लिए, ये एंट्री फ़ुलफ़िलमेंट बनाएं:
If you would like to change your item for a different one, please return your unwanted item and place a new order. If your refund is accepted, we will refund the price you paid for your item back to your original payment method.
Is there anything else I can help you with?
- शुरू करें पेज चुनें और
redirect.end
इंटेंट पर क्लिक करें. इस तरह का वाहन बनाएं:Thank you for contacting G-Records! Have a nice day!
- शुरू करें पेज चुनें और
redirect.home
इंटेंट पर क्लिक करें. यह पैरामीटर प्रीसेट बनाएं:restart = true
टेस्ट केस बनाना
- स्क्रीन के दाईं ओर मौजूद, टेस्ट एजेंट बटन पर क्लिक करें.
पहली बार सिम्युलेटर खोलने पर, आपको एजेंट एनवायरमेंट और ऐक्टिव फ़्लो चुनना होगा. ज़्यादातर मामलों में, आपको ड्राफ़्ट एनवायरमेंट और डिफ़ॉल्ट स्टार्ट फ़्लो का इस्तेमाल करना चाहिए.
- कैंपेन किस तरह का है:
Hi
- पूछें:
Which artists are signed with your label?
- बोलें:
The Google Dolls
- बोलें:
I am interested in buying a shirt
- बोलें:
A t-shirt
- बोलें:
Medium
- अब 'टेस्ट केस सेव करें' बटन पर क्लिक करें. जो आपको सिम्युलेटर के सबसे ऊपर मिल जाएगा ('फिर से करें तीर' के बगल में और ट्रैश बिन आइकॉन रीसेट करें)
- इसे नीचे दी गई जानकारी दें:
- टेस्ट केस का नाम:
Buy Google Dolls t-shirt size M
- टैग: #catalog, #shirts, #t-shirt, #TheGoogleDolls
- सेव करें पर क्लिक करें
आइए, कुछ और टेस्ट केस बनाते हैं.
- सबसे पहले, रीसेट (ट्रैश बिन) आइकॉन पर क्लिक करके, मौजूदा डायलॉग को हटाएं.
- ये टेस्ट केस बनाएं:
ऐलिस Googler टी-शर्ट खरीदें:
>"Buy the Alice Googler t-shirt."
>"XL"
- टेस्ट केस का नाम:
Buy the Alice Googler t-shirt
- टैग:
#catalog, #shirts, #t-shirt, #AliceGoogler
M साइज़ की टी-शर्ट खरीदें: (ध्यान दें कि कलाकार का नाम नहीं बताया गया है, लेकिन आपको बैंड की खास जानकारी, प्रॉडक्ट की खास जानकारी, शर्ट, और शर्ट के साइज़ वाले पेजों को स्किप करना है)
>"Buy a t-shirt size M"
>"The Google Fighters"
- टेस्ट केस का नाम:
Buy a t-shirt size M
- टैग:
#catalog, #shirts, #t-shirt, #TheGoogleFighters
- ब्यौरा: (ध्यान दें कि कलाकार का नाम नहीं बताया गया है, लेकिन आपको बैंड की खास जानकारी, प्रॉडक्ट की खास जानकारी, शर्ट, और शर्ट के साइज़ वाले पेजों को स्किप करना है)
G's N' Roses का संगीत खरीदें (ध्यान दें कि इससे बैंड की खास जानकारी और प्रॉडक्ट की खास जानकारी वाले पेज को स्किप कर दिया जाएगा)
>"Purchase music of G's N' Roses"
>"Live"
>"CD"
- टेस्ट केस का नाम:
Purchase music of G's N' Roses
- टैग:
#catalog, #music, #CD, #GsNRoses, #live
- जानकारी: (ध्यान दें, इससे आपको बैंड की खास जानकारी और प्रॉडक्ट की खास जानकारी वाले पेज पर नहीं ले जाया जाएगा)
कीमत की जानकारी देखें:
>"Which products"
>"Shirts"
>"What's the price difference?"
>"Longsleeve"
>"What does it cost?"
>"M"
>"The Google Dolls"
>"No"
>"Which bands"
>"The Gooo Fighters"
>"Music"
>"How much does it cost?"
>"Greatest Hits"
>"What's the price difference?"
>"Mp3"
>"No"
>"I want to buy the tour movie"
>"Alice Googler"
>"Yes"
- टेस्ट केस का नाम:
Price info
- टैग:
#catalog, #music, #tourmovie, #shirts
- जानकारी: डायलॉग में अलग-अलग पॉइंट पर कीमत की जानकारी की जांच करना
पहले से रिकॉर्ड किए गए टेस्ट केस की जांच करना
- बाईं ओर मौजूद Dialogflow के मुख्य मेन्यू में, मैनेज करें > टेस्ट केस चुनें.
- सभी टेस्ट केस चुनें और टेबल के ऊपर मौजूद, चालू करें बटन दबाएं.
Dialogflow CX, "गोल्डन टेस्ट केस" के तौर पर सेव की गई रिकॉर्डिंग के आधार पर, चुने गए सभी टेस्ट केस चलाएगा. अगर नतीजे वही हैं जो आपने सेव किए थे, तो टेस्ट पास हो जाएंगे. - फ़्लो में कोई बदलाव हुआ है, जैसे कि सही तरीके से कॉन्फ़िगर नहीं किए गए पेज या ऐसे इंटेंट जिनमें आपको गलत पेजों पर ले जाया गया हो, तो टेस्ट पूरे नहीं हो पाएंगे.
- सिम्युलेटर में यह सवाल पूछें:
How long will shipping take?
- नतीजे को नोट करें और टेस्ट केस को
Shipping
के तौर पर सेव करें. साथ ही, इसे इस टैग के साथ सेव करें:#shipping
. - सिर्फ़
Shipping
टेस्ट केस चलाने के लिए, मैनेज करें > टेस्ट केस पैनल पर जाएं और ग्रिड के सबसे ऊपर दाईं ओर मौजूद चालू करें बटन को दबाएं.
यह टेस्ट पास होना चाहिए.
- ग्राहक सहायता फ़्लो पर वापस जाएं. इसके बाद, शुरू करें पेज चुनें और रास्ते हेडर पर क्लिक करें.
ऐसा करने पर, आपको एक स्क्रीन दिखेगी, जिसमें सभी रास्ते दिखाने वाला ग्रिड होगा.
redirect.shipping.info route
को हटाएं- सिर्फ़
Shipping
टेस्ट केस चलाने के लिए, मैनेज करें > टेस्ट केस पैनल पर जाएं और ग्रिड के सबसे ऊपर दाईं ओर चलाएं बटन दबाएं.
यह टेस्ट पास नहीं होना चाहिए.
- फ़ेल हो चुके टेस्ट पर क्लिक करके, उसकी पूरी जानकारी देखी जा सकती है.
इस मामले में, गड़बड़ी का यह मैसेज मिलने पर जांच पूरी नहीं हो सकी:
Page: Page mismatch:
Expected: Shipping
Actual: Start Page
इसकी वजह यह है कि पेज अब फ़्लो में मौजूद नहीं है. हमें Shipping
पेज पर जाना था, लेकिन हम Start
पेज पर ही बने रहे. (या आपके असली उपयोगकर्ताओं को एक फ़ॉलबैक मैसेज मिलेगा.)
दूसरे शब्दों में, यह एक छूटा हुआ अनुरोध है, जो गलत नेगेटिव टेस्ट नतीजा है. जांच पूरी नहीं हो सकी. हमें शिपिंग पेज दिखना चाहिए था, लेकिन ऐसा नहीं हुआ या कोई फ़ॉलबैक मैसेज दिखाया गया.
- ग्राहक सहायता फ़्लो पर वापस जाएं और शुरू करें पेज पर,
redirect.shipping.info
को इंटेंट रूट के तौर पर जोड़ें. शिपिंग पेज पर ट्रांज़िशन करना न भूलें और सेव करें पर क्लिक करें. - सिम्युलेटर में यह टेस्ट केस रिकॉर्ड करें:
I want to swap my item
, इस टेस्ट केस कोSwapping
#swapping
के तौर पर सेव करें. - मैनेज करें >इंटेंट >redirect.refund.info खोलें और यह ट्रेनिंग वाक्यांश जोड़ें:
I want to swap this item for a refund
ट्रेनिंग वाक्यांश के बिना, जब कोई उपयोगकर्ता रिफ़ंड के लिए किसी आइटम को बदलने के लिए कहेगा, तो यह redirect.swapping.info इंटेंट पर पहुंच जाएगा. हालांकि, हम आइटम बदलने के बारे में जानकारी नहीं देना चाहते, बल्कि रिफ़ंड के बारे में जानकारी देना चाहते हैं.
- सिम्युलेटर में यह गोल्डन टेस्ट केस बनाएं:
I want to swap this item for a refund
और इस टेस्ट केस कोSwap for Refund
#refund
के तौर पर सेव करें - मैनेज करें > इंटेंट > redirect.refund.info इंटेंट पर वापस जाएं और
I want to swap this item for a refund
लाइन हटाएं. - मैनेज करें > टेस्ट केस पर वापस जाएं. इसके बाद, रिफ़ंड के लिए सामान बदलना टेस्ट केस चुनें और उसे चालू करें.
आपका हाल ही का टेस्ट पूरा नहीं हो सका. गड़बड़ी का यह मैसेज मिला है:
If you would like to change your item for a different one, please return your unwanted item and place a new order. If your refund is accepted, we will refund the price you paid for your item back to your original payment method.`
Is there anything else I can help you with?
Page: Page mismatch:
Expected: Refund
Actual: Swapping
दूसरे शब्दों में, यह एक छूटा हुआ अनुरोध है, जो एक फ़ॉल्स पॉज़िटिव टेस्ट का नतीजा है. जांच नहीं की जा सकी. हमें रिफ़ंड पेज दिखना चाहिए था, लेकिन स्वापिंग पेज चालू हो गया.
कवरेज
Dialogflow CX में, जांच की कवरेज एक मेज़र है. इसका इस्तेमाल यह बताने के लिए किया जाता है कि किसी खास टेस्ट सुइट के चलने पर, वर्चुअल एजेंट (पेज और इंटेंट) की बातचीत कितनी हद तक पूरी की जाती है. ज़्यादा टेस्ट कवरेज वाले वर्चुअल एजेंट को टेस्ट के दौरान ज़्यादा डायलॉग भेजे जाते हैं. इससे पता चलता है कि कम कवरेज वाले वर्चुअल एजेंट की तुलना में, इसमें ऐसी गड़बड़ियां शामिल होने की संभावना कम है जिनके बारे में पता नहीं है. जैसे, समझ में न आने वाले अनुरोध.
- सभी टेस्ट केस के लिए टेस्ट कवरेज रिपोर्ट देखने के लिए, कवरेज पर क्लिक करें.
- ट्रांज़िशन टैब पर क्लिक करें.
इससे आपको सभी पेज ट्रांज़िशन के लिए टेस्ट कवरेज दिखेगी.
- इंटेंट टैब पर क्लिक करें.
इससे आपको सभी इंटेंट के लिए टेस्ट कवरेज दिखेगी.
बधाई हो, अब तक आपने खुदरा दुकानदार के बॉट का एक पूरा और असली उदाहरण बना लिया है और उसकी जांच कर ली है! आइए, अगले लैब पेज पर चलते हैं. इसके बाद, हमें कुछ आसान रेफ़रंस मिल जाते हैं!
10. नतीजा
Dialogflow CX, बातचीत करने वाला एआई प्लैटफ़ॉर्म (सीएआईपी) है. इसका इस्तेमाल करके, चैट या वॉइस बॉट जैसे वर्चुअल एजेंट बनाए जा सकते हैं. Dialogflow CX की मदद से, आपकी टीम को एंटरप्राइज़ लेवल पर बातचीत वाले अनुभव बनाने में तेज़ी से मदद मिलती है. इसके लिए, विज़ुअल बॉट बिल्डर, फिर से इस्तेमाल किए जा सकने वाले इंटेंट, और कई चरणों वाली बातचीत को मैनेज करने की सुविधा का इस्तेमाल किया जाता है.
इस कोडलैब में, आपने रीयल वर्ल्ड रीटेल वर्चुअल एजेंट बनाने का तरीका सीखा है. हमने इन कॉन्सेप्ट पर काम किया है:
- फ़्लो
- पैरामीटर, कस्टम, और सिस्टम इकाइयां
- पेज
- स्टेट हैंडलर, जैसे कि इंटेंट रूट और कंडिशन रूट
- स्टैटिक फ़ुलफ़िलमेंट मैसेज और शर्तों के हिसाब से मिलने वाले जवाब
- फ़ॉलबैक इंटेंट
- सिम्युलेटर, टेस्ट केस, और कवरेज
रेफ़रंस
Dialogflow CX के बारे में ज़्यादा जानने के लिए, यहां दिए गए ब्लॉग और दस्तावेज़ देखें!