Chuyển nhân viên hỗ trợ trực tiếp

Chuyển đến nhân viên hỗ trợ trực tiếp

Thông tin về lớp học lập trình này

subjectLần cập nhật gần đây nhất: thg 11 14, 2024
account_circleTác giả: Sam Bowen

1. Giới thiệu

53003251caaf2be5.png 6717b85f57d859d3.png

Lần cập nhật gần đây nhất: 23/8/2021

Chuyển cuộc trò chuyện sang nhân viên hỗ trợ trực tiếp bằng Business Messages

Tính năng chuyển sang nhân viên hỗ trợ trực tiếp của Business Messages cho phép nhân viên hỗ trợ của bạn bắt đầu cuộc trò chuyện dưới dạng bot và chuyển sang nhân viên hỗ trợ trực tiếp (người đại diện) giữa cuộc trò chuyện. Bot có thể xử lý các câu hỏi thường gặp, chẳng hạn như giờ mở cửa, trong khi nhân viên trực tiếp có thể cung cấp trải nghiệm được tuỳ chỉnh với quyền truy cập nhiều hơn vào ngữ cảnh của người dùng. Khi quá trình chuyển đổi giữa hai trải nghiệm này diễn ra liền mạch, người dùng sẽ nhận được câu trả lời nhanh chóng và chính xác cho câu hỏi của họ, nhờ đó tăng tỷ lệ tương tác của người dùng cũ và tăng mức độ hài lòng của khách hàng.

Lớp học lập trình này hướng dẫn bạn cách khai thác tối đa tính năng chuyển cuộc gọi đến nhân viên hỗ trợ trực tiếp.

Sản phẩm bạn sẽ tạo ra

Trong lớp học lập trình này, bạn sẽ xây dựng một webhook cho trợ lý có thể gửi và nhận sự kiện chuyển trợ lý trực tiếp. Bạn sẽ sử dụng giao diện người dùng cơ bản do mã khởi động cung cấp để kiểm thử những gì bạn đã tạo.

49aca3df6b196c50.png

Kiến thức bạn sẽ học được

  • Cách lưu trữ và quản lý trạng thái cuộc trò chuyện.
  • Cách sử dụng Business Messages để gửi sự kiện chuyển tiếp nhân viên hỗ trợ trực tiếp.
  • Cách thiết lập webhook và giao diện người dùng cơ bản để tham gia cuộc trò chuyện với tư cách là nhân viên hỗ trợ.
  • Các phương pháp hay nhất để sử dụng Business Messages API.

Lớp học lập trình này tập trung vào việc sử dụng Business Message API để triển khai tính năng chuyển cuộc gọi đến nhân viên trực tiếp. Bạn có thể đọc mã khởi động cho từng giai đoạn, nhưng chỉ cần triển khai mã liên quan đến Tin nhắn doanh nghiệp.

Bạn cần có

  • Nhân viên hỗ trợ Business Messages, bao gồm cả khoá tài khoản dịch vụ của bạn. Bạn có thể tạo một nhân viên hỗ trợ bằng cách làm theo Hướng dẫn tạo nhân viên hỗ trợ.
  • Cấu hình Cloud Datastore đang hoạt động được liên kết với dự án GCP của tác nhân. Bạn có thể sử dụng hướng dẫn bắt đầu nhanh về Cloud Datastore để thiết lập tính năng này. Bạn không cần biết cách sử dụng Cloud Datastore.
  • Máy tính đã cài đặt Google Cloud SDKNode.js (phiên bản 10 trở lên).
  • Thiết bị Android (phiên bản 5 trở lên) hoặc thiết bị iOS để kiểm thử trải nghiệm người dùng.
  • Có kinh nghiệm lập trình ứng dụng web. Bạn sẽ viết một lượng nhỏ mã JavaScript và có thể cần gỡ lỗi mã bạn viết.

2. Tạo bot lặp lại

Trong bước này, bạn sẽ triển khai một bot đại diện cơ bản có tên là "Echo bot". Bot này lấy tin nhắn của người dùng, ghi lại các tin nhắn đó vào một chuỗi cuộc trò chuyện trong Cloud Datastore, sau đó "đáp lại" tin nhắn của người dùng bằng cách trả lời bằng cùng một nội dung. Sau khi có một bot cơ bản và cơ sở hạ tầng ghi nhật ký, bạn có thể thêm vào đó để tạo một quá trình triển khai chuyển giao đầy đủ cho nhân viên trực tiếp trong các bước sau.

Tải mã nguồn ban đầu

Trong một thiết bị đầu cuối, hãy nhân bản mã khởi động Chuyển nhân viên hỗ trợ trực tiếp vào thư mục hoạt động của dự án bằng lệnh sau:

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

Tìm hiểu mã khởi động

Hãy xem cấu trúc mã khởi động mà bạn sẽ sử dụng trong suốt lớp học lập trình này.

Chuyển đến thư mục step-1 và xem nội dung của thư mục đó. Tệp này chứa các phần tử sau:

  • bin: Thư mục này chứa tập lệnh khởi động www để thiết lập và định cấu hình máy chủ.
  • libs: Thư mục này chứa datastore_util.js, trong đó có các phương thức thuận tiện để đọc và ghi từ Cloud Datastore. Bạn không cần hiểu cách hoạt động của tệp này. Bạn chỉ cần lưu ý các phương thức có sẵn và chức năng của các phương thức đó.
  • resources (tài nguyên): Thư mục này chứa khoá tài khoản dịch vụ của bạn dưới dạng tệp có tên credentials.json.
  • routes (tuyến): Tệp index.js chứa webhook và tất cả phương thức trợ giúp của webhook đó. Đây là tệp chính mà bạn sẽ làm việc và thêm vào.
  • views (thành phần hiển thị): Thư mục này chứa các tệp mẫu EJS cho các thành phần trên giao diện người dùng. Tệp này sẽ chứa nhiều tệp hơn ở các bước sau.
  • app.js, app.yaml, package.json: Các tệp này định cấu hình ứng dụng và các phần phụ thuộc của ứng dụng.

Trước khi triển khai, hãy tải khoá tài khoản dịch vụ GCP xuống và sao chép tệp thông tin xác thực JSON vào từng thư mục tài nguyên trong mã mẫu. Hãy làm như vậy cho mọi bước trong lớp học lập trình này.

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

Triển khai mã khởi động

Trong một thiết bị đầu cuối, hãy chuyển đến thư mục step-1 của mẫu. Sau đó, hãy thiết lập công cụ gcloud để sử dụng dự án Google Cloud của bạn bằng cách thiết lập mã dự án mà bạn đã dùng để đăng ký với các API.

gcloud config set project <PROJECT_ID>

Để triển khai ứng dụng, hãy chạy lệnh sau:

gcloud app deploy

Lưu ý URL của ứng dụng đã triển khai trong kết quả của lệnh cuối cùng:

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

Mã khởi động mà bạn vừa triển khai chứa một ứng dụng web có webhook để nhận tin nhắn từ Business Messages. Ứng dụng sẽ phản hồi tin nhắn cho người dùng và ghi nhật ký chuỗi tin nhắn vào Cloud Datastore.

Định cấu hình tác nhân

Chuyển đến trang Cài đặt tài khoản trong Business Communications Developer Console rồi đặt webhook thành URL của ứng dụng đã triển khai. Ví dụ: https://PROJECT_ID.appspot.com/callback/.

Sau đó, trên trang Thông tin về nhân viên hỗ trợ, hãy định cấu hình loại tương tác chính và phụ lần lượt là Bot và Người.

db0cca5b74f999ad.png

Trò chuyện với bot lặp lại

Mở tác nhân trong Developer Console. Bạn sẽ thấy trang Tổng quan cho phép bạn xem thông tin chi tiết về nhân viên hỗ trợ. Sao chép URL thử nghiệm nhân viên hỗ trợ khớp với thiết bị thử nghiệm di động của bạn. Sử dụng URL này trên thiết bị di động để khởi chạy giao diện trò chuyện của nhân viên hỗ trợ.

536313929e5c0b3e.png

Tương tác với nhân viên hỗ trợ bằng cách gửi một vài tin nhắn. Giao diện trò chuyện chỉ sao chép nội dung bạn nói – đây không phải là trải nghiệm người dùng hữu ích. Ước gì có cách nào để nói chuyện với người thật!

3. Tham gia cuộc trò chuyện

Bây giờ, hãy xem cuộc trò chuyện từ góc độ của nhân viên hỗ trợ trực tiếp. Là nhân viên hỗ trợ trực tiếp, bạn cần biết một số thông tin về cuộc trò chuyện trước khi tham gia, chẳng hạn như mã cuộc trò chuyện. Bạn cũng nên biết liệu người dùng có yêu cầu nói chuyện với nhân viên hỗ trợ trực tiếp hay không. Trong bước này, bạn sẽ sử dụng trang CRM (Quản lý quan hệ khách hàng) cơ bản để xem thông tin này và tham gia cuộc trò chuyện với tư cách là nhân viên hỗ trợ trực tiếp.

Mã khởi động cho bước này sẽ thêm một CRM cơ bản liệt kê tất cả các chuỗi trò chuyện đang diễn ra cho nhân viên hỗ trợ. Hãy cùng xem CRM đó để biết những cuộc trò chuyện nào có thể cần nhân viên hỗ trợ trực tiếp chú ý.

Chuyển đến thư mục step-2 và triển khai lại ứng dụng như bạn đã làm ở bước trước.

Khi triển khai ứng dụng, bạn sẽ thấy một URL đích. Truy cập vào URL này trong trình duyệt để xem trang thông tin có chuỗi trò chuyện mà bạn bắt đầu ở bước trước. Trạng thái của cuộc trò chuyện hiện là "Do bot quản lý" vì bot lặp lại đang đóng vai trò là người đại diện cho nhân viên hỗ trợ của chúng tôi trong cuộc trò chuyện này.

8f624e9befb8e827.png

Nút Tham gia cuộc trò chuyện xuất hiện nhưng chưa có tác dụng nào. Bạn cũng không thể biết được người dùng có muốn nói chuyện với nhân viên hỗ trợ trực tiếp hay không qua giao diện này.

Business Messages cung cấp sự kiện yêu cầu nhân viên hỗ trợ trực tiếp cho biết thời điểm người dùng muốn nói chuyện với nhân viên hỗ trợ trực tiếp. Bạn cần theo dõi trạng thái đó để liệt kê trong giao diện người dùng.

Hãy xem phương thức gọi lại trong index.js. Bình luận TODO cho biết vị trí bạn cần nắm bắt yêu cầu của người dùng về nhân viên hỗ trợ trực tiếp và cập nhật trạng thái của luồng.

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.
      }
    }
  });
...
});

Bạn cần sử dụng các phương thức trong libs/datastore_utils.js để tải chuỗi cuộc trò chuyện hiện tại và cập nhật trạng thái của chuỗi đó thành QUEUED_THREAD_STATE.

Nếu bạn không chắc mình nên làm gì, hãy xem các giải pháp. Đoạn mã khởi đầu bao gồm một thư mục solutions trong mỗi bước mà bạn cần hoàn thành một số mã. Các thư mục này chứa một bản sao của toàn bộ ứng dụng với quá trình triển khai hoàn chỉnh cho bước đã cho.

Sau khi bạn hoàn tất việc triển khai và triển khai lại ứng dụng, hãy sử dụng trình đơn mục bổ sung trong cuộc trò chuyện trên thiết bị di động để yêu cầu nhân viên hỗ trợ trực tiếp.

e58d2b77e9c64492.png

Bây giờ, nếu quay lại CRM, bạn sẽ thấy một ghi chú trên chuỗi cuộc trò chuyện có nội dung "Yêu cầu nhân viên hỗ trợ trực tiếp". Người dùng này cần được nhân viên hỗ trợ! Bạn cần triển khai điểm cuối joinConversation để nút này hoạt động.

Tìm nhận xét TODO khác trong phương thức được tạo bản mô phỏng cho /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',
  });
});

Bạn cần cập nhật lại trạng thái luồng, lần này là LIVE_AGENT_THREAD_STATE. Ngoài ra, bạn cần sử dụng phương thức conversations.events.create của API Tin nhắn doanh nghiệp để đăng sự kiện REPRESENTATIVE_JOINED.

Để tạo tải trọng yêu cầu, bạn cần đặt các trường được nêu trong bảng sau:

Tên trường

Gợi ý

parent

Đặt giá trị này thành "conversations/{conversationId}".

eventId

Tạo mã nhận dạng ngẫu nhiên của riêng bạn cho sự kiện.

auth

Sử dụng phương thức initCredentials được cung cấp.

resource

Đây chính là nội dung sự kiện. Bạn nên đặt eventType và representative.

Hãy xem trang tham khảo về phương thức tạo hoặc trang tham khảo về sự kiện để được trợ giúp.

Khi bạn triển khai xong, hãy triển khai lại ứng dụng và nhấp vào nút Tham gia cuộc trò chuyện. Hộp thoại Đã tham gia cuộc trò chuyện sẽ xuất hiện và trạng thái trò chuyện sẽ thay đổi thành "Trò chuyện trực tiếp". Nếu xem cuộc trò chuyện trên thiết bị di động, bạn sẽ thấy một ghi chú trong cuộc trò chuyện cho biết nhân viên hỗ trợ trực tiếp đã tham gia.

Xin chúc mừng! Trong bước tiếp theo, chúng ta sẽ tìm hiểu cách để nhân viên hỗ trợ trực tiếp trò chuyện với người dùng.

4. Nhắn tin với tư cách là nhân viên hỗ trợ trực tiếp

Giờ thì bạn đã tham gia cuộc trò chuyện, đã đến lúc gửi một số tin nhắn với tư cách là nhân viên hỗ trợ trực tiếp.

Chuyển đến thư mục step-3 và triển khai lại ứng dụng. Trong CRM, hãy nhấp vào chuỗi cuộc trò chuyện của bạn ở bước trước. Lúc này, bạn sẽ thấy một giao diện trò chuyện cơ bản. Tại đây, bạn có thể xem tin nhắn của người dùng theo thời gian thực.

46dd083f08f43961.png

Tuy nhiên, tính năng gửi tin nhắn dưới tư cách là nhân viên hỗ trợ vẫn chưa được triển khai. Bạn cần hoàn tất việc đó trong bước này.

Mở tệp routes/index.js và xem 3 điểm cuối mới thêm:

  • /messages: Lấy tệp thành phần hiển thị messages.ejs và hiển thị tệp đó trong trình duyệt. Khi nhấp vào một chuỗi cuộc trò chuyện trong chỉ mục, bạn sẽ chuyển đến một trong các trang sau.
  • /retrieveMessages: Lấy nội dung thư của một chuỗi thư và trả về danh sách được định dạng của tất cả thư trong cuộc trò chuyện. Trang tin nhắn định kỳ gọi điểm cuối này để hiển thị các tin nhắn mới nhất.
  • /sendMessage: Gửi tin nhắn từ người đại diện của nhân viên hỗ trợ trực tiếp đến người dùng. Trang tin nhắn gọi phương thức này khi bạn nhấp vào Gửi. Tính năng này hiện chưa được triển khai.

Bây giờ, hãy xem phương thức storeAndSendResponse hiện có:

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) {
...
}

Webhook đã sử dụng phương thức này để gửi phản hồi từ bot echo. Trước tiên, phương thức này sẽ lưu trữ dữ liệu tin nhắn đến trong đối tượng Cloud Datastore cho cuộc trò chuyện. Sau đó, ứng dụng sẽ gửi thông báo phản hồi. Hãy xem xét kỹ đối tượng thông báo mà hàm này tạo ra, đặc biệt là loại đại diện.

Bây giờ, hãy tự triển khai điểm cuối /sendMessage. Bạn có thể sử dụng phương thức storeAndSendResponse hiện có tại đây để thực hiện hầu hết công việc. Điều quan trọng là bạn phải nhớ đặt đúng người đại diện.

Sau khi bạn đã khắc phục được vấn đề này, hãy triển khai lại ứng dụng và quay lại cuộc trò chuyện trong CRM. Giờ đây, bạn có thể thấy tin nhắn của mình xuất hiện trong nhật ký trò chuyện. Bạn cũng có thể thấy tin nhắn của nhân viên hỗ trợ xuất hiện trên thiết bị kiểm thử di động.

49aca3df6b196c50.png

Trước khi chuyển sang phần tiếp theo, hãy đảm bảo bạn hiểu cách hoạt động của các điểm cuối mới. Trong bước tiếp theo, bạn sẽ thêm điểm cuối của riêng mình để rời khỏi cuộc trò chuyện.

5. Rời khỏi cuộc trò chuyện

Sau khi giúp người dùng giải đáp thắc mắc, bạn có thể rời khỏi cuộc trò chuyện và để người dùng nói chuyện lại với bot. Trong Business Messages, sự thay đổi này được báo hiệu bằng một sự kiện REPRESENTATIVE_LEFT.

Chuyển đến thư mục step-4, triển khai lại ứng dụng và quay lại chuỗi cuộc trò chuyện. Giờ đây, bạn sẽ thấy đường liên kết Đóng và rời khỏi cuộc trò chuyện ở cuối chuỗi thư. Đường liên kết này chưa hoạt động vì chưa triển khai điểm cuối leaveConversation.

ef4ad8107c3fff2.png

Xem tệp index.js. Có một ghi chú TODO (Việc cần làm) hướng dẫn bạn tạo một điểm cuối leaveConversation mới.

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

Để triển khai việc này, bạn cần tổng hợp mọi kiến thức đã học được từ lớp học lập trình cho đến thời điểm này. Điểm cuối này sẽ thực hiện những việc sau:

  • Cập nhật luồng thành BOT_THREAD_STATE.
  • Gửi sự kiện REPRESENTATIVE_LEFT.
  • Gửi tin nhắn trong cuộc trò chuyện để cho người dùng biết họ đang nói chuyện với bot phản hồi. Sử dụng phương thức storeAndSendResponse. Hãy nhớ rằng đại diện đã thay đổi trở lại thành BOT.

Bước cuối cùng sẽ làm rõ trạng thái của cuộc trò chuyện cho người dùng. Người dùng sẽ thấy một sự kiện khi nhân viên hỗ trợ rời khỏi cuộc trò chuyện, nhưng họ không nhất thiết phải biết rằng họ đang nói chuyện lại với bot lặp lại. Bằng cách gửi tin nhắn trực tiếp từ bot, bạn sẽ giảm bớt sự nhầm lẫn cho người dùng và cải thiện trải nghiệm.

Giờ đây, khi bot đang xử lý mọi việc, nhân viên hỗ trợ trực tiếp có thể tham gia một cuộc trò chuyện khác. Hãy thử nghiệm với mã mẫu và CRM bao nhiêu lần tùy thích. Hãy thử nghiệm một số ý tưởng mà bạn có cho trải nghiệm chuyển cuộc gọi đến nhân viên hỗ trợ trực tiếp của doanh nghiệp và xem kết quả.

6. Kết thúc

Chúc mừng bạn đã hoàn thành lớp học lập trình về tính năng chuyển cuộc gọi đến nhân viên trực tiếp!

Bạn đã tạo một nhân viên hỗ trợ có thể xử lý toàn bộ quá trình chuyển cuộc trò chuyện sang nhân viên hỗ trợ trực tiếp. Bạn cũng đã tìm hiểu một cách để theo dõi trạng thái của cuộc trò chuyện bằng Cloud Datastore.

Với tính năng chuyển sang nhân viên hỗ trợ trực tiếp, bạn có thể để bot xử lý các yêu cầu phổ biến, trong khi nhân viên hỗ trợ trực tiếp xử lý các yêu cầu phức tạp hơn. Người dùng sẽ hài lòng hơn với trải nghiệm mới, được tuỳ chỉnh và hữu ích, nhờ đó tăng khả năng họ quay lại và giới thiệu doanh nghiệp của bạn cho bạn bè.

Tiếp theo là gì?

Hãy tham khảo một số lớp học lập trình sau:

Tài liệu đọc thêm

Tài liệu tham khảo