1. قبل از شروع
در این کد لبه، یاد خواهید گرفت که چگونه با Dialogflow CX ، یک پلتفرم هوش مصنوعی مکالمه (CAIP) برای ساخت رابطهای کاربری مکالمه، یک چت بات خردهفروشی بسازید. Dialogflow CX میتواند عوامل مجازی را پیادهسازی کند، مانند: رباتهای گفتگو، رباتهای صوتی، دروازههای تلفن و میتواند چندین کانال را به بیش از ۵۰ زبان مختلف پشتیبانی کند.
این کد لبه شما را راهنمایی می کند که چگونه یک ربات چت وب سایت برای خرده فروشی بسازید. کسب و کار خیالی که ما در حال ساخت ربات چت برای آن هستیم، نام دارد: G-Records . جی رکوردز یک شرکت موسیقی راک است که در کالیفرنیا قرار دارد. این لیبل دارای 4 گروه راک است. Alice Googler ، G's N' Roses ، The Goo Fighters و The Google Dolls . جی رکوردز کالاهای گروه را به همه طرفداران راک می فروشد.
در انتهای این کد لبه می توانید از چت بات برای سفارش پیراهن یا موزیک استفاده کنید و یا می توانید سفارش خود را بپرسید.
چیزی که یاد خواهید گرفت
با این کار مزایای Dialogflow CX را در مقایسه با Dialogflow ES خواهید آموخت! این شامل مفاهیم زیر است:
- نحوه ایجاد یک عامل مجازی Dialogflow CX در Google Cloud
- نحوه ایجاد جریان را بیاموزید
- نحوه ایجاد موجودیت ها را بیاموزید
- یاد بگیرید که چگونه قصد ایجاد کنید
- نحوه ایجاد صفحات و صفحات انتقال با کنترل کننده های حالت را بیاموزید
- نحوه انتقال صفحات با مسیرهای هدف را بیاموزید
- نحوه انتقال صفحات با پارامترها و مسیرهای شرایط را بیاموزید
- نحوه برگرداندن پاسخ های شرطی با توابع سیستم را بیاموزید
- نحوه ایجاد پیام های بازگشتی را بیاموزید
- نحوه استفاده از شبیه ساز را یاد بگیرید
- نحوه ایجاد موارد تست و پوشش تست را بیاموزید
طراحی نهایی عامل Dialogflow CX به این صورت خواهد بود:
آنچه شما نیاز دارید
- برای ایجاد یک عامل Dialogflow CX به یک آدرس Google Identity / Gmail نیاز دارید.
- دسترسی به Google Cloud
2. تنظیم محیط
یک پروژه Google Cloud ایجاد کنید
از آنجایی که Dialogflow CX در Google Cloud اجرا می شود، باید یک پروژه Google Cloud ایجاد کنید . یک پروژه تمام منابع Google Cloud شما را سازماندهی می کند. این شامل مجموعهای از همکاران، APIهای فعال (و سایر منابع)، ابزارهای نظارتی، اطلاعات صورتحساب، و کنترلهای احراز هویت و دسترسی است.
هنگامی که یک پروژه جدید ایجاد می کنید، باید نام پروژه را وارد کنید. و باید آن را به یک حساب صورتحساب و سازمان موجود مرتبط کنید.
یک حساب صورتحساب برای تعیین اینکه چه کسی برای مجموعه معینی از منابع پرداخت می کند استفاده می شود و می توان آن را به یک یا چند پروژه مرتبط کرد. هزینه استفاده از پروژه به حساب صورتحساب پیوند داده میشود. در بیشتر موارد، هنگام ایجاد یک پروژه، صورتحساب را پیکربندی می کنید. برای اطلاعات بیشتر، به اسناد صورتحساب مراجعه کنید. مطمئن شوید که صورتحساب برای پروژه Cloud شما فعال است.
Dialogflow API را فعال کنید
برای استفاده از Dialogflow، باید Dialogflow API را برای پروژه خود فعال کنید.
- پروژه ای را که می خواهید API را برای آن فعال کنید انتخاب کنید و روی Continue کلیک کنید.
- منوی APIs & Services را جمع کنید و روی Create Credentials کلیک کنید
- روی Application Data کلیک کنید
- بگویید نه، من از آنها استفاده نمی کنم زیرا شما در حال حاضر از Kubernetes Engine، App Engine یا Cloud Functions استفاده نمی کنید.
- روی Done کلیک کنید
یک عامل جدید Dialogflow CX ایجاد کنید
برای ایجاد یک عامل جدید Dialogflow CX، ابتدا کنسول Dialogflow CX را باز کنید:
- پروژه Google Cloud قبلا ایجاد شده را انتخاب کنید.
- روی ایجاد عامل کلیک کنید.
فرم تنظیمات اصلی عامل را تکمیل کنید:
- شما می توانید هر نام نمایشی را انتخاب کنید.
- به عنوان مکان انتخاب کنید: us-central1
- منطقه زمانی مورد نظر خود را انتخاب کنید.
- en - انگلیسی را به عنوان زبان پیش فرض انتخاب کنید
روی ایجاد کلیک کنید.
خوب، ما همه چیز آماده ایم. ما در نهایت می توانیم با مدل سازی نماینده مجازی خود شروع کنیم.
3. جریان می یابد
دیالوگ های پیچیده اغلب شامل چندین موضوع گفتگو هستند. در مورد چت باتی که برای G-Records می سازیم، برای فروش کالاهای گروه، گفتگوهایی در مورد کاتالوگ محصول، پرداخت، وضعیت سفارش و سوالات مربوط به مراقبت از مشتری خواهیم داشت. ما می توانیم این موضوعات گفتگو را به جریان ها تقسیم کنیم.
جریان ها به تیم ها اجازه می دهد تا روی مسیرهای مکالمه فردی کار کنند. یک تمرین خوب ساده کردن جریان است، بنابراین به راحتی روی صفحه قرار می گیرد و ماژولارتر است.
جریان ها یک مفهوم جدید برای Dialogflow CX هستند. Dialogflow Essentials مفهوم Mega Agents را دارد که به نوعی شبیه به جریان هستند. با این حال، شما اغلب از Flow استفاده می کنید.
بعداً در این آزمایشگاه، از کنترلکنندههای حالت استفاده خواهیم کرد که میتوانند یک جریان را پایان دهند (بنابراین به جریان بعدی یا قبلی برمیگردد)، یا میتوانید جلسه کامل عامل را پایان دهید.
بیایید برویم و چند جریان ایجاد کنیم.
ایجاد جریان
- در Dialogflow CX ، روی نماد + > ایجاد جریان کلیک کنید.
- نام را مشخص کنید:
Catalog
و enter را بزنید.
اولین کاتالوگ جریان شما ایجاد شده است. حالا سایر جریان ها را ایجاد کنید:
-
Order Process
-
My Order
-
Customer Care
بعداً در این آزمایشگاه، کنترلکنندههای وضعیت صفحه را تنظیم میکنیم، این اطمینان حاصل میکند که در نهایت تجسم به این صورت خواهد بود:
شبیه ساز
در سمت راست کنسول Dialogflow CX می توانید عامل مجازی را با شبیه ساز داخلی تست کنید. می توانید مکالمه را از ابتدای مکالمه یا از یک جریان خاص آزمایش کنید.
- روی دکمه Test Agent در سمت راست بالای صفحه کلیک کنید.
- در قسمت گفتگو با نماینده بنویسید:
Hello
نماینده مجازی با یک متن خوشامدگویی پیش فرض پاسخ می دهد: سلام! چگونه می توانم کمک کنم؟
بیایید این متن خوشامدگویی پیش فرض را اصلاح کنیم.
جریان شروع پیش فرض
بیایید با ایجاد یک Intent Route شروع کنیم که پس از خوشامدگویی به نماینده مجازی فعال می شود.
- در نوار کناری Build > Flows ، روی Default Start Flow کلیک کنید و گره درخت شروع را انتخاب کنید.
با این کار صفحه شروع باز می شود. به طور خودکار صفحه شروع را در قسمت Build > Pages sidebar انتخاب می کند.
- در Start > Routes بر روی Default Welcome Intent کلیک کنید.
Intent قصد کاربر نهایی را برای یک نوبت مکالمه طبقه بندی می کند. در Dialogflow CX، intent ها می توانند بخشی از یک کنترل کننده وضعیت برای مسیریابی صفحه فعال بعدی یا تکمیل شوند.
- تمام ورودی های Agent را حذف کنید و این متن جدید را اضافه کنید:
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?
برای سادهسازی مکالمه، به چند دکمه پاسخ سریع / تراشههای پیشنهاد نیز نیاز داریم.
- روی گزینه Add dialogue > Custom payload کلیک کنید و از قطعه کد زیر استفاده کنید.
- از قطعه کد زیر به عنوان یک بار سفارشی استفاده کنید و Save را بزنید.
برای خواندن اطلاعات بیشتر در مورد بارهای سفارشی، به مستندات نگاهی بیندازید.
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Which artists?"
},
{
"text": "Which products?"
},
{
"text": "About my order..."
}
]
}
]
]
}
- پیش بروید و قصد خوش آمد گویی را در شبیه ساز آزمایش کنید.
احتمالاً از خود می پرسید که چرا نمی توانید محتوای غنی را مشاهده کنید. این به این دلیل است که محتوای غنی مانند تراشههای پیشنهادی به یکپارچگی وابسته است. مراحل زیر نیاز به یک حساب صورتحساب دارند، اما اگر حسابی ندارید، میتوانید از آنها صرفنظر کنید.
- در نوار کناری سمت چپ، روی Manage > Integrations کلیک کنید.
- Dialogflow Messenger را انتخاب کرده و روی Connect کلیک کنید.
- در پنجره بازشو روی Enable کلیک کنید.
پنجره بازشو دیگری نشان داده میشود، این بار با کد جاوا اسکریپت یکپارچه که میتوانید در وبسایت خود جایگذاری کنید تا مؤلفه Dialogflow Messenger را در وبسایت خود ادغام کنید. از آنجایی که ما هنوز وب سایت نداریم، عامل مجازی را مستقیماً در ابزار آزمایش خواهیم کرد.
- روی لینک Try Now کلیک کنید.
- روی نماد چت بات پایین سمت راست کلیک کنید تا پنجره چت باز شود. برای شروع گفتگو،
Hello
بنویسید.
در حال حاضر، وقتی روی تراشه های پیشنهاد کلیک می کنید، عامل مجازی منظور شما را متوجه نمی شود. این به این دلیل است که عامل مجازی ما هنوز بین حالت ها تغییر نمی کند. ما می توانیم این کار را در Dialogflow CX با Pages انجام دهیم. اجازه دهید آزمایشگاه را ادامه دهیم، ابتدا تعدادی Entity و Intent ایجاد می کنیم.
4. انواع موجودیت
انواع موجودیت برای کنترل نحوه استخراج داده ها از ورودی کاربر نهایی استفاده می شود. انواع موجودیت Dialogflow CX بسیار شبیه به انواع موجودیت Dialogflow ES هستند. Dialogflow موجودیت های سیستمی از پیش تعریف شده را ارائه می دهد که می توانند با بسیاری از انواع معمول داده ها مطابقت داشته باشند. به عنوان مثال، نهادهای سیستمی برای مطابقت با تاریخ، زمان، رنگ، آدرس ایمیل و غیره وجود دارد. شما همچنین می توانید موجودیت های سفارشی خود را برای تطبیق داده های سفارشی ایجاد کنید.
بیایید قبل از اینکه بتوانیم صفحات را در یک جریان طراحی کنیم، با آماده کردن همه موجودیت های سفارشی شروع کنیم. ما موجودیت های زیر را ایجاد خواهیم کرد:
ایجاد موجودیت ها
بیایید یک موجودیت Artist ایجاد کنیم.
- روی Manage > Entity Types کلیک کنید
- روی + ایجاد کلیک کنید
- نام نمایشی:
Artist
- نهادها:
-
The Google Dolls
(با مترادف:Google Dolls
) -
The Goo Fighters
(با مترادف:Goo Fighters
) -
G's N' Roses
(با مترادف:Gs and Roses
) -
Alice Googler
- روی گزینه های پیشرفته کلیک کنید و Fuzzy Matching را علامت بزنید. (اگر نام گروه را اشتباه نوشتید، ممکن است همچنان با موجودیت درست مطابقت داشته باشد.)
- در گزینه های پیشرفته نیز Redact in log را علامت بزنید. (اگر نام گروه را اشتباه بنویسید، نام را در گزارش تصحیح می کند.)
- روی ذخیره کلیک کنید
ما همچنین به یک موجودیت برای مورد کالا نیاز داریم:
- روی Manage > Entity Types کلیک کنید
- روی + ایجاد کلیک کنید
- نام نمایشی:
Merch
- نهادها:
-
T-shirt
-
Longsleeve
(با مترادف:Longsleeve shirt
) -
Tour Movie
-
Digital Album
(با مترادف:MP3 Album
،MP3
) -
CD
(با مترادفDisc
،Physical CD
)
- روی ذخیره کلیک کنید
ما همچنین به یک موجودیت برای آلبوم نیاز داریم:
- روی Manage > Entity Types کلیک کنید
- روی + ایجاد کلیک کنید
- نام نمایشی:
Album
- نهادها:
-
Live
-
Greatest Hits
(با مترادف:Hits
)
- روی ذخیره کلیک کنید
ما همچنین به یک موجودیت برای اندازه لباس نیاز داریم:
- روی Manage > Entity Types کلیک کنید
- روی + ایجاد کلیک کنید
- نام نمایشی:
ShirtSize
- نهادها:
-
XS
(با مترادف:Extra Small
) -
S
(با مترادف:Small
) -
M
(با مترادف:Medium
) -
L
(با مترادف:Large
) -
XL
(با مترادف:Extra Large
) -
2XL
(با مترادف:Extra Extra Large
) -
3XL
- روی ذخیره کلیک کنید
و یک موجودیت برای اعداد سفارش ، که معمولاً 4 عددی و 3 عددی هستند. (مانند ABCD123)
- روی Manage > Entity Types کلیک کنید
- روی + ایجاد کلیک کنید
- نام نمایشی:
OrderNumber
- موجودیت های Regexp
- نهاد: [AZ]{4}[0-9]{3}
- روی ذخیره کلیک کنید
پیکربندی موجودیت شما باید مشابه شکل زیر باشد:
@هنرمند:
@Merch:
@آلبوم:
@ShirtSize:
@OrderNumber:
هنگامی که موجودیت های سفارشی آماده شدند، می توانیم intent ها را آماده کنیم. بیایید آزمایشگاه را ادامه دهیم.
5. مقاصد
یک Intent قصد کاربر نهایی را برای یک نوبت مکالمه طبقه بندی می کند. آنها به طور چشمگیری در Dialogflow CX ساده شده اند، این دیگر بلوک ساختمانی برای کنترل مکالمه نیست. Dialogflow CX فقط از intent ها برای مطابقت با آنچه کاربران می گویند استفاده می کند. در Dialogflow ES، شما باید همه چیز را به یک هدف (پارامترها، رویدادها، تحقق و غیره) گره بزنید. Intent ها در Dialogflow CX فقط شامل عبارات آموزشی هستند و بنابراین قابل استفاده مجدد هستند. دیگر مکالمه را کنترل نمی کند. بنابراین روند ایجاد مقاصد مستقیم به جلو خواهد بود:
عبارات آموزشی در intent ها می توانند از Entities برای استخراج ورودی "متغیر" استفاده کنند، به همین دلیل است که تمرین خوبی است که انواع موجودیت خود را از قبل ایجاد کنید، کاری که در صفحه قبلی مراحل آزمایشگاهی انجام دادیم.
ایجاد مقاصد
بیایید قبل از اینکه بتوانیم صفحات را در یک جریان طراحی کنیم، با آماده کردن تمام اهداف شروع کنیم.
- روی Manage > Intents کلیک کنید.
- روی + Create کلیک کنید
از جزئیات زیر استفاده کنید:
- نمایش نام
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 به طور خودکار موجودیت های شما را حاشیه نویسی می کند. اگر این کار را نکرد، ممکن است لازم باشد موجودیت خود را (با افزودن یک مترادف) یا با حاشیه نویسی دستی عبارت آموزشی خودتان به روز کنید.
- عبارتهای آموزشی کوتاهتر: سیستم NLU Dialogflow میتواند با عبارات آموزشی کوتاهتر نیز کار کند و ما در اینجا چند مثال ارائه کردهایم.
- تمرین بیش از حد: عبارات آموزشی بیش از حد برای یک هدف ممکن است باعث تمرین بیش از حد و نتیجه کمتر مطلوب شود. بهترین تمرین استفاده از تست تکراری و افزایشی و اضافه کردن عبارات آموزشی در مواردی است که هدفی مطابقت ندارد.
نام نمایشی | عبارات آموزشی |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
اکنون که عناصر قابل استفاده مجدد ما (جریانها، موجودیتها و اهداف) آماده شدهاند، میتوانیم این موارد را با ایجاد Pages و State Handlers کنار هم بگذاریم.
6. صفحات و کنترل کننده های ایالتی
یک مکالمه Dialogflow CX (یک جلسه) را می توان به عنوان یک ماشین حالت محدود توصیف و تجسم کرد. یک ماشین فروش را به عنوان مثال در نظر بگیرید، می توان آن را به عنوان یک ماشین حالت محدود مدل کرد. حالت های زیر را دارد: Waiting for Coins، Select Candy، Give Candy و با توجه به مجموعه ای از ورودی ها، بین آن حالت ها حرکت می کند. به عنوان مثال، قرار دادن یک سکه، ماشین فروش را از Waiting for coins به Select Candy منتقل می کند. صفحات نحوه مدل سازی این حالت ها برای یک عامل مجازی Dialogflow CX هستند.
همانطور که کاربر نهایی در یک مکالمه با Dialogflow CX تعامل می کند، مکالمه از صفحه ای به صفحه دیگر منتقل می شود، بنابراین در هر لحظه، دقیقاً یک صفحه صفحه فعلی است، صفحه فعلی فعال در نظر گرفته می شود، و همچنین جریان مرتبط با آن صفحه در نظر گرفته می شود. فعال
برای هر جریان ، صفحات زیادی را تعریف میکنید، که در آن صفحات ترکیبی شما میتوانند یک مکالمه کامل در مورد موضوع(هایی) که جریان برای آن طراحی شده است انجام دهد. هر جریان یک صفحه شروع ویژه دارد. هنگامی که یک جریان در ابتدا فعال می شود، صفحه شروع به صفحه فعلی تبدیل می شود. برای هر نوبت مکالمه، صفحه فعلی یا ثابت می ماند یا به صفحه دیگری منتقل می شود. این مفهوم به شما این امکان را می دهد که عوامل بزرگتر با صفحات زیاد و چندین نوبت مکالمه ایجاد کنید.
صفحات شامل تکمیلها (گفتگوهای ورودی ثابت و/یا قلابهای وب)، پارامترها و کنترلکنندههای حالت هستند. کنترل مکالمه از طریق کنترلکنندههای حالت انجام میشود، که به شما امکان میدهد مسیرهای انتقال مختلفی برای انتقال به صفحه دیگر Dialogflow CX ایجاد کنید، از جمله شرطی کردن آن (برای انشعاب مکالمات).
وضعیت یک مکالمه با مدیریت انتقال بین صفحات با سه نوع مسیر مختلف کنترل می شود:
- مسیرهای هدف : زمانی که یک هدف باید مطابقت داشته باشد (مثلاً تغییر صفحه بر اساس آنچه کاربر نهایی میگوید). (خطوط آبی در نمودار بصری.)
- مسیرهای شرطی : زمانی که یک شرط باید بررسی شود (مثلاً تغییر صفحه بر اساس پارامترهای خاصی که در جلسه ذخیره شده است) (خطوط نارنجی در نمودار بصری.)
- کنترلکنندههای رویداد : زمانی که یک رویداد بازگشتی خاص باید مدیریت شود (مثلاً مدیریت بدون ورودی، بدون تطبیق، به منظور ابهامزدایی کاربر نهایی از مسیر قصد یا شرط) (خطوط سبز در نمودار بصری.)
گفته های مکالمه (یعنی محتوا یا پاسخ به کاربر) با انجام تعریف می شود که می تواند ثابت یا پویا باشد:
- انجام استاتیک : هنگامی که یک پاسخ تحقق ایستا ارائه می شود
- تحقق پویا : زمانی که یک وب هوک تکمیل برای پاسخهای پویا فراخوانی میشود
برای ربات خردهفروشی خود، ما مسیرهای هدف ایجاد میکنیم و برخی پاسخهای انجام ورود ثابت ارائه میکنیم که به محض فعال شدن صفحه به کاربر ارائه میشود. بعداً، ما پارامترهایی را با مسیرهای شرط ایجاد خواهیم کرد تا اطلاعاتی را که برای سفارش کالا به آن نیاز دارید جمع آوری کنیم.
مسیرهای هدف صفحه
ایجاد صفحات در جریان شروع پیش فرض
در اینجا یک نمودار جریان از جریان شروع پیش فرض آمده است:
بیایید با هم روی این کلیک کنیم:
- روی ساخت > جریان شروع پیشفرض کلیک کنید
- روی صفحه شروع کلیک کنید
- روی نماد + در کنار مسیرها کلیک کنید
- redirect.artists.overview را اضافه کنید
- به پایین بروید و به Transition بروید و به جریان کاتالوگ بروید.
- ذخیره را بزنید
- مراحل بالا را برای
redirect.product.overview
و 11 ردیف دیگر از این جدول تکرار کنید:
صفحه (در جریان) | مسیرها > هدف | مسیرها > انتقال به |
شروع کنید | | - |
شروع کنید | | جریان: کاتالوگ |
شروع کنید | | جریان: کاتالوگ |
شروع کنید | | جریان: کاتالوگ |
شروع کنید | | جریان: کاتالوگ |
شروع کنید | | جریان: کاتالوگ |
شروع کنید | | جریان: کاتالوگ |
شروع کنید | | جریان: مراقبت از مشتری |
شروع کنید | | جریان: مراقبت از مشتری |
شروع کنید | | جریان: مراقبت از مشتری |
شروع کنید | | جریان: سفارش من |
شروع کنید | | جریان: سفارش من |
شروع کنید | | جریان: سفارش من |
شروع کنید | | صفحه: پایان جلسه |
جریان شروع پیشفرض مانند یک منوی گزینه در هنگام تماس با مرکز تماس کار میکند. اما در این عامل مجازی با زبان طبیعی با عبارات آموزشی در مقاصد آموزش داده می شود. بنابراین تعامل با مکالمه هدایت می شود نه با گزینه های DTMF و طبیعی تر و شبیه انسان است.
ایجاد صفحات در جریان کاتالوگ
رونوشت چت زیر به جریان کاتالوگ تعلق دارد:
> "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 بخرم» یا «میخواهم چیزی بخرم». این بدان معناست که عامل مجازی برای پر کردن شکافهای این پارامترهای مورد نیاز، سؤالات بعدی را میپرسد. مستقیماً به صفحه محصول میپرد.
- گفتگوی قیمت از صفحه قیمت می آید که دوباره استفاده خواهد شد.
- اگرچه دیالوگ فیلم تور به نظر ساده ترین دیالوگ است، اما در واقع کار خاصی با آن انجام خواهیم داد. ما از این بخش گفتگو مجددا استفاده خواهیم کرد، بنابراین کاربران نهایی نیز می توانند آن را مستقیماً برای یکی از محصولات دیگر وارد کنند، در صورتی که همه اطلاعات را به طور همزمان تخصصی کنند:
> "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 را اضافه کنید
- به پایین بروید و به Transition بروید، Page را انتخاب کنید و گزینه: + new Page را انتخاب کنید
- از نام صفحه استفاده کنید:
Artist Overview
و Save را بزنید
حالا بیایید بقیه جریان را تمام کنیم:
- مراحل قبلی را می توان با صفحات، مقاصد و تحقق های زیر تکرار کرد. این جدول را در دست بگیرید. صفحه ، صفحهای است که در جریان انتخاب میکنید، مسیرها > انتقال به جریان یا صفحه جدیدی است که میسازید و به آن انتقال میدهید.
صفحه (در جریان) | مسیرها > هدف | مسیرها > انتقال به |
شروع کاتالوگ | | نمای کلی هنرمند |
شروع کاتالوگ | | محصول |
شروع کاتالوگ | | بررسی اجمالی محصول |
شروع کاتالوگ | | بررسی اجمالی محصول |
شروع کاتالوگ | | پیراهن |
شروع کاتالوگ | | موسیقی |
شروع کاتالوگ | | پایان جلسه |
شروع کاتالوگ | | پایان جریان |
نمای کلی هنرمند | | بررسی اجمالی محصول |
حالا بیایید ادامه دهیم و اجرای ثابت بیشتری اضافه کنیم.
- در جریان کاتالوگ، روی صفحه نمای کلی هنرمند کلیک کنید.
- در قسمت Entry realizment روی Edit realizment کلیک کنید.
- از اجراهای ثابت زیر استفاده کنید ( Agent می گوید ):
-
The following bands are signed with G-Records: Alice Googler, G's N' Roses, The Goo Fighters and The Google Dolls.
- روی ذخیره کلیک کنید
- در جریان کاتالوگ، روی صفحه نمای کلی محصول کلیک کنید.
- در قسمت Entry realizment روی Edit realizment کلیک کنید.
- از انجام استاتیک زیر استفاده کنید ( Agent می گوید ):
-
We sell shirts, music or the tour movie.
- ذخیره را بزنید.
پارامترهای صفحه
پارامترها برای گرفتن و ارجاع مقادیری که توسط کاربر نهایی در طول یک جلسه ارائه شده است استفاده می شود. هر پارامتر یک نام و یک نوع موجودیت دارد. @Artist
و @Merch
حداقل پارامترهایی هستند که باید برای سفارش کالا جمع آوری کنیم. برای تیشرتها یا آستینهای بلند، میخواهید @ShirtSize
نیز جمعآوری کنید و اگر میخواهید موسیقی سفارش دهید، به یک @Carrier
و @Album
نیز نیاز دارید.
این پارامترها باید در صورت لزوم علامت گذاری شوند. و هنگامی که مورد نیاز است، میخواهید برای به خاطر سپردن کاربر نهایی خود، درخواستهای سفارشی ارائه دهید تا پاسخهای صحیح را ارائه دهید تا بتوان این پارامترها را جمعآوری کرد. چند مکانیسم در Dialogflow CX وجود دارد که می تواند در این مورد به شما کمک کند.
به عنوان مثال، میتوانید پیامهای تکمیل استاتیک سفارشی را در بخش Parameter ارائه دهید. اگر پارامتر مورد نیاز باشد، انجام این پارامترها نشان داده خواهد شد. این پیام های پاسخ به صف پاسخ اضافه خواهند شد. در طول نوبت یک نماینده، ممکن است (و گاهی اوقات مطلوب) چندین تحقق فراخوانی شود، که هر یک ممکن است یک پیام پاسخ ایجاد کند. Dialogflow این پاسخ ها را در یک صف پاسخ نگهداری می کند. برای مطالعه بیشتر درباره چرخه عمر صفحه، و ترتیبی که این تکمیلها به صف پاسخ اضافه میشوند، Dialogflow CX Page Docs را بخوانید.
ایجاد پارامترها در صفحه نمای کلی هنرمند
بیایید برخی از پارامترهای صفحه را تعریف کنیم:
- در جریان کاتالوگ ، روی صفحه نمای کلی هنرمند کلیک کنید.
- روی + در بلوک Parameters کلیک کنید. پارامتر هنرمند را اضافه کنید:
- نام نمایشی:
artist
- نوع نهاد:
@Artist
- مورد نیاز: بررسی کنید
- Redact in log: بررسی کنید
- اکنون چند پیام تکمیل پارامتر سفارشی اضافه می کنیم. اگر پارامتر هنرمند هنوز توسط عامل مجازی جمعآوری نشده باشد، کاربر نهایی این پاسخ عامل را به صف پاسخ اضافه میکند:
From which of these artists would you like to order merchandise?
- یک گزینه گفتگوی دوم اضافه کنید که تراشه های پیشنهادی غنی را ارائه می دهد. روی گزینه Add dialogue کلیک کنید و از این کد (در JSON ) استفاده کنید:
{
"richContent": [
[
{
"options": [
{
"text": "The Google Dolls"
},
{
"text": "The Goo Fighters"
},
{
"text": "Alice Googler"
},
{
"text": "G's N' Roses"
}
],
"type": "chips"
}
]
]
}
این امکان وجود دارد که بر اساس میزان تلاشی که کاربر نهایی شما برای پاسخ دادن به آنها تلاش کرده است، درخواستهای تکمیل مجدد متفاوتی را مدیریت کنید. شما می توانید این کار را با کنترل کننده رویداد پارامترها انجام دهید. کنترلکنندههای رویداد داخلی مختلفی وجود دارد که میتوانید از بین آنها انتخاب کنید، مانند پارامترهای نامعتبر ، گفتههای خیلی طولانی ، بدون ورودی ، بدون ورودی اولین تلاش ، تلاش دوم ، یا بدون تطابق . تفاوت بین بدون ورودی و عدم تطابق، این است که بدون ورودی، کاربر هرگز پاسخی ارائه نمیدهد، در حالی که بدون تطابق، کاربر پاسخی ارائه میدهد اما Dialogflow CX نمیتواند این را با یک صفحه مطابقت دهد.
- به سمت پایین به بخش Reprompt event handlers بروید.
- روی Add event handler کلیک کنید و رویداد را انتخاب کنید:
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?
- روی ذخیره کلیک کنید
- روی Add event handler کلیک کنید و رویداد را انتخاب کنید:
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?
- روی ذخیره کلیک کنید
مسیرهای وضعیت صفحه
پارامترها در ترکیب با Page Conditional Routes بسیار قدرتمند هستند. هنگامی که یک شرط به درستی ارزیابی می شود، مسیر صفحه مرتبط فراخوانی می شود. یک شرط می تواند باشد، یک پارامتر برابر با یک مقدار خاص است ، یا یک پارامتر نمی تواند گم نشود ، یا فرمی که تکمیل شده است ، و بسیاری موارد دیگر. می توانید اطلاعات بیشتر در مورد پارامترها و شرایط را در Dialogflow CX Documentation بیابید.
برای نماینده مجازی خردهفروشیمان، باید دنبالهای از پارامترها را جمعآوری کنیم، بنابراین باید یک شرط ایجاد کنیم تا بررسی کنیم که آیا یک «فرم» تکمیل شده است یا خیر. فرم لیستی از پارامترهایی است که باید از کاربر نهایی برای صفحه جمع آوری شود. عامل مجازی برای چندین نوبت مکالمه با کاربر نهایی تعامل می کند، تا زمانی که تمام پارامترهای فرم مورد نیاز را جمع آوری کند، که به عنوان پارامترهای صفحه نیز شناخته می شوند.
Dialogflow CX به طور خودکار مقادیر پارامتر ارائه شده توسط کاربر نهایی را در هنگام پر کردن فرم تنظیم می کند. برای بررسی اینکه آیا فرم کامل صفحه فعلی پر شده است، از شرط زیر استفاده کنید: $page.params.status = "FINAL"
ایجاد مسیرهای مشروط در صفحه نمای کلی هنرمند
بیایید یک مسیر مشروط ایجاد کنیم، که پس از شناخته شدن هنرمند، به صفحه بعدی منتقل می شود:
- در صفحه نمای کلی هنرمند ، روی نماد + در قسمت Routes کلیک کنید.
- به قسمت Condition پایین بروید.
- حداقل یکی را انتخاب کنید (OR)
- در مرحله بعد، عبارتی را می نویسیم که
- پارامتر:
$page.params.status
- اپراتور:
=
- مقدار:
"FINAL"
- اکنون، یک پیغام انجام استاتیک خاص در مسیر ایجاد می کنیم که انتخاب کاربر نهایی را تایید می کند. به بلوک Fulfillment بروید و پیام های تکمیل زیر را بنویسید:
-
$session.params.artist, great choice! Rock on!
-
You want to rock with $session.params.artist merchandise. Awesome!
- وقتی شرط درست است، باید به صفحه نمای کلی محصول منتقل شوید. به بخش انتقال به پایین بروید و از صفحه زیر استفاده کنید:
Product Overview
- ذخیره را بزنید.
ایجاد مسیرها در صفحه نمای کلی محصول
اکنون که می دانیم چگونه می توانید پارامترها و مسیرهای شرطی ایجاد کنید، بیایید پارامترهای بیشتری برای صفحات زیر ایجاد کنیم:
بررسی اجمالی محصول
- ایجاد پارامتر
artist
در صفحه نمای کلی محصول :
- نام نمایشی:
artist
- نوع نهاد:
@Artist
- مورد نیاز: بررسی کنید
- Redact in log: بررسی کنید
- انجام فوری اولیه:
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"
}
]
]
}
- رویداد Handler >
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"
}
]
]
}
- رویداد Handler >
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
- مورد نیاز: بررسی کنید
- Redact in log: بررسی کنید
- تحقق:
Which merchandise item do you want?
- کلیک کنید: گزینه افزودن گفتگو > بار سفارشی :
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Shirts"
},
{
"text": "Music"
},
{
"text": "Tour movie"
}
]
}
]
]
}
- رویداد Handler >
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"
}
]
}
]
]
}
- رویداد Handler >
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
- یک مسیر برای زمانی که کاربر می گوید "Shirts" ایجاد کنید
- هدف: 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?"
}
]
}
]
]
}
- یک مسیر هدف ایجاد کنید:
redirect.price
با انتقال به صفحهPrice
- پارامتر زیر را ایجاد کنید:
- پارامتر:
merch
- نوع نهاد:@Merch
,Required
وRedact in log
- Parameter > Event Handler >
No-match default
- Parameter > Event Handler Fulfillment:
You can choose between a t-shirt or a longsleeve. Which of these do you want?
- Parameter > Event Handler Fulfillment Payload Custom:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "T-shirt"
},
{
"text": "Longsleeve"
}
]
}
]
]
}
- Parameter > Event Handler >
No-input default
- Parameter > Event Handler Fulfillment:
I couldn't understand if you want the t-shirt or the longsleeve. Which of these do you want?
- Parameter > Event Handler Fulfillment Payload Custom:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "T-shirt"
},
{
"text": "Longsleeve"
}
]
}
]
]
}
- روی تکمیل ورودی کلیک کنید و به قسمت از پیش تنظیمات پارامتر بروید، هر بار که صفحه پیراهن ها فعال می شود، پارامتر دسته روی پیراهن ها تنظیم می شود:
پارامتر | ارزش |
| |
- یک مسیر مشروط اضافه کنید:
- حداقل یک قانون را مطابقت دهید (OR)
- عبارت:
$session.params.merch = "T-shirt"
- عبارت:
$session.params.merch = "Longsleeve"
- انتقال به صفحه جدید:
Shirt Size
صفحه قیمت:
از آنجایی که پیامها برای قیمتها بسته به کالا یا دستهبندی انتخابی (موسیقی یا پیراهن) خواهد بود، این قسمت را بعداً در آزمایشگاه تعمیر خواهیم کرد. فقط وارد کردن یک مکان نگهدار در حال حاضر بیش از اندازه کافی است.
- تنظیمات زیر را در صفحه قیمت ایجاد کنید:
- انجام ورودی:
PRICE TODO
از آنجایی که می توانید قیمت را از جاهای مختلف در مکالمه درخواست کنید، همیشه باید به شما پاسخ دهد و برای ادامه سفارش شما را به قسمت قبلی دیالوگ منتقل کند. 5 مکان در درخت گفتگو وجود دارد که می توانید برای دریافت اطلاعات قیمت از آنها منشعب شوید. (پیراهن، اندازه پیراهن، موسیقی، حامل و همچنین مستقیم از طریق یک مسیر هدف)، بنابراین برای حرکت به عقب به چند مسیر مشروط نیاز داریم:
- یک مسیر مشروط اضافه کنید:
- مطابقت با هر قانون (AND)
- عبارت:
$session.params.category = "shirts"
- عبارت:
$session.params.merch = "null"
- انتقال به صفحه جدید:
Shirts
- یک مسیر مشروط اضافه کنید:
- مطابقت با هر قانون (AND)
- عبارت:
$session.params.category = "shirts"
- عبارت:
$session.params.size = "null"
- انتقال به صفحه جدید:
Shirt Size
- یک مسیر مشروط اضافه کنید:
- مطابقت با هر قانون (AND)
- عبارت:
$session.params.category = "music"
- عبارت:
$session.params.album = "null"
- انتقال به صفحه جدید:
Music
- یک مسیر مشروط اضافه کنید:
- مطابقت با هر قانون (AND)
- عبارت:
$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"
}
]
}
]
]
}
- یک مسیر Intent ایجاد کنید:
redirect.price
با انتقال به صفحهPrice
. - پارامتر زیر را ایجاد کنید:
- پارامتر:
shirtsize
- نوع نهاد:@ShirtSize
-Required
،Redact In Log
- Parameter > Event Handler >
No-match default
- Parameter > Event Handler Fulfillment:
Please tell me the shirt size, such as XL.
- Parameter > Event Handler Fulfillment Payload Custom:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "XS"
},
{
"text": "S"
},
{
"text": "M"
},
{
"text": "L"
},
{
"text": "XL"
},
{
"text": "2XL"
},
{
"text": "3XL"
}
]
}
]
]
}
- Parameter > Event Handler >
No-input default
- Parameter > Event Handler Fulfillment:
I couldn't understand the shirt size. What size do you want?
- Parameter > Event Handler Fulfillment Payload Custom:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "XS"
},
{
"text": "S"
},
{
"text": "M"
},
{
"text": "L"
},
{
"text": "XL"
},
{
"text": "2XL"
},
{
"text": "3XL"
}
]
}
]
]
}
- یک مسیر مشروط اضافه کنید:
- مطابقت با هر قانون (AND)
- عبارت:
$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
با انتقال به Page:Price
. - پارامتر زیر را ایجاد کنید:
- پارامتر:
album
- نوع موجودیت:@Album
-Required
,Redact In Log
- Parameter > Event Handler >
No-match default
- Parameter > Event Handler Fulfillment:
You can choose between Greatest Hits and Live Album. Which of these do you want?
- Parameter > Event Handler Fulfillment Payload Custom:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Greatest Hits"
},
{
"text": "Live"
}
]
}
]
]
}
- Parameter > Event Handler >
No-input default
- Parameter > Event Handler Fulfillment:
I couldn't understand if you want the album: Greatest Hit or Live. Which of these do you want?
- Parameter > Event Handler Fulfillment Payload Custom:
{
"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
- Parameter > Event Handler >
No-match default
- Parameter > Event Handler Fulfillment:
Do you want a physical CD or the digital album?
- Parameter > Event Handler Fulfillment: payload سفارشی:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "CD"
},
{
"text": "Digital Album"
}
]
}
]
]
}
- Parameter > Event Handler >
No-input default
- Parameter > Event Handler Fulfillment:
I couldn't understand if you mean CD or MP3. Which one do you want?
- Parameter > Event Handler Fulfillment: payload سفارشی:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "CD"
},
{
"text": "MP3"
}
]
}
]
]
}
- یک مسیر مشروط اضافه کنید:
- مطابقت با هر قانون (AND)
- عبارت:
$page.params.merch != "null"
- انتقال به صفحه:
Product
صفحه محصول:
- پارامترهای زیر را ایجاد کنید:
پارامتر نمایش نام | نوع نهاد پارامتر | چک ها |
| | مورد نیاز، ویرایش در ورود به سیستم |
| | مورد نیاز، ویرایش در ورود به سیستم |
- پارامتر هنرمند به انجام فوری اولیه زیر نیاز دارد، که وقتی هنرمند شناخته نشده باشد نشان داده خواهد شد.
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.
- پارامتر کالا به کنترلکنندههای رویداد reprompt نیز نیاز دارد.
- یک کنترلکننده رویداد
No-input default
با تکمیل اضافه کنید:I couldn't understand what you just said. Which merchandise item do you want?
- و یک کنترلکننده رویداد
No-match default
با تکمیل:I missed that. Which merchandise item do you want?
زمانی که هنرمند شناخته شود و کاربر "فیلم تور" را انتخاب کند، مسیر بعدی به صفحه تایید منتقل می شود.
- یک مسیر مشروط اضافه کنید:
- مطابقت با هر قانون (AND)
- عبارت:
$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
مسیر بعدی زمانی به صفحه تایید منتقل می شود که هنرمند شناخته شود و کاربر یک "CD" را انتخاب کند و نام آلبوم نیز انتخاب شود.
- یک مسیر مشروط اضافه کنید:
- عبارت سفارشی:
$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
- مثالی از یک [شرط] می تواند این باشد:
$session.params.user-age >= 21
. از قالب بندی مشابه شرایط موجود در مسیرها استفاده می کند. - یک [پاسخ] پاسخ متن ایستا را می گیرد
- پاسخ های مشروط همیشه با
if
شروع می شوند - بلوک های
elif
وelse
اختیاری هستند
Dialogflow CX همچنین می تواند از توابع داخلی سیستم برای استفاده استفاده کند. برای مثال برای قالببندی تاریخ یا زمان، یا نمایش زمان فعلی ( $sys.func.NOW()
)
بیایید جریان کاتالوگ را با اصلاح صفحات تایید و قیمت نهایی کنیم.
صفحه تایید:
اکنون صفحه تایید را می سازیم. الزامات زیر را دارد:
- اگر کالا سی دی یا آلبوم دیجیتال است. فیلدهای زیر را در تأیید نشان خواهیم داد: هنرمند ، کالا ، آلبوم و قیمت .
- اگر کالا تی شرت یا آستین بلند است. فیلدهای زیر را در تأیید نشان خواهیم داد: هنرمند ، کالا ، اندازه و قیمت .
- در غیر این صورت (و به این ترتیب اگر کالا فیلم تور باشد). فیلدهای زیر را در تأیید نشان خواهیم داد: هنرمند ، کالا و قیمت .
- روی صفحه تایید کلیک کنید.
- روی Edit Fulfillment > Agent Responses > Add option dialog > Conditional Response کلیک کنید:
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
- Intent Route زیر را ایجاد کنید
- هدف:
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
- صفحه شروع را انتخاب کنید و روی intent
redirect.end
کلیک کنید. تکمیل زیر را ایجاد کنید:Thank you for contacting G-Records! Have a nice day!
- صفحه شروع را انتخاب کنید و روی
redirect.home
intent کلیک کنید. پیش تنظیم پارامتر زیر را ایجاد کنید:restart = true
عالی! در حال حاضر ما یک ربات چت خردهفروشی کاملاً فعال در دنیای واقعی داریم! در آزمایشگاه بعدی، عملکرد عامل مجازی را بررسی خواهیم کرد!
9. عامل مجازی خود را تست کنید
می توانید از شبیه ساز داخلی برای تست دیالوگ های عامل مجازی خود استفاده کنید. مزیت آزمایش جریانها در شبیهساز این است که یک نمای کلی خوب از جریانها، صفحات، پارامترها و رویدادهای (DTMF) که شبیهساز هنگام قدم زدن در جریانهای شما جمعآوری کرده است، خواهید دید. این امر آزمایش را آسان تر از آزمایش مستقیم آن در یک ادغام می کند، زیرا این نوع اطلاعات از کاربر نهایی پنهان می شود. حتی امکان ایجاد موارد آزمایشی، ذخیره و استفاده مجدد از آن موارد آزمایشی وجود دارد. این بسیار منطقی است، زیرا زمانی که جریان های خود را در طول زمان حفظ یا ویرایش می کنید، و می خواهید مطمئن باشید که هیچ یک از تغییرات شما کار قبلی شما را خراب نمی کند.
همچنین امکان صادرات و وارد کردن موارد آزمایشی ساخته شده قبلی، با ذخیره آزمایشات در Google Cloud Storage یا محلی وجود دارد. با صادر کردن یک آزمایش، یک فایل blob بارگیری می شود. برای کسب اطلاعات بیشتر در مورد شبیهساز و موارد آزمایشی ، Simulator / Test Cases Docs را بررسی کنید.
قبل از ایجاد چند مورد آزمایشی، اجازه دهید ابتدا بقیه عامل مجازی خود را نهایی کنیم:
ایجاد جریان مراقبت از مشتری
- به «جریان مراقبت از مشتری» بروید و انتقالهای هدف زیر را ایجاد کنید:
صفحه (در جریان) | مسیرها > هدف | مسیرها > انتقال به |
شروع مراقبت از مشتری | | حمل و نقل |
شروع مراقبت از مشتری | | بازپرداخت |
شروع مراقبت از مشتری | | مبادله |
شروع مراقبت از مشتری | | پایان جریان |
شروع مراقبت از مشتری | | پایان جلسه |
- تکمیل ورودی های زیر را برای صفحه حمل و نقل ایجاد کنید:
-
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?
- صفحه شروع را انتخاب کنید و روی intent
redirect.end
کلیک کنید. تکمیل زیر را ایجاد کنید:Thank you for contacting G-Records! Have a nice day!
- صفحه شروع را انتخاب کنید و روی
redirect.home
intent کلیک کنید. پیش تنظیم پارامتر زیر را ایجاد کنید:restart = true
موارد آزمایشی ایجاد کنید
- روی دکمه Test Agent در سمت راست صفحه کلیک کنید.
هنگامی که برای اولین بار شبیه ساز را باز می کنید، باید یک محیط عامل و جریان فعال را انتخاب کنید. در بیشتر موارد، باید از محیط پیش نویس و جریان شروع پیش فرض استفاده کنید.
- نوع:
Hi
- بپرسید:
Which artists are signed with your label?
- بگویید:
The Google Dolls
- بگویید:
I am interested in buying a shirt
- بگو:
A t-shirt
- بگو:
Medium
- حالا روی دکمه save test case کلیک کنید. که میتوانید در بالای شبیهساز پیدا کنید (کنار پیکان تکرار و بازنشانی نماد سطل زباله)
- جزئیات زیر را به آن بدهید:
- نام مورد آزمایشی:
Buy Google Dolls t-shirt size M
- برچسبها: #کاتالوگ، #پیراهن، #تیشرت، #TheGoogle Dolls
- روی ذخیره کلیک کنید
بیایید موارد آزمایشی بیشتری ایجاد کنیم.
- ابتدا گفتگوی فعلی را با کلیک بر روی نماد Reset (Trash bin) پاک کنید.
- موارد تست زیر را ایجاد کنید:
خرید تی شرت آلیس گوگلر:
>"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
- توضیحات: (توجه داشته باشید که نام هنرمند ذکر نشده است، اما می خواهید از نمای کلی باندها، نمای کلی محصولات، صفحات پیراهن و اندازه پیراهن صرفنظر کنید)
خرید Music of 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
- توضیحات: اطلاعات قیمت را در مورد نکات مختلف در گفتگو آزمایش کنید
موارد تست از پیش ثبت شده را آزمایش کنید
- Manage > Test Cases را در منوی اصلی Dialogflow در سمت چپ انتخاب کنید.
- تمام موارد تست را انتخاب کنید و دکمه Run را در بالای جدول فشار دهید.
Dialogflow CX همه موارد آزمایشی انتخاب شده را در برابر ضبطی که به عنوان "مورد تست طلایی" ذخیره شده است اجرا می کند، اگر نتایج با نحوه ذخیره آن یکسان باشد، تست ها با موفقیت انجام می شود. - آیا چیزی در جریانها تغییر کرده است، مانند صفحاتی که به درستی پیکربندی نشدهاند، یا اهدافی که شما را به صفحات اشتباه هدایت میکنند، در این صورت آزمایشها با شکست مواجه میشوند.
- در شبیه ساز سوال زیر را بپرسید:
How long will shipping take?
- نتیجه را یادداشت کنید و مورد آزمایشی را به عنوان
Shipping
با برچسب:#shipping
ذخیره کنید. - به پنل Manage > Test Cases بروید و دکمه Run را در سمت راست بالای شبکه فشار دهید تا فقط مورد آزمایش
Shipping
اجرا شود.
این آزمون باید قبول شود.
- به Care Care Flow برگردید، صفحه شروع را انتخاب کنید و روی هدر Routes کلیک کنید.
این یک صفحه با یک شبکه نشان می دهد که تمام مسیرها را نشان می دهد.
-
redirect.shipping.info route
بردارید - به پنل Manage > Test Cases بروید و دکمه Run را در سمت راست بالای شبکه فشار دهید تا فقط مورد آزمایش
Shipping
اجرا شود.
این آزمون باید شکست بخورد.
- می توانید روی تست شکست خورده کلیک کنید تا جزئیات شکست را ببینید.
در این مورد، آزمایش با پیغام خطای زیر ناموفق بود:
Page: Page mismatch:
Expected: Shipping
Actual: Start Page
دلیل این امر این است که صفحه دیگر در جریان وجود ندارد. ما انتظار داشتیم که صفحه Shipping
، اما در عوض هرگز از صفحه Start
دور نشدیم. (یا کاربران نهایی شما یک پیام بازگشتی دریافت خواهند کرد.)
به عبارت دیگر، این یک درخواست از دست رفته، یک نتیجه آزمایش منفی کاذب است. آزمون شکست خورد. ما انتظار داشتیم که صفحه حمل و نقل ارسال شود ، اما هیچ اتفاقی نمی افتد، یا یک پیام بازگشتی نشان داده شد.
- به «جریان مراقبت از مشتری» برگردید و
redirect.shipping.info
به عنوان یک مسیر هدف، به صفحه شروع اضافه کنید. فراموش نکنید که به صفحه حمل و نقل منتقل شده و ذخیره را فشار دهید. - در شبیهساز، مورد آزمایشی زیر را ضبط کنید:
I want to swap my item
، این مورد آزمایشی را با نامSwapping
#swapping
ذخیره کنید. - Manage >Intents > 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
ذخیره کنم. - به Manage >Intents > redirect.refund.info برگردید و خط
I want to swap this item for a refund
را حذف کنید. - به Manage > Test Cases برگردید، گزینه Swap for Refund test را انتخاب کنید و آن را اجرا کنید .
آخرین آزمایش شما با پیام خطای زیر ناموفق بود:
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، پوشش تست معیاری است که برای توصیف میزان اجرای گفتگوی عامل مجازی (صفحات و اهداف) هنگام اجرای یک مجموعه آزمایشی خاص استفاده میشود. یک عامل مجازی با پوشش تست بالا، که به صورت درصد اندازه گیری می شود، دیالوگ های بیشتری در طول آزمایش اجرا شده است، که نشان می دهد در مقایسه با یک عامل مجازی با پوشش آزمایشی کم، شانس کمتری برای حاوی اشکالات شناسایی نشده (مانند درخواست های از دست رفته درک شده) دارد.
- برای مشاهده گزارش پوشش آزمایشی برای همه موارد آزمایش، روی پوشش کلیک کنید.
- روی تب Transitions کلیک کنید.
این پوشش آزمایشی برای تمام انتقالات صفحه را به شما نشان می دهد.
- روی تب Intents کلیک کنید.
این پوشش آزمایشی را برای همه مقاصد به شما نشان می دهد.
تبریک میگوییم، تا به حال یک نمونه کامل دنیای واقعی از یک ربات خردهفروش ساخته و آزمایش کردهاید! بیایید به صفحه آزمایشگاه بعدی برویم تا نتیجهگیری را بخوانیم و چند مرجع مفید پیدا کنیم!
10. نتیجه گیری
Dialogflow CX یک پلتفرم هوش مصنوعی مکالمه (CAIP) برای ایجاد عوامل مجازی مانند ربات های چت یا صوتی است. Dialogflow CX به تیم شما قدرت می دهد تا از طریق سازندگان ربات بصری، اهداف قابل استفاده مجدد و توانایی پرداختن به مکالمات چند نوبتی، ایجاد تجارب مکالمه در سطح سازمانی را تسریع بخشد.
در این کد لبه، یاد گرفته اید که چگونه یک نماینده مجازی خرده فروشی در دنیای واقعی بسازید. ما به مفاهیم زیر پرداختیم:
- جریان می یابد
- پارامترها، سفارشی و نهادهای سیستم
- صفحات
- کنترل کننده های ایالتی مسیرهای هدف و مسیرهای شرطی را دوست دارند
- پیام های تحقق ایستا و پاسخ های مشروط
- مقاصد بازگشتی
- شبیه ساز، موارد تست و پوشش
مراجع
برای کسب اطلاعات بیشتر در مورد Dialogflow CX به وبلاگ ها و مستندات زیر نگاهی بیندازید!