التفاعل مع المستخدمين باستخدام ميزة "المهام مع مساعد Google"
لمحة عن هذا الدرس التطبيقي حول الترميز
1. نظرة عامة
"المهام مع مساعد Google" هي منصّة لمطوّري البرامج تتيح لك إنشاء برامج لتوسيع وظائف مساعد Google ومساعد Google الشخصي على أكثر من مليار جهاز، بما في ذلك مكبّرات الصوت الذكية والهواتف والسيارات وأجهزة التلفزيون وسماعات الرأس وغيرها. يتفاعل المستخدمون مع "مساعد Google" أثناء إجراء محادثات لإنجاز المهام، مثل شراء البقالة أو حجز رحلة. (للحصول على قائمة كاملة بكل ما يمكن تنفيذه، راجع دليل الإجراءات.) بصفتك مطوّر برامج، يمكنك استخدام "المهام مع مساعد Google" لإنشاء تجارب محادثة ممتعة وممتعة بين المستخدمين والخدمة التابعة لجهة خارجية وإدارتها.
هذه وحدة الدروس التطبيقية المتقدّمة المخصّصة للقرّاء الذين لديهم بعض الخبرة في إنشاء المهام في "مساعد Google". إذا لم يكن لديك أي تجربة سابقة في مجال التطوير باستخدام "المهام مع مساعد Google"، ننصحك بشدة بالتعرّف على المنصة من خلال اتّباع دروس الترميز التمهيدية (المستوى 1 والمستوى 2 والمستوى 3). سترشدك هذه الوحدات المتقدّمة إلى سلسلة من الميزات التي يمكن أن تساعدك على توسيع وظائف "الإجراءات" وزيادة جمهورك.
إحدى الطرق المهمة لقياس نجاح "الإجراء" هي "تفاعل المستخدمين" أو مدى فعالية "الإجراء" في جذب المستخدمين مرة أخرى بعد تفاعلهم الأول. للمساعدة في ذلك، يمكنك تنفيذ العديد من الميزات في "الإجراء" التي تتيح للمستخدمين مسارات للعودة إلى محادثتك.
يتناول هذا الدرس التطبيقي ميزات التفاعل مع المستخدمين وأفضل الممارسات المتعلّقة ببرنامج "المهام مع مساعد Google".
العناصر التي سيتم إنشاؤها
ستعمل على تحسين ميزة سبق إنشاؤها من خلال تفعيلها لما يلي:
- أرسِل تحديثًا يوميًا إلى المستخدمين يمكنهم النقر عليه للتحدّث إلى الإجراء الذي تنفيذه.
- إرسال إشعارات فورية إلى المستخدمين تتضمن روابط تؤدي إلى الإجراء الذي تتّخذه
- إنشاء رابط ينقل المستخدمين إلى الإجراء من متصفح الويب على الأجهزة الجوّالة
ما ستتعرَّف عليه
- ما هو تفاعل المستخدمين وسبب أهمية ذلك في نجاح الإجراءات؟
- كيفية تعديل إجراء لزيادة تفاعل المستخدم
- ميزات تفاعل المستخدمين المطلوب استخدامها في أنواع الإجراءات المختلفة
- كيفية استخدام واجهة برمجة تطبيقات المهام لإرسال الإشعارات من خلال "مساعد Google"
الأشياء التي تحتاج إليها
يجب أن تتوفّر لديك الأدوات التالية:
- محرِّر IDE/Text من اختيارك، مثل WebStorm أو Atom أو Sublime
- محطة طرفية لتشغيل أوامر أوامر أوامر الخادم مع تثبيت Node.js وnpm وgit
- متصفح ويب، مثل Google Chrome
- بيئة تطوير محلية باستخدام واجهة سطر أوامر Firebase
- جهاز جوّال (Android أو iOS) مزوّد بخدمة "مساعد Google" (يجب تسجيل الدخول إلى "مساعد Google" باستخدام حساب Google نفسه الذي ستستخدمه لإنشاء هذا المشروع)
ويجب أيضًا أن أتعرّف على JavaScript (ES6) بشدة لفهم رمز الردّ التلقائي على الويب، حتى لو لم يكن ذلك مطلوبًا.
2. إعداد المشروع
يعرض لك هذا القسم كيفية إضافة ميزات تفاعل المستخدمين إلى إجراء مكتمل سابق.
فهم النموذج
عيّنة من هذا الدرس التطبيقي التطبيقي هي إجراء بسيط في صالة رياضية خيالية تُعرف باسم "صالة الألعاب الرياضية&&الحركة" يقدّم التطبيق معلومات عن صالة الألعاب الرياضية، بما في ذلك قائمة بالصفوف التي يتم تدويرها كل يوم. ومن بين الإجراءات المفيدة، مثل هذا المرشح الجيد لجميع ميزات تفاعل المستخدم، نظرًا لأن قائمة الصفوف بالتناوب تقدّم معلومات مفيدة مختلفة يوميًا.
يوضح الرسم البياني التالي مسار المحادثة في صالة الألعاب الرياضية للإجراءات:
وستُجري تعديلات بسيطة على مربع الحوار لتلائم ميزات التفاعل التي تضيفها بشكل أفضل. ومع ذلك، لن يتغير التصميم العام للمحادثة بشكل كبير.
تنزيل ملفاتك الأساسية
شغِّل الأمر التالي لإنشاء نسخة طبق الأصل من مستودع 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.
- اختَر مشروع الإجراءات من قائمة الخيارات.
- انتقِل إلى تطوير &الوظائف على شريط التنقل الأيمن. إذا طُلب منك 1؛اختيار إعدادات مشاركة البيانات&، يمكنك تجاهل هذا الخيار بالنقر على إجراء ذلك لاحقًا.
- ضمن علامة التبويب لوحة البيانات، من المفترَض أن يظهر لك إدخال لـ"fulfillment;quot; مع عنوان URL ضمن المشغّل. احفظ عنوان URL هذا، ستحتاج إلى نسخه إلى Dialogflow في القسم التالي.
ضبط عنوان URL للردّ التلقائي على الويب في Dialogflow
عليك الآن تعديل وكيل Dialogflow لاستخدام الردّ التلقائي على الويب لتلبية الطلبات. لإجراء هذا، اتبع الخطوات التالية:
- افتح وحدة تحكُّم Dialogflow (يمكنك إغلاق وحدة تحكُّم Firebase إذا كنت تريد ذلك).
- انقر على توصيل الطلب في شريط التنقّل الأيمن.
- فعِّل الردّ التلقائي على الويب.
- ألصِق عنوان URL الذي نسخته من لوحة بيانات Firebase إذا لم يظهر من قبل.
- يُرجى النقر على حفظ.
التحقّق من إعداد مشروعك بشكلٍ صحيح
يجب أن يتمكّن المستخدمون من استدعاء Action للحصول على معلومات عن صالة ألعاب رياضية، بما في ذلك استجابة نصية مشفّرة تتضمن ساعات عمل واستجابة نصية تسرد الجدول الزمني للصف لكل يوم من الأسبوع.
لاختبار الإجراء في محاكي الإجراءات:
- في شريط التنقل الأيمن بوحدة تحكم Dialogflow، انقر على Integrations > مساعد Google.
- تأكد من تفعيل تغييرات المعاينة التلقائية وانقر على اختبار لتحديث مشروع الإجراءات.
- يحمّل محاكي الإجراءات مشروع "الإجراءات". لاختبار الإجراء، اكتب
Talk to my test app
في حقل الإدخال واضغط على Enter. - من المفترض أن ترى ردًا للترحيب بك في صالة ألعاب الحركة. حاوِل اتّباع رسائل المطالبة لمواصلة المحادثة مع التأكّد من أنّ الطلب يلقى ردًّا على كل إدخال.
3. إضافة اشتراكات التحديث اليومية
ومن الطرق الشائعة لجذب المستخدمين تقديم المعلومات إليهم عندما تكون مفيدة للغاية. ويمكن تحقيق ذلك من خلال منح المستخدمين خيار الاشتراك في التحديثات اليومية لهدف، مما يؤدي إلى إرسال إشعار إلى "مساعد Google" يؤدي مباشرةً إلى اكتمال هذا الهدف.
في هذه الخطوة، ستتعرّف على اشتراكات التحديث اليومية وتضيفها إلى هدف قائمة الصفوف ضمن "الإجراء". بعد اتّباع هذه التعليمات، ستبدو محادثتك في الرسم البياني التالي:
وكيف سيجذب هذا المستخدمين؟
ومن المحتمل أن يكون مستخدمو الهواتف الذكية على دراية بالإشعارات الفورية التي توفّر معلومات ومعلومات محدّدة عن التطبيق. تُعدّ اشتراكات التحديث اليومية طريقة بسيطة للوصول إلى المستخدمين على الأجهزة الجوّالة خارج "مساعد Google"، بشرط أن يكون الغرض من إرسال التحديثات هو تقديم قيمة للمستخدم بشكل يومي.
قد تكون التحديثات اليومية أداة فعّالة للتفاعل، ولكن يجب عدم دمجها بالضرورة في كل إجراء. يمكنك أخذ النصائح التالية في الاعتبار عند تحديد ما إذا كنت تريد إضافة اشتراكات التحديث اليومي إلى الإجراء:
- تأكد من أن التحديثات اليومية ستؤدي إلى رؤية المستخدم لمعلومات مختلفة ومفيدة كل يوم. في حال أدى النقر على تعديل يومي إلى ظهور رسالة المطالبة نفسها في كل مرة، من المحتمل أن يلغي المستخدم الاشتراك بعد يومين.
- تأكّد من أن مربع الحوار مفيد للمستخدم في حال الانتقال مباشرة إلى قصدك اليومي. لن يبدأ المستخدم بالضرورة من بداية المحادثة، لذلك ينبغي ألا يكون له الكثير من السياق.
- أخبِر المستخدم بمزايا الإجراء قبل أن يطلب منه الاشتراك في التحديثات اليومية. يجب أن يفكر المستخدم في &أريد عرض هذا المحتوى يوميًا وما مِن خيار للاشتراك.
- لا تربك المستخدم بالاقتراحات المتكررة للاشتراك. وفِّر اشتراكًا في التحديثات اليومية بعد إظهار محتوى الاشتراك للمستخدم مباشرةً، وتجنّب إزعاجه في مكان آخر.
- إبقاء المحادثة قصيرة بعد تشغيل نية التحديث يجب أن تتألّف معظم التحديثات اليومية من رد واحد فقط ثم يتم إغلاقها بدون الحاجة إلى إدخال المستخدم.
تفعيل التحديثات اليومية
يمكن إضافة اشتراكات التحديث اليومي إلى الهدف الترحيبي الذي يضع المستخدم في بداية محادثتك، أو بشكل أكثر تحديدًا لربطه بصفحة في موضع ما ضمن المحادثة. بالنسبة إلى هذا الدرس التطبيقي حول الترميز، يكون الغرض من قائمة الصفوف هو الأنسب، لأن الحوار سيتغيّر كل يوم، وقد يجد المستخدمون أنه من المفيد أن يتم تذكيرهم بالصفوف الدراسية المتاحة.
اتّبِع الخطوات التالية لتفعيل التعديلات اليومية لهدف قائمة الصفوف:
- في وحدة تحكم الإجراءات، انقر على علامة التبويب التطوير، واختَر الإجراءات في شريط التنقل الأيمن.
- انقر على قائمة الصفوف ضمن قائمة الإجراءات.
- ضمن قسم تفاعل المستخدمين، بدِّل خيار هل تريد تقديم تحديثات يومية للمستخدمين.
- يمكنك ضبط عنوان محتوى وصفي يصف التعديل اليومي. يجب أن يكون السياق على النحو التالي: ما الوقت الذي تريد مني أن أرسل فيه اقتباسك اليومي؛ في هذا المثال، اضبط عنوان المحتوى على
list of upcoming Action Gym classes
. - انقر على حفظ في أعلى الصفحة.
إعداد Dialogflow
اتّبِع الخطوات التالية في وحدة تحكّم Dialogflow لإنشاء إجراءات لعملية الاشتراك في التحديث اليومي:
مطالبة المستخدم بالاشتراك
- يمكنك إعداد نية جديدة للتعامل مع المستخدم الذي يطلب الاشتراك في التحديثات اليومية. في وحدة التحكّم في Dialogflow، انقر على الزر + بجانب Intents في شريط التنقّل الأيمن لإنشاء هدف جديد.
- اختَر اسمًا جديدًا لهذا الهدف:
Setup Updates
. - ضمن قسم عبارات التدريب، أضِف تعبيرات المستخدم التالية:
Send daily reminders
Reminder
Remind me
Updates
Upcoming classes
- ضمن قسم توصيل الطلب، بدِّل خيار تفعيل استدعاء الرد التلقائي على الويب لهذا الهدف.
- انقر على حفظ في أعلى الصفحة.
التعامل مع قرار المستخدم
- يمكنك إعداد نيّة جديدة للتعامل مع استجابة المستخدم إلى رسالة مطالبة بالاشتراك اليومية. انقر على الزر + بجانب Intent في شريط التنقّل الأيمن لإنشاء هدف جديد.
- اختَر اسمًا جديدًا لهذا الهدف:
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. إضافة الإشعارات الفورية
كخيار آخر لجذب المستخدمين خارج Action، يمكنك استدعاء واجهة برمجة تطبيقات المهام لإرسال إشعارات فورية إلى المستخدمين. وعلى عكس التحديثات اليومية، لا تتم جدولة هذه الإشعارات تلقائيًا من خلال "مساعد Google" بحيث يمكنك إرسالها وقتما تشاء.
في هذه الخطوة، ستتعرّف على كيفية تنفيذ الإشعارات الفورية في المهمّة من خلال إضافة هدف جديد تم إلغاء الصف وإرسال إشعارات إلى المستخدمين الذين يُبلغونهم بإلغاء الصف. عليك أيضًا إعداد المكوّنات الثلاثة التالية اللازمة لإرسال الإشعارات:
- حساب واجهة برمجة تطبيقات الإجراءات - يتم إرسال إشعارات إلى المستخدم من خلال إرسال طلب
POST
إلى واجهة برمجة تطبيقات، لذا عليك إعداد حساب خدمة وبيانات اعتماد للواجهة مع واجهة برمجة التطبيقات هذه. - مساعد الأذونات - تحتاج إلى إذن المستخدم للوصول إلى رقم تعريف المستخدم اللازم لإرسال إشعارات فورية إليه. في هذا المثال، ستستخدم وظيفة مكتبة مكتبة لاستدعاء مساعد الأذونات وطلب رقم التعريف هذا.
- التخزين - لإرسال إشعارات فورية إلى مستخدم خارج المحادثة، عليك تخزين معرّفات المستخدمين في مكان ما يمكن استرجاعه متى شئت. في هذا المثال، عليك إعداد قاعدة بيانات Firestore لتخزين المعلومات لكل مستخدم.
بعد اتّباع هذه التعليمات، ستضيف مربع الحوار التالي إلى محادثة "الإجراء":
وكيف سيجذب هذا المستخدمين؟
ومن المحتمل أن يكون مستخدمو الهواتف الذكية على دراية بالإشعارات الفورية التي توفّر معلومات ومعلومات محدّدة عن التطبيق. الإشعارات الفورية هي طريقة مرنة للوصول إلى المستخدمين على الأجهزة الجوّالة خارج "مساعد Google"، بشرط أن يتم منحهم سببًا وجيهًا لتفعيلها. يعرف المستخدمون أنّهم سيتلقّون إشعارات يومية استنادًا إلى التحديثات اليومية. ومع ذلك، من خلال الإشعارات الفورية، لا يعرف المستخدمون ما إذا كانوا يوافقون على تلقّي الإشعارات أو لن يتم تلقيها من خلال عدة إشعارات في اليوم.
يمكن أن تكون الإشعارات الفورية أداة تفاعل مفيدة، ولكن يجب عدم دمجها بالضرورة في كل إجراء. يمكنك أخذ النصائح التالية في الاعتبار عند تحديد ما إذا كنت تريد إضافة إشعارات فورية إلى الإجراء:
- ضع بعض الأمثلة على الجداول الزمنية لإشعارات الدفع. إذا كنت تنوي إرسال إشعار واحد فقط في اليوم، ننصحك باستخدام التحديثات اليومية بدلاً من ذلك.
- تأكّد من أن الإشعارات الفورية ستوفّر معلومات مفيدة في كل مرة يتم فيها تلقّي الإشعارات. يمكن أيضًا أن تتضمّن إشعاراتك رابطًا لصفحة في التطبيق لأحد نوايا الإجراء الخاصة بك، لذا تأكّد من أنّ الهدف من المراجعة مفيد وملائم.
- كن واضحًا عند مطالبة المستخدم بالاشتراك في الإشعارات الفورية. يجب أن يفهم المستخدمون ما يمكن أن يتوقعه كل إشعار فوري، وأن يكون لديهم فكرة عن عدد مرات إرسال الإشعارات.
تفعيل واجهة برمجة تطبيقات المهام
- افتح Google Cloud Console واختَر اسم مشروع "الإجراءات" في القائمة المنسدلة.
- في قائمة التنقل (☰)، انتقِل إلى APIs & Services > Library.
- ابحث عن واجهة برمجة تطبيقات الإجراءات، وانقر على تفعيل.
إنشاء حساب خدمة
تتطلّب واجهة برمجة تطبيقات المهام مصادقة، لذا عليك إنشاء حساب خدمة لإرسال الطلبات. اتبع الخطوات التالية لإنشاء مفتاح حساب خدمة وتثبيته لواجهة برمجة تطبيقات المهام:
- في قائمة التنقّل في Google Cloud Console (☰)، انتقِل إلى APIs & Services > Credentials (بيانات الاعتماد).
- انقر على إنشاء بيانات الاعتماد >؛ مفتاح حساب الخدمة.
- في القائمة المنسدلة حساب الخدمة، اختَر حساب خدمة جديد.
- املأ المعلومات التالية:
- اسم حساب الخدمة:
service-account
- الدور: المشروع >؛ المالك
- معرّف حساب الخدمة:
service-account
(متبوعًا دائمًا بـ @<project_id>.iam.gserviceaccount.com) - نوع المفتاح: JSON
- انقر على إنشاء.
- انقل ملف JSON الذي تم تنزيله إلى الدليل /user-engagement-codelab/start/Functions/ في مشروعك.
- أعِد تسمية ملف JSON إلى
service-account.json
.
تفعيل Firestore
لإرسال إشعارات خارج المحادثة، تحتاج إلى طريقة لتخزين أرقام تعريف المستخدمين التي يمكن الرجوع إليها من رمز الإشعار. في هذا المثال، نستخدم قاعدة بيانات Firestore لتخزين أرقام تعريف المستخدمين للمستخدمين المشتركين.
اتبع الخطوات التالية لإنشاء قاعدة بيانات Firestore للإجراء:
- ضمن وحدة تحكُّم Firebase، اختَر اسم مشروع "المهام".
- في شريط التنقل الأيمن، انتقِل إلى تطوير >؛ قاعدة بيانات وانقر على إنشاء قاعدة بيانات.
- انقر على البدء في وضع الاختبار.
- انقر على تفعيل.
إعداد Dialogflow
يُرجى اتّباع الخطوات التالية في وحدة تحكُّم Dialogflow لإنشاء مسار تفعيل الإشعارات الفورية:
مطالبة المستخدم بالاشتراك
- عليك إعداد نية جديدة للتعامل مع المستخدم الذي يطلب الاشتراك في ميزة الإشعارات الفورية للصفوف التي تم إلغاؤها. في وحدة التحكّم في Dialogflow، انقر على الزر + بجانب Intents في شريط التنقّل الأيمن لإنشاء هدف جديد.
- اختَر اسمًا جديدًا لهذا الهدف:
Setup Push Notifications
. - ضمن قسم عبارات التدريب، أضِف تعبيرات المستخدم التالية:
Subscribe to notifications
Send notification
Notify me
Send class notifications
Cancelled notifications
- ضمن قسم توصيل الطلب، بدِّل خيار تفعيل استدعاء الرد التلقائي على الويب لهذا الهدف.
- انقر على حفظ في أعلى الصفحة.
التعامل مع قرار المستخدم
- عليك إعداد نية جديدة للتعامل مع استجابة المستخدم إلى رسالة مطالبة بالاشتراك في الإشعارات الفورية. انقر على الزر + بجانب Intent في شريط التنقّل الأيمن لإنشاء هدف جديد.
- اختَر اسمًا جديدًا لهذا الهدف:
Confirm Push Notifications
. - ضمن القسم الأحداث، أضف
actions_intent_PERMISSION
. سيتم تشغيل حدث Dialogflow من قِبل المستخدم الذي ينهي عملية الاشتراك في الإشعارات الفورية، سواء كان قد انتهى به الأمر أم لا. - ضمن قسم توصيل الطلب، بدِّل خيار تفعيل استدعاء الرد التلقائي على الويب لهذا الهدف.
- انقر على حفظ في أعلى الصفحة.
معالجة الإشعارات الفورية
يمكنك ربط الإشعارات الفورية بهدف محدد، بحيث يتم ربط المستخدمين الذين ينقرون على الإشعارات الفورية مباشرةً بهذا القصد في الإجراء. في هذا المثال، أضِف هدفًا جديدًا للإشعارات الفورية التي تقدم تفاصيل حول الصفوف التي تم إلغاؤها.
اتّبِع الخطوات التالية لإضافة هدف إلى تفعيل المستخدم من خلال النقر على الإشعارات الفورية:
- في وحدة التحكّم في Dialogflow، انقر على الزر + بجانب Intents في شريط التنقّل الأيمن لإنشاء هدف جديد.
- اختَر اسمًا جديدًا لهذا الهدف:
Class Canceled
. - ضمن قسم عبارات التدريب، أضِف
Cancelations
على أنه تعبير المستخدم. - ضمن قسم توصيل الطلب، بدِّل خيار تفعيل استدعاء الرد التلقائي على الويب لهذا الهدف.
- انقر على حفظ في أعلى الصفحة.
إرسال إشعارات الاختبار في منتصف المحادثة
في مرحلة الإنتاج، يجب أن يكون لديك نص برمجي منفصل عن رمز تنفيذ الإجراءات الذي يرسل الإشعارات الفورية. في هذا المثال، أنشِئ هدفًا يمكنك استدعاءه لإرسال إشعار فوري أثناء التحدّث إلى "الإجراء". هذا الهدف هو فقط لأغراض تصحيح الأخطاء، ومن الناحية العملية، يجب عدم معالجة الإشعارات الفورية من خلال توصيل الطلب أو تشغيله كجزء من محادثة "الإجراء".
اتّبِع الخطوات التالية لإنشاء نية لاختبار الإشعارات الفورية:
- لأغراض الاختبار وتصحيح الأخطاء، يمكنك إعداد هدف جديد يسمح لك بإرسال إشعارات فورية إلى المستخدمين المشتركين. في وحدة التحكّم في Dialogflow، انقر على الزر + بجانب Intents في شريط التنقّل الأيمن لإنشاء هدف جديد.
- اختَر اسمًا جديدًا لهذا الهدف:
Test Notification
. - ضمن قسم عبارات التدريب، أضِف
Test notification
على أنه تعبير المستخدم. - ضمن قسم توصيل الطلب، بدِّل خيار تفعيل استدعاء الرد التلقائي على الويب لهذا الهدف.
- انقر على حفظ في أعلى الصفحة.
تفعيل الإشعارات الفورية
اتّبِع الخطوات التالية لتفعيل الإشعارات الفورية لغرض تم إلغاء الصف:
- في وحدة تحكُّم Dialogflow، انتقِل إلى عمليات الدمج في شريط التنقل.
- في بطاقة مساعد Google، انقر على إعدادات الدمج.
- أضِف إلغاء الفئة كهدف استدعاء ضمني. وتُعدّ هذه الخطوة ضرورية لكي يتمكّن Dialogflow من التعرُّف على أنه يمكن للمستخدمين بدء محادثتك بهدف تم إلغاء الصف (بالنقر على إشعار فوري).
- انقر على إغلاق.
- في وحدة تحكم الإجراءات، انقر على علامة التبويب التطوير، واختَر الإجراءات في شريط التنقل الأيمن.
- انقر على إلغاء الصف الدراسي ضمن قائمة الإجراءات.
- ضمن القسم تفاعل المستخدمين، بدِّل الخيار هل تريد إرسال إشعارات فورية؟
- يمكنك ضبط عنوان محتوى وصفي يوضّح الإشعارات الفورية. ويكون السياق مفيدًا؛ أي أنه لا بأس في إرسال الإشعارات الفورية لـ ■quot;، لذا تأكد من أن العنوان وصفي وصوتي صحيح عند نطقه بصوت عالٍ. في هذا المثال، اضبط عنوان المحتوى على
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" وكيفية إنشاء رابط لقصد الترحيب في Action'، وكيفية إضافته إلى موقع إلكتروني بسيط للاختبار.
وكيف سيجذب هذا المستخدمين؟
قد يشكّل جذب المستخدمين إلى تطبيقك للمرة الأولى تحديًا، خاصةً عندما يحتاجون إلى استدعاء الإجراء بشكل صريح على "مساعد 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/Google AssistantDev: المنتدى الرسمي لمطوّري البرامج من Reddit الذين يستخدمون "مساعد Google".
يمكنك متابعة أخبارنا على Twitter من خلال الهاشتاغ @ActionOnGoogle للاطّلاع على آخر الإعلانات، كما يمكنك نشر تغريدة على #AoGDevs لمشاركة آخر أفكارك.
استطلاع الملاحظات
قبل المغادرة، يُرجى ملء هذا النموذج لإعلامنا بمستوى أدائنا.