کاربران را با Action for Google Assistant خود درگیر کنید

1. بررسی اجمالی

Actions on Google یک پلت فرم توسعه دهنده است که به شما امکان می دهد نرم افزاری ایجاد کنید تا عملکرد Google Assistant ، دستیار شخصی مجازی Google را در بیش از 1 میلیارد دستگاه از جمله بلندگوهای هوشمند، تلفن ها، اتومبیل ها، تلویزیون ها، هدفون ها و موارد دیگر گسترش دهید. کاربران برای انجام کارهایی مانند خرید مواد غذایی یا رزرو سواری، دستیار را در مکالمه قرار می دهند. (برای فهرست کاملی از آنچه ممکن است، دایرکتوری Actions را ببینید.) به عنوان یک برنامه‌نویس، می‌توانید از Actions on Google برای ایجاد و مدیریت آسان تجربیات گفتگوی لذت‌بخش و مؤثر بین کاربران و سرویس شخص ثالث خود استفاده کنید.

این یک ماژول Codelab پیشرفته است که برای خوانندگانی در نظر گرفته شده است که قبلاً تجربه ساخت Actions برای Google Assistant را دارند. اگر تجربه توسعه قبلی با Actions on Google ندارید، اکیداً توصیه می‌کنیم که با دنبال کردن کدهای مقدماتی ما ( سطح 1 ، سطح 2 و سطح 3 ) با این پلتفرم آشنا شوید. این ماژول‌های پیشرفته شما را از طریق مجموعه‌ای از ویژگی‌ها راهنمایی می‌کنند که می‌تواند به شما در گسترش عملکرد Action و افزایش مخاطبانتان کمک کند.

یکی از راه‌های مهم برای اندازه‌گیری موفقیت یک Action، تعامل کاربر یا میزان تأثیر اکشن در بازگرداندن کاربران پس از اولین تعامل است. برای کمک به آسان‌تر شدن این کار، می‌توانید چندین ویژگی را در Action خود پیاده‌سازی کنید که به کاربران مسیرهایی را برای بازگشت به مکالمه شما می‌دهد.

این آزمایشگاه کد ویژگی‌های تعامل کاربر و بهترین شیوه‌ها را برای Actions on Google پوشش می‌دهد.

a3fc0061bd01a75.png961ef6e27dc73da2.png

چیزی که خواهی ساخت

با فعال کردن ویژگی‌هایی که قبلاً ساخته شده است، آن را بهبود می‌بخشید:

  • یک به‌روزرسانی روزانه برای کاربران ارسال کنید تا بتوانند روی آن ضربه بزنند تا با Action شما صحبت کنند
  • اعلان‌های فشاری را برای کاربران ارسال کنید که به Action شما پیوند می‌دهند
  • پیوندی ایجاد کنید که کاربران را از یک مرورگر وب تلفن همراه به Action شما برساند

چیزی که یاد خواهید گرفت

  • تعامل کاربر چیست و چرا برای موفقیت یک Action مهم است
  • چگونه یک Action را برای افزایش تعامل کاربر تغییر دهیم
  • از کدام ویژگی های تعامل کاربر در انواع مختلف اکشن ها استفاده کنید
  • نحوه استفاده از Actions API برای ارسال اعلان ها از طریق Assistant

آنچه شما نیاز دارید

شما باید ابزارهای زیر را داشته باشید:

  • یک ویرایشگر IDE/متن انتخابی شما، مانند WebStorm ، Atom ، یا Sublime
  • ترمینالی برای اجرای دستورات پوسته با نصب Node.js، npm و git
  • یک مرورگر وب، مانند گوگل کروم
  • یک محیط توسعه محلی با رابط خط فرمان Firebase
  • یک دستگاه تلفن همراه (Android یا iOS) با Assistant (شما باید با همان حساب Google که برای ساخت این پروژه استفاده می کنید به Assistant وارد شوید.)

آشنایی با جاوا اسکریپت (ES6) نیز قویاً توصیه می شود، اگرچه لازم نیست، اما برای درک کد وب هوک.

2. پروژه خود را تنظیم کنید

این بخش به شما نشان می‌دهد که چگونه ویژگی‌های تعامل کاربر را به یک Action کامل و از قبل ساخته شده اضافه کنید.

نمونه را درک کنید

نمونه این کد لبه یک اکشن ساده برای یک باشگاه تخیلی به نام "Action Gym" است. Action اطلاعاتی در مورد سالن بدنسازی، از جمله فهرستی از کلاس هایی که هر روز چرخش می کنند، ارائه می دهد. یک اقدام آموزنده مانند این، کاندیدای خوبی برای همه ویژگی‌های تعامل کاربر است، زیرا فهرست کلاس‌های چرخشی هر روز اطلاعات مفید متفاوتی را ارائه می‌دهد.

نمودار زیر جریان مکالمه نمونه Action Gym را نشان می دهد:

e2d6e4ad98948cf3.png

تغییرات جزئی در گفتگو ایجاد خواهید کرد تا با ویژگی‌های تعاملی که اضافه می‌کنید مطابقت داشته باشد. با این حال، طراحی کلی مکالمه تغییر زیادی نخواهد کرد.

فایل های پایه خود را دانلود کنید

دستور زیر را برای کلون کردن مخزن GitHub برای Codelab اجرا کنید:

git clone https://github.com/actions-on-google/user-engagement-codelab-nodejs

پروژه و عامل خود را تنظیم کنید

برای راه‌اندازی پروژه Actions و عامل Dialogflow، مراحل زیر را انجام دهید:

  1. کنسول Actions را باز کنید.
  2. پروژه جدید را کلیک کنید.
  3. نام پروژه را تایپ کنید، مانند engagement-codelab .
  4. روی ایجاد پروژه کلیک کنید.
  5. به جای انتخاب یک دسته، به قسمت گزینه های بیشتر بروید و روی کارت مکالمه کلیک کنید.
  6. برای گسترش گزینه‌ها روی Build your Action کلیک کنید و Add Action(s) را انتخاب کنید.
  7. روی Add Your First Action کلیک کنید.
  8. در گفتگوی Create Action ، Custom Intent را انتخاب کنید و سپس روی Build کلیک کنید تا کنسول Dialogflow راه اندازی شود.
  9. در صفحه ایجاد عامل کنسول Dialogflow، روی ایجاد کلیک کنید.
  10. کلیک کنید بر روی 6bf56243a8a11a3b.png (نماد چرخ دنده) در سمت چپ ناوبری.
  11. روی Export and Import و سپس Restore From Zip کلیک کنید.
  12. فایل agent.zip را از پوشه /user-engagement-codelab-nodejs/start/ که قبلا دانلود کرده‌اید، آپلود کنید.
  13. RESTORE را تایپ کنید و روی Restore کلیک کنید.
  14. روی Done کلیک کنید.

تحقق خود را مستقر کنید

اکنون که پروژه Actions و عامل Dialogflow آماده هستند، فایل index.js محلی خود را با استفاده از Firebase Functions CLI مستقر کنید.

از پوشه /user-engagement-codelab-nodejs/start/functions/ کلون فایل های پایه خود، دستورات زیر را اجرا کنید:

firebase use <PROJECT_ID>
npm install
firebase deploy

پس از چند دقیقه، " Deploy full! " را مشاهده خواهید کرد که نشان می دهد که وب هوک خود را با موفقیت در Firebase مستقر کرده اید.

URL استقرار را بازیابی کنید

باید Dialogflow را با URL تابع ابر ارائه دهید. برای بازیابی این URL، مراحل زیر را دنبال کنید:

  1. کنسول Firebase را باز کنید.
  2. پروژه Actions خود را از لیست گزینه ها انتخاب کنید.
  3. به Develop > Functions در نوار ناوبری سمت چپ بروید. اگر از شما خواسته شد «انتخاب تنظیمات اشتراک‌گذاری داده» را انتخاب کنید، می‌توانید این گزینه را با کلیک کردن روی انجام این کار بعدا نادیده بگیرید.
  4. در زیر برگه داشبورد ، باید یک ورودی برای "تحقق" با یک URL در زیر Trigger مشاهده کنید. این URL را ذخیره کنید. شما باید آن را در بخش بعدی در Dialogflow کپی کنید.

1741a329947975db.png

URL webhook را در Dialogflow تنظیم کنید

اکنون باید عامل Dialogflow خود را به روز کنید تا از webhook خود برای تکمیل استفاده کنید. برای انجام این کار؛ این موارد را دنبال کنید:

  1. کنسول Dialogflow را باز کنید (در صورت تمایل می توانید کنسول Firebase را ببندید).
  2. روی Fulfillment در ناوبری سمت چپ کلیک کنید.
  3. Webhook را فعال کنید.
  4. نشانی اینترنتی را که از داشبورد Firebase کپی کرده‌اید جای‌گذاری کنید، اگر قبلاً ظاهر نشده است.
  5. روی ذخیره کلیک کنید.

بررسی کنید که پروژه شما به درستی تنظیم شده است

کاربران باید بتوانند Action شما را برای کسب اطلاعات در مورد Action Gym فراخوانی کنند، از جمله یک پاسخ متنی با کد سخت با ساعات کاری و یک پاسخ متنی که برنامه کلاس را برای هر روز هفته فهرست می‌کند.

برای آزمایش اکشن خود در شبیه ساز اکشن:

  1. در ناوبری سمت چپ کنسول Dialogflow، روی Integrations > Google Assistant کلیک کنید.
  2. مطمئن شوید که پیش‌نمایش خودکار تغییرات فعال است و برای به‌روزرسانی پروژه Actions خود، روی Test کلیک کنید.
  3. شبیه ساز Actions پروژه Actions شما را بارگیری می کند. برای آزمایش Action خود، Talk to my test app را در قسمت Input تایپ کنید و enter را فشار دهید.
  4. شما باید پاسخی را ببینید که از شما به Action Gym خوش آمد می گوید. سعی کنید دستورات را دنبال کنید تا مکالمه را ادامه دهید و در عین حال مطمئن شوید که انجام شما برای هر ورودی پاسخی دارد.

60acf1ff87b1a87f.png

3. اشتراک های به روز رسانی روزانه را اضافه کنید

یک راه متداول برای جلب مشارکت کاربران این است که اطلاعات را در زمانی که مفیدتر است به آنها ارائه دهید. این با ارائه گزینه اشتراک در به‌روزرسانی‌های روزانه برای یک intent به کاربران انجام می‌شود، که اعلان دستیار را برای آنها ارسال می‌کند که مستقیماً به تحقق آن هدف پیوند می‌دهد.

در این مرحله، با اشتراک‌های به‌روزرسانی روزانه آشنا می‌شوید و آنها را به هدف Action's Class List خود اضافه می‌کنید. پس از دنبال کردن این دستورالعمل‌ها، مکالمه Action شما مانند نمودار زیر خواهد بود:

f48891c8118f7436.png

این چگونه کاربران را درگیر خواهد کرد؟

کاربران گوشی‌های هوشمند احتمالاً با اعلان‌های فشاری آشنا هستند که اطلاعات و به‌روزرسانی‌های خاص برنامه را ارائه می‌کنند. اشتراک‌های به‌روزرسانی روزانه روشی ساده برای دسترسی به کاربران در دستگاه‌های تلفن همراه خارج از «دستیار» است، مشروط بر اینکه هدفی که به‌روزرسانی‌ها را برای آن ارسال می‌کنید همچنان ارزشی را به کاربر ارائه می‌دهد.

به روز رسانی روزانه می تواند یک ابزار تعامل مفید باشد، اما لزوماً نباید در هر Action گنجانده شود. هنگام تصمیم‌گیری برای اضافه کردن اشتراک‌های به‌روزرسانی روزانه به یک Action، این نکات را در نظر بگیرید:

  • اطمینان حاصل کنید که به‌روزرسانی‌های روزانه باعث می‌شود کاربر هر روز اطلاعات مفید و متفاوتی را ببیند. اگر هر بار ضربه زدن روی یک به‌روزرسانی روزانه منجر به یک پیام مشابه شود، کاربر احتمالاً پس از چند روز اشتراک خود را لغو می‌کند.
  • مطمئن شوید که گفتگوی شما برای کاربر شما منطقی است اگر مستقیماً به هدف به‌روزرسانی روزانه شما بپردازد. کاربر شما لزوماً از ابتدای مکالمه شروع نمی کند، بنابراین نباید از او انتظار داشت که زمینه زیادی داشته باشد.
  • قبل از اینکه از او بخواهید در به‌روزرسانی‌های روزانه مشترک شود، مزایای Action خود را به کاربر نشان دهید. هنگامی که به کاربر امکان اشتراک داده می شود، باید فکر کند "من هر روز این محتوا را می خواهم".
  • کاربر را با پیشنهادات مکرر برای اشتراک غرق نکنید. اشتراک به‌روزرسانی روزانه را بلافاصله پس از اینکه به کاربر نشان دادید در چه چیزی مشترک است، ارائه دهید و از اذیت کردن او در مورد آن در جاهای دیگر خودداری کنید.
  • پس از شروع به‌روزرسانی، مکالمه را کوتاه نگه دارید. اکثر به‌روزرسانی‌های روزانه فقط باید از یک پاسخ تشکیل شوند و سپس بدون نیاز به ورودی کاربر بسته شوند.

به روز رسانی روزانه را روشن کنید

اشتراک‌های به‌روزرسانی روزانه را می‌توان به هدف خوش‌آمدگویی اضافه کرد که کاربر را در شروع مکالمه شما قرار می‌دهد، یا قصد خاصی را به منظور پیوند عمیق آن‌ها با جایی در مکالمه. برای این کد لبه، هدف فهرست کلاس بیشترین معنا را دارد زیرا گفتگو هر روز تغییر می‌کند و کاربران ممکن است یادآوری کلاس‌های موجود را مفید بدانند.

برای فعال کردن به‌روزرسانی‌های روزانه برای هدف فهرست کلاس ، این مراحل را دنبال کنید:

  1. در کنسول Actions، روی تب Develop کلیک کنید و Actions را در نوار ناوبری سمت چپ انتخاب کنید.
  2. در زیر لیست اقدامات بر روی Class List کلیک کنید.
  3. در بخش تعامل کاربر ، گزینه Wild you like to offer daily updates to users را تغییر دهید.
  4. یک عنوان محتوای توصیفی تنظیم کنید که به‌روزرسانی روزانه را توصیف کند. متن این خواهد بود "چه ساعتی دوست دارید روزانه شما را بفرستم"، بنابراین مطمئن شوید که عنوان شما هم توصیفی است و هم وقتی با صدای بلند صحبت می کنید درست به نظر می رسد. برای این مثال، عنوان Content را روی list of upcoming Action Gym classes تنظیم کنید.
  5. روی Save در بالای صفحه کلیک کنید.

c00885cc30e14d68.png

Dialogflow را تنظیم کنید

این مراحل را در کنسول Dialogflow دنبال کنید تا برای جریان اشتراک روزانه به‌روزرسانی ایجاد کنید:

از کاربر بخواهید مشترک شود

  1. یک هدف جدید برای رسیدگی به درخواست کاربر برای اشتراک در به‌روزرسانی‌های روزانه تنظیم کنید. در کنسول Dialogflow، روی دکمه + در کنار Intents در ناوبری سمت چپ کلیک کنید تا یک intent جدید ایجاد کنید.
  2. نام این intent Setup Updates را بگذارید.
  3. در بخش عبارات آموزشی ، عبارات کاربری زیر را اضافه کنید:
  • Send daily reminders
  • Reminder
  • Remind me
  • Updates
  • Upcoming classes
  1. در قسمت Fulfillment ، گزینه Enable webhook call for this intent را تغییر دهید.
  2. روی Save در بالای صفحه کلیک کنید.

5c70faa02151da0.png

تصمیم کاربر را مدیریت کنید

  1. یک هدف جدید برای رسیدگی به پاسخ کاربر به درخواست اشتراک روزانه به‌روزرسانی‌ها تنظیم کنید. برای ایجاد یک intent جدید، روی دکمه + در کنار Intents در ناوبری سمت چپ کلیک کنید.
  2. نام این هدف جدید را Confirm Updates .
  3. در بخش رویدادها ، actions_intent_REGISTER_UPDATE را اضافه کنید. این رویداد Dialogflow با اتمام جریان اشتراک روزانه به‌روزرسانی توسط کاربر فعال می‌شود، خواه در نهایت مشترک شود یا نه.
  4. در قسمت Fulfillment ، گزینه Enable webhook call for this intent را تغییر دهید.
  5. روی Save در بالای صفحه کلیک کنید.

b871c2bdadac8abc.png

تحقق را اجرا کنید

برای پیاده سازی تکمیل در وب هوک خود، مراحل زیر را انجام دهید:

بارگذاری وابستگی ها

b2f84ff91b0e1396.png در فایل index.js ، تابع require() را به‌روزرسانی کنید تا بسته RegisterUpdate را از بسته actions-on-google اضافه کنید، بنابراین واردات شما به شکل زیر است:

index.js

const {
  dialogflow,
  Suggestions,
  RegisterUpdate,
} = require('actions-on-google');

تراشه های پیشنهادی را به روز کنید

b2f84ff91b0e1396.png در فایل index.js ، یک ورودی DAILY به لیست عناوین تراشه پیشنهادی اضافه کنید، بنابراین تعریف Suggestion شما به این صورت است:

index.js

// Suggestion chip titles
const Suggestion = {
  HOURS: 'Ask about hours',
  CLASSES: 'Learn about classes',
  DAILY: 'Send daily reminders',
};

تکمیل را برای مقاصد جدید اضافه کنید

هنگامی که کاربر می‌گوید می‌خواهد مشترک شود، جریان اشتراک روزانه به‌روزرسانی‌ها را با تماس با Helper RegisterUpdate با هدف به‌روزرسانی ( فهرست کلاس ) و نوع ( DAILY ) شروع کنید. پس از پایان جریان اشتراک، Assistant رویداد actions_intent_REGISTER_UPDATE را با آرگومان status راه‌اندازی می‌کند که نشان می‌دهد آیا اشتراک موفق بوده یا خیر. پیشنهادهای پیگیری را به کاربر ارائه دهید که بسته به وضعیت اشتراک تغییر می کند.

b2f84ff91b0e1396.png در فایل index.js کد زیر را اضافه کنید:

index.js

// Start opt-in flow for daily updates
app.intent('Setup Updates', (conv) => {
  conv.ask(new RegisterUpdate({
    intent: 'Class List',
    frequency: 'DAILY',
  }));
});

// Confirm outcome of opt-in for daily updates
app.intent('Confirm Updates', (conv, params, registered) => {
  if (registered && registered.status === 'OK') {
     conv.ask(`Gotcha, I'll send you an update everyday with the ` +
     'list of classes. Can I help you with anything else?');
  } else {
    conv.ask(` I won't send you daily reminders. Can I help you with anything else?`);
  }
  if (conv.screen) {
    conv.ask(new Suggestions([Suggestion.HOURS, Suggestion.CLASSES]));
  }
});

پیشنهادهای جایگزین برای کاربر ارائه دهید

پاسخ لیست کلاس شما اشتراک به روز رسانی روزانه را در پایان ارائه می دهد، اما این مشکل ایجاد می کند. از آنجایی که وقتی کاربر روی اعلان به‌روزرسانی روزانه ضربه می‌زند، همین پاسخ نشان داده می‌شود، از آن‌ها خواسته می‌شود مشترک به‌روزرسانی‌های روزانه شوند، حتی اگر به‌تازگی از یک به‌روزرسانی دریافت شده باشند. چگونه می توانید کاربر را از اینکه فکر کند نیاز به اشتراک مجدد دارد جلوگیری کنید؟

خوشبختانه، آرگومان های شی conv شما شامل اطلاعاتی در مورد جایی است که کاربر مکالمه را از کجا شروع کرده است. می‌توانید آرگومان‌های conv را بررسی کنید تا ببینید آیا حاوی یک بخش UPDATES هستند که نشان می‌دهد کاربر مکالمه را از یک اعلان به‌روزرسانی روزانه آغاز کرده است یا خیر، و پاسخ را بر این اساس تغییر دهید. همچنین می‌توانید از این شاخه مکالمه استفاده کنید تا بلافاصله پس از ارائه لیست کلاس‌ها، گفتگو را ببندید، که از بهترین روش ما برای کوتاه نگه داشتن به‌روزرسانی روزانه پیروی می‌کند.

b2f84ff91b0e1396.png در فایل index.js کد زیر را جایگزین کنید:

index.js

// Class list intent handler
app.intent('Class List', (conv, {day}) => {
  if (!day) {
    day = DAYS[new Date().getDay()];
  }
  const classes =
  [...new Set(schedule.days[day].map((d) => `${d.name} at ${d.startTime}`))]
  .join(', ');
  const classesMessage =
  `On ${day} we offer the following classes: ${classes}. ` +
  `Can I help you with anything else?`;
  conv.ask(classesMessage);
  if (conv.screen) {
    conv.ask(new Suggestions([Suggestion.HOURS]));
  }
});

با این:

index.js

// Class list intent handler
app.intent('Class List', (conv, {day}) => {
  if (!day) {
    day = DAYS[new Date().getDay()];
  }
  const classes =
  [...new Set(schedule.days[day].map((d) => `${d.name} at ${d.startTime}`))]
  .join(', ');
  let classesMessage = `On ${day} we offer the following classes: ${classes}. `;
  // If the user started the conversation from the context of a daily update,
  // the conv's arguments will contain an 'UPDATES' section.
  let engagement = conv.arguments.get('UPDATES');
  // Check the conv arguments to tailor the conversation based on the context.
  if (engagement) {
    classesMessage += `Hope to see you soon at Action Gym!`;
    conv.close(classesMessage);
  } else {
    classesMessage += `Would you like me to send you daily reminders of upcoming classes, or can I help you with anything else?`;
    conv.ask(classesMessage);
    if (conv.screen) {
      conv.ask(new Suggestions([Suggestion.DAILY, Suggestion.HOURS]));
    };
  };
});

به روز رسانی های روزانه خود را آزمایش کنید

در ترمینال، دستور زیر را برای استقرار کد وب هوک به روز شده خود در Firebase اجرا کنید:

firebase deploy

برای آزمایش reprompt سفارشی خود در شبیه ساز Actions، این مراحل را دنبال کنید:

  1. در کنسول Actions، به Test بروید.
  2. Talk to my test app را در قسمت Input تایپ کنید و enter را فشار دهید.
  3. Learn about classes تایپ کرده و enter را فشار دهید. پاسخ Action شما اکنون باید ارسال یادآورهای روزانه را ارائه دهد.
  4. Send daily reminders تایپ کرده و اینتر را فشار دهید.
  5. زمانی را وارد کنید که می‌خواهید به‌روزرسانی را ببینید و اینتر را فشار دهید. برای اهداف آزمایشی، سعی کنید 3-5 دقیقه دیرتر از زمان فعلی پاسخ دهید.

83a15ecac8c71787.png

در دستگاه تلفن همراه خود، باید یک اعلان از دستیار در زمانی که برای به‌روزرسانی مشخص کرده‌اید، دریافت کنید. توجه داشته باشید که نمایش این اعلان ممکن است چند دقیقه طول بکشد. روی اعلان ضربه بزنید و باید مستقیماً به هدف فهرست کلاس در Assistant پیوند عمیق داده شود و لیستی از کلاس های آینده را به شما ارائه دهد:

8582482eafc67d5b.png

4. اعلان‌های فشاری را اضافه کنید

به‌عنوان گزینه دیگری برای جذب کاربران خارج از Action، می‌توانید با Action API تماس بگیرید تا اعلان‌های فشاری را برای کاربران ارسال کنید. برخلاف به‌روزرسانی‌های روزانه، این اعلان‌ها به‌طور خودکار توسط «دستیار» برنامه‌ریزی نمی‌شوند، بنابراین می‌توانید آن‌ها را به میل خود ارسال کنید.

در این مرحله، نحوه پیاده‌سازی اعلان‌های فشار را در Action خود با افزودن یک قصد لغو کلاس جدید و ارسال اعلان‌هایی به کاربرانی که به آنها در مورد لغو کلاس اطلاع می‌دهند، می‌آموزید. همچنین سه مؤلفه زیر را که برای ارسال اعلان‌ها لازم است تنظیم می‌کنید:

  • حساب Actions API - شما با ارسال یک درخواست POST به یک API اعلان‌ها را برای کاربر ارسال می‌کنید، بنابراین باید یک حساب سرویس و اعتبارنامه‌ها را برای ارتباط با این API تنظیم کنید.
  • راهنمای مجوز - برای دسترسی به شناسه کاربری مورد نیاز برای ارسال اعلان‌های فشاری، به اجازه کاربر نیاز دارید. در این مثال، از یک تابع کتابخانه کلاینت برای فراخوانی کمک کننده مجوز و درخواست این شناسه استفاده می کنید.
  • فضای ذخیره‌سازی - برای ارسال اعلان‌های فشاری به کاربر خارج از مکالمه، باید شناسه‌های کاربر را در جایی ذخیره کنید که بتوان آن را به میل خود فراخوانی کرد. در این مثال، شما یک پایگاه داده Firestore برای ذخیره اطلاعات برای هر کاربر راه اندازی می کنید.

پس از دنبال کردن این دستورالعمل ها، گفتگوی زیر را به مکالمه Action خود اضافه خواهید کرد:

7c9d4b633c547823.png

این چگونه کاربران را درگیر خواهد کرد؟

کاربران گوشی‌های هوشمند احتمالاً با اعلان‌های فشاری آشنا هستند که اطلاعات و به‌روزرسانی‌های خاص برنامه را ارائه می‌کنند. اعلان‌های فشاری روشی انعطاف‌پذیر برای دسترسی به کاربران در دستگاه‌های تلفن همراه خارج از Assistant هستند، مشروط بر اینکه به کاربران دلیل خوبی برای فعال کردن آنها ارائه شود. با به روز رسانی های روزانه، کاربران از قبل آگاه هستند که به صورت روزانه به آنها اطلاع داده می شود. با این حال، با استفاده از اعلان‌های فشاری، کاربران نمی‌دانند که آیا دریافت اعلان‌های نادر را انتخاب می‌کنند یا با چندین نوتیفیکیشن در روز آزار می‌دهند.

اعلان‌های فشاری می‌توانند ابزار تعامل مفیدی باشند، اما لزوماً نباید در هر Action گنجانده شوند. هنگام تصمیم‌گیری برای اضافه کردن اعلان‌های فشاری به یک اقدام، این نکات را در نظر بگیرید:

  • چند نمونه برنامه برای اعلان های فشاری خود برنامه ریزی کنید. اگر قصد دارید فقط یک اعلان فشاری در روز ارسال کنید، به جای آن از به روز رسانی های روزانه استفاده کنید.
  • مطمئن شوید که اعلان‌های فشاری شما هر بار که دریافت می‌شوند، اطلاعات مفیدی را ارائه می‌دهند. اعلان‌های شما همچنین می‌توانند به یکی از مقاصد Action شما پیوند عمیق داشته باشند، بنابراین مطمئن شوید که هدف مفید و مرتبط است.
  • هنگام درخواست از کاربر برای اشتراک در اعلان‌های فشار صریح باشید. آنها باید بدانند که با هر نوتیفیکیشن فشاری چه انتظاری دارند و در مورد اینکه اعلان‌ها چند وقت یکبار ارسال می‌شوند، ایده داشته باشند.

Actions API را فعال کنید

  1. کنسول Google Cloud را باز کنید و نام پروژه Actions خود را در منوی بازشو انتخاب کنید.

d015c1515b99e3db.png

  1. در منوی پیمایش ( ☰) ، به APIs & Services > Library بروید.
  2. Actions API را جستجو کنید و روی Enable کلیک کنید.

6d464f49c88e70b4.png

یک حساب کاربری ایجاد کنید

Action API به احراز هویت نیاز دارد، بنابراین باید یک حساب سرویس برای ارسال درخواست ایجاد کنید. برای ایجاد و نصب کلید حساب سرویس برای Action API مراحل زیر را دنبال کنید:

  1. در منوی پیمایش Google Cloud Console (☰) ، به APIs & Services > Credentials بروید.
  2. روی Create credentials > Service key account کلیک کنید.
  3. در منوی کشویی حساب سرویس، حساب سرویس جدید را انتخاب کنید.
  4. اطلاعات زیر را پر کنید:
  • نام حساب خدمات : حساب service-account
  • نقش : پروژه > مالک
  • شناسه حساب سرویس: service-account (همیشه با @<project_id>.iam.gserviceaccount.com دنبال می شود)
  • نوع کلید : JSON
  1. روی ایجاد کلیک کنید.
  2. فایل JSON دانلود شده را به پوشه /user-engagement-codelab/start/functions/ پروژه خود منتقل کنید.
  3. نام فایل JSON را به service-account.json تغییر دهید.

d9bd79d35691de3a.png

Firestore را فعال کنید

برای ارسال اعلان‌های خارج از مکالمه، به روشی برای ذخیره شناسه‌های کاربری نیاز دارید که بتوان از کد اعلان شما ارجاع داد. برای این مثال، ما از پایگاه داده Firestore برای ذخیره شناسه های کاربری کاربران مشترک استفاده می کنیم.

این مراحل را برای ایجاد یک پایگاه داده Firestore برای Action خود دنبال کنید:

  1. در کنسول Firebase ، نام پروژه Actions خود را انتخاب کنید.
  2. در پیمایش سمت چپ، به Develop > Database بروید و روی ایجاد پایگاه داده کلیک کنید.
  3. شروع در حالت تست را انتخاب کنید.
  4. روی Enable کلیک کنید.

6dfc386413954caa.png

Dialogflow را تنظیم کنید

این مراحل را در کنسول Dialogflow دنبال کنید تا جریان انتخابی اعلان‌های فشار ایجاد کنید:

از کاربر بخواهید مشترک شود

  1. یک هدف جدید برای مدیریت درخواست کاربر برای اشتراک در اعلان‌های فشار برای کلاس‌های لغو شده تنظیم کنید. در کنسول Dialogflow، روی دکمه + در کنار Intents در ناوبری سمت چپ کلیک کنید تا یک intent جدید ایجاد کنید.
  2. نام این intent Setup Push Notifications را بگذارید.
  3. در بخش عبارات آموزشی ، عبارات کاربری زیر را اضافه کنید:
  • Subscribe to notifications
  • Send notification
  • Notify me
  • Send class notifications
  • Cancelled notifications
  1. در قسمت Fulfillment ، گزینه Enable webhook call for this intent را تغییر دهید.
  2. روی Save در بالای صفحه کلیک کنید.

3d99bc41d0492552.png

تصمیم کاربر را مدیریت کنید

  1. یک هدف جدید برای رسیدگی به پاسخ کاربر به درخواست اشتراک اعلان‌های فشاری تنظیم کنید. برای ایجاد یک intent جدید، روی دکمه + در کنار Intents در ناوبری سمت چپ کلیک کنید.
  2. این هدف جدید را Confirm Push Notifications .
  3. در بخش رویدادها ، actions_intent_PERMISSION را اضافه کنید. این رویداد Dialogflow توسط کاربر که جریان اشتراک اعلان‌های فشاری را به پایان می‌رساند، آغاز می‌شود، خواه در نهایت مشترک شوند یا نه.
  4. در قسمت Fulfillment ، گزینه Enable webhook call for this intent را تغییر دهید.
  5. روی Save در بالای صفحه کلیک کنید.

d37f550c5e07cb73.png

اعلان فشار را مدیریت کنید

می‌توانید اعلان‌های فشاری خود را به یک هدف خاص پیوند دهید، بنابراین کاربرانی که روی اعلان فشار ضربه می‌زنند مستقیماً به آن هدف در Action شما پیوند عمیقی پیدا می‌کنند. در این مثال، یک هدف جدید برای اعلان‌های فشاری اضافه کنید که جزئیات مربوط به کلاس‌های لغو شده را ارائه می‌دهد.

این مراحل را دنبال کنید تا هدفی را اضافه کنید که با ضربه زدن کاربر به یک اعلان فشاری فعال می شود:

  1. در کنسول Dialogflow، روی دکمه + در کنار Intents در ناوبری سمت چپ کلیک کنید تا یک intent جدید ایجاد کنید.
  2. نام این Class Canceled کنید.
  3. در بخش عبارات آموزشی ، Cancelations را به عنوان عبارت کاربری اضافه کنید.
  4. در قسمت Fulfillment ، گزینه Enable webhook call for this intent را تغییر دهید.
  5. روی Save در بالای صفحه کلیک کنید.

940379556f559631.png

اعلان‌های آزمایشی را در اواسط مکالمه ارسال کنید

در تولید، شما باید یک اسکریپت جدا از کد اجرای Action خود داشته باشید که اعلان‌های فشاری را ارسال می‌کند. برای این مثال، یک intent ایجاد کنید که می توانید هنگام صحبت با Action خود، یک اعلان فشار ارسال کنید. این هدف فقط برای اهداف اشکال زدایی است. در عمل، اعلان‌های فشاری نباید توسط شما انجام شود یا به عنوان بخشی از مکالمه Action شما فعال شوند.

این مراحل را برای ایجاد یک هدف برای آزمایش اعلان‌های فشار دنبال کنید:

  1. برای اهداف آزمایش و اشکال زدایی، یک هدف جدید تنظیم کنید که به شما امکان می دهد اعلان های فشار را برای کاربران مشترک ارسال کنید. در کنسول Dialogflow، روی دکمه + در کنار Intents در ناوبری سمت چپ کلیک کنید تا یک intent جدید ایجاد کنید.
  2. این Test Notification قصد جدید را نامگذاری کنید.
  3. در بخش عبارات آموزشی ، Test notification را به عنوان عبارت کاربر اضافه کنید.
  4. در قسمت Fulfillment ، گزینه Enable webhook call for this intent را تغییر دهید.
  5. روی Save در بالای صفحه کلیک کنید.

6967f5a997643eb8.png

اعلان‌های فشاری را روشن کنید

برای فعال کردن اعلان‌های فشاری برای هدف لغو شده، این مراحل را دنبال کنید:

  1. در کنسول Dialogflow، به قسمت Integrations در نوار پیمایش بروید.
  2. در کارت دستیار Google ، روی تنظیمات ادغام کلیک کنید.
  3. اضافه کردن کلاس لغو شده به عنوان یک قصد فراخوان ضمنی . این مرحله برای اینکه Dialogflow تشخیص دهد که کاربران می‌توانند مکالمه شما را با هدف لغو کلاس (با ضربه زدن روی یک اعلان فشار) شروع کنند، ضروری است.
  4. روی Close کلیک کنید.

1ac725231ed279a1.png

  1. در کنسول Actions، روی تب Develop کلیک کنید و Actions را در نوار ناوبری سمت چپ انتخاب کنید.
  2. بر روی Class Canceled در لیست Actions کلیک کنید.
  3. در بخش تعامل کاربر ، گزینه Wid you like to send push notifications را تغییر دهید؟ گزینه.
  4. یک عنوان محتوای توصیفی تنظیم کنید که اعلان فشار را توصیف کند. متن این خواهد بود: "آیا مشکلی ندارد اگر اعلان‌های فشاری برای " ارسال کنم؟"، بنابراین مطمئن شوید که عنوان شما هم توصیفی است و هم وقتی با صدای بلند صحبت می‌کنید درست به نظر می‌رسد. برای این مثال، عنوان محتوا را روی class cancelations ها تنظیم کنید.
  5. روی Save در بالای صفحه کلیک کنید.

4304c7cd575f6de3.png

تحقق را اجرا کنید

برای پیاده سازی تکمیل در وب هوک خود، مراحل زیر را انجام دهید:

بارگذاری وابستگی ها

b2f84ff91b0e1396.png در فایل index.js ، تابع require() را به‌روزرسانی کنید تا بسته UpdatePermission را از بسته actions-on-google اضافه کنید، بنابراین واردات شما به شکل زیر است:

index.js

const {
  dialogflow,
  Suggestions,
  RegisterUpdate,
  UpdatePermission,
} = require('actions-on-google');

تراشه های پیشنهادی را به روز کنید

b2f84ff91b0e1396.png در فایل index.js ، یک ورودی NOTIFICATIONS را به لیست عناوین تراشه پیشنهادی اضافه کنید، بنابراین تعریف Suggestion شما به این صورت است:

index.js

// Suggestion chip titles
const Suggestion = {
  HOURS: 'Ask about hours',
  CLASSES: 'Learn about classes',
  DAILY: 'Send daily reminders',
  NOTIFICATIONS: 'Get notifications',
};

راه اندازی واردات جدید

برای اتصال به پایگاه داده Firestore خود، بسته firebase-admin را اضافه کنید و ثابت هایی را برای فیلدهای ذخیره شده در پایگاه داده اضافه کنید. همچنین، google-auth-library وارد کنید و بسته‌هایی را برای رسیدگی به احراز هویت و request به API Actionها درخواست کنید.

b2f84ff91b0e1396.png در فایل index.js کد زیر را به ایمپورت های خود اضافه کنید:

index.js

// Firebase admin import
const admin = require('firebase-admin');

// Initialize Firestore
admin.initializeApp();
const db = admin.firestore();

// Firestore constants
const FirestoreNames = {
 INTENT: 'intent',
 USER_ID: 'userId',
 USERS: 'users',
};

// Actions API authentication imports
const {auth} = require('google-auth-library');
const request = require('request');

پیشنهاد تنظیم اعلان‌های لغو کلاس

b2f84ff91b0e1396.png در فایل index.js کد زیر را جایگزین کنید:

index.js

// Class list intent handler
app.intent('Class List', (conv, {day}) => {
  if (!day) {
    day = DAYS[new Date().getDay()];
  }
  const classes =
  [...new Set(schedule.days[day].map((d) => `${d.name} at ${d.startTime}`))]
  .join(', ');
  let classesMessage = `On ${day} we offer the following classes: ${classes}. `;
  // If the user started the conversation from the context of a daily update,
  // the conv's arguments will contain an 'UPDATES' section.
  let engagement = conv.arguments.get('UPDATES');
  // Check the conv arguments to tailor the conversation based on the context.
  if (engagement) {
    classesMessage += `Hope to see you soon at Action Gym!`;
    conv.close(classesMessage);
  } else {
    classesMessage += `Would you like me to send you daily reminders of upcoming classes, or can I help you with anything else?`;
    conv.ask(classesMessage);
    if (conv.screen) {
      conv.ask(new Suggestions([Suggestion.DAILY, Suggestion.HOURS]));
    };
  };
});

با این:

index.js

// Class list intent handler
app.intent('Class List', (conv, {day}) => {
  if (!day) {
    day = DAYS[new Date().getDay()];
  }
  const classes =
  [...new Set(schedule.days[day].map((d) => `${d.name} at ${d.startTime}`))]
  .join(', ');
  let classesMessage = `On ${day} we offer the following classes: ${classes}. `;
  // If the user started the conversation from the context of a daily update,
  // the conv's arguments will contain an 'UPDATES' section.
  let engagement = conv.arguments.get('UPDATES');
  // Check the conv arguments to tailor the conversation based on the context.
  if (engagement) {
    classesMessage += `Hope to see you soon at Action Gym!`;
    conv.close(classesMessage);
  } else {
    classesMessage += `Would you like to receive daily reminders of upcoming classes, subscribe to notifications about cancelations, or can I help you with anything else?`;
    conv.ask(classesMessage);
    if (conv.screen) {
      conv.ask(new Suggestions([Suggestion.DAILY, Suggestion.NOTIFICATIONS,
Suggestion.HOURS]));
    };
  };
});

تکمیل را برای مقاصد جدید اضافه کنید

وقتی کاربر می‌گوید که می‌خواهد در اعلان‌های فشاری مشترک شود، با Helper UpdatePermission تماس بگیرید تا از کاربر اجازه درخواست کند. در صورت موفقیت آمیز بودن، آرگومان PERMISSION به آرگومان های شی conv اضافه می شود که می توانید آن را بررسی کنید تا مکالمه را محور قرار دهید.

هنگامی که اجازه کاربر را گرفتید، شناسه کاربری را از آرگومان های شی conv بگیرید و آن را در پایگاه داده خود ذخیره کنید. بعداً این شناسه کاربری را به Actions API ارسال خواهید کرد، به این ترتیب Assistant تعیین می‌کند که چه کسی اعلان را دریافت می‌کند.

در نهایت، برای هدف Class Canceled که با ضربه زدن روی اعلان فشار ایجاد می شود، تکمیل را اضافه کنید. در این مثال، پاسخ شما یک رشته نگهدارنده مکان است، اگرچه در نسخه آماده تولید این Action، اسکریپت اعلان شما اطلاعات پویا تری در مورد کلاس لغو شده ارائه می دهد.

b2f84ff91b0e1396.png در فایل index.js کد زیر را اضافه کنید:

index.js

// Call the User Information helper for permission to send push notifications
app.intent('Setup Push Notifications', (conv) => {
 conv.ask('Update permission for setting up push notifications');
 conv.ask(new UpdatePermission({intent: 'Class Canceled'}));
});

// Handle opt-in or rejection of push notifications
app.intent('Confirm Push Notifications', (conv) => {
 if (conv.arguments.get('PERMISSION')) {
   let userId = conv.arguments.get('UPDATES_USER_ID');
   if (!userId) {
     userId = conv.request.conversation.conversationId;
   }
   // Add the current conversation ID and the notification's
   // target intent to the Firestore database.
   return db.collection(FirestoreNames.USERS)
   .add({
     [FirestoreNames.INTENT]: 'Class Canceled',
     [FirestoreNames.USER_ID]: userId,
   })
   .then(() => {
     conv.ask(`Great, I'll notify you whenever there's a class cancelation. ` +
     'Can I help you with anything else?');
   });
 } else {
   conv.ask(`Okay, I won't send you notifications about class cancelations. ` +
     'Can I help you with anything else?');
 }
 if (conv.screen) {
    conv.ask(new Suggestions([Suggestion.CLASSES, Suggestion.HOURS]));
  }
});

// Intent triggered by tapping the push notification
app.intent('Class Canceled', (conv) => {
 conv.ask('Classname at classtime has been canceled.');
});

اعلان های تست را اضافه کنید

برای ارسال یک اعلان فشار به کاربر، یک درخواست POST را با شناسه کاربر، عنوان اعلان و هدف هدف به Action API ارسال کنید. در این مثال، راه‌اندازی هدف Test Notification از طریق پایگاه داده Firestore شما تکرار می‌شود و اعلان‌های فشاری را برای هر کاربری که مشترک اعلان‌ها است ارسال می‌کند.

به یاد داشته باشید که در این مثال، شما کدی را که اعلان فشار ارسال می‌کند در اجرای وب‌هوک خود وارد کرده و با فراخوانی یک هدف آزمایشی در مکالمه خود، آن کد را فعال می‌کند. در اقداماتی که قصد انتشار آنها را دارید، کد اعلان فشار شما باید در اسکریپتی جدا از اجرای شما وجود داشته باشد.

b2f84ff91b0e1396.png در فایل index.js کد زیر را اضافه کنید:

index.js

// Debug intent to trigger a test push notification
app.intent('Test Notification', (conv) => {
 // Use the Actions API to send a Google Assistant push notification.
 let client = auth.fromJSON(require('./service-account.json'));
 client.scopes = ['https://www.googleapis.com/auth/actions.fulfillment.conversation'];
 let notification = {
   userNotification: {
     title: 'Test Notification from Action Gym',
   },
   target: {},
 };
 client.authorize((err, tokens) => {
   if (err) {
     throw new Error(`Auth error: ${err}`);
   }
   // Iterate through Firestore and send push notifications to every user
   // who's currently opted in to canceled class notifications.
   db.collection(FirestoreNames.USERS)
       .where(FirestoreNames.INTENT, '==', 'Class Canceled')
       .get()
       .then((querySnapshot) => {
         querySnapshot.forEach((user) => {
           notification.target = {
             userId: user.get(FirestoreNames.USER_ID),
             intent: user.get(FirestoreNames.INTENT),
           };
           request.post('https://actions.googleapis.com/v2/conversations:send', {
             'auth': {
               'bearer': tokens.access_token,
             },
             'json': true,
             'body': {'customPushMessage': notification, 'isInSandbox': true},
           }, (err, httpResponse, body) => {
             if (err) {
               throw new Error(`API request error: ${err}`);
             }
             console.log(`${httpResponse.statusCode}: ` +
               `${httpResponse.statusMessage}`);
             console.log(JSON.stringify(body));
           });
         });
       })
       .catch((error) => {
         throw new Error(`Firestore query error: ${error}`);
       });
 });
 conv.ask('A notification has been sent to all subscribed users.');
});

اعلان‌های فشاری خود را آزمایش کنید

در ترمینال، دستور زیر را برای استقرار کد وب هوک به روز شده خود در Firebase اجرا کنید:

firebase deploy

برای آزمایش اعلان‌ها در شبیه‌ساز Actions، این مراحل را دنبال کنید:

  1. در کنسول Actions، به تب Test بروید.
  2. Talk to my test app را در قسمت Input تایپ کنید و enter را فشار دهید.
  3. Learn about classes تایپ کرده و enter را فشار دهید.
  4. Get notifications را تایپ کرده و enter را فشار دهید.
  5. اگر قبلاً مجوز Action خود را برای ارسال اعلان‌های فشار نداده‌اید، yes را تایپ کرده و enter را فشار دهید.
  6. yes را تایپ کرده و enter را فشار دهید. اکنون باید حساب Google شما در اعلان‌های فشاری برای این اقدام مشترک شود.

3a8704bdc0bcbb17.png

  1. no را تایپ کنید و برای خروج اینتر را فشار دهید.
  2. Talk to my test app را تایپ کنید و enter را فشار دهید تا مکالمه جدیدی شروع شود.
  3. Test notification را تایپ کرده و enter را فشار دهید.

634dfcb0be8dfdec.png

در عرض چند دقیقه باید اعلان فشاری دستیار "تست اعلان از Action Gym" را در دستگاه تلفن همراه خود دریافت کنید. با ضربه زدن روی این اعلان، شما را به هدف Class Canceled Action خود پیوند می دهد.

33cbde513c10122e.png

5. یک پیوند دستیار ایجاد کنید

تاکنون درباره ویژگی‌های تعامل صحبت کرده‌ایم که می‌توانید برای بازگرداندن کاربران به Action خود پیاده‌سازی کنید، اما این ویژگی‌ها بر اساس داشتن کاربرانی است که Action شما را کشف کرده و استفاده می‌کنند.

می‌توانید پیوند دستیار ایجاد کنید که کاربران دستگاه‌های تلفن همراه را مستقیماً به Action on Assistant شما پیوند می‌دهد. از آنجایی که پیوند Assistant یک لینک استاندارد است، می‌توانید آن را به یک وب‌سایت یا هر محتوای بازاریابی وب مانند وبلاگ یا پست رسانه‌های اجتماعی اضافه کنید.

در این مرحله، در مورد اینکه پیوند Assistant چیست، نحوه ایجاد یک پیوند برای هدف استقبال از Action و نحوه اضافه کردن آن به یک وب سایت ساده برای آزمایش یاد خواهید گرفت.

این چگونه کاربران را درگیر خواهد کرد؟

جذب کاربران به Action خود برای اولین بار می تواند چالش برانگیز باشد، به خصوص زمانی که آنها نیاز دارند به صراحت Action on Assistant شما را فراخوانی کنند. پیوند Assistant با دادن پیوند مستقیم به Action به کاربران، این اصطکاک را کاهش می دهد. وقتی کاربری پیوند دستیار شما را در دستگاهی که دارای دستیار فعال است دنبال می‌کند، مستقیماً به Action شما منتقل می‌شود. وقتی کاربری پیوند شما را در دستگاه غیر همراه یا هر دستگاه دیگری که از Assistant پشتیبانی نمی‌کند باز می‌کند، همچنان به فهرست فهرست راهنمای Actions شما منتقل می‌شود (اگر منتشر شده باشد) بنابراین پیوند همچنان می‌تواند Action شما را برای آن‌ها بازاریابی کند. کاربران

پیوندهای دستیار می‌توانند ابزار تعامل مفیدی باشند، بنابراین اگر قصد دارید Action خود را از طریق وب‌سایت یا رسانه‌های اجتماعی تبلیغ کنید، باید آن را ایجاد کنید. Just be aware of the following tips before you create and distribute an Assistant link:

  • Assistant links only work once your Action is published. While your project is in a draft state, the link will only work on your own devices. Anyone else will be taken to a 404 page in the Actions directory.
  • You can let users test an Assistant link prior to publishing by releasing your Action in an alpha or beta environment . Note that only users who participate in your alpha or beta will be able to test your Assistant link.
  • Make sure the destination intent for your Assistant link makes a good first impression with new users. Your welcome intent is the default destination for an Assistant link because it should already do a good job of introducing your Action

Follow these steps to create an Assistant link for the welcome intent:

  1. In the Actions console, click the Develop tab, and choose Actions in the left navigation bar.
  2. Click on actions.intent.MAIN under the Actions list.
  3. Under the Links section, toggle the Would you like enable a URL for this Action option.
  4. Set a descriptive Link title that describes your Action. Make your title a simple verb-noun pair that describes what the user can accomplish with your Action. For this example, set the Link title to learn about Action Gym .
  5. Copy the HTML snippet from the bottom of this page and save it for later.
  6. Click Save at the top of the page.

55341b8102b71eab.png

Deploy a test website

To test your Assistant link, you can use Firebase tools to deploy a test website alongside your fulfillment. We've already built a simple test website for this example, you just need to add your Assistant link.

Go to your fulfillment's /user-engagement-codelab-nodejs/start/public/ directory and open the index.html file in a text editor.

b2f84ff91b0e1396.png In the index.html file, paste your Assistant link's HTML snippet into the body element. The file should end up looking like the snippet below:

index.html

<body>
    <p>
     <a href="https://assistant.google.com/services/invoke/uid/000000efb5f2fd97">🅖 Ask my test app to learn about Action Gym
     </a>
    </p>
</body>

In the terminal, run the following command to deploy your test website to Firebase:

firebase deploy

Once the deploy command finishes running, take note of the Hosting URL in the output.

b01e8d322fb5d623.png

Go to this URL on your mobile device's web browser and you should see the Assistant link on your test website. Clicking this link on your mobile device should take you to your Action's welcome intent in Assistant.

599845d647f5b624.png

You can also try going to the Hosting URL on a desktop browser, which should take you to a 404 page in the Assistant directory since your Action isn't published.

6. Next steps

Congratulations!

You've now learned about the importance of user engagement when developing an Action, what user engagement features are available on the platform, and how to add each feature to an Action.

Additional learning resources

Explore these resources to learn more about user engagement for your Action:

Follow us on Twitter @ActionsOnGoogle to stay tuned to our latest announcements, and tweet to #AoGDevs to share what you have built!

Feedback survey

Before you go, please fill out this form to let us know how we're doing!