Action को पूरा होने से पहले कई जानकारी की आवश्यकता होती है।
→प्रत्येक मान को उसके अपने चरण में एक स्लॉट के रूप में एकत्र करें; असिस्टेंट किसी भी प्रदान न किए गए के लिए संकेत देता है और पहले से प्रदान किए गए को छोड़ देता है।
क्यों: चरण-आधारित स्लॉट फ़िलिंग मैन्युअल ब्रांचिंग के बिना आउट-ऑफ़-ऑर्डर और मल्टी-वैल्यू इनपुट को संभालता है।
संदर्भ↗
वर्तमान Action समाप्त होने के बाद एक मान बना रहना चाहिए।
→इसे एक सत्र चर (session variable) में संग्रहीत करें, न कि एक चरण/action चर में। Action चर Action तक सीमित होते हैं; सत्र चर पूरे वार्तालाप के लिए रहते हैं।
क्यों: गलत स्कोप चुनना एक क्लासिक बग है: Action पूरा होने पर या Actions के बीच साझा करने में विफल रहने पर मान गायब हो जाता है।
एक चरण उपयोगकर्ता को ज्ञात, निश्चित सेट में से चुनने के लिए कहता है।
→फ्री टेक्स्ट के बजाय परिभाषित विकल्पों के साथ "विकल्प" प्रतिक्रिया प्रकार का उपयोग करें, और प्रत्येक विकल्प को एक मान पर मैप करें।
क्यों: विकल्प इनपुट को सीमित करते हैं, पार्सिंग अस्पष्टता को खत्म करते हैं, और समर्थित चैनलों पर बटन के रूप में प्रस्तुत होते हैं।
एकत्रित मान (ईमेल, तिथि, राशि) गलत प्रारूप में हो सकता है।
→चरण पर एक सत्यापन शर्त जोड़ें; यदि अमान्य है, तो उपयोगकर्ता को सुधारात्मक प्रॉम्प्ट के साथ उसी चरण पर रखें।
क्यों: कैप्चर समय पर सत्यापन, एक्सटेंशन और डाउनस्ट्रीम चरणों में खराब डेटा पास करने से बचाता है।
बाद के चरण केवल कुछ निश्चित उपयोगकर्ताओं या मानों के लिए ही चलने चाहिए।
→पहले से एकत्र किए गए चरों पर चरण शर्तें निर्धारित करें ताकि उनकी शर्त गलत होने पर चरणों को छोड़ दिया जाए।
क्यों: शर्तें Actions को दोहराए बिना ब्रांचिंग व्यक्त करती हैं; एडिटर उन्हें ऊपर से नीचे तक मूल्यांकन करता है।
कई Actions को एक ही सब-फ़्लो (जैसे पहचान सत्यापित करें) की आवश्यकता होती है।
→साझा तर्क को एक सबएक्शन में फ़ैक्टर करें और इसे प्रत्येक पैरेंट Action से कॉल करें।
क्यों: सबएक्शन सत्यापन तर्क को DRY और सुसंगत रखते हैं; चरणों को दोहराने से वे असंतुलित हो जाते हैं।
उपयोगकर्ता फ़्लो के बीच में एक असंबंधित प्रश्न पूछता है ("आपके काम के घंटे क्या हैं?")।
→दिग्रेसन (digression) की अनुमति दें ताकि असिस्टेंट साइड प्रश्न का उत्तर दे, फिर बाधित Action पर लौट आए।
क्यों: दिग्रेसन को ब्लॉक करने से एक कठोर स्क्रिप्ट लागू होती है जो वैध साइड अनुरोधों वाले उपयोगकर्ताओं को निराश करती है।
एक चरण के भीतर एक मान की गणना या उसे बदलना है।
→चरण या प्रतिक्रिया में अंतर्निहित एक्सप्रेशन भाषा (जैसे चर पर स्ट्रिंग और गणित फ़ंक्शन) का उपयोग करें।
क्यों: लाइटवेट ट्रांसफ़ॉर्म एक्सप्रेशन में होने चाहिए; तुच्छ गणित के लिए वेबहुक तक पहुँचना अनावश्यक है।
एक फॉलो-अप Action को एक मान की आवश्यकता है जो उपयोगकर्ता ने पहले दिया था।
→पुनः प्रॉम्प्ट करने के बजाय मौजूदा सत्र चर को संदर्भित करें।
क्यों: ज्ञात डेटा के लिए पुनः पूछना गलत लगता है; संदर्भ को आगे बढ़ाना एक अच्छे फ़्लो की पहचान है।
एक फ़्लो को एक शर्त के तहत रुकना चाहिए या किसी अन्य Action पर जाना चाहिए।
→फ़्लो को स्पष्ट रूप से नियंत्रित करने के लिए "Action समाप्त करें" या "किसी अन्य Action में एक चरण पर जाएँ" संक्रमण का उपयोग करें।
क्यों: स्पष्ट संक्रमण एक टर्मिनल शर्त के बाद अगले चरण में अप्रत्याशित रूप से गिरने से रोकते हैं।