1. نظرة عامة
"المهام مع مساعد Google" هي منصة للمطوّرين تتيح لك إنشاء برامج لتوسيع وظائف مساعد Google، المساعد الشخصي الافتراضي من Google، على أكثر من مليار جهاز، بما في ذلك مكبّرات الصوت الذكية والهواتف والسيارات وأجهزة التلفزيون وسماعات الرأس وغيرها. يستعين المستخدمون بـ "مساعد Google" في المحادثة لإنجاز المهام، مثل شراء البقالة أو حجز رحلة. (للحصول على قائمة كاملة بما يمكن تنفيذه، يُرجى الاطّلاع على دليل الإجراءات). وبصفتك مطوِّرًا، يمكنك استخدام "المهام مع مساعد Google" لإنشاء تجارب محادثات ممتعة وفعّالة بين المستخدمين وخدمتك التابعة لجهة خارجية وإدارتها بسهولة.
هذه وحدة متقدّمة حول الترميز مخصّصة للقراء الذين لديهم خبرة سابقة في إنشاء "المهام مع مساعد Google". إذا لم تكن لديك أي خبرة سابقة في تطوير "المهام مع مساعد Google"، ننصحك بشدة بالاطّلاع على المنصة من خلال اتّباع الدروس التطبيقية حول الترميز ( المستوى 1 والمستوى 2 والمستوى 3). سترشدك هذه الوحدات المتقدمة إلى سلسلة من الميزات التي قد تساعدك في توسيع نطاق وظائف Action الخاص بك وتوسيع قاعدة جمهورك.
تتمثّل إحدى الطرق المهمة لقياس نجاح "الإجراء" في تفاعل المستخدم أو مدى فعالية هذا الإجراء في إعادة المستخدمين بعد تفاعلهم الأول. للمساعدة في تسهيل ذلك، يمكنك تنفيذ ميزات عديدة في الإجراء الخاص بك تمنح المستخدمين مسارات مرة أخرى إلى محادثتك.
يتناول الدرس التطبيقي حول الترميز ميزات تفاعل المستخدمين وأفضل الممارسات المتعلّقة باستخدام "المهام مع مساعد Google".
ما الذي ستقوم ببنائه
سيتم تحسين إحدى الميزات التي تم إنشاؤها بالفعل من خلال تمكين هذه الميزة من:
- يمكنك إرسال إشعار يومي إلى المستخدمين يمكنهم النقر عليه للتحدّث إلى فريق Action الخاص بك.
- إرسال إشعارات فورية إلى المستخدمين تتضمّن رابطًا يؤدي إلى الإجراء الخاص بك
- أنشِئ رابطًا ينقل المستخدمين إلى الإجراء الخاص بك من متصفّح ويب على الأجهزة الجوّالة.
المُعطيات
- ما هو تفاعل المستخدم ولماذا يُعتبر مهمًا لنجاح الإجراء؟
- كيفية تعديل "إجراء" لزيادة تفاعل المستخدمين
- ميزات تفاعل المستخدمين التي يجب استخدامها في أنواع الإجراءات المختلفة
- كيفية استخدام واجهة برمجة تطبيقات المهام لإرسال الإشعارات من خلال "مساعد Google"
المتطلبات
يجب أن تتوفّر لديك الأدوات التالية:
- محرِّر IDE/نص من اختيارك، مثل WebStorm أو Atom أو Sublime
- وحدة طرفية لتشغيل أوامر واجهة الأوامر مع تثبيت Node.js وnpm وgit
- متصفِّح ويب، مثل Google Chrome
- بيئة تطوير محلية باستخدام واجهة سطر أوامر Firebase
- جهاز جوّال (Android أو iOS) مزوّد بخدمة "مساعد Google" (يجب أن تكون مسجّلاً الدخول إلى "مساعد Google" باستخدام حساب Google نفسه الذي ستستخدمه لإنشاء هذا المشروع)
وننصح بشدة الإلمام باستخدام JavaScript (ES6) لفهم رمز الردّ التلقائي على الويب، وإن لم يكن ذلك مطلوبًا.
2. إعداد مشروعك
يوضِّح لك هذا القسم كيفية إضافة ميزات تفاعل المستخدمين إلى مهمّة مكتملة تم إنشاؤها مسبقًا.
فهم العيّنة
النموذج لهذا الدرس التطبيقي حول الترميز هو إجراء بسيط لصالة ألعاب رياضية خيالية اسمها "صالة ألعاب الحركة". يوفر الإجراء معلومات حول الصالة الرياضية، بما في ذلك قائمة بالفصول التي تتناوب كل يوم. وتتناسب هذه المهمة المفيدة مع جميع ميزات تفاعل المستخدمين لأنّ قائمة الصفوف بالتناوب تقدّم معلومات مفيدة مختلفة كل يوم.
يوضح المخطّط التالي مسار المحادثة لعيّنة Action Gym:
ستُجري تعديلات طفيفة على مربّع الحوار ليناسب ميزات التفاعل التي تضيفها بشكل أفضل. ومع ذلك، لن يتغير التصميم العام للمحادثة كثيرًا.
تنزيل ملفاتك الأساسية
شغِّل الأمر التالي لاستنساخ مستودع GitHub الخاص بالدرس التطبيقي حول الترميز:
git clone https://github.com/actions-on-google/user-engagement-codelab-nodejs
إعداد مشروعك ووكيلك
لإعداد مشروع "المهام" ووكيل Dialogflow، أكمِل الخطوات التالية:
- افتح وحدة تحكّم الإجراءات.
- انقر على مشروع جديد.
- اكتب اسم المشروع، مثل
engagement-codelab
. - انقر على إنشاء مشروع.
- بدلاً من اختيار فئة، انتقِل للأسفل وصولاً إلى القسم خيارات إضافية وانقر على بطاقة محادثة.
- انقر على إنشاء الإجراء لتوسيع الخيارات واختيار إضافة إجراءات.
- انقر على إضافة الإجراء الأول.
- في مربّع الحوار إنشاء إجراء، اختَر هدف مخصّص، ثم انقر على إنشاء لتشغيل وحدة تحكّم Dialogflow.
- في صفحة إنشاء الوكيل في وحدة تحكّم Dialogflow، انقر على إنشاء.
- انقر على (رمز الترس) في شريط التنقّل الأيمن.
- انقر على تصدير واستيراد، ثم على استعادة من ملف Zip.
- حمِّل ملف
agent.zip
من دليل/user-engagement-codelab-nodejs/start/
الذي نزّلته سابقًا. - اكتب
RESTORE
وانقر على استعادة. - انقر على تم.
نشر عملية توصيل الطلب
الآن وبعد أن أصبح مشروع الإجراءات ووكيل Dialogflow جاهزَين، يمكنك نشر ملف index.js
المحلي باستخدام واجهة سطر الأوامر لوظائف Firebase.
من الدليل /user-engagement-codelab-nodejs/start/functions/
لنسخ الملفات الأساسية، شغِّل الأوامر التالية:
firebase use <PROJECT_ID>
npm install
firebase deploy
بعد بضع دقائق، من المفترض أن يظهر لك "اكتمل النشر!"، ما يشير إلى أنّك نشرت الردّ التلقائي على الويب بنجاح على Firebase.
استرداد عنوان URL للنشر
يجب تزويد Dialogflow بعنوان URL لدالة السحابة الإلكترونية. لاسترداد عنوان URL هذا، اتبع الخطوات التالية:
- افتح وحدة تحكُّم Firebase.
- اختَر مشروع "المهام" من قائمة الخيارات.
- انتقِل إلى التطوير >. الدوال في شريط التنقل الأيمن. إذا طُلب منك "اختيار إعدادات مشاركة البيانات"، يمكنك تجاهل هذا الخيار بالنقر على إجراء ذلك لاحقًا.
- ضمن علامة التبويب لوحة البيانات، من المفترض أن يظهر لك إدخال حول "طريقة التنفيذ" من خلال عنوان URL ضمن المشغّل. حفظ عنوان URL هذا: عليك نسخه إلى Dialogflow في القسم التالي.
ضبط عنوان URL للردّ التلقائي على الويب في Dialogflow
عليك الآن تعديل وكيل Dialogflow لاستخدام الردّ التلقائي على الويب من أجل تنفيذ الطلب. لإجراء ذلك، اتّبع الخطوات التالية:
- افتح وحدة تحكُّم Dialogflow (يمكنك إغلاق وحدة تحكُّم Firebase إذا أردت ذلك).
- انقر على توصيل الطلب في شريط التنقّل الأيمن.
- فعِّل الردّ التلقائي على الويب.
- ألصِق عنوان URL الذي نسخته من لوحة بيانات Firebase إذا لم يظهر.
- انقر على حفظ.
التحقق من إعداد مشروعك بشكل صحيح
يجب أن يتمكن المستخدمون من استدعاء الإجراء الخاص بك للحصول على معلومات حول "صالة الألعاب الرياضية" التي تتضمّن ردًّا نصيًا غير قابل للتغيير يتضمّن ساعات العمل وردًّا نصيًا يسرد الجدول الزمني للصف لكل يوم من الأسبوع.
لاختبار المهمّة في "محاكي المهام"، اتّبِع الخطوات التالية:
- في لوحة التنقّل اليمنى في وحدة تحكّم Dialogflow، النقر على عمليات الدمج > مساعد Google
- تأكَّد من تفعيل تغييرات المعاينة التلقائية وانقر على اختبار لتعديل مشروع "الإجراءات".
- يُحمِّل محاكي الإجراءات مشروع "المهام". لاختبار الإجراء، اكتب
Talk to my test app
في حقل الإدخال، ثم اضغط على Enter. - من المفترض أن يظهر لك رد ترحيبًا بك في Action Gym. لمواصلة المحادثة مع العملاء، يُرجى الحرص على أن يقدّم الإجراء الذي تقدّمه ردًا على كل إدخال.
3- إضافة الاشتراكات في آخر الأخبار يوميًا
هناك طريقة شائعة لجذب المستخدمين وهي تقديم المعلومات لهم عندما تكون أكثر فائدة. ويمكن تحقيق ذلك من خلال منح المستخدمين خيار الاشتراك في التحديثات اليومية لغرض معيّن، ما يرسل إليهم إشعارًا من "مساعد Google" يتضمّن رابطًا مباشرًا إلى عملية تحقيق الهدف.
في هذه الخطوة، ستتعرف على الاشتراكات المتعلقة بالتحديث اليومي وتضيفها إلى هدف قائمة الصفوف في الإجراء الخاص بك. بعد اتّباع هذه التعليمات، ستبدو محادثة الإجراء على النحو التالي:
كيف سيجذب ذلك المستخدمين؟
قد يكون مستخدمو الهواتف الذكية على دراية بالإشعارات الفورية التي توفِّر معلومات وتحديثات خاصة بالتطبيق. إنّ الاشتراكات المتعلقة بالتحديثات اليومية هي طريقة بسيطة للوصول إلى المستخدمين على الأجهزة الجوّالة خارج "مساعد Google"، بشرط أن يكون الغرض من إرسال التحديثات مستمرًا في تقديم قيمة للمستخدم بشكل يومي.
يمكن أن تكون التحديثات اليومية أداة مفيدة للتفاعل ولكن يجب ألا يتم تضمينها بالضرورة في كل "إجراء". ننصحك باتّباع هذه النصائح عند تحديد ما إذا كنت تريد إضافة اشتراكات التعديلات اليومية إلى أحد الإجراءات:
- تأكَّد من أنّ التحديثات اليومية ستؤدي إلى عرض معلومات مختلفة ومفيدة للمستخدم كل يوم. إذا كان النقر على تحديث يومي يؤدي إلى ظهور الطلب نفسه في كل مرة، سيُلغي المستخدم اشتراكه بعد بضعة أيام.
- احرص على أن يكون مربّع الحوار مناسبًا للمستخدم إذا انتقل مباشرةً إلى هدف التحديث اليومي. لن يبدأ المستخدم بالضرورة من بداية المحادثة، لذلك لا ينبغي أن يكون له سياق كبير.
- أظهِر للمستخدم فائدة الإجراء قبل مطالبته بالاشتراك في التحديثات اليومية. يجب أن يفكر المستخدم "أريد هذا المحتوى كل يوم" عندما يتوفر لهم خيار الاشتراك
- لا تربك المستخدم باقتراحات متكررة للاشتراك. يمكنك تقديم اشتراك في التحديثات اليومية مباشرةً بعد أن تُظهِر للمستخدم الاشتراك، وتجنَّب إزعاجه بشأن هذا الاشتراك في مكان آخر.
- احرِص على أن تكون المحادثة قصيرة بعد أن يبدأ إجراء التحديث. يجب أن تتكون معظم التحديثات اليومية من رد واحد فقط ثم تُغلق بدون الحاجة إلى إدخال من المستخدم.
تفعيل المعلومات اليومية
يمكن إضافة الاشتراكات في التحديثات اليومية إلى هدف الترحيب الذي يضع المستخدم في بداية محادثتك، أو نية أكثر تحديدًا لربطه بصفحة معيّنة في مكان ما ضمن المحادثة. بالنسبة إلى هذا الدرس التطبيقي حول الترميز، يكون الغرض من قائمة الصفوف هو الأكثر منطقية لأنّ الحوار سيتغيّر كل يوم، وقد يجد المستخدمون أنّه من المفيد تذكير المستخدمين بالدورات التدريبية المتوفّرة.
اتّبِع الخطوات التالية لتفعيل التعديلات اليومية لغرض قائمة الصفوف:
- في وحدة تحكّم "الإجراءات"، انقر على علامة التبويب تطوير، واختَر الإجراءات في شريط التنقّل الأيمن.
- انقر على قائمة الصفوف في قائمة الإجراءات.
- ضمن قسم تفاعل المستخدمين، فعِّل الخيار هل تريد عرض تعديلات يومية للمستخدمين.
- اضبط عنوان محتوى وصفيًا يصف التعديل اليومي. سيكون السياق على النحو التالي: "في أي وقت تريد أن أرسل <عنوان المحتوى> اليومي"، لذا يجب التأكّد من أنّ العنوان وصفي وصوتي صحيح عند قوله بصوت عالٍ. في هذا المثال، اضبط عنوان المحتوى على
list of upcoming Action Gym classes
. - انقر على حفظ في أعلى الصفحة.
إعداد Dialogflow
اتّبِع الخطوات التالية في وحدة تحكّم Dialogflow لإنشاء عناصر لتدفق الاشتراك في التحديث اليومي:
طلب الاشتراك من المستخدم
- إعداد هدف جديد للتعامل مع المستخدمين الذين يطلبون الاشتراك في الإشعارات اليومية. في وحدة تحكُّم Dialogflow، انقر على الزر + بجانب أهداف في شريط التنقّل الأيمن لإنشاء هدف جديد.
- أدخِل اسمًا لهذا الغرض الجديد
Setup Updates
. - ضمن قسم عبارات التدريب، أضِف تعابير المستخدم التالية:
Send daily reminders
Reminder
Remind me
Updates
Upcoming classes
- ضمن قسم التنفيذ، فعِّل الخيار تفعيل الرد التلقائي على الويب لهذا الغرض.
- انقر على حفظ في أعلى الصفحة.
التعامل مع قرار المستخدم
- عليك إعداد هدف جديد للتعامل مع ردّ المستخدم على طلب الاشتراك في التحديثات اليومية. انقر على الزر + بجانب الأهداف في شريط التنقّل الأيمن لإنشاء هدف جديد.
- أدخِل اسمًا لهذا الغرض الجديد
Confirm Updates
. - ضمن قسم الأحداث، أضِف
actions_intent_REGISTER_UPDATE
. سيتم تشغيل حدث Dialogflow هذا بواسطة المستخدم الذي أنهى عملية الاشتراك في التحديث اليومي، سواء انتهى به الأمر إلى الاشتراك أم لا. - ضمن قسم التنفيذ، فعِّل الخيار تفعيل الرد التلقائي على الويب لهذا الغرض.
- انقر على حفظ في أعلى الصفحة.
تنفيذ عملية التنفيذ
لتنفيذ التنفيذ في الردّ التلقائي على الويب، أكمِل الخطوات التالية:
تحميل الموارد التابعة
في ملف index.js
، عدِّل الدالة require()
لإضافة حزمة RegisterUpdate
من حزمة actions-on-google
، لكي تظهر عمليات الاستيراد على النحو التالي:
index.js
const {
dialogflow,
Suggestions,
RegisterUpdate,
} = require('actions-on-google');
تعديل شرائح الاقتراحات
في ملف index.js
، أضِف الإدخال DAILY
إلى قائمة عناوين شرائح الاقتراحات، لكي يظهر تعريف Suggestion
على النحو التالي:
index.js
// Suggestion chip titles
const Suggestion = {
HOURS: 'Ask about hours',
CLASSES: 'Learn about classes',
DAILY: 'Send daily reminders',
};
إضافة متطلبات إلى العملاء الجدد
عندما يطلب المستخدم الاشتراك، يمكنك بدء عملية الاشتراك في التحديثات اليومية من خلال الاتصال بمساعد RegisterUpdate
مع توضيح الغرض المستهدف من التحديث (قائمة الفئات) والنوع (DAILY
). بعد انتهاء مسار الاشتراك، يشغّل "مساعد Google" الحدث actions_intent_REGISTER_UPDATE
مع استخدام وسيطة status
تصف ما إذا كان الاشتراك ناجحًا أم لا. اعرض رسائل متابعة للمستخدم تتغير بناءً على حالة الاشتراك.
في ملف 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
، ما يشير إلى أنّ المستخدم بدأ المحادثة من إشعار تعديل يومي، وتغيير الردّ وفقًا لذلك. يمكنك أيضًا استخدام فرع المحادثة هذا لإغلاق مربّع الحوار مباشرةً بعد تقديم قائمة الصفوف، والذي يتبع أفضل ممارساتنا المتمثلة في إبقاء الخبر اليومي قصيرًا.
في الملف 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
لاختبار الطلب المخصّص في "محاكي الإجراءات"، اتّبِع الخطوات التالية:
- في "وحدة تحكّم المهام"، انتقِل إلى اختبار.
- اكتب
Talk to my test app
في حقل الإدخال واضغط على مفتاح enter. - اكتب
Learn about classes
واضغط على Enter. من المفترض أن يعرض رد الإجراء الآن إرسال تذكيرات يومية. - اكتب
Send daily reminders
واضغط على Enter. - اكتب الوقت الذي تريد فيه الاطّلاع على التحديث واضغط على Enter. لأغراض الاختبار، حاول الرد خلال 3 إلى 5 دقائق بعد الوقت الحالي.
على جهازك الجوّال، من المفترَض أن تتلقّى إشعارًا من "مساعد Google" في الوقت الذي حدّدته للحصول على التحديثات. تجدر الإشارة إلى أنّ ظهور هذا الإشعار قد يستغرق بضع دقائق. انقر على الإشعار وسيظهر رابط لصفحة معيّنة في "مساعد Google" يؤدي مباشرةً إلى قائمة الصفوف الدراسية، ليعرض لك قائمة بالصفوف القادمة:
4. إضافة إشعارات فورية
كخيار آخر للتفاعل مع المستخدمين خارج نطاق الإجراء الخاص بك، يمكنك طلب واجهة برمجة تطبيقات المهام لإرسال الإشعارات الفورية إلى المستخدمين. على عكس الإشعارات اليومية، لا يضبط "مساعد Google" هذه الإشعارات تلقائيًا، ما يتيح لك إرسالها حسب رغبتك.
في هذه الخطوة، ستتعرّف على كيفية تنفيذ الإشعارات الفورية في الإجراء الخاص بك عن طريق إضافة هدف جديد تم إلغاء الصف وإرسال إشعارات إلى المستخدمين لإبلاغهم بإلغاء أحد الصفوف. وستتمكن أيضًا من إعداد المكونات الثلاثة التالية اللازمة لإرسال الإشعارات:
- حساب واجهة برمجة تطبيقات الإجراءات: يمكنك إرسال إشعارات إلى المستخدم من خلال إرسال طلب
POST
إلى واجهة برمجة تطبيقات، لذا عليك إعداد حساب خدمة وبيانات اعتماد للتفاعل مع واجهة برمجة التطبيقات هذه. - مساعد الأذونات: تحتاج إلى إذن المستخدم للوصول إلى رقم تعريف المستخدم المطلوب لإرسال إشعارات فورية إليه. في هذا المثال، ستستخدم دالة مكتبة البرامج لطلب مساعد الإذن وطلب رقم التعريف هذا.
- مساحة التخزين: لإرسال إشعارات فورية إلى مستخدم خارج نطاق إحدى المحادثات، عليك تخزين أرقام تعريف المستخدمين في مكان يمكن استرداده حسب الحاجة. في هذا المثال، ستقوم بإعداد قاعدة بيانات Firestore لتخزين المعلومات لكل مستخدم.
بعد اتّباع هذه التعليمات، ستضيف مربع الحوار التالي إلى محادثة الإجراء الخاص بك:
كيف سيجذب ذلك المستخدمين؟
قد يكون مستخدمو الهواتف الذكية على دراية بالإشعارات الفورية التي توفِّر معلومات وتحديثات خاصة بالتطبيق. الإشعارات الفورية هي طريقة مرنة للوصول إلى مستخدمي الأجهزة الجوّالة غير التابعة لخدمة "مساعد Google" على الأجهزة الجوّالة، بشرط تقديم سبب وجيه لتفعيل هذه الإشعارات. بفضل التعديلات اليومية، يدرك المستخدمون أنّه سيتم إرسال إشعارات إليهم بشكل يومي. مع ذلك، لن يعرف المستخدمون ما إذا كانوا قد فعّلوا خيار تلقّي الإشعارات غير المتكررة، أو أنّهم سيتلقّون إشعارات متعددة في اليوم الواحد.
يمكن أن تكون الإشعارات الفورية أداة مفيدة للتفاعل، ولكن لا يجب تضمينها بالضرورة في كل "إجراء". ننصحك باتّباع هذه النصائح عند تحديد ما إذا كنت تريد إضافة إشعارات فورية إلى أحد الإجراءات:
- خطط لبعض نماذج الجداول الزمنية للإشعارات الفورية. إذا كنت تخطط لإرسال إشعار فوري واحد فقط في اليوم، يمكنك استخدام الأخبار اليومية بدلاً من ذلك.
- تأكَّد من أنّ الإشعارات الفورية ستقدّم معلومات مفيدة في كل مرة يتم تلقّيها. ويمكن أن تؤدي الإشعارات أيضًا إلى إنشاء رابط لصفحة في التطبيق تؤدي إلى أحد أغراض الإجراء، لذا يجب الحرص على أن يكون هذا الغرض مفيدًا وذا صلة.
- كن صريحًا عند مطالبة المستخدم بالاشتراك في ميزة الإشعارات الفورية. ويجب أن يفهموا ما يمكن توقّعه مع كل إشعار فوري وأن يكون لديهم فكرة عن عدد مرات إرسال الإشعارات.
تفعيل واجهة برمجة تطبيقات الإجراءات
- افتح Google Cloud Console واختَر اسم مشروع "المهام" من القائمة المنسدلة.
- في قائمة التنقّل (☰)، انتقِل إلى واجهات برمجة التطبيقات الخدمات > "المكتبة".
- ابحث عن Actions API، ثم انقر على تفعيل.
إنشاء حساب خدمة
تتطلّب واجهة برمجة التطبيقات للإجراءات المصادقة، لذا عليك إنشاء حساب خدمة لإرسال الطلبات. اتّبِع الخطوات التالية لإنشاء مفتاح حساب خدمة وتثبيته لواجهة برمجة تطبيقات الإجراءات:
- في قائمة التنقّل في Google Cloud Console (☰)، انتقِل إلى واجهات برمجة التطبيقات الخدمات > بيانات الاعتماد:
- انقر على إنشاء بيانات اعتماد > مفتاح حساب الخدمة
- في القائمة المنسدلة حساب الخدمة، اختَر حساب خدمة جديد.
- املأ المعلومات التالية:
- اسم حساب الخدمة:
service-account
- الدور: المشروع > صاحب الحساب
- رقم تعريف حساب الخدمة:
service-account
(دائمًا ما يكون متبوعًا بـ @<project_id>.iam.gserviceaccount.com) - نوع المفتاح: JSON
- انقر على إنشاء.
- انقل ملف JSON الذي تم تنزيله إلى دليل /user-engagement-codelab/start/functions/ الخاص بمشروعك.
- أعِد تسمية ملف JSON إلى
service-account.json
.
تفعيل Firestore
لإرسال إشعارات خارج المحادثة، تحتاج إلى طريقة لتخزين أرقام تعريف المستخدمين التي يمكن الرجوع إليها من رمز الإشعار. في هذا المثال، نستخدم قاعدة بيانات Firestore لتخزين أرقام تعريف المستخدمين للمستخدمين المشتركين.
اتبع الخطوات التالية لإنشاء قاعدة بيانات Firestore لـ Action:
- في وحدة تحكُّم Firebase، اختَر اسم مشروع المهام.
- في شريط التنقّل الأيمن، انتقِل إلى تطوير >. قاعدة بيانات وانقر على إنشاء قاعدة بيانات.
- اختَر البدء في وضع الاختبار.
- انقر على تفعيل.
إعداد Dialogflow
اتّبِع الخطوات التالية في وحدة التحكّم في Dialogflow لإنشاء مسار الموافقة على الإشعارات الفورية:
طلب الاشتراك من المستخدم
- قم بإعداد هدف جديد للتعامل مع المستخدم الذي يطلب الاشتراك في الإشعارات الفورية للصفوف التي تم إلغاؤها. في وحدة تحكُّم Dialogflow، انقر على الزر + بجانب أهداف في شريط التنقّل الأيمن لإنشاء هدف جديد.
- أدخِل اسمًا لهذا الغرض الجديد
Setup Push Notifications
. - ضمن قسم عبارات التدريب، أضِف تعابير المستخدم التالية:
Subscribe to notifications
Send notification
Notify me
Send class notifications
Cancelled notifications
- ضمن قسم التنفيذ، فعِّل الخيار تفعيل الرد التلقائي على الويب لهذا الغرض.
- انقر على حفظ في أعلى الصفحة.
التعامل مع قرار المستخدم
- يمكنك إعداد هدف جديد للتعامل مع ردّ المستخدم على مطالبة الاشتراك في الإشعارات الفورية. انقر على الزر + بجانب الأهداف في شريط التنقّل الأيمن لإنشاء هدف جديد.
- أدخِل اسمًا لهذا الغرض الجديد
Confirm Push Notifications
. - ضمن قسم الأحداث، أضِف
actions_intent_PERMISSION
. سيتم تشغيل حدث Dialogflow هذا بواسطة المستخدم الذي يُنهي عملية الاشتراك في الإشعارات الفورية، سواء انتهى به الأمر إلى الاشتراك أم لا. - ضمن قسم التنفيذ، فعِّل الخيار تفعيل الرد التلقائي على الويب لهذا الغرض.
- انقر على حفظ في أعلى الصفحة.
التعامل مع الإشعارات الفورية
يمكنك ربط الإشعارات الفورية بهدف محدّد كي يتمكّن المستخدمون الذين ينقرون على هذا الإشعار من الوصول مباشرةً إلى هذا الغرض في الإجراء الخاص بك. في هذا المثال، أضِف هدفًا جديدًا للإشعارات الفورية يقدّم تفاصيل حول الصفوف التي تم إلغاؤها.
اتّبِع الخطوات التالية لإضافة نية إلى أن ينقر المستخدم على إشعار فوري.
- في وحدة تحكُّم Dialogflow، انقر على الزر + بجانب أهداف في شريط التنقّل الأيمن لإنشاء هدف جديد.
- أدخِل اسمًا لهذا الغرض الجديد
Class Canceled
. - ضمن قسم عبارات التدريب، أضِف
Cancelations
كتعبير مستخدم. - ضمن قسم التنفيذ، فعِّل الخيار تفعيل الرد التلقائي على الويب لهذا الغرض.
- انقر على حفظ في أعلى الصفحة.
إرسال إشعارات تجريبية في أثناء المحادثة
في مرحلة الإنتاج، يجب أن يكون لديك نص برمجي منفصل عن رمز تنفيذ الإجراء يرسل إشعارات فورية. في هذا المثال، أنشِئ هدفًا يمكنك استدعاؤه لإرسال إشعار فوري أثناء التحدّث إلى الإجراء الخاص بك. وهذا الغرض مخصّص لأغراض تصحيح الأخطاء فقط. من الناحية العملية، يجب ألّا يتم التعامل مع الإشعارات الفورية خلال عملية التنفيذ أو تشغيلها بأي شكل آخر كجزء من محادثة الإجراء.
اتّبِع الخطوات التالية لإنشاء هدف لاختبار الإشعارات الفورية:
- لأغراض الاختبار وتصحيح الأخطاء، يمكنك إعداد هدف جديد يتيح لك إرسال إشعارات فورية إلى المستخدمين المشتركين. في وحدة تحكُّم Dialogflow، انقر على الزر + بجانب أهداف في شريط التنقّل الأيمن لإنشاء هدف جديد.
- أدخِل اسمًا لهذا الغرض الجديد
Test Notification
. - ضمن قسم عبارات التدريب، أضِف
Test notification
كتعبير مستخدم. - ضمن قسم التنفيذ، فعِّل الخيار تفعيل الرد التلقائي على الويب لهذا الغرض.
- انقر على حفظ في أعلى الصفحة.
تفعيل الإشعارات الفورية
اتّبِع الخطوات التالية لتفعيل الإشعارات الفورية لهدف تم إلغاء الصف:
- في وحدة تحكّم Dialogflow، انتقِل إلى قسم عمليات الدمج في شريط التنقل.
- في بطاقة مساعد Google، انقر على إعدادات الدمج.
- أضِف تم إلغاء الصف على أنّه استدعاء ضمني. تُعدّ هذه الخطوة ضرورية لكي يتعرّف Dialogflow على أنّه يمكن للمستخدمين بدء محادثتك بنيّة إلغاء الصف (من خلال النقر على إشعار فوري).
- انقر على إغلاق.
- في وحدة تحكّم "الإجراءات"، انقر على علامة التبويب تطوير، واختَر الإجراءات في شريط التنقّل الأيمن.
- انقر على تم إلغاء الصف ضمن قائمة الإجراءات.
- ضمن قسم تفاعل المستخدمين، فعِّل الخيار هل تريد إرسال إشعارات فورية؟.
- حدِّد عنوان محتوى وصفيًا يصف الإشعارات الفورية. سيكون السياق على النحو التالي: "هل يمكنني إرسال إشعارات فورية بشأن <عنوان المحتوى>؟"، لذا يجب التأكّد من أنّ العنوان وصفي وصحيح عند قوله بصوت عالٍ. في هذا المثال، اضبط عنوان المحتوى على
class cancelations
. - انقر على حفظ في أعلى الصفحة.
تنفيذ عملية التنفيذ
لتنفيذ التنفيذ في الردّ التلقائي على الويب، أكمِل الخطوات التالية:
تحميل الموارد التابعة
في ملف index.js
، عدِّل الدالة require()
لإضافة حزمة UpdatePermission
من حزمة actions-on-google
، لكي تظهر عمليات الاستيراد على النحو التالي:
index.js
const {
dialogflow,
Suggestions,
RegisterUpdate,
UpdatePermission,
} = require('actions-on-google');
تعديل شرائح الاقتراحات
في ملف 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
للتعامل مع المصادقة والطلبات إلى واجهة برمجة تطبيقات الإجراءات.
في ملف 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');
اقتراح إعداد إشعارات إلغاء الصفوف
في الملف 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]));
};
};
});
إضافة متطلبات إلى العملاء الجدد
عندما يطلب المستخدم الاشتراك في خدمة تلقّي إشعارات فورية، اتّصِل بمساعد تطبيق "UpdatePermission
" لطلب إذن من المستخدم. إذا نجحت هذه المحاولة، ستتم إضافة الوسيطة PERMISSION
إلى وسيطات الكائن conv
التي يمكنك التحقّق منها لتغيير تركيز المحادثة.
بعد الحصول على إذن المستخدم، يمكنك الحصول على رقم تعريف المستخدم من وسيطات العنصر conv
وحفظه في قاعدة البيانات. سترسل لاحقًا رقم تعريف المستخدم هذا إلى واجهة برمجة تطبيقات الإجراءات، وهي الطريقة التي يحدّد بها "مساعد Google" المستخدم الذي يتلقّى الإشعار.
أخيرًا، أضِف عملية تنفيذ لهدف Class Canceled
الذي يتم تشغيله من خلال النقر على الإشعار الفوري. في هذا المثال، يكون ردك عبارة عن سلسلة عنصر نائب، ولكن في إصدار جاهز للإنتاج من هذا الإجراء، سيوفر النص البرمجي للإشعار المزيد من المعلومات الديناميكية حول الفئة التي تم إلغاؤها.
في ملف 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
إلى واجهة برمجة تطبيقات الإجراءات مع رقم تعريف المستخدم وعنوان الإشعار والقصد المستهدف. في هذا المثال، سيؤدي تفعيل الغرض من الإشعار التجريبي إلى التكرار من خلال قاعدة بيانات Firestore وإرسال إشعارات فورية إلى كل مستخدم اشترك في الإشعارات.
تذكر، في هذا المثال، أنك تُضمِّن الرمز الذي يُرسِل الإشعار الفوري في تنفيذ الرد التلقائي على الويب وتُشغِّل هذا الرمز عن طريق استدعاء هدف تجريبي في محادثتك. في الإجراءات التي تريد نشرها، يجب أن يتوفّر رمز الإشعارات الفورية في نص برمجي منفصل عن تنفيذ الإجراء.
في ملف 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
لاختبار الإشعارات في محاكي الإجراءات، اتبع الخطوات التالية:
- في وحدة تحكّم المهام، انتقِل إلى علامة التبويب اختبار.
- اكتب
Talk to my test app
في حقل الإدخال واضغط على مفتاح enter. - اكتب
Learn about classes
واضغط على Enter. - اكتب
Get notifications
واضغط على Enter. - إذا لم يسبق لك منح إذن الإجراء لإرسال إشعارات فورية، اكتب
yes
واضغط على Enter. - اكتب
yes
واضغط على Enter. من المفترَض أن يكون حسابك على Google مشتركًا في خدمة تلقّي الإشعارات الفورية بشأن هذا الإجراء.
- اكتب
no
واضغط على Enter للخروج. - اكتب
Talk to my test app
واضغط على Enter لبدء محادثة جديدة. - اكتب
Test notification
واضغط على Enter.
من المفترَض أن تتلقّى خلال بضع دقائق "إشعار تجريبي من صالة ألعاب رياضية". إرسال إشعارات فورية من "مساعد Google" على جهازك الجوّال سيؤدي النقر على هذا الإشعار إلى ربطك بالغرض تم إلغاء الصف من الإجراء الخاص بك.
5- إنشاء رابط "مساعد Google"
لقد ناقشنا حتى الآن ميزات التفاعل التي يمكنك تطبيقها لتشجيع المستخدمين على العودة إلى الإجراء الخاص بك، ولكن تلك الميزات تعتمد على توفُّر مستخدمين يكتشفون الإجراء الخاص بك ويستخدمونه.
يمكنك إنشاء رابط "مساعد Google" لربط المستخدمين على الأجهزة الجوّالة مباشرةً بخدمة "المهام مع مساعد Google". بما أنّ رابط "مساعد Google" هو رابط تشعّبي عادي، يمكنك إضافته إلى موقع إلكتروني أو أيّ مواد تسويقية على الإنترنت، مثل مدوّنة أو منشور على وسائل التواصل الاجتماعي.
في هذه الخطوة، ستتعرف على رابط "مساعد Google" وكيفية إنشاء رابط للنية الترحيبية في الإجراء وكيفية إضافته إلى موقع إلكتروني بسيط لاختباره.
كيف سيجذب ذلك المستخدمين؟
قد يشكّل جذب المستخدمين إلى المهمّة الخاصة بك للمرة الأولى تحديًا كبيرًا، خاصةً عندما يحتاجون إلى استدعاء الإجراء الخاص بك بشكل صريح على "مساعد Google". يساعد الرابط المؤدّي إلى "مساعد Google" في التخفيف من هذه الأعباء من خلال منح المستخدمين رابطًا مباشرًا إلى الإجراء الخاص بك. عندما يتّبع المستخدم رابط "مساعد Google" على جهاز مزوّد بخدمة "مساعد Google"، يتم توجيهه مباشرةً إلى الإجراء الخاص بك. عندما يفتح أحد المستخدمين الرابط الخاص بك على جهاز غير جوّال أو على أي جهاز آخر غير متوافق مع "مساعد Google"، سيستمر نقله إلى بطاقة بيانات نشاطك التجاري في دليل "الإجراءات" (إذا كان قد تم نشره) كي يتمكّن الرابط من تسويق الإجراء الخاص بك لهؤلاء المستخدمين.
قد تكون روابط "مساعد Google" أداة مفيدة للتفاعل، لذلك يجب إنشاء رابط إذا كنت تنوي الإعلان عن الإجراء الخاص بك من خلال موقعك الإلكتروني أو وسائل التواصل الاجتماعي. يُرجى الانتباه إلى النصائح التالية قبل إنشاء رابط "مساعد Google" وتوزيعه:
- لا تعمل روابط "مساعد Google" إلّا بعد نشر الإجراء الخاص بك. عندما يكون مشروعك في حالة مسودة، لن يعمل الرابط إلا على أجهزتك الخاصة. وسيتم توجيه أي مستخدم آخر إلى صفحة 404 في دليل الإجراءات.
- يمكنك السماح للمستخدمين باختبار رابط "مساعد Google" قبل النشر من خلال طرح الإجراء الخاص بك في بيئة إصدار أولي أو تجريبي. يُرجى العِلم أنّ إمكانية اختبار رابط "مساعد Google" ستكون متاحة فقط للمستخدمين المشاركين في الإصدار الأولي أو الإصدار التجريبي.
- تأكَّد من أنّ الهدف المقصود لرابط "مساعد Google" يترك انطباعًا أوّليًا جيدًا لدى المستخدمين الجدد. نيّة الترحيب بك هي الوجهة التلقائية لرابط "مساعد Google" لأنّه من المفترض أن يكون مفيدًا في تقديم الإجراء الخاص بك.
تفعيل روابط "مساعد Google"
اتّبِع الخطوات التالية لإنشاء رابط "مساعد Google" في رسالة الترحيب:
- في وحدة تحكّم "الإجراءات"، انقر على علامة التبويب التطوير، ثمّ اختَر الإجراءات في شريط التنقّل الأيمن.
- انقر على actions.intent.MAIN ضمن قائمة الإجراءات.
- ضمن القسم الروابط، فعِّل الخيار هل تريد تفعيل عنوان URL لهذا الإجراء؟
- اضبط عنوانًا للرابط وصفيًا يصف الإجراء المطلوب. اجعل العنوان زوجًا بسيطًا من أسماء الفعل يصف ما يمكن للمستخدم تحقيقه باستخدام الإجراء الخاص بك. في هذا المثال، اضبط عنوان الرابط على
learn about Action Gym
. - انسخ مقتطف HTML من أسفل هذه الصفحة واحفظه لوقت لاحق.
- انقر على حفظ في أعلى الصفحة.
نشر موقع إلكتروني تجريبي
لاختبار رابط "مساعد Google"، يمكنك استخدام أدوات Firebase لنشر موقع إلكتروني تجريبي إلى جانب عملية التنفيذ. لقد أنشأنا موقعًا إلكترونيًا تجريبيًا بسيطًا لهذا المثال، وما عليك سوى إضافة رابط "مساعد Google".
انتقِل إلى دليل /user-engagement-codelab-nodejs/start/public/
لطريقة التنفيذ وافتح ملف index.html
في محرِّر نصوص.
في ملف index.html
، الصِق مقتطف HTML لرابط "مساعد Google" في العنصر الأساسي. يُفترض أن يظهر الملف في نهاية المطاف مثل المقتطف أدناه:
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>
اختبار رابط "مساعد Google"
في الوحدة الطرفية، شغِّل الأمر التالي لنشر الموقع الإلكتروني التجريبي على Firebase:
firebase deploy
بعد انتهاء تشغيل أمر النشر، يُرجى تدوين عنوان URL للاستضافة في الناتج.
انتقِل إلى عنوان URL هذا على متصفّح الويب على جهازك الجوّال ومن المفترض أن يظهر رابط "مساعد Google" على الموقع الإلكتروني التجريبي. من المفترض أن يؤدي النقر على هذا الرابط على جهازك الجوّال إلى توجيهك إلى رسالة الترحيب الخاصة بالإجراء في "مساعد Google".
يمكنك أيضًا محاولة الانتقال إلى عنوان URL للاستضافة على متصفّح متوافق مع أجهزة الكمبيوتر المكتبي، ومن المفترض أن ينقلك هذا العنوان إلى صفحة 404 في دليل "مساعد Google" لأنّ الإجراء الخاص بك لم يتم نشره.
6- الخطوات التالية
تهانينا!
لقد تعرّفت الآن على أهمية تفاعل المستخدمين عند تطوير "الإجراء"، بالإضافة إلى ميزات تفاعل المستخدمين المتوفرة على النظام الأساسي وكيفية إضافة كل ميزة إلى "الإجراء".
مصادر التعلُّم الإضافية
يمكنك الاطّلاع على هذه المراجع لمعرفة مزيد من المعلومات حول تفاعل المستخدمين مع الإجراء الخاص بك:
- تفاعل المستخدمين، مستندات روابط "مساعد Google": المستندات الرسمية حول "المهام مع مساعد Google" المتعلقة بالميزات التي تمت مناقشتها في هذا الدرس التطبيقي حول الترميز وتفاعل المستخدمين بشكلٍ عام.
- إحصاءات حول الاحتفاظ بالمستخدِمين: مستندات لميزة الإحصاءات في "وحدة تحكّم الإجراءات" تعرض معدّل الحفاظ على المستخدِمين في الإجراء المنشور
- إرشادات تصميم المحادثات: أفضل الممارسات والإرشادات المتعلقة بكيفية تصميم ميزات تفاعل المستخدمين.
- مستودع "المهام مع مساعد Google" على GitHub: نموذج الرموز البرمجية والمكتبات.
- r/GoogleAssistantDev: منتدى Reddit الرسمي للمطوّرين الذين يستخدمون "مساعد Google"
يمكنك متابعتنا على Twitter @ActionsOnGoogle لمعرفة آخر الأخبار، كما يمكنك نشر تغريدة على #AoGDevs لمشاركة ما أنجزته.
استطلاع لجمع الملاحظات
قبل المغادرة، يُرجى ملء هذا النموذج لإعلامنا بمستوى أدائنا.