انتقال عامل زنده، انتقال نماینده زنده

1. معرفی

53003251caaf2be5.png6717b85f57d859d3.png

آخرین به روز رسانی: 2021-08-23

انتقال مستقیم نماینده با پیام های تجاری

ویژگی انتقال عامل زنده Business Messages به نماینده شما اجازه می دهد تا یک مکالمه را به عنوان یک ربات شروع کند و اواسط مکالمه را به یک نماینده زنده (نماینده انسانی) تغییر دهد. ربات شما می‌تواند به سؤالات متداول مانند ساعات کاری پاسخ دهد، در حالی که نماینده زنده شما می‌تواند تجربه سفارشی‌سازی شده با دسترسی بیشتر به زمینه کاربر را ارائه دهد. هنگامی که انتقال بین این دو تجربه یکپارچه باشد، کاربران به سؤالات خود به سرعت و دقیق پاسخ می‌دهند و در نتیجه نرخ تعامل بالاتر و رضایت مشتری افزایش می‌یابد.

این کد لبه به شما می آموزد که چگونه از ویژگی انتقال عامل زنده استفاده کنید.

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

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

49aca3df6b196c50.png

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

  • نحوه ذخیره و مدیریت وضعیت مکالمه
  • نحوه استفاده از پیام‌های تجاری برای ارسال رویدادهای انتقال مستقیم نماینده.
  • نحوه راه اندازی وب هوک و رابط کاربری اولیه برای پیوستن به مکالمات به عنوان نماینده.
  • بهترین روش ها برای استفاده از Business Messages API.

این کد لبه روی استفاده از Business Message API برای پیاده سازی انتقال عامل زنده متمرکز شده است. می‌توانید کد شروع را برای هر مرحله بخوانید، اما فقط باید کدهای مربوط به پیام‌های تجاری را پیاده‌سازی کنید.

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

  • یک نماینده Business Messages، از جمله کلید حساب خدمات شما. می توانید با دنبال کردن راهنمای ایجاد یک عامل، یک نماینده ایجاد کنید.
  • یک پیکربندی Cloud Datastore فعال که به پروژه GCP نماینده شما مرتبط است. برای تنظیم این مورد می توانید از Cloud Datastore Quick Start استفاده کنید. شما نیازی به دانستن نحوه استفاده از Cloud Datastore ندارید.
  • رایانه ای با Google Cloud SDK و Node.js (نسخه 10 یا بالاتر) نصب شده است.
  • یک دستگاه اندروید (با نسخه 5 یا بالاتر) یا یک دستگاه iOS برای آزمایش تجربه کاربری.
  • تجربه برنامه نویسی وب اپلیکیشن شما مقدار کمی کد جاوا اسکریپت می نویسید و ممکن است نیاز به اشکال زدایی آنچه می نویسید داشته باشید.

2. یک ربات اکو ایجاد کنید

در این مرحله، یک نماینده ربات اصلی به نام «ربات اکو» را مستقر خواهید کرد. این ربات پیام‌های کاربر را می‌گیرد، آن‌ها را در یک رشته مکالمه در Cloud Datastore ثبت می‌کند و سپس با پاسخ دادن با همان محتوا، پیام کاربر را «پژواک» می‌کند. هنگامی که یک ربات اولیه و زیرساخت ورود به سیستم دارید، می توانید به آن اضافه کنید تا در مراحل بعدی یک پیاده سازی کامل انتقال عامل زنده ایجاد کنید.

کد شروع را دریافت کنید

در یک ترمینال، کد شروع کننده Live Agent Transfer را با دستور زیر در فهرست کاری پروژه خود کلون کنید:

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

کد شروع را درک کنید

بیایید نگاهی به ساختار کد شروعی بیندازیم که در سرتاسر Codelab با آن کار خواهید کرد.

به دایرکتوری step-1 بروید و محتویات آن را مشاهده کنید. این شامل عناصر زیر است:

  • bin : این دایرکتوری حاوی اسکریپت شروع www است که سرور را راه اندازی و پیکربندی می کند.
  • libs : این دایرکتوری حاوی datastore_util.js است که حاوی روش‌های راحت برای خواندن و نوشتن از Cloud Datastore است. شما نیازی به درک نحوه کار این فایل ندارید. فقط روش های موجود و کاری که انجام می دهند را یادداشت کنید.
  • منابع : این شامل کلید حساب سرویس شما به عنوان فایلی به نام credentials.json است.
  • routes : فایل index.js حاوی webhook و تمام روش‌های کمکی آن است. این فایل اصلی است که با آن کار خواهید کرد و به آن اضافه خواهید کرد.
  • views : این دایرکتوری حاوی فایل‌های الگوی EJS برای عناصر UI است. در مراحل بعدی حاوی فایل های بیشتری خواهد بود.
  • app.js, app.yaml,pack.json : این فایل ها برنامه و وابستگی های آن را پیکربندی می کنند.

قبل از استقرار، کلید حساب سرویس GCP خود را دانلود کنید و فایل اعتبارنامه JSON را در هر فهرست منابع موجود در کد نمونه کپی کنید. این کار را برای هر مرحله از Codelab انجام دهید.

cp credentials.json bm-nodejs-live-agent-transfer/step-<step number>/resources/credentials.json

استقرار کد شروع

در یک ترمینال، به دایرکتوری step-1 نمونه بروید. سپس، ابزار gcloud را برای استفاده از پروژه Google Cloud خود، با تنظیم شناسه پروژه ای که برای ثبت نام در API ها استفاده کردید، تنظیم کنید.

gcloud config set project <PROJECT_ID>

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

gcloud app deploy

به URL برنامه کاربردی در خروجی آخرین دستور توجه کنید:

Deployed service [default] to [https://PROJECT_ID.appspot.com]

کد شروعی که به تازگی نصب کردید حاوی یک برنامه وب با یک هوک برای دریافت پیام‌ها از Business Messages است. برنامه پیام‌ها را به کاربر بازتاب می‌دهد و رشته‌های پیام را در Cloud Datastore ثبت می‌کند.

نماینده خود را پیکربندی کنید

به صفحه تنظیمات حساب خود در Business Communications Developer Console بروید و وب هوک خود را روی URL برنامه کاربردی خود تنظیم کنید. برای مثال، https://PROJECT_ID.appspot.com/callback/ .

سپس در صفحه اطلاعات Agent خود، انواع تعامل اولیه و ثانویه خود را به ترتیب Bot و Human پیکربندی کنید.

db0cca5b74f999ad.png

مکالمه با ربات اکو

نماینده خود را در Developer Console باز کنید. صفحه نمای کلی را خواهید دید که به شما امکان می دهد جزئیات نماینده خود را بررسی کنید. URL آزمایش نماینده را که با دستگاه تست تلفن همراه شما مطابقت دارد کپی کنید. از این URL در دستگاه تلفن همراه خود برای راه اندازی سطح مکالمه نماینده خود استفاده کنید.

536313929e5c0b3e.png

با ارسال چند پیام با نماینده در تعامل باشید. سطح مکالمه فقط از آنچه شما می گویید کپی می کند - تجربه کاربری خیلی مفیدی نیست. اگر راهی برای صحبت با یک شخص واقعی وجود داشت!

3. پیوستن به گفتگو

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

کد شروع برای این مرحله یک CRM پایه اضافه می کند که تمام رشته های مکالمه در حال انجام را برای نماینده لیست می کند. بیایید نگاهی به آن CRM بیندازیم تا ببینیم چه مکالماتی ممکن است به توجه یک نماینده زنده نیاز داشته باشد.

به دایرکتوری step-2 بروید و دوباره برنامه را مانند مرحله قبل اجرا کنید.

وقتی برنامه را اجرا می کنید، یک URL هدف را می بینید. در مرورگر به این URL بروید تا لیستی را با رشته مکالمه ای که در مرحله قبل شروع کرده اید مشاهده کنید. وضعیت مکالمه در حال حاضر "مدیریت ربات" است زیرا ربات اکو به عنوان نماینده نماینده ما در این مکالمه عمل می کند.

8f624e9befb8e827.png

دکمه Join chat ظاهر می شود اما هنوز کاری انجام نمی دهد. شما همچنین نمی توانید از این رابط تشخیص دهید که آیا کاربر می خواهد با یک نماینده زنده صحبت کند یا خیر.

Business Messages یک رویداد درخواست شده توسط نماینده زنده را ارائه می دهد که نشان می دهد کاربر چه زمانی می خواهد با یک نماینده زنده صحبت کند. برای فهرست کردن آن در UI، باید وضعیت آن را پیگیری کنید.

نگاهی به روش برگشت به تماس در 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

اکنون، اگر به CRM برگردید، باید یادداشتی را در رشته مکالمه خود مشاهده کنید که روی آن نوشته شده است: «نماینده زنده درخواست شده است». این کاربر به کمک یک انسان نیاز دارد! شما باید نقطه پایانی joinConversation را پیاده سازی کنید تا دکمه کار کند.

نظر TODO دیگر را در روش stubbed برای /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 . علاوه بر این، برای ارسال یک رویداد REPRESENTATIVE_JOINED ، باید از روش conversations.events.create API Business Messages استفاده کنید.

برای ایجاد بار درخواست، باید فیلدهای مشخص شده در جدول زیر را تنظیم کنید:

نام زمینه

اشاره

parent

این را روی "مکالمات/{conversationId}" تنظیم کنید.

eventId

شناسه تصادفی خود را برای رویداد ایجاد کنید.

auth

از روش initCredentials ارائه شده استفاده کنید.

resource

این خود بدنه رویداد است. شما باید eventType و نماینده را تنظیم کنید.

برای کمک به صفحه مرجع برای روش ایجاد یا صفحه مرجع رویدادها نگاهی بیندازید.

پس از اتمام پیاده سازی، برنامه را مجدداً راه اندازی کنید و روی دکمه Join chat کلیک کنید. یک گفتگوی گفتگوی پیوسته ظاهر می شود و وضعیت چت به "چت زنده" تغییر می کند. اگر به مکالمه در دستگاه تلفن همراه خود نگاه کنید، یادداشتی را در چت خواهید دید که نماینده زنده شما به آن ملحق شده است.

تبریک می گویم! در مرحله بعدی، نحوه صحبت عامل زنده خود را با کاربر خود بررسی خواهیم کرد.

4. پیام رسانی به عنوان یک عامل زنده

اکنون که به مکالمه ملحق شده اید، زمان ارسال پیام هایی به عنوان نماینده زنده است.

به دایرکتوری step-3 بروید و برنامه را دوباره اجرا کنید. در CRM، روی رشته مکالمه خود از مرحله قبل کلیک کنید. اکنون باید یک رابط چت اولیه را ببینید. از اینجا می توانید پیام های کاربر را در زمان واقعی مشاهده کنید.

46dd083f08f43961.png

با این حال، ارسال پیام به عنوان نماینده هنوز اجرا نشده است. در این مرحله باید آن را کامل کنید.

فایل routes/index.js را باز کنید و به سه نقطه پایانی جدید اضافه شده نگاه کنید:

  • /messages : فایل view messages.ejs را دریافت کرده و در مرورگر رندر می‌کند. هنگامی که روی یک موضوع گفتگو از فهرست کلیک می کنید، به یکی از این صفحات می روید.
  • /retrieveMessages : محتویات پیام یک رشته را دریافت می کند و یک لیست قالب بندی شده از همه پیام های موجود در مکالمه را برمی گرداند. صفحه پیام ها به صورت دوره ای این نقطه پایانی را برای نمایش آخرین پیام ها فراخوانی می کند.
  • /sendMessage : یک پیام از نماینده نماینده زنده به کاربر ارسال می کند. وقتی روی Send کلیک می کنید، صفحه پیام ها این را صدا می کند. در حال حاضر اجرا نشده است.

اکنون، نگاهی به روش 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) {
...
}

وب‌هوک قبلاً از این روش برای ارسال پاسخ‌ها از ربات echo استفاده می‌کند. این روش ابتدا داده های پیام ورودی را در شی Cloud Datastore برای مکالمه ذخیره می کند. سپس، پیام پاسخ را ارسال می کند. به شیء پیامی که ایجاد می کند، به ویژه در نوع نماینده، نگاهی دقیق بیندازید.

اکنون، نقطه پایانی /sendMessage را خودتان پیاده سازی کنید. برای انجام بیشتر کارها می توانید از روش storeAndSendResponse موجود در اینجا استفاده کنید. نکته مهم این است که به یاد داشته باشید که نماینده صحیح را تعیین کنید.

هنگامی که این کار را انجام دادید، برنامه را دوباره اجرا کنید و به مکالمه خود در CRM بازگردید. اکنون می توانید مشاهده کنید که پیام های شما در تاریخچه چت ظاهر می شوند. همچنین می توانید پیام های نماینده خود را در دستگاه تست تلفن همراه خود مشاهده کنید.

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.
 */

برای پیاده سازی این، باید همه چیزهایی را که تا کنون از Codelab یاد گرفته اید جمع آوری کنید. این نقطه پایانی باید کارهای زیر را انجام دهد:

  • موضوع را به BOT_THREAD_STATE به روز کنید.
  • یک رویداد REPRESENTATIVE_LEFT ارسال کنید.
  • در مکالمه پیامی ارسال کنید تا به کاربر بگویید با ربات echo صحبت می کند. از روش storeAndSendResponse استفاده کنید. به یاد داشته باشید که نماینده دوباره به BOT تغییر کرده است.

آخرین مرحله وضعیت مکالمه را برای کاربر روشن می کند. وقتی یک نماینده از چت خارج می شود، کاربر رویدادی را می بیند، اما لزوماً نمی داند که دوباره با ربات echo صحبت می کند. با ارسال مستقیم پیام از ربات، سردرگمی کاربران را کاهش داده و تجربه را بهبود می بخشید.

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

6. بسته بندی

بابت تکمیل کدهای انتقال عامل زنده به شما تبریک می گویم!

شما عاملی ایجاد کرده‌اید که می‌تواند از ابتدا تا انتها انتقال‌های نماینده زنده را انجام دهد. شما همچنین یک راه برای ردیابی وضعیت مکالمه با Cloud Datastore را یاد گرفته اید.

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

بعدش چی؟

برخی از این کدها را بررسی کنید:

بیشتر خواندن

اسناد مرجع

،

1. معرفی

53003251caaf2be5.png6717b85f57d859d3.png

آخرین به روز رسانی: 2021-08-23

انتقال مستقیم نماینده با پیام های تجاری

ویژگی انتقال عامل زنده Business Messages به نماینده شما اجازه می دهد تا یک مکالمه را به عنوان یک ربات شروع کند و اواسط مکالمه را به یک نماینده زنده (نماینده انسانی) تغییر دهد. ربات شما می‌تواند به سؤالات متداول مانند ساعات کاری پاسخ دهد، در حالی که نماینده زنده شما می‌تواند تجربه سفارشی‌سازی شده با دسترسی بیشتر به زمینه کاربر را ارائه دهد. هنگامی که انتقال بین این دو تجربه یکپارچه باشد، کاربران به سؤالات خود به سرعت و دقیق پاسخ می‌دهند و در نتیجه نرخ تعامل بالاتر و رضایت مشتری افزایش می‌یابد.

این کد لبه به شما می آموزد که چگونه از ویژگی انتقال عامل زنده استفاده کنید.

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

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

49aca3df6b196c50.png

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

  • نحوه ذخیره و مدیریت وضعیت مکالمه
  • نحوه استفاده از پیام‌های تجاری برای ارسال رویدادهای انتقال مستقیم نماینده.
  • نحوه راه اندازی وب هوک و رابط کاربری اولیه برای پیوستن به مکالمات به عنوان نماینده.
  • بهترین روش ها برای استفاده از Business Messages API.

این کد لبه روی استفاده از Business Message API برای پیاده سازی انتقال عامل زنده متمرکز شده است. می‌توانید کد شروع را برای هر مرحله بخوانید، اما فقط باید کدهای مربوط به پیام‌های تجاری را پیاده‌سازی کنید.

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

  • یک نماینده Business Messages، از جمله کلید حساب خدمات شما. می توانید با دنبال کردن راهنمای ایجاد یک عامل، یک نماینده ایجاد کنید.
  • یک پیکربندی Cloud Datastore فعال که به پروژه GCP نماینده شما مرتبط است. برای تنظیم این مورد می توانید از Cloud Datastore Quick Start استفاده کنید. شما نیازی به دانستن نحوه استفاده از Cloud Datastore ندارید.
  • رایانه ای با Google Cloud SDK و Node.js (نسخه 10 یا بالاتر) نصب شده است.
  • یک دستگاه اندروید (با نسخه 5 یا بالاتر) یا یک دستگاه iOS برای آزمایش تجربه کاربری.
  • تجربه برنامه نویسی وب اپلیکیشن شما مقدار کمی کد جاوا اسکریپت می نویسید و ممکن است نیاز به اشکال زدایی آنچه می نویسید داشته باشید.

2. یک ربات اکو ایجاد کنید

در این مرحله، یک نماینده ربات اصلی به نام «ربات اکو» را مستقر خواهید کرد. این ربات پیام‌های کاربر را می‌گیرد، آن‌ها را در یک رشته مکالمه در Cloud Datastore ثبت می‌کند و سپس با پاسخ دادن با همان محتوا، پیام کاربر را «پژواک» می‌کند. هنگامی که یک ربات اولیه و زیرساخت ورود به سیستم دارید، می توانید به آن اضافه کنید تا در مراحل بعدی یک پیاده سازی کامل انتقال عامل زنده ایجاد کنید.

کد شروع را دریافت کنید

در یک ترمینال، کد شروع کننده Live Agent Transfer را با دستور زیر در فهرست کاری پروژه خود کلون کنید:

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

کد شروع را درک کنید

بیایید نگاهی به ساختار کد شروعی بیندازیم که در سرتاسر Codelab با آن کار خواهید کرد.

به دایرکتوری step-1 بروید و محتویات آن را مشاهده کنید. این شامل عناصر زیر است:

  • bin : این دایرکتوری حاوی اسکریپت شروع www است که سرور را راه اندازی و پیکربندی می کند.
  • libs : این دایرکتوری حاوی datastore_util.js است که حاوی روش‌های راحت برای خواندن و نوشتن از Cloud Datastore است. شما نیازی به درک نحوه کار این فایل ندارید. فقط روش های موجود و کاری که انجام می دهند را یادداشت کنید.
  • منابع : این شامل کلید حساب سرویس شما به عنوان فایلی به نام credentials.json است.
  • routes : فایل index.js حاوی webhook و تمام روش‌های کمکی آن است. این فایل اصلی است که با آن کار خواهید کرد و به آن اضافه خواهید کرد.
  • views : این دایرکتوری حاوی فایل‌های الگوی EJS برای عناصر UI است. در مراحل بعدی حاوی فایل های بیشتری خواهد بود.
  • app.js, app.yaml,pack.json : این فایل ها برنامه و وابستگی های آن را پیکربندی می کنند.

قبل از استقرار، کلید حساب سرویس GCP خود را دانلود کنید و فایل اعتبارنامه JSON را در هر فهرست منابع موجود در کد نمونه کپی کنید. این کار را برای هر مرحله از Codelab انجام دهید.

cp credentials.json bm-nodejs-live-agent-transfer/step-<step number>/resources/credentials.json

استقرار کد شروع

در یک ترمینال، به دایرکتوری step-1 نمونه بروید. سپس، ابزار gcloud را برای استفاده از پروژه Google Cloud خود، با تنظیم شناسه پروژه ای که برای ثبت نام در API ها استفاده کردید، تنظیم کنید.

gcloud config set project <PROJECT_ID>

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

gcloud app deploy

به URL برنامه کاربردی در خروجی آخرین دستور توجه کنید:

Deployed service [default] to [https://PROJECT_ID.appspot.com]

کد شروعی که به تازگی نصب کردید حاوی یک برنامه وب با یک هوک برای دریافت پیام‌ها از Business Messages است. برنامه پیام‌ها را به کاربر بازتاب می‌دهد و رشته‌های پیام را در Cloud Datastore ثبت می‌کند.

نماینده خود را پیکربندی کنید

به صفحه تنظیمات حساب خود در Business Communications Developer Console بروید و وب هوک خود را روی URL برنامه کاربردی خود تنظیم کنید. برای مثال، https://PROJECT_ID.appspot.com/callback/ .

سپس در صفحه اطلاعات Agent خود، انواع تعامل اولیه و ثانویه خود را به ترتیب Bot و Human پیکربندی کنید.

db0cca5b74f999ad.png

مکالمه با ربات اکو

نماینده خود را در Developer Console باز کنید. صفحه نمای کلی را خواهید دید که به شما امکان می دهد جزئیات نماینده خود را بررسی کنید. URL آزمایش نماینده را که با دستگاه تست تلفن همراه شما مطابقت دارد کپی کنید. از این URL در دستگاه تلفن همراه خود برای راه اندازی سطح مکالمه نماینده خود استفاده کنید.

536313929e5c0b3e.png

با ارسال چند پیام با نماینده در تعامل باشید. سطح مکالمه فقط از آنچه شما می گویید کپی می کند - تجربه کاربری خیلی مفیدی نیست. اگر راهی برای صحبت با یک شخص واقعی وجود داشت!

3. پیوستن به گفتگو

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

کد شروع برای این مرحله یک CRM پایه اضافه می کند که تمام رشته های مکالمه در حال انجام را برای نماینده لیست می کند. بیایید نگاهی به آن CRM بیندازیم تا ببینیم چه مکالماتی ممکن است به توجه یک نماینده زنده نیاز داشته باشد.

به دایرکتوری step-2 بروید و دوباره برنامه را مانند مرحله قبل اجرا کنید.

وقتی برنامه را اجرا می کنید، یک URL هدف را می بینید. در مرورگر به این URL بروید تا لیستی را با رشته مکالمه ای که در مرحله قبل شروع کرده اید مشاهده کنید. وضعیت مکالمه در حال حاضر "مدیریت ربات" است زیرا ربات اکو به عنوان نماینده نماینده ما در این مکالمه عمل می کند.

8f624e9befb8e827.png

دکمه Join chat ظاهر می شود اما هنوز کاری انجام نمی دهد. شما همچنین نمی توانید از این رابط تشخیص دهید که آیا کاربر می خواهد با یک نماینده زنده صحبت کند یا خیر.

Business Messages یک رویداد درخواست شده توسط نماینده زنده را ارائه می دهد که نشان می دهد کاربر چه زمانی می خواهد با یک نماینده زنده صحبت کند. برای فهرست کردن آن در UI، باید وضعیت آن را پیگیری کنید.

نگاهی به روش برگشت به تماس در 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

اکنون، اگر به CRM برگردید، باید یادداشتی را در رشته مکالمه خود مشاهده کنید که روی آن نوشته شده است: «نماینده زنده درخواست شده است». این کاربر به کمک یک انسان نیاز دارد! شما باید نقطه پایانی joinConversation را پیاده سازی کنید تا دکمه کار کند.

نظر TODO دیگر را در روش stubbed برای /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 . علاوه بر این، برای ارسال یک رویداد REPRESENTATIVE_JOINED ، باید از روش conversations.events.create API Business Messages استفاده کنید.

برای ایجاد بار درخواست، باید فیلدهای مشخص شده در جدول زیر را تنظیم کنید:

نام زمینه

اشاره

parent

این را روی "مکالمات/{conversationId}" تنظیم کنید.

eventId

شناسه تصادفی خود را برای رویداد ایجاد کنید.

auth

از روش initCredentials ارائه شده استفاده کنید.

resource

این خود بدنه رویداد است. شما باید eventType و نماینده را تنظیم کنید.

برای کمک به صفحه مرجع برای روش ایجاد یا صفحه مرجع رویدادها نگاهی بیندازید.

پس از اتمام پیاده سازی، برنامه را مجدداً راه اندازی کنید و روی دکمه Join chat کلیک کنید. یک گفتگوی گفتگوی پیوسته ظاهر می شود و وضعیت چت به "چت زنده" تغییر می کند. اگر به مکالمه در دستگاه تلفن همراه خود نگاه کنید، یادداشتی را در چت خواهید دید که نماینده زنده شما به آن ملحق شده است.

تبریک می گویم! در مرحله بعدی، نحوه صحبت عامل زنده خود را با کاربر خود بررسی خواهیم کرد.

4. پیام رسانی به عنوان یک عامل زنده

اکنون که به مکالمه ملحق شده اید، زمان ارسال پیام هایی به عنوان نماینده زنده است.

به دایرکتوری step-3 بروید و برنامه را دوباره اجرا کنید. در CRM، روی رشته مکالمه خود از مرحله قبل کلیک کنید. اکنون باید یک رابط چت اولیه را ببینید. از اینجا می توانید پیام های کاربر را در زمان واقعی مشاهده کنید.

46dd083f08f43961.png

با این حال، ارسال پیام به عنوان نماینده هنوز اجرا نشده است. در این مرحله باید آن را کامل کنید.

فایل routes/index.js را باز کنید و به سه نقطه پایانی جدید اضافه شده نگاه کنید:

  • /messages : فایل view messages.ejs را دریافت کرده و در مرورگر رندر می‌کند. هنگامی که روی یک موضوع گفتگو از فهرست کلیک می کنید، به یکی از این صفحات می روید.
  • /retrieveMessages : محتویات پیام یک رشته را دریافت می کند و یک لیست قالب بندی شده از همه پیام های موجود در مکالمه را برمی گرداند. صفحه پیام ها به صورت دوره ای این نقطه پایانی را برای نمایش آخرین پیام ها فراخوانی می کند.
  • /sendMessage : یک پیام از نماینده نماینده زنده به کاربر ارسال می کند. وقتی روی Send کلیک می کنید، صفحه پیام ها این را صدا می کند. در حال حاضر اجرا نشده است.

اکنون، نگاهی به روش 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) {
...
}

وب‌هوک قبلاً از این روش برای ارسال پاسخ‌ها از ربات echo استفاده می‌کند. این روش ابتدا داده های پیام ورودی را در شی Cloud Datastore برای مکالمه ذخیره می کند. سپس، پیام پاسخ را ارسال می کند. به شیء پیامی که ایجاد می کند، به ویژه در نوع نماینده، نگاهی دقیق بیندازید.

اکنون، نقطه پایانی /sendMessage را خودتان پیاده سازی کنید. برای انجام بیشتر کارها می توانید از روش storeAndSendResponse موجود در اینجا استفاده کنید. نکته مهم این است که به یاد داشته باشید که نماینده صحیح را تعیین کنید.

هنگامی که این کار را انجام دادید، برنامه را دوباره اجرا کنید و به مکالمه خود در CRM بازگردید. اکنون می توانید مشاهده کنید که پیام های شما در تاریخچه چت ظاهر می شوند. همچنین می توانید پیام های نماینده خود را در دستگاه تست تلفن همراه خود مشاهده کنید.

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.
 */

برای پیاده سازی این، باید همه چیزهایی را که تا کنون از Codelab یاد گرفته اید جمع آوری کنید. این نقطه پایانی باید کارهای زیر را انجام دهد:

  • موضوع را به BOT_THREAD_STATE به روز کنید.
  • یک رویداد REPRESENTATIVE_LEFT ارسال کنید.
  • در مکالمه پیامی ارسال کنید تا به کاربر بگویید با ربات echo صحبت می کند. از روش storeAndSendResponse استفاده کنید. به یاد داشته باشید که نماینده دوباره به BOT تغییر کرده است.

آخرین مرحله وضعیت مکالمه را برای کاربر روشن می کند. وقتی یک نماینده از چت خارج می شود، کاربر رویدادی را می بیند، اما لزوماً نمی داند که دوباره با ربات echo صحبت می کند. با ارسال مستقیم پیام از ربات، سردرگمی کاربران را کاهش داده و تجربه را بهبود می بخشید.

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

6. بسته بندی

بابت تکمیل کدهای انتقال عامل زنده به شما تبریک می گویم!

شما عاملی ایجاد کرده‌اید که می‌تواند از ابتدا تا انتها انتقال‌های نماینده زنده را انجام دهد. شما همچنین یک راه برای ردیابی وضعیت مکالمه با Cloud Datastore را یاد گرفته اید.

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

بعدش چی؟

برخی از این کدها را بررسی کنید:

بیشتر خواندن

اسناد مرجع