1. مقدمة
تاريخ آخر تعديل: 23 آب (أغسطس) 2021
نقل المحادثة إلى موظّف دعم مباشر باستخدام ميزة "الرسائل التجارية"
تتيح ميزة "التحويل إلى موظّف دعم مباشر" في "الرسائل التجارية" لموظّف الدعم بدء محادثة كبرنامج آلي والتبديل إلى موظّف دعم مباشر (ممثّل بشري) أثناء المحادثة. يمكن أن يتعامل الروبوت مع الأسئلة الشائعة، مثل ساعات العمل، في حين يمكن للموظف المباشر تقديم تجربة مخصّصة من خلال الوصول إلى سياق المستخدم بشكل أكبر. عندما يكون الانتقال بين هاتين التجربتَين سلسًا، يتمكّن المستخدمون من الحصول على إجابات عن أسئلتهم بسرعة ودقة، ما يؤدي إلى زيادة معدّل التفاعل المتكرّر وزيادة رضا العملاء.
يشرح لك هذا الدرس التطبيقي حول الترميز كيفية الاستفادة إلى أقصى حد من ميزة تحويل المكالمات إلى موظّف دعم مباشر.
التطبيق الذي ستصممه
في هذا الدرس التطبيقي حول الترميز، ستنشئ ردًّا تلقائيًا على الويب لموظّف الدعم يمكنه إرسال أحداث تحويل العملاء إلى موظّف دعم مباشر واستلامها. ستستخدم واجهة مستخدم أساسية يوفّرها الرمز المبدئي لاختبار ما أنشأته.
ما ستتعرّف عليه
- كيفية تخزين حالة المحادثة وإدارتها
- كيفية استخدام ميزة "الرسائل التجارية" لإرسال أحداث تحويل العملاء إلى موظّف دعم مباشر
- كيفية إعداد رابط ويب وواجهة مستخدم أساسية للانضمام إلى المحادثات بصفتك موظّف دعم
- أفضل الممارسات لاستخدام واجهة برمجة التطبيقات Business Messages API
يركز هذا الدرس التطبيقي على استخدام واجهة برمجة التطبيقات Business Message API لتنفيذ ميزة "التحويل إلى موظّف دعم مباشر". يمكنك مراجعة الرمز المبدئي لكل مرحلة، ولكن ما عليك سوى تنفيذ الرمز المرتبط بميزة "الرسائل التجارية".
المتطلبات
- وكيل ميزة "الرسائل التجارية"، بما في ذلك مفتاح حساب الخدمة يمكنك إنشاء موظّف دعم باتّباع دليل إنشاء موظّف دعم.
- إعدادات Cloud Datastore صالحة مرتبطة بمشروع GCP الخاص بالوكيل يمكنك استخدام البدء السريع لخدمة Cloud Datastore لإعداد هذا الإجراء. لست بحاجة إلى معرفة كيفية استخدام Cloud Datastore.
- جهاز كمبيوتر تم تثبيت Google Cloud SDK وNode.js (الإصدار 10 أو إصدار أحدث) عليه
- جهاز Android (يعمل بالإصدار 5 أو الإصدارات الأحدث) أو جهاز iOS لاختبار تجربة المستخدم
- خبرة في برمجة تطبيقات الويب ستكتب قدرًا صغيرًا من رمز JavaScript وقد تحتاج إلى تصحيح الأخطاء في ما تكتبه.
2. إنشاء روبوت صدى
في هذه الخطوة، ستنشر وكيلاً أساسيًا من الروبوتات يُعرف باسم "روبوت صدى". يتلقّى هذا الروبوت رسائل المستخدمين ويُسجّلها في سلسلة محادثات في Cloud Datastore، ثم "يكرّر" رسالة المستخدم من خلال الردّ بالمحتوى نفسه. بعد أن تحصل على بنية أساسية لبرنامج التتبُّع وتسجيل البيانات، يمكنك إضافة المزيد من العناصر لإنشاء عملية كاملة لنقل المكالمات إلى موظّف دعم مباشر في الخطوات اللاحقة.
الحصول على الرمز الأوّلي
في وحدة طرفية، يمكنك استنساخ رمز التشغيل الأوّلي لنقل موظّف الدعم المباشر إلى دليل العمل الخاص بمشروعك باستخدام الأمر التالي:
git clone https://github.com/google-business-communications/bm-nodejs-live-agent-transfer
فهم الرمز الأوّلي
لنلقِ نظرة على بنية الرمز البرمجي الأساسي الذي ستستخدمه خلال الدرس التطبيقي.
انتقِل إلى الدليل step-1
واطّلِع على محتوياته. يحتوي على العناصر التالية:
- bin: يحتوي هذا الدليل على النص البرمجي المشغِّل لموقع www الذي يُعدّ الخادم ويضبطه.
- libs: يحتوي هذا الدليل على
datastore_util.js
، الذي يحتوي على طُرق ملائمة للقراءة من وإلى Cloud Datastore. لست بحاجة إلى فهم كيفية عمل هذا الملف. ما عليك سوى تدوين الطرق المتاحة ووظائفها. - resources: يحتوي هذا القسم على مفتاح حساب الخدمة كملف باسم
credentials.json
. - المسارات: يحتوي ملف
index.js
على رابط البيانات في خادم الويب وجميع طرق المساعدة المرتبطة به. هذا هو الملف الرئيسي الذي ستستخدمه وستضيف إليه. - views: يحتوي هذا الدليل على ملفات نماذج EJS لعناصر واجهة المستخدم. وسيتضمّن المزيد من الملفات في الخطوات اللاحقة.
- app.js وapp.yaml وpackage.json: تعمل هذه الملفات على ضبط إعدادات التطبيق وتبعياته.
قبل النشر، نزِّل مفتاح حساب الخدمة في Google Cloud Platform وانسخ ملف بيانات الاعتماد بتنسيق JSON إلى كل دليل موارد في نموذج الرمز البرمجي. كرِّر ذلك لكل خطوة من خطوات ورشة رموز البرامج.
cp credentials.json bm-nodejs-live-agent-transfer/step-<step number>/resources/credentials.json
نشر الرمز الأوّلي
في وحدة طرفية، انتقِل إلى دليل step-1
الخاص بالنموذج. بعد ذلك، اضبط أداة gcloud لاستخدام مشروعك على Google Cloud، وذلك من خلال ضبط رقم تعريف المشروع الذي استخدمته للتسجيل في واجهات برمجة التطبيقات.
gcloud config set project <PROJECT_ID>
لنشر التطبيق، شغِّل الأمر التالي:
gcloud app deploy
يُرجى ملاحظة عنوان URL للتطبيق الذي تم نشره في ناتج الأمر الأخير:
Deployed service [default] to [https://PROJECT_ID.appspot.com]
يحتوي رمز البدء الذي تم نشره للتو على تطبيق ويب يتضمّن رمزًا لردّ تلقائي على الويب لتلقّي الرسائل من ميزة "الرسائل التجارية". يعيد التطبيق الرسائل إلى المستخدم ويُسجِّل سلاسل محادثات الرسائل في Cloud Datastore.
ضبط إعدادات الوكيل
انتقِل إلى صفحة "إعدادات الحساب" في Business Communications Developer Console واضبط رابط webhook على عنوان URL لتطبيقك المنشور. على سبيل المثال، https://PROJECT_ID.appspot.com/callback/
.
بعد ذلك، في صفحة "معلومات موظّف الدّعم"، اضبط نوعَي التفاعل الأساسي والثانوي على "موظّف دعم" و"موظّف دعم آلي" على التوالي.
إجراء محادثة مع برنامج التتبُّع Echo
افتح وكيلك في "وحدة تحكّم المطوّر". ستظهر لك صفحة نظرة عامة التي تتيح لك مراجعة تفاصيل موظّف الدعم. انسخ عنوان URL التجريبي للوكيل الذي يتطابق مع جهازك الجوّال التجريبي. استخدِم عنوان URL هذا على جهازك الجوّال لبدء واجهة المحادثة مع موظّف الدعم.
يمكنك التفاعل مع موظّف الدعم من خلال إرسال بعض الرسائل. لا تنسخ مساحة المحادثة سوى ما تقوله، ما لا يقدّم تجربة مفيدة للمستخدم. أتمنى لو كانت هناك طريقة للتحدّث إلى شخص حقيقي.
3- الانضمام إلى المحادثة
لنلقِ نظرة الآن على المحادثة من وجهة نظر موظّف الدعم المباشر. بصفتك موظّف دعم مباشر، عليك معرفة بعض المعلومات عن المحادثة قبل الانضمام إليها، مثل رقم تعريف المحادثة. من المفيد أيضًا معرفة ما إذا كان المستخدم قد طلب التحدث إلى موظّف دعم مباشر. في هذه الخطوة، ستستخدم صفحة أساسية لإدارة علاقات العملاء (CRM) للاطّلاع على هذه المعلومات والانضمام إلى المحادثة بصفتك موظّف دعم مباشر.
تضيف التعليمات البرمجية الأساسية لهذه الخطوة نظام إدارة عملاء أساسيًا يسرد جميع سلاسل المحادثات الجارية للموظف. لنلقِ نظرة على نظام إدارة علاقات العملاء هذا لمعرفة المحادثات التي قد تتطلّب انتباه موظّف دعم مباشر.
انتقِل إلى الدليل step-2
ونشر التطبيق مرة أخرى كما فعلت في الخطوة السابقة.
عند نشر التطبيق، يظهر لك عنوان URL مستهدف. انتقِل إلى عنوان URL هذا في متصفّح للاطّلاع على بطاقة بيانات تتضمّن سلسلة المحادثات التي بدأتها في الخطوة السابقة. حالة المحادثة حاليًا هي "تُدار من خلال برنامج تتبُّع" لأنّ برنامج تتبُّع echo يعمل كممثّل لموظّف الدعم في هذه المحادثة.
يظهر زر الانضمام إلى المحادثة ولكن لا يؤدي إلى أي إجراء بعد. ولا يمكنك أيضًا معرفة ما إذا كان المستخدم يريد التحدث إلى موظّف دعم مباشر من خلال هذه الواجهة.
توفّر ميزة "الرسائل التجارية" حدثًا تطلبه خدمة الدعم المباشر يشير إلى الحالات التي يريد فيها المستخدم التحدّث إلى موظّف دعم مباشر. عليك تتبُّع هذه الحالة لإدراجها في واجهة المستخدم.
اطّلِع على طريقة ردّ الاتصال في index.js
. يشير التعليق TODO
إلى المكان الذي يجب فيه الردّ على طلب المستخدم للحصول على دعم مباشر وتعديل حالة السلسلة.
step-2/routes/index.js
/**
* The webhook callback method.
*/
router.post('/callback', async function(req, res, next) {
...
} else if (requestBody.userStatus !== undefined) {
if (requestBody.userStatus.requestedLiveAgent !== undefined) {
...
// TODO: Update the thread state to QUEUED_THREAD_STATE.
}
}
});
...
});
عليك استخدام الطرق الواردة في libs/datastore_utils.js
لتحميل سلسلة محادثات حالية وتعديل حالتها إلى QUEUED_THREAD_STATE
.
إذا لم تكن متأكّدًا من الإجراء الذي يجب اتّخاذه، يمكنك الاطّلاع على الحلول. يتضمّن الرمز المُعدّ مسبقًا للمبتدئين دليلاً solutions
ضمن كل خطوة تحتاج فيها إلى إكمال بعض الرموز. تحتوي هذه الأدلة على نسخة من التطبيق بالكامل مع التنفيذ الكامل للخطوة المحدّدة.
بعد إكمال عملية التنفيذ وإعادة نشر التطبيق، استخدِم قائمة الخيارات الإضافية في المحادثة على جهازك الجوّال لطلب موظّف دعم مباشر.
الآن، إذا عدت إلى نظام إدارة علاقات العملاء، من المفترض أن تظهر لك ملاحظة في سلسلة محادثاتك تفيد بأنّه "تم طلب موظّف دعم مباشر". يحتاج هذا المستخدم إلى مساعدة من أحد موظّفي الدعم. عليك تنفيذ نقطة نهاية joinConversation
لتشغيل الزر.
ابحث عن تعليق TODO
الآخر في الطريقة التي تمّت تهيئتها لـ /joinConversation
.
step-2/routes/index.js
/**
* Updates the thread state and sends a representative join signal to the user.
*/
router.post('/joinConversation', async function(req, res, next) {
let conversationId = req.body.conversationId;
// TODO: Update the thread state to LIVE_AGENT_THREAD_STATE and post a REPRESENTATIVE_JOINED event.
res.json({
'result': 'ok',
});
});
عليك تعديل حالة سلسلة المحادثات مرة أخرى، هذه المرة إلى LIVE_AGENT_THREAD_STATE
. بالإضافة إلى ذلك، عليك استخدام طريقة conversations.events.create
في Business Messages API لنشر حدث REPRESENTATIVE_JOINED
.
لإنشاء الحمولة المطلوبة، عليك ضبط الحقول الموضّحة في الجدول التالي:
اسم الحقل | ملاحظة |
| اضبط هذا العنصر على "conversations/{conversationId}". |
| أنشئ معرّفًا عشوائيًا خاصًا بك للحدث. |
| استخدِم طريقة |
| هذا هو نص الحدث نفسه. يجب ضبط eventType والممثّل. |
اطّلِع على صفحة المراجع الخاصة بطريقة الإنشاء أو صفحة المراجع الخاصة بالأحداث للحصول على مساعدة.
عند الانتهاء من عملية التنفيذ، أعِد نشر التطبيق وانقر على الزر الانضمام إلى المحادثة. يظهر مربّع حوار انضمام إلى محادثة، وتتغيّر حالة المحادثة إلى "محادثة مباشرة". إذا اطّلعت على المحادثة على جهازك الجوّال، ستظهر لك ملاحظة في المحادثة تفيد بأنّ موظّف الدعم المباشر قد انضمّ إليها.
تهانينا! في الخطوة التالية، سنلقي نظرة على كيفية توجيه موظّف الدعم المباشر للتحدّث إلى المستخدم.
4. المراسلة بصفتك موظّف دعم مباشر
بعد الانضمام إلى المحادثة، حان وقت إرسال بعض الرسائل بصفتك موظّف الدعم المباشر.
انتقِل إلى الدليل step-3
وأعِد نشر التطبيق. في نظام إدارة علاقات العملاء، انقر على سلسلة محادثاتك من الخطوة السابقة. من المفترض أن تظهر لك الآن واجهة محادثة أساسية. من هنا، يمكنك الاطّلاع على رسائل المستخدم في الوقت الفعلي.
ومع ذلك، لا يزال إرسال رسالة باسم موظّف الدعم غير متاح. عليك إكمال ذلك في هذه الخطوة.
افتح ملف routes/index.js
واطّلِع على نقاط النهاية الثلاث التي تمت إضافتها حديثًا:
-
/messages
: تحصل على ملف العرضmessages.ejs
وتُعرِضه في المتصفّح. عند النقر على سلسلة محادثات من الفهرس، يتم الانتقال إلى إحدى هذه الصفحات. /retrieveMessages
: تحصل على محتوى الرسالة في سلسلة محادثات وتُرجع قائمة منسَّقة بجميع الرسائل في المحادثة. تستدعي صفحة الرسائل هذه النهاية بشكل دوري لعرض أحدث الرسائل./sendMessage
: يتم إرسال رسالة من موظّف الدعم المباشر إلى المستخدم. تستدعي صفحة الرسائل هذا الإجراء عند النقر على "إرسال". لم يتمّ تنفيذ هذه الميزة إلى الآن.
الآن، اطّلِع على طريقة storeAndSendResponse
الحالية:
step-3/routes/index.js
/**
* Updates the thread, adds a new message and sends a response to the user.
*
* @param {string} message The message content that was received.
* @param {string} conversationId The unique id for this user and agent.
* @param {string} threadState Represents who is managing the conversation for the CRM.
* @param {string} representativeType The representative sending the message, BOT or HUMAN.
*/
async function storeAndSendResponse(message, conversationId, threadState, representativeType) {
...
}
يستخدم رابط البيانات هذا الطريقة حاليًا لإرسال الردود من برنامج التتبّع. تخزِّن الطريقة أولاً بيانات الرسالة الواردة في عنصر Cloud Datastore للمحادثة. بعد ذلك، يتم إرسال رسالة الردّ. ألقِ نظرة عن كثب على عنصر الرسالة الذي يتم إنشاؤه، ولا سيما النوع التمثيلي.
الآن، يمكنك تنفيذ نقطة نهاية /sendMessage
بنفسك. يمكنك استخدام طريقة storeAndSendResponse
الحالية هنا لتنفيذ معظم العمل. من المهم تذكُّر ضبط الممثّل الصحيح.
بعد الانتهاء من ذلك، أعِد نشر التطبيق وعاُد إلى محادثتك في نظام إدارة علاقات العملاء. يمكنك الآن رؤية رسائلك تظهر في سجلّ المحادثات. يمكنك أيضًا رؤية رسائل موظّف الدعم تظهر على جهاز الاختبار الجوّال.
قبل المتابعة، تأكَّد من فهم آلية عمل نقاط النهاية الجديدة. في الخطوة التالية، ستضيف نقطة النهاية الخاصة بك لمغادرة المحادثة.
5- مغادرة المحادثة
بعد مساعدة المستخدم في الإجابة عن أسئلته، قد تحتاج إلى مغادرة المحادثة والسماح للمستخدم بالتحدّث إلى الروبوت مرة أخرى. في "الرسائل التجارية"، يتم الإشارة إلى هذا التغيير من خلال حدث REPRESENTATIVE_LEFT
.
انتقِل إلى دليل step-4
وأعِد نشر التطبيق ثم ارجع إلى سلسلة المحادثات. يتوفّر الآن رابط إغلاق المحادثة ومغادرتها في أسفل سلسلة المحادثات. لا يعمل هذا الرابط بعد لأنّ نقطة نهاية leaveConversation
لم يتم تنفيذها.
اطّلِع على ملف index.js
. هناك تعليق TODO يطلب منك إنشاء نقطة نهاية leaveConversation
جديدة.
step-4/routes/index.js
/*
* TODO: Create a '/leaveConversation' endpoint that does the following:
* - Updates the thread to BOT_THREAD_STATE.
* - Sends a REPRESENTATIVE_LEFT event.
* - Sends a message to the thread informing the user that they are speaking to the echo bot again.
*
* Hint: You can use the same methods that '/joinConversation' uses.
*/
لتنفيذ ذلك، عليك جمع كل ما تعلمته من ورشة إعداد الرمز البرمجي حتى الآن. يجب أن تؤدي نقطة النهاية هذه ما يلي:
- عدِّل سلسلة المحادثات إلى
BOT_THREAD_STATE
. - أرسِل حدث
REPRESENTATIVE_LEFT
. - أرسِل رسالة في المحادثة لإعلام المستخدم بأنّه يتحدث إلى برنامج التتبُّع. استخدِم طريقة
storeAndSendResponse
. يُرجى العِلم أنّه تمّ تغيير الممثّل مرة أخرى إلىBOT
.
توضِّح الخطوة الأخيرة حالة المحادثة للمستخدم. سيرى المستخدم حدثًا عندما يغادر أحد الممثّلين المحادثة، ولكن لن يعرف بالضرورة أنّه يتحدث إلى bot صدى مرة أخرى. من خلال إرسال رسالة مباشرةً من الروبوت، يمكنك تقليل ارتباك المستخدم وتحسين تجربته.
بما أنّه تم تصعيد مشكلتك إلى موظّف الدعم، أصبح بإمكانه الانضمام إلى محادثة أخرى. يمكنك تجربة نموذج الرمز البرمجي وإدارة علاقات العملاء بقدر ما تريد. جرِّب بعض الأفكار المختلفة التي لديك لتجربة تحويل المكالمات إلى موظّفي الدعم المباشر في نشاطك التجاري، وراقِب النتائج التي تحقّقها.
6- ملخص
تهانينا على إكمال دورة codelab لنقل مهام الدعم إلى موظّفي الدعم المباشر.
لقد أنشأت وكيلاً يمكنه معالجة عمليات الإحالة إلى موظّف دعم مباشر من البداية إلى النهاية. لقد تعلمت أيضًا طريقة واحدة لتتبُّع حالة المحادثة باستخدام Cloud Datastore.
من خلال ميزة "التحويل إلى موظّف دعم متاح مباشرةً"، يمكنك تحويل الطلبات الشائعة إلى الروبوت، بينما يتعامل موظّفو الدعم المتاحون مباشرةً مع الاستفسارات الأكثر تعقيدًا. سيشعر المستخدمون بمزيد من الرضا عن التجربة الجديدة المخصّصة والمفيدة، ما يزيد من احتمالية عودتهم واقتراح نشاطك التجاري على أصدقائهم.
الخطوة التالية
اطّلِع على بعض هذه الدروس التطبيقية حول الترميز:
- شراء المنتجات على الإنترنت واستلامها في المتجر، الجزء 1
- شراء المنتجات على الإنترنت واستلامها في المتجر، الجزء 2
مراجع إضافية
- راجِع أساسيات عملية تحويل المحادثة إلى موظّف دعم مباشر من خلال دليل تحويل المحادثة من الروبوت إلى موظّف الدعم المباشر.
- يمكنك ترقية روبوت الصدى إلى روبوت يجيب عن الأسئلة الشائعة باستخدام دليل Dialogflow.