פעולה זקוקה למספר פיסות מידע לפני שהיא יכולה להסתיים.
→אסוף כל ערך בשלב נפרד כ-slot; העוזר מבקש כל ערך שעדיין לא סופק ומדלג על אלה שכבר סופקו.
למה: מילוי slots מבוסס צעדים מטפל בקלטים לא מסודרים ובעלי ערכים מרובים ללא צורך בפיצול ידני.
מקור↗
ערך חייב להתקיים גם לאחר שהפעולה הנוכחית מסתיימת.
→אחסן אותו במשתנה session, לא במשתנה step/action. משתני action מוגבלים לפעולה; משתני session קיימים לכל אורך השיחה.
למה: בחירת היקף שגוי היא באג קלאסי: הערך נעלם כשהפעולה מסתיימת או לא מצליח לשתף בין פעולות.
שלב מבקש מהמשתמש לבחור מתוך סט ידוע וקבוע.
→השתמש בסוג תגובה "options" עם אפשרויות מוגדרות במקום טקסט חופשי, ומפה כל אפשרות לערך.
למה: אפשרויות מגבילות את הקלט, מבטלות עמימות בניתוח, ומוצגות ככפתורים בערוצים נתמכים.
ערך שנאסף (אימייל, תאריך, סכום) עשוי להיות בפורמט שגוי.
→הוסף תנאי אימות על השלב; אם לא חוקי, השאר את המשתמש בשלב עם הנחיה מתקנת.
למה: אימות בזמן הלכידה מונע העברת נתונים שגויים להרחבות ולצעדים הבאים.
שלבים מאוחרים יותר צריכים לרוץ רק עבור משתמשים או ערכים מסוימים.
→הגדר תנאי שלב על משתנים שכבר נאספו כך ששלבים ידלגו כאשר התנאי שלהם שגוי.
למה: תנאים מבטאים פיצול ללא שכפול פעולות; העורך מעריך אותם מלמעלה למטה.
מספר פעולות זקוקות לאותו תת-זרימה (לדוגמה, אימות זהות).
→פרק את הלוגיקה המשותפת ל-subaction וקרא לה מכל פעולת אב.
למה: Subactions שומרות על לוגיקת אימות DRY ועקבית; שכפול צעדים מוביל לחוסר סינכרון.
המשתמש שואל שאלה לא קשורה באמצע הזרימה ("מה השעות שלכם?").
→אפשר דיגרסיה כך שהעוזר יענה על שאלת הצד, ואז יחזור לפעולה שהופסקה.
למה: חסימת דיגרסיות כופה סקריפט נוקשה שמתסכל משתמשים עם בקשות צד לגיטימיות.
צורך לחשב או לשנות ערך בתוך שלב.
→השתמש בשפת הביטויים המובנית (לדוגמה, פונקציות מחרוזת ומתמטיקה על משתנים) בשלב או בתגובה.
למה: טרנספורמציות קלות שייכות לביטויים; שימוש ב-webhook למתמטיקה טריוויאלית הוא מוגזם.
פעולת המשך זקוקה לערך שהמשתמש נתן קודם לכן.
→הפנה למשתנה session הקיים במקום לבקש מחדש.
למה: בקשה חוזרת על נתונים ידועים מרגישה שגויה; העברת הקשר קדימה היא סימן היכר של זרימה טובה.
זרימה צריכה לעצור או לקפוץ לפעולה אחרת תחת תנאי.
→השתמש במעבר "סיים את הפעולה" או "עבור לשלב בפעולה אחרת" כדי לשלוט בזרימה באופן מפורש.
למה: מעברים מפורשים מונעים מעבר בלתי צפוי לשלב הבא לאחר תנאי סופי.