النقل المباشر للوكيل

1- مقدمة

53003251caaf2be5.png 6717b85f57d859d3.png

تاريخ التعديل الأخير: 23-08-2021

النقل المباشر لموظّف الدعم باستخدام ميزة "الرسائل التجارية"

تتيح ميزة النقل المباشر لموظّف الدعم في ميزة "الرسائل التجارية" لوكيلك بدء محادثة كبرنامج تتبُّع والتبديل في منتصف المحادثة إلى موظّف دعم (ممثل بشري). يمكن لبرنامج التتبُّع الذي تستخدمه التعامل مع الأسئلة الشائعة، مثل ساعات العمل، في حين يمكن للوكيل المباشر الذي تتعامل معه توفير تجربة مخصَّصة مع مزيد من الوصول إلى سياق المستخدم. وعندما يكون الانتقال بين هاتين التجربتين سلسًا، يجيب المستخدمون عن أسئلتهم بسرعة ودقة، ما يؤدّي إلى زيادة معدّل التفاعل مع العملاء وزيادة مستوى رضا العملاء.

يعلّمك هذا الدرس التطبيقي حول الترميز كيفية الاستفادة بشكل كامل من ميزة نقل موظّف الدعم المباشر.

ما ستنشئه

في هذا الدرس التطبيقي حول الترميز، عليك إنشاء ردّ تلقائي على الويب لوكيلك الذي يمكنه إرسال أحداث النقل المباشر للوكيل واستلامها. ستستخدم واجهة مستخدم أساسية يوفرها رمز المبتدئين لاختبار ما قمت بإنشائه.

49aca3df6b196c50.png

المعلومات التي ستطّلع عليها

  • كيفية تخزين حالة المحادثة وإدارتها
  • كيفية استخدام ميزة "الرسائل التجارية" لإرسال أحداث النقل المباشر لوكلاء الدعم
  • كيفية إعداد ردّ تلقائي على الويب وواجهة مستخدم أساسية للانضمام إلى المحادثات كوكيل
  • أفضل الممارسات لاستخدام واجهة برمجة تطبيقات ميزة "الرسائل التجارية"

يركّز هذا الدرس التطبيقي حول الترميز على استخدام Business Message API لتنفيذ عملية نقل بيانات الوكلاء المباشرين. يمكنك قراءة رمز التفعيل لكل مرحلة، ولكن عليك فقط تنفيذ الرمز المرتبط بميزة "الرسائل التجارية".

المتطلبات

  • وكيل في ميزة "الرسائل التجارية"، بما في ذلك مفتاح حساب الخدمة يمكنك إنشاء وكيل باتّباع الخطوات الواردة في دليل إنشاء وكيل.
  • هي إعدادات صالحة لتخزين البيانات في السحابة الإلكترونية مرتبطة بمشروع Google Cloud Platform لوكيلك. يمكنك استخدام البدء السريع لمخزن البيانات في خدمات Cloud لإعداد ذلك. لست بحاجة إلى معرفة كيفية استخدام خدمة تخزين البيانات في السحابة الإلكترونية.
  • جهاز كمبيوتر مثبّت عليه Google Cloud SDK وNode.js (الإصدار 10 أو إصدار أحدث)
  • جهاز Android (الإصدار 5 أو الإصدارات الأحدث) أو جهاز iOS لاختبار تجربة المستخدم
  • خبرة في برمجة تطبيقات الويب. ستكتب قدرًا صغيرًا من رمز JavaScript وقد تحتاج إلى تصحيح أخطاء ما تكتبه.

2. إنشاء برنامج تتبُّع الارتداد

في هذه الخطوة، سيكون عليك نشر ممثل برنامج تتبُّع أساسي يُسمى "برنامج تتبُّع Echo". يأخذ برنامج التتبُّع هذا رسائل المستخدم، ويسجّلها في سلسلة محادثات في Cloud Datastore، ثم "يردّد" رسالة المستخدم من خلال الرد بنفس المحتوى. بعد أن يتوفّر لديك برنامج تتبُّع أساسي وبنية أساسية لتسجيل الدخول، يمكنك إضافة المزيد من ذلك لإنشاء عملية تنفيذ كاملة لنقل بيانات الوكيل المباشرة في الخطوات اللاحقة.

الحصول على رمز إجراء التفعيل

في الوحدة الطرفية، انسخ رمز بدء نقل الوكيل المباشر في دليل العمل الخاص بمشروعك باستخدام الأمر التالي:

git clone https://github.com/google-business-communications/bm-nodejs-live-agent-transfer

فهم رمز إجراء التفعيل

لنلقِ نظرة على بنية رمز البداية التي ستعمل عليها خلال الدرس التطبيقي حول الترميز.

انتقِل إلى دليل step-1 واطّلِع على محتواه. ويحتوي على العناصر التالية:

  • bin: يحتوي هذا الدليل على النص البرمجي www للمبتدئين الذي يضبط إعدادات الخادم ويضبطه.
  • libs: يحتوي هذا الدليل على datastore_util.js الذي يحتوي على طرق سهلة للقراءة والكتابة في مخزن البيانات في السحابة الإلكترونية. لست بحاجة إلى فهم طريقة عمل هذا الملف. ما عليك سوى ملاحظة الأساليب المتاحة وما تفعله.
  • الموارد: يحتوي هذا الحقل على مفتاح حساب الخدمة كملف باسم credentials.json.
  • المسارات: يحتوي ملف index.js على الرد التلقائي على الويب وجميع طرق المساعدة المتعلّقة به. هذا هو الملف الرئيسي الذي ستعمل معه وتضيف إليه.
  • طرق العرض: يحتوي هذا الدليل على ملفات نماذج 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]

يحتوي رمز البدء الذي نشرته للتو على تطبيق ويب مع ردّ تلقائي على الويب لتلقّي الرسائل من ميزة "الرسائل التجارية". يرسل التطبيق الرسائل مرة أخرى إلى المستخدم ويسجّل سلاسل الرسائل في خدمة تخزين البيانات في السحابة الإلكترونية.

إعداد وكيلك

انتقِل إلى صفحة "إعدادات الحساب" في وحدة تحكُّم المطوّرين في منتجات التواصل مع الأنشطة التجارية واضبط الردّ التلقائي على الويب على عنوان URL للتطبيق الذي تم نشره. مثلاً، https://PROJECT_ID.appspot.com/callback/.

بعد ذلك، في صفحة "معلومات الوكيل"، يمكنك ضبط نوعَي التفاعل الأساسي والثانوي ليكونا "برامج تتبُّع" و"بشرية" على التوالي.

db0cca5b74f999ad.png

إجراء محادثة مع روبوت الصدى

افتح وكيلك في وحدة تحكم المطوّرين. ستظهر لك صفحة نظرة عامة التي تتيح لك مراجعة تفاصيل الوكيل. انسخ عنوان URL التجريبي للوكيل الذي يتطابق مع جهاز الاختبار المتوافق مع الأجهزة الجوّالة. استخدِم عنوان URL هذا على جهازك الجوّال لإطلاق مساحة عرض المحادثة لوكيلك.

536313929e5c0b3e.png

يمكنك التفاعل مع موظّف الدعم من خلال إرسال بضع رسائل. لا ينسخ سطح المحادثة سوى ما تقوله، وليس تجربة مستخدم مفيدة للغاية. يا ليتني كانت هناك طريقة ما للتحدث إلى شخص حقيقي!

3. الانضمام إلى المحادثة

لنلقِ نظرة الآن على المحادثة من منظور موظّف الدعم المباشر. بصفتك موظّف دعم يقدّم خدمة مباشرة، عليك معرفة بعض المعلومات عن المحادثة قبل الانضمام إليها، مثل معرِّف المحادثة. من المفيد أيضًا معرفة ما إذا كان المستخدم قد طلب التحدث مع موظّف دعم يقدّم خدمة مباشرة. في هذه الخطوة، ستستخدم صفحة أساسية لإدارة العلاقات مع العملاء (CRM) لعرض هذه المعلومات والانضمام إلى المحادثة كوكيل مباشر.

يضيف رمز البدء لهذه الخطوة نظام إدارة علاقات عملاء أساسي يسرد جميع سلاسل المحادثات الجارية للوكيل. لنلقِ نظرة على نظام إدارة علاقات العملاء هذا لمعرفة المحادثات التي قد تتطلب انتباه موظّف الدعم المباشر.

انتقِل إلى دليل step-2 وانشر التطبيق مرة أخرى كما فعلت في الخطوة السابقة.

عند نشر التطبيق، يظهر لك عنوان URL مستهدف. انتقِل إلى عنوان URL هذا في أحد المتصفِّحات للاطّلاع على بطاقة بيانات تتضمّن سلسلة المحادثات التي بدأتها في الخطوة السابقة. إنّ حالة المحادثة حاليًا "خاضعة لإدارة برنامج التتبّع" لأنّ برنامج تتبُّع الارتداد يعمل بصفته ممثلاً عن وكيلنا في هذه المحادثة.

8f624e9befb8e827.png

يظهر زر الانضمام إلى المحادثة ولكنه لا يفعل أي شيء حتى الآن. ولا يمكنك أيضًا من خلال هذه الواجهة معرفة ما إذا كان المستخدم يريد التحدّث إلى موظّف دعم يقدّم خدمة مباشرة.

توفّر ميزة "الرسائل التجارية" حدثًا مباشرًا يطلبه موظّف الدعم يشير إلى الوقت الذي يريد فيه المستخدم التحدّث إلى موظّف دعم يقدّم خدمة مباشرة. عليك تتبُّع هذه الحالة لإدراجها في واجهة المستخدِم.

ألقِ نظرة على طريقة معاودة الاتصال في 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 ضمن كل خطوة تحتاج فيها إلى إكمال بعض الرموز. تحتوي هذه الأدلة على نسخة من التطبيق بالكامل مع التنفيذ الكامل للخطوة المحدّدة.

بعد إكمال عملية التنفيذ وإعادة نشر التطبيق، استخدِم القائمة الكاملة في المحادثة على جهازك الجوّال لطلب موظّف دعم متاح مباشرةً.

e58d2b77e9c64492.png

والآن، في حال الانتقال مرة أخرى إلى نظام إدارة علاقات العملاء، ستظهر لك ملاحظة في سلسلة المحادثات مفادها: "تم طلب موظّف الدعم المباشر". هذا المستخدم يحتاج إلى بعض المساعدة من الإنسان! يجب تنفيذ نقطة نهاية 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 في واجهة برمجة تطبيقات ميزة "الرسائل التجارية" لنشر حدث REPRESENTATIVE_JOINED.

لإنشاء حمولة الطلب، عليك ضبط الحقول الموضّحة في الجدول التالي:

اسم الحقل

تلميح

parent

اضبط هذا الإعداد على "conversations/{conversationId}".

eventId

أنشِئ رقم تعريف عشوائيًا خاصًا بك لهذا الحدث.

auth

يُرجى استخدام طريقة initCredentials المقدّمة.

resource

وهذا هو نص الحدث نفسه. يجب عليك تحديد eventType والممثل.

ألق نظرة على الصفحة المرجعية لطريقة الإنشاء أو الصفحة المرجعية للأحداث للحصول على مساعدة.

عند الانتهاء من عملية التنفيذ، أعِد نشر التطبيق وانقر على زر الانضمام إلى محادثة. سيظهر مربّع حوار محادثة تمّ الانضمام إليها وتتغيّر حالة المحادثة إلى "محادثة مباشرة". عندما تنظر إلى المحادثة على جهازك الجوّال، سترى ملاحظة في المحادثة تفيد بأنّ موظّف الدعم المباشر قد انضمّ إليه.

تهانينا! في الخطوة التالية، سنلقي نظرة على كيفية جعل الوكيل المباشر يتحدث إلى المستخدم.

4. المراسلة كوكيل خدمة مباشر

الآن بعد أن انضممت إلى المحادثة، حان الوقت لإرسال بعض الرسائل بصفتك موظف الدعم المباشر.

انتقِل إلى دليل step-3 وأعِد نشر التطبيق. في نظام إدارة علاقات العملاء، انقر على سلسلة محادثاتك من الخطوة السابقة. من المفترض أن تظهر لك الآن واجهة دردشة أساسية. ومن هنا، يمكنك الاطلاع على رسائل المستخدم في الوقت الفعلي.

46dd083f08f43961.png

ومع ذلك، لا يتم تنفيذ إرسال رسالة نيابةً عن الوكيل. وعليك إكمال هذه الخطوة.

افتح ملف 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) {
...
}

يستخدِم الرد التلقائي على الويب هذه الطريقة لإرسال الردود من برنامج تتبُّع الارتداد. تخزِّن الطريقة أولاً بيانات الرسالة الواردة في كائن تخزين البيانات في السحابة الإلكترونية للمحادثة. ثم يرسل رسالة الرد. ألق نظرة عن كثب على كائن الرسالة الذي ينشئه، لا سيما نوع الرسالة التمثيلية.

يمكنك الآن تنفيذ نقطة نهاية /sendMessage بنفسك. يمكنك استخدام طريقة storeAndSendResponse الحالية هنا لإنجاز معظم المهام. الشيء المهم هو تذكر تعيين الممثل الصحيح.

بعد إجراء ذلك، يمكنك إعادة نشر التطبيق والرجوع إلى محادثتك في نظام إدارة علاقات العملاء. يمكنك الآن مشاهدة رسائلك تظهر في سجلّ المحادثات. يمكنك أيضًا الاطّلاع على رسائل وكيلك التي تظهر على جهاز الاختبار على جهازك الجوّال.

49aca3df6b196c50.png

قبل المضي قدمًا، يُرجى الحرص على فهم آلية عمل نقاط النهاية الجديدة. في الخطوة التالية، ستضيف نقطة النهاية الخاصة بك لمغادرة المحادثة.

5. مغادرة المحادثة

بعد مساعدة المستخدم في الإجابة عن أسئلته، قد تحتاج إلى مغادرة المحادثة والسماح للمستخدم بالتحدّث إلى برنامج التتبُّع مرة أخرى. في ميزة "الرسائل التجارية"، تتم الإشارة إلى هذا التغيير من خلال حدث REPRESENTATIVE_LEFT.

انتقِل إلى دليل step-4، وأعِد نشر التطبيق، ثم ارجِع إلى سلسلة المحادثات. يتوفّر الآن رابط إغلاق المحادثة ومغادرة المحادثة في أسفل سلسلة المحادثات. لا يعمل هذا الرابط حتى الآن لأنّه لم يتم تنفيذ نقطة نهاية leaveConversation.

ef4ad8107c3fff2.png

اطّلِع على ملف 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.

توضح الخطوة الأخيرة حالة المحادثة للمستخدم. يرى المستخدم حدثًا عندما يغادر أحد الممثلين المحادثة، ولكنه لن يعرف بالضرورة أنه يتحدث مع برنامج تتبع الارتداد مرة أخرى. ومن خلال إرسال رسالة مباشرةً من برنامج التتبُّع، تقلل من التباس لدى المستخدم وتحسِّن التجربة.

الآن وبعد أن بدأ برنامج التتبُّع في معالجة المشكلة، يمكن لموظّف الدعم المباشر الانضمام إلى محادثة أخرى. جرِّب استخدام نموذج الرمز البرمجي ونظام إدارة علاقات العملاء (CRM) متى شئت. اختبر بعض الأفكار المختلفة التي لديك حول تجربة التحويل المباشر لموظّف الدعم لنشاطك التجاري وتعرّف على ما توصلت إليه.

6. ملخص

تهانينا على إكمال الدرس التطبيقي حول ترميز نقل موظّف الدعم مباشرةً.

لقد أنشأت وكيلاً يمكنه التعامل مع عمليات النقل المباشرة لموظّفي الدعم من البداية حتى النهاية. لقد تعلّمت أيضًا طريقة واحدة لتتبع حالة المحادثة باستخدام خدمة Cloud Datastore.

من خلال النقل المباشر للعملاء، يمكنك مغادرة الطلبات الشائعة إلى برنامج التتبُّع، بينما سيتعامل موظّفو الدعم المباشرون مع الاستفسارات الأكثر تعقيدًا. سيشعر المستخدمون بالرضا بدرجة أكبر عن التجربة الجديدة المخصّصة والمفيدة، ما يزيد من احتمالية عودتهم واقتراح نشاطك التجاري على أصدقائهم.

الخطوة التالية

اطّلِع على بعض هذه الدروس التطبيقية حول الترميز:

قراءة المزيد

المستندات المرجعية