Tạo nhân viên hỗ trợ RBM dựa trên Dialogflow (Nâng cao)

Trong lớp học lập trình này, bạn sẽ tìm hiểu cách sử dụng Dialogflow để tạo giao diện trò chuyện nhằm hỗ trợ tác nhân RBM.

Bạn sẽ xây dựng gì trong lớp học lập trình này?

  • Nhân viên hỗ trợ dự án Dialogflow hỗ trợ cuộc trò chuyện của nhân viên hỗ trợ RBM
  • Giao diện trò chuyện của một cửa hàng xe đạp hư cấu, cho phép người dùng biết thông tin về cửa hàng xe đạp và đặt lịch sửa xe hoặc sửa chữa xe đạp

Sau đây là nội dung mà bạn sẽ tìm hiểu

  • Cách sử dụng ba cấu trúc chính của Dialogflow (ý định, thực thể và ngữ cảnh) để tạo giao diện trò chuyện
  • Cách kết nối giao diện trò chuyện với các dịch vụ và API của riêng bạn bằng cách sử dụng phương thức thực hiện của Dialogflow và trình chỉnh sửa cùng dòng (do CloudFunction cung cấp cho Firebase)
  • Cách tạo các loại phản hồi RBM từ Dialogflow để tạo trải nghiệm RBM phong phú cho người dùng

Bạn cần:

  • Tài khoản Google

Tạo và truy vấn nhân viên hỗ trợ đầu tiên

Thời lượng: 10:00

Tạo nhân viên hỗ trợ dự án Dialogflow đầu tiên

Cách tạo nhân viên hỗ trợ dự án Dialogflow:

  1. Mở một thẻ mới và đăng nhập vào Dialogflow.
  2. Nhấp vào Tạo nhân viên hỗ trợ trong bảng điều hướng bên trái.

  3. Nhập "CodelabRBMBikeShop" cho tên nhân viên hỗ trợ của bạn, "Tiếng Anh" làm ngôn ngữ mặc định và đặt múi giờ mặc định thành múi giờ của bạn. Sau đó, hãy nhấp vào Tạo.

Bảng điều khiển Dialogflow

Bây giờ, bạn sẽ thấy bảng điều khiển Dialogflow. Nếu bạn đang làm việc trên một màn hình nhỏ hơn và điều hướng bên trái đã bị ẩn, hãy nhấp vào nút điều hướng ở góc trên cùng bên trái. Nút cài đặt sẽ đưa bạn đến phần cài đặt tác nhân hiện tại.

Phần giữa trang sẽ hiển thị danh sách ý định cho tác nhân. Theo mặc định, các tác nhân Dialogflow bắt đầu với hai ý định. Tác nhân của bạn khớp với Ý định dự phòng mặc định khi không hiểu rõ nội dung người dùng nói. Ý định chào mừng mặc định chào mừng người dùng của bạn. Bạn có thể thay đổi các ý định này để tuỳ chỉnh trải nghiệm.

Bên phải là trình mô phỏng Dialogflow. Điều này cho phép bạn thử nhân viên hỗ trợ của mình bằng cách nói hoặc nhập tin nhắn.

Truy vấn nhân viên hỗ trợ của bạn

Tác nhân Dialogflow được mô tả tốt nhất là mô-đun NLU (Hiểu ngôn ngữ tự nhiên). Dữ liệu này có thể được đưa vào ứng dụng, sản phẩm hoặc dịch vụ của bạn để chuyển đổi các yêu cầu tự nhiên của người dùng thành dữ liệu hữu ích.

Đã đến lúc thử nghiệm nhân viên hỗ trợ của bạn rồi! Trong trình mô phỏng ở bên phải, hãy nhấp vào trường văn bản có nội dung Try now (Thử ngay), nhập "Hi" rồi nhấn Enter.

Dialogflow xác định truy vấn, khớp với Ý định chào mừng mặc định và phản hồi bằng một lời chào chung. Cách này hoạt động vì Dialogflow tự động đào tạo Ý định chào mừng mặc định bằng một số lời chào mẫu.

Tạo nhân viên hỗ trợ RBM

Đăng nhập vào Bảng điều khiển dành cho nhà phát triển Giao tiếp doanh nghiệp, sau đó nhấp vào Tạo nhân viên hỗ trợ.

Trong trường Tên, hãy nhập "Cửa hàng xe đạp của bạn" (như "Đại lý xe đạp của Sean"), hãy chọn một Khu vực rồi nhấp vào Tạo nhân viên hỗ trợ.

Kết nối nhân viên hỗ trợ RBM của bạn với Dialogflow

Sau khi bạn tạo nhân viên hỗ trợ RBM, hãy nhấp vào nhân viên hỗ trợ đó để xem trang Tổng quan của nhân viên hỗ trợ. Nhấp vào đường liên kết Tích hợp trong thanh điều hướng bên trái.

Theo mặc định, nhân viên hỗ trợ RBM sử dụng Google Cloud Pub/Sub để xử lý tin nhắn của người dùng. Để kết nối nhân viên hỗ trợ RBM của bạn với nhân viên hỗ trợ dự án Dialogflow bạn đã tạo trước đó, hãy nhấp vào mục tích hợp Dialogflow.

Trong hộp thoại, hãy nhấp vào Kết nối mô hình hiện tại. Làm theo hướng dẫn để cấp quyền cho nhân viên hỗ trợ RBM của bạn gọi cho nhân viên hỗ trợ dự án Dialogflow, sau đó nhấp vào Tiếp theo.

Cuối cùng, bạn cần cung cấp mã dự án Dialogflow. Trong một thẻ trình duyệt khác với Bảng điều khiển dành cho nhà phát triển Business Communication, hãy chuyển đến Dialogflow và mở tác nhân CodelabRBMBikeShop mà bạn đã tạo trước đó. Nhấp vào biểu tượng bánh răng gần tên dự án trong thanh điều hướng bên trái.

Khi nhấp vào nút này, bạn sẽ được chuyển đến phần cài đặt của mô hình. Trong mục GOOGLE PROJECT (Tìm kiếm, hãy tìm và sao chép Mã dự án).

Trở lại thẻ của bạn khi đang mở Business Console dành cho Nhà phát triển, dán mã dự án vào hộp thoại, sau đó nhấp vào Bắt đầu công cụ tích hợp.

Quá trình này mất khoảng hai phút để hoàn tất. Sau khi hoàn tất, bạn sẽ thấy tuỳ chọn tích hợp Dialogflow được làm nổi bật và đường liên kết Xem tác nhân có sẵn.

Tất cả tin nhắn đến và đi từ nhân viên hỗ trợ của bạn hiện đang được nhân viên hỗ trợ của CodelabRBMBikeShop xử lý.

Mời thiết bị thử nghiệm và gửi tin nhắn

Trước khi tìm hiểu về Dialogflow, hãy thiết lập thiết bị thử nghiệm. Nếu bạn chưa có thiết bị nhận tin nhắn RBM, hãy làm theo hướng dẫn này để chuẩn bị thiết bị của bạn.

Trên Business Console Developer Console, hãy nhấp vào Devices (Thiết bị) trong bảng điều hướng bên trái. Trong biểu mẫu, hãy nhập số điện thoại đầy đủ của thiết bị ở định dạng E.164 (ví dụ: +12223334444) rồi nhấp vào Thêm.

Trên thiết bị, bạn sẽ nhận được lời mời tham gia thử nghiệm. Nhấn vào Đặt tôi làm người thử nghiệm.

Trong trình duyệt, hãy tìm thiết bị của bạn trong danh sách Thiết bị rồi gửi thông báo thử nghiệm cho thiết bị. Nếu bạn nhận được thông báo trên thiết bị từ nhân viên hỗ trợ RBM, thì bạn đã sẵn sàng tiếp tục với lớp học lập trình này.

Đang tạo ý định chào mừng

Thông thường, với một nhân viên hỗ trợ RBM được hỗ trợ bằng Dialogflow, bạn sẽ thực hiện một lệnh gọi API để chỉ định số điện thoại của người dùng và ý định về Dialogflow sẽ bắt đầu cuộc trò chuyện (thường là ý định chào mừng của nhân viên hỗ trợ). Đối với lớp học lập trình này, chúng ta sẽ bỏ qua bước này và thay vào đó, hãy sử dụng chuỗi trò chuyện mà chúng ta đã tạo ở bước trước đó với thiết bị thử nghiệm trong Bảng điều khiển dành cho nhà phát triển Giao tiếp doanh nghiệp. Tuy nhiên, nếu bạn muốn đọc thêm về tính năng API này, hãy xem hướng dẫn này.

Hãy bắt đầu bằng cách thêm các phản hồi RBM vào Ý định chào mừng mặc định để Dialogflow có thể sử dụng mã này với nhân viên hỗ trợ RBM của bạn. Trước tiên, hãy chuyển đến thẻ trình duyệt đang mở Dialogflow. Nhấp vào Ý định chào mừng mặc định, di chuyển xuống phần Câu trả lời, nhấp vào biểu tượng dấu + trong danh sách các loại câu trả lời, rồi chọn RCS Business Messaging (RBM) (Thông báo doanh nghiệp RCS).

Nhấp vào Thêm câu trả lời, sau đó chọn Câu trả lời đơn giản. Trong trường văn bản cho Simple Response, hãy nhập "Xin chào! Chào mừng bạn đến với cửa hàng xe đạp của Hogarth. Tôi có thể giúp gì trích dẫn; (thay Hogarth bằng tên của bạn), rồi nhấp vào Save (Lưu).

Bắt đầu trò chuyện

Sau khi bạn có cấu hình ý định chào mừng, hãy quay lại thiết bị thử nghiệm và gửi tin nhắn "Hi" Thông báo này kích hoạt Intent chào mừng mặc định và bạn sẽ thấy nội dung tương tự như hình ảnh bên dưới.

Cập nhật ý định chào mừng

Giờ đây, khi bạn đã có Dialogflow để gửi thông báo đơn giản, hãy cập nhật thông báo cho hữu ích hơn một chút. Chúng ta không chỉ muốn chào người dùng mà còn định hướng hành động mà họ thực hiện.

Nhân viên hỗ trợ mà chúng tôi đang tạo cần hỗ trợ hai tính năng chính: kiểm tra giờ hoạt động của doanh nghiệp và đặt lịch hẹn. Hãy thay thế thông báo chào mừng phản hồi đơn giản của chúng ta bằng một thẻ cung cấp các câu trả lời đề xuất để thực hiện những tương tác này.

Trong Ý định chào mừng mặc định, phần Câu trả lời, chọn thẻ RCS Business Messaging (RBM) (Phản hồi của doanh nghiệp (RCS)). Xoá Phản hồi đơn giản hiện có bằng cách nhấp vào biểu tượng thùng rác. Tiếp theo, nhấp vào Thêm câu trả lời rồi chọn Thẻ thông tin chi tiết độc lập.

Trong biểu mẫu Thẻ thông tin độc lập, hãy nhập nội dung sau:

  • Tiêu đề thẻ: Xin chào! Chào mừng bạn đến với cửa hàng xe đạp của Hogarth.
  • Nội dung mô tả thẻ: Tôi có thể giúp gì cho bạn? Chọn trong số các lựa chọn bên dưới:
  • Chọn hướng thẻ: Dọc
  • URL hình ảnh/video: https://storage.googleapis.com/df-rbm-codelab/bike-shop.jpg
  • Chọn Chiều cao nội dung nghe nhìn: Trung bình

Nhấp vào Thêm đề xuất rồi nhập những thông tin sau:

  • Văn bản đề xuất: Giờ làm việc của bạn là gì?
  • Đăng lại đề xuất: Reply_hours

Thêm một đề xuất khác bằng cách nhấp vào Thêm đề xuất và nhập nội dung sau:

  • Văn bản đề xuất: Đặt lịch hẹn
  • Đăng lại đề xuất: response_appointment

Nhấp vào Lưu.

Hãy thử xem!

Sau khi mô hình nói "Đào tạo nhân viên hỗ trợ", hãy quay lại thiết bị của bạn rồi gửi tin nhắn "Hi" cho nhân viên hỗ trợ của bạn. Bây giờ, bạn sẽ thấy Thẻ nhiều định dạng độc lập mà bạn vừa thiết kế.

Hãy thử nhấn vào Giờ của bạn? Xin lưu ý rằng Ý định dự phòng mặc định được kích hoạt. Nguyên nhân là do nhân viên hỗ trợ dự án Dialogflow của bạn không biết cách xử lý dữ liệu đăng lại mà bạn đã định cấu hình cho đề xuất này."reply_hours"

Hãy khắc phục vấn đề này.

Đang tạo ý định Giờ của bạn

Dialogflow dựa vào ý định để phân loại ý định của người dùng. Ý định có các cụm từ đào tạo, là những ví dụ về nội dung mà người dùng có thể nói với nhân viên hỗ trợ của bạn. Ví dụ: một người muốn biết giờ mở cửa của cửa hàng xe đạp của chúng tôi có thể hỏi: "quot;Khi nào bạn mở cửa vậy"; "Buổi tối giờ của bạn là bao nhiêu; hoặc "Tôi có thể đến muộn hơn bao nhiêu;

Tất cả những cụm từ này đều khác nhau nhưng đều có cùng ý định: lấy thông tin về thời điểm cửa hàng xe đạp của chúng tôi mở cửa.

Để bao gồm truy vấn này, hãy tạo "Hours" ý định:

  1. Trong bảng điều hướng bên trái, hãy nhấp vào dấu + bên cạnh Ý định.
  2. Đối với Tên ý định, hãy nhập "Hours".
  3. Trong Đào tạo cụm từ, nhấp vào Thêm biểu thức người dùng và nhập nội dung sau, nhấn phím Enter sau mỗi mục nhập:

    • When do you open?
    • What are your hours?
    • How late can I come in?
    • reply_hours.

    Cụm từ đào tạo gần đây nhất này được dùng để liên kết dữ liệu đăng lại mà bạn đã định cấu hình trong phần trước với ý định này.

  4. Trong mục Câu trả lời, hãy nhấp vào biểu tượng dấu + rồi chọn RCS Business Messaging (RBM) (Thông báo doanh nghiệp RCS).

  5. Nhấp vào Thêm câu trả lời rồi chọn Câu trả lời đơn giản.

  6. Trong trường văn bản cho Phản hồi đơn giản, hãy nhập "We\39;mở cửa mỗi ngày trong tuần từ 9 giờ sáng đến 5 giờ 30 chiều."

  7. Nhấp vào Lưu.

Hãy thử xem!

Bây giờ, hãy thử hỏi nhân viên hỗ trợ của bạn để biết giờ mở cửa. Trên thiết bị của bạn, trong cuộc trò chuyện với nhân viên hỗ trợ RBM, hãy nhập "Bạn mở cửa trích dẫn khi nào; và gửi tin nhắn cho nhân viên hỗ trợ của bạn.

Nhân viên hỗ trợ của bạn trả lời đúng truy vấn. Xin lưu ý rằng mặc dù cụm từ tìm kiếm của bạn hơi khác so với cụm từ đào tạo ("Khi nào bạn mở [#quot; so với "Khi nào bạn mở khai thác chiếm giới thiệu);, Dialogflow vẫn khớp truy vấn với ý định phù hợp. Bạn cũng có thể thử nhấn vào Giờ của bạn? trong thẻ thông tin chi tiết.

Dialogflow sử dụng các cụm từ đào tạo làm ví dụ cho mô hình máy học để khớp với người dùng' truy vấn đến đúng ý định. Mô hình máy học kiểm tra truy vấn so với mọi ý định trong tác nhân, cho điểm ý định và điểm ý định có điểm số cao nhất được so khớp. Nếu ý định chấm điểm cao nhất có điểm số rất thấp, ý định dự phòng sẽ được so khớp.

Thêm phương thức thực hiện đơn hàng

Trong quá trình thực hiện, nhân viên hỗ trợ mà chúng tôi tạo vẫn hoạt động hơi bất thường. Khi người dùng hỏi những nội dung như "Bạn có đang mở rộngSử dụng không;, nhân viên hỗ trợ đó sẽ phản hồi bằng "Chúng tôi mở cửa mỗi ngày trong tuần từ 9 giờ sáng đến 5 giờ 30 chiều" Sẽ tự nhiên hơn nhiều và hữu ích hơn nhiều nếu nhân viên hỗ trợ trực tiếp cho chúng tôi biết liệu cửa hàng có mở cửa hay không.

Để làm việc này, nhân viên hỗ trợ của chúng tôi cần kiểm tra xem cửa hàng hiện đang mở cửa và có thể phản hồi bằng cả hai trường hợp. Trong Dialogflow, loại logic phức tạp này nên được triển khai trong webhook thực hiện đơn hàng.

Webhook là một máy chủ HTTP được Dialogflow gọi ra, cùng với thông tin về trạng thái trò chuyện hiện tại. Mã thực hiện mọi thao tác cần thiết, sau đó tạo phản hồi mà Dialogflow sẽ trả về cho người dùng.

Bây giờ, chúng ta sẽ thực hiện quy trình triển khai webhook thực hiện giúp tác nhân của chúng tôi phản hồi hữu ích hơn.

Thiết lập: Triển khai và bật tính năng thực hiện đơn hàng

Dialogflow có một trình chỉnh sửa Chức năng đám mây dành cho Firebase tích hợp sẵn cho phép bạn viết và triển khai mã JavaScript để xử lý việc thực hiện đơn hàng.

Trong bảng điều hướng bên trái của Dialogflow, hãy nhấp vào Thực hiện để mở trang thực hiện đơn hàng. Nhấp vào nút bật/tắt bên cạnh In Editor Editor (Trình chỉnh sửa cùng dòng) để bật Chức năng đám mây cho trình chỉnh sửa Firebase.

Bạn sẽ nhận thấy trình chỉnh sửa chứa hai tệp: "index.js", chứa mã chính cho cách thực hiện đơn hàng và "package.json" có chứa thông tin chi tiết về các phần phụ thuộc bắt buộc.

Bây giờ, chúng ta sẽ nhập một số mã mẫu hỗ trợ việc thực hiện đơn hàng.

Sao chép và dán văn bản của tệp này vào "index.js", thay thế tất cả nội dung hiện tại của tệp:

https://storage.googleapis.com/df-rbm-codelab/index.js

Bây giờ, hãy di chuyển xuống cuối trang rồi nhấp vào DEPLOY (TUYỆT VỜI). Sau khoảng một phút, mã của bạn sẽ được triển khai tới Cloud function cho Firebase.

Sau khi triển khai hàm này, bạn sẽ thấy ngày và giờ triển khai ở cuối trang:

Xem mã thực hiện đơn hàng. Hàm hoursHandler gọi currentlyOpen để xác định xem cửa hàng hiện có mở hay không và thêm phản hồi RBM khác tuỳ thuộc vào điều kiện.

function hoursHandler(agent) {
    let responseText = 'We\'re currently closed, but we open every weekday at 9am!';
    if (currentlyOpen()) {
      responseText = 'We\'re open now!! We close at 5pm today.';
    }

    let payload = {
    "fulfillmentMessages": [
        {
          "platform": "GOOGLE_RBM",
          "rbmText": {
              "text": responseText
          }
        }
      ]
    };

    return response.status(200).json(payload);
}

Dòng intentMap.set('Hours', hoursHandler); cho thư viện thực hiện biết rằng hàm hoursHandler sẽ chạy khi "Hours" ý định được so khớp. Tuy nhiên, chúng tôi cũng cần thông báo cho Dialogflow để bật tính năng thực hiện đối với ý định "Hours" của chúng tôi.

Trong ngăn điều hướng bên trái, hãy nhấp vào Ý định và mở ý định "Hours". Mở mục Thực hiện ở dưới cùng rồi chọn Bật lệnh gọi webhook cho ý định này để bật/tắt tính năng này.

Sau khi lưu ý định, bạn có thể thử ý định đó. Trong trình mô phỏng ở bên phải, hãy nhập "Bạn có đang mở?&quot hay không; Nếu nhấp vào Chẩn đoán thông tin và kiểm tra phản hồi API, bạn sẽ thấy phản hồi thực hiện. Xin lưu ý rằng múi giờ mà chức năng Cloud cho máy chủ Firebase sử dụng sẽ là UTC, vì vậy, phản hồi có thể không chính xác với giờ địa phương hiện tại của bạn.

Nếu xảy ra lỗi trong quá trình thực hiện yêu cầu, Dialogflow sẽ sử dụng bất kỳ phản hồi nào được xác định trong phần Phản hồi của trang Ý định, cho phép nhân viên hỗ trợ khôi phục linh hoạt.

Tiếp theo, chúng tôi sẽ sử dụng các thực thể để trích xuất các phần có liên quan của cụm từ tìm kiếm của người dùng. Nhờ đó, người dùng có thể đặt lịch hẹn với cửa hàng xe đạp của chúng tôi để sửa hoặc bảo dưỡng xe đạp.

Trích xuất dữ liệu với thực thể

Thời lượng: 12:00

Trong phần này, chúng ta sẽ xem xét cách trích xuất dữ liệu từ truy vấn của người dùng để cho phép người dùng đặt lịch hẹn với cửa hàng xe đạp của chúng tôi để bảo dưỡng hoặc sửa xe đạp.

Thêm thông số vào ý định

Tham số là các từ hoặc cụm từ có liên quan trong cụm từ tìm kiếm của người dùng mà Dialogflow sẽ trích xuất, vì vậy, nhân viên hỗ trợ của bạn có thể cung cấp phản hồi phù hợp. Bạn sẽ tạo một ý định mới bằng các thông số và tìm hiểu cách đưa giá trị của các ý định đó vào phản hồi.

  1. Nhấp vào dấu + bên cạnh Ý định trong bảng điều hướng bên trái để tạo ý định mới.
  2. Để biết tên ý định, hãy nhập "Đặt cuộc hẹn" ở đầu trang.
  3. Thêm các cụm từ sau đây dưới dạng Cụm từ đào tạo:
    • reply_appointment
    • I'd like to schedule an appointment for next Thursday
    • I'd like to get my bike fixed, I have a mountain bike that needs servicing
    • My bike is broken
    • Can I schedule service for 4pm tomorrow?
    • Can you fix my road bike?
    • Can I set up an appointment for noon on Friday?

Dialogflow tự động phát hiện các thông số đã biết trong Cụm từ đào tạo và tạo các thông số đó cho bạn.

Bên dưới phần Cụm từ đào tạo, Dialogflow sẽ tự động điền thông tin thu thập vào bảng thông số:

  • tham số là không bắt buộc (không bắt buộc)
  • có tên là datetime
  • tương ứng với loại thực thể hệ thống @sys.date@sys.time**
  • có giá trị là $date$time
  • không phải là danh sách

Sử dụng dữ liệu thông số

Bạn có thể sử dụng giá trị của một thông số trong phản hồi của mình. Trong trường hợp này, bạn có thể sử dụng $date$time trong phản hồi và chúng sẽ được thay thế bằng ngày và giờ được chỉ định trong truy vấn với tác nhân của bạn.

Trong Câu trả lời, hãy thêm thẻ RCS Business Messaging, thêm thông tin sau vào một Câu trả lời đơn giản rồi nhấp vào Lưu:

Great! I've set up your appointment for $date at $time.  See you then!

Hãy thử xem!

Bây giờ, hãy truy vấn nhân viên hỗ trợ của bạn bằng "Tôi có thể đặt lịch hẹn lúc 2 giờ chiều mai{4/}quot; trong trình mô phỏng ở bảng điều khiển bên phải không.

Bạn có thể thấy ở cuối kết quả của trình mô phỏng rằng Dialogflow đã trích xuất chính xác các thông số " mai" và "2 giờ" từ truy vấn và đã phân tích cú pháp chính xác ngày và giờ đó. Bây giờ, hãy thử tương tự từ thiết bị kiểm thử của bạn và xem cách phản hồi bao gồm chính xác ngày và giờ được phân tích cú pháp.

Tạo tham số bắt buộc

Trong trường hợp của cửa hàng xe đạp, chúng tôi cần biết giá trị của cả ngày và giờ trước khi có thể lên lịch hẹn. Theo mặc định, tất cả các thông số Dialogflow đều là không bắt buộc. Để yêu cầu các tham số này, chúng ta cần đánh dấu vào hộp bên cạnh mỗi tham số mà chúng tôi muốn tạo bắt buộc. Đánh dấu vào hộp bên cạnh từng thông số trong ý định "Make Appointment":

Bây giờ, mỗi thông số là bắt buộc, chúng ta cần tạo lời nhắc cho từng thông số. Lời nhắc yêu cầu người dùng cung cấp giá trị cho mọi thông số không được cung cấp khi người dùng ban đầu cho biết ý định của họ (trong trường hợp này, là đặt lịch hẹn). Nhấp vào Xác định lời nhắc để tạo lời nhắc cho một thông số và nhập lời nhắc sau đây cho từng thông số:

Thông số Lời nhắc
ngày Bạn muốn đến vào ngày nào?
thời gian Thời gian nào phù hợp với bạn?

Sau khi nhập lời nhắc, hãy nhấp vào Lưu.

Hãy thử xem!

Trên thiết bị, hãy nhấn vào loại hoặc đề xuất Đặt lịch hẹn và tôi muốn sửa xe đạp của mình." Bạn sẽ nhận được câu trả lời "Bạn muốn đến vào ngày hôm nay;. Cho biết một ngày (" mai") và bạn sẽ nhận được phản hồi yêu cầu thời gian vào ngày đó. Hãy trả lời và bạn sẽ thấy cuộc hẹn của mình đã được đặt.

Các truy vấn chứa một số thông tin trong yêu cầu ban đầu (tức là "Tôi muốn thiết lập một cuộc hẹn cho ngày mai") điền vào thông số chính xác (ngày), bỏ qua lời nhắc ngày ("Bạn muốn truy cập vào{5}quot; vào ngày nào) và chuyển đến lời nhắc thời gian ("Thời gian nào phù hợp với bạn?quot;).

Chúng tôi vừa sử dụng các thực thể và tham số Dialogflow để tạo một cuộc trò chuyện hoàn toàn độc đáo mà không cần mã và rất ít thiết lập! Tiếp theo, chúng tôi sẽ trình bày cách sử dụng phương thức thực hiện để giúp hướng dẫn câu trả lời của người dùng cho các lời nhắc như "Bạn muốn đặt lịch hẹn vào ngày nào;.

Thiết lập: Cho phép thực hiện đơn hàng

Trong ngăn điều hướng bên trái, hãy nhấp vào Ý định rồi mở ý định &Đặt lịch hẹn". Mở mục Thực hiện, chọn Bật lệnh gọi webhook cho ý định nàyBật lệnh gọi webhook để lấp đầy vị trí để cả hai tuỳ chọn này đều bật/tắt và nhấp vào Lưu.

Khi bật cả hai tuỳ chọn này, khi ý định này được kích hoạt, Dialogflow sẽ sử dụng phương thức thực hiện để tạo phản hồi cho các tham số bắt buộc (nếu cần) cũng như phản hồi RBM cho ý định đó.

Triển khai phương thức thực hiện đơn hàng

Trong bảng điều hướng bên trái của Dialogflow, hãy nhấp vào Thực hiện để mở trang thực hiện đơn hàng. Cuộn xuống đến dòng

intentMap.set('Hours', hoursHandler);

Và thêm nội dung sau làm dòng tiếp theo:

intentMap.set('Make Appointment', makeAppointment);

Điều này cho thư viện thực hiện biết rằng hàm makeAppointment sẽ chạy khi "Đặt cuộc hẹn" ý định được khớp.

Tiếp theo, sao chép và dán mã dưới đây vào hàm currentlyOpen. Hai hàm getSuggestedTimesgetSuggestedDates tạo các danh sách khối hữu ích để hỗ trợ phản hồi của người dùng.

function getSuggestedTimes() {
  return [
        {
          "reply": {
            "text": "9 am",
            "postbackData": "9:00am"
            }
        },
        {
          "reply": {
            "text": "10 am",
            "postbackData": "10:00am"
          }
        },
        {
          "reply": {
            "text": "1 pm",
            "postbackData": "1:00pm"
          }
        },
        {
          "reply": {
            "text": "2 pm",
            "postbackData": "2:00pm"
          }
        }
      ];
}

function getSuggestedDates() {
  return [
        {
          "reply": {
            "text": "Tomorrow",
            "postbackData": "Tomorrow"
          }
        },
        {
          "reply": {
            "text": "A week from now",
            "postbackData": "A week from now"
          }
        },
        {
          "reply": {
            "text": "Two weeks from now",
            "postbackData": "Two weeks from now"
          }
        }
      ];
}

Tiếp theo, bên dưới hoursHandler, hãy sao chép và dán mã bên dưới, sau đó nhấp vào Deploy (Triển khai).

function makeAppointment(agent) {
    // extract required parameters
    const appointmentDate = agent.parameters.date;
    const appointmentTime = agent.parameters.time;

    const gotAppointmentDate = appointmentDate.length > 0;
    const gotAppointmentTime = appointmentTime.length > 0;

    let responseText = '';
    let suggestions = [];

    if(gotAppointmentDate && gotAppointmentTime) {
      // We have all required parameters, return success message
      responseText = 'Great! I\'ve set up your appointment for ' +
          appointmentDate + ' at ' + appointmentTime + '.  See you then!';
    }
    else if(gotAppointmentDate) {
      responseText = 'What time works for you?';
      suggestions = getSuggestedTimes();
    }
    else if(gotAppointmentTime) {
      responseText = 'What day do you want to come in?';
      suggestions = getSuggestedDates();
    }
    else {
      responseText = 'What day do you want to come in?';
      suggestions = getSuggestedDates();
    }

    let payload = {
      "fulfillmentMessages": [
      {
        "platform": "GOOGLE_RBM",
        "rbmText": {
          "text": responseText,
          "rbmSuggestion": suggestions
        }
      }
    ]
    };

    return response.status(200).json(payload);
  }

Hãy dành vài phút để kiểm tra mã. Lưu ý rằng hệ thống đang kiểm tra các thông số bắt buộc đối với giá trị (nếu chưa đặt), nhắc người dùng bằng một thông báo thích hợp và bộ đề xuất.

Hãy thử xem!

Trên thiết bị, hãy nhấn vào loại hoặc đề xuất Đặt lịch hẹn và tôi muốn sửa xe đạp của mình." Bạn sẽ nhận được phản hồi "Bạn muốn truy cập vào ngày nào; cùng với một số đề xuất hữu ích: "Ngày mai", "Một tuần kể từ bây giờ" và "Hai tuần kể từ bây giờ" Hãy cho biết một ngày (" mai") và bạn sẽ nhận được phản hồi hỏi một thời gian. Hãy phản hồi yêu cầu đó và các bạn sẽ thấy cuộc hẹn của bạn đã được đặt.

Quản lý trạng thái bằng các ngữ cảnh

Thời lượng: 7:00

Thêm ngữ cảnh vào trạng thái trò chuyện

Sau khi người dùng đã thiết lập thành công cuộc hẹn, chúng ta có thể muốn thu thập thêm một số thông tin từ họ. Hãy tưởng tượng cửa hàng xe đạp của chúng tôi cung cấp hai loại lịch hẹn: sửa chữa hoặc điều chỉnh. Chúng ta cần biết người dùng cần những chỉ số nào trong số này.

Để bắt đầu, hãy cập nhật câu trả lời cho "Đặt lịch hẹn" ý định để cho người dùng biết loại cuộc hẹn mà họ cần. Thay thế phản hồi thành công trong hàm thực thi makeAppointment của bạn bằng văn bản dưới đây, rồi nhấp vào Deploy (Triển khai).

responseText = 'Great! I\'ve set up your appointment for ' +
    appointmentDate + ' at ' + appointmentTime + '.  Do you need a repair for just a tune-up?';

Để thu thập câu trả lời cho câu hỏi này, chúng ta cần tạo một ý định khác. Tuy nhiên, điều quan trọng là ý định mới này chỉ được so khớp sau khi câu hỏi này đã được trả lời. Để thực thi điều này, chúng ta có thể xác định ý định đó là ý định tiếp theo.

Ý định tiếp theo là những ý định chỉ có thể được so khớp sau ý định "parent", (trong trường hợp này là ý định "Make" của chúng tôi) đã được so khớp. Nhấp vào Ý định trong thanh điều hướng bên trái (nếu trình đơn bị ẩn, hãy nhấp vào nút trình đơn ☰ ở góc trên bên trái). Sau đó , di chuột qua "Make Appointment" Intent và nhấp vào Add Follow-intent (Thêm ý định tiếp theo) xuất hiện ở bên phải tên ý định:

Tiếp theo, hãy nhấp vào tùy chỉnh từ trình đơn thả xuống.

Dialogflow tự động đặt tên cho ý định tiếp theo "Đặt cuộc hẹn – tùy chỉnh," và mũi tên cho biết mối quan hệ giữa các ý định này.

Ý định tiếp theo chỉ có thể được so khớp sau khi ý định chính đã được so khớp. Vì ý định này sẽ chỉ được so khớp sau "Đặt lịch hẹn" ý định, nên chúng tôi có thể giả định rằng người dùng vừa được hỏi câu hỏi "Bạn cần sửa chữa hay chỉ cần điều chỉnh;.

Để nắm bắt được câu trả lời cho câu hỏi này, trước tiên, chúng ta cần xác định một số thực thể.

Tạo thực thể đầu tiên của bạn

Dialogflow cho phép bạn xác định các thực thể dành cho nhà phát triển, có chức năng tương tự như các thực thể hệ thống Dialogflow & 39;. Hãy bắt đầu bằng cách tạo một loại thực thể. Vì chúng ta muốn người dùng có thể chọn loại cuộc hẹn mà họ muốn đặt với cửa hàng, hãy gọi loại thực thể AppointmentType. Chúng ta sẽ thêm hai thực thể trong loại thực thể AppointmentType cho hai loại chỉ định khác nhau: servicefix.

Cách tạo loại thực thể:

  1. Nhấp vào dấu + bên cạnh Thực thể trong bảng điều hướng bên trái.
  2. Để biết tên của loại thực thể, hãy nhập "AppointmentType".
  3. Nhấp vào trường văn bản rồi thêm các mục nhập sau:
    • dịch vụ
    • sửa
  4. Khi bạn nhập một mục, thao tác nhấn phím Tab sẽ di chuyển con trỏ vào trường từ đồng nghĩa. Thêm các từ đồng nghĩa sau cho mỗi mục. Hãy nhớ thêm từng từ riêng lẻ thay vì sao chép và dán toàn bộ chuỗi:
Vé vào cửa Từ đồng nghĩa
dịch vụ
  • dịch vụ
  • đại tu
  • bảo trì
  • chỉnh âm lượng
  • chỉnh
sửa
  • sửa
  • sửa chữa
  • chỉnh sửa
  • bị hỏng
  • lốp xe phẳng
  • cố định
  1. Nhấp vào Lưu.

Mỗi loại thực thể phải có:

  • tên để xác định danh mục ("AppointmentType")
  • một hoặc nhiều mục ("service", "fix")
  • một hoặc nhiều từ đồng nghĩa ("maintenance", "tune up", v.v.)

Dialogflow xử lý những thứ đơn giản như số nhiều và cách viết hoa, nhưng hãy nhớ thêm tất cả các từ đồng nghĩa có thể có. Bạn thêm càng nhiều, nhân viên hỗ trợ càng xác định được các thực thể của bạn.

Thêm thực thể mới của bạn

Bây giờ, chúng tôi đã xác định loại thực thể của mình cho cuộc hẹn, chúng ta có thể sử dụng loại đó trong cụm từ đào tạo của "Đặt cuộc hẹn – tùy chỉnh" của chúng tôi:

  1. Nhấp vào Intents (Ý định) trong bảng điều hướng bên trái, sau đó nhấp vào mũi tên bên cạnh "Make Appointment" ý định để hiển thị các ý định tiếp theo. Nhấp vào &"Đặt cuộc hẹn – tuỳ chỉnh"
  2. Thêm các mục sau làm Cụm từ đào tạo:

    • Bạn có thể bảo dưỡng xe đạp cho tôi không?
    • Tôi cần sửa chữa.

  3. Bạn sẽ thấy loại thực thể cuộc hẹn được tự động chú thích trong cụm từ đào tạo mà bạn đã nhập. Thao tác này sẽ thêm thông số AppointmentType vào bảng, bên dưới phần Cụm từ đào tạo. Nhấp vào hộp đánh dấu để đánh dấu tham số này là REQUIRED (Bắt buộc).

  4. Nhấp vào Xác định lời nhắc rồi nhập "Chúng tôi có thể bảo dưỡng hoặc sửa xe đạp của bạn. Bạn muốn gọi cho ai?

  5. Trong mục Phản hồi, hãy thay đổi câu trả lời thành "OK, chúng ta sẽ lên lịch $AppointmentType;" rồi nhấp vào Lưu.

Hãy thử xem!

Trên thiết bị, hãy nhấn vào loại hoặc đề xuất Đặt lịch hẹn và tôi muốn sửa xe đạp của mình." Bạn sẽ nhận được phản hồi "Bạn muốn truy cập vào ngày nào; cùng với một số đề xuất hữu ích: "Ngày mai", "Một tuần kể từ bây giờ" và "Hai tuần kể từ bây giờ" Hãy cho biết một ngày (" mai") và bạn sẽ nhận được phản hồi hỏi thời gian vào ngày đó.

Chọn thời gian và bạn sẽ thấy phản hồi mới mà bạn đã tạo hỏi về việc này là dịch vụ hay điều chỉnh.

Tiếp theo, nhập "tôi cần sửa chữa&quat; Bạn sẽ thấy phản hồi "Được rồi, chúng tôi sẽ lên lịch khắc phục " cho biết Dialogflow đã trích xuất đúng AppointmentType làm một thực thể.

Hiện tại, phản hồi cho ý định này ("OK, chúng ta sẽ lên lịch sửa lỗi.") khá hữu ích. Thật tuyệt nếu câu trả lời xác nhận ngày và giờ mà cuộc hẹn đã được lên lịch. Để thực hiện việc này, chúng ta cần ngày và giờ, nhưng thông số ngày và giờ chỉ có trong "Make Appointment" Intent chứ không phải trong "Make Appointment – custom" Intent.

Ý định và ngữ cảnh

Để phản hồi một thông số được thu thập từ ý định "Đặt lịch hẹn" bạn cần biết ý định tiếp theo hoạt động như thế nào. Ý định tiếp theo sử dụng ngữ cảnh để theo dõi xem ý định gốc có được kích hoạt hay không. Nếu kiểm tra "Make Appointment" Intent, bạn sẽ thấy "MakeAppointment-followup" được liệt kê dưới dạng ngữ cảnh Output, được bắt đầu bằng số 2:

Sau khi "Đặt cuộc hẹn" ý định được so khớp, Dialogflow sẽ đính kèm ngữ cảnh "Tạo cuộc hẹn tiếp theo" vào cuộc trò chuyện trong hai lượt. Do đó, khi người dùng trả lời câu hỏi ("Bạn cần sửa chữa hay chỉ sửa chữa điều khoản bổ sung;), bối cảnh "MakeAppointment-followup" đang hoạt động. Mọi ý định có cùng ngữ cảnh Đầu vào sẽ được ưu tiên hơn khi Dialogflow khớp với ý định.

Nhấp vào Ý định trong thanh điều hướng bên trái, sau đó nhấp vào "MakeAppointment - custom" ý định.

Bạn có thể thấy rằng ý định có cùng ngữ cảnh nhập ("MakeAppointment- Followup") với ngữ cảnh đầu ra của "Make Appointment". Do đó, "MakeAppointment - custom" chỉ khớp sau &"Đặt cuộc hẹn" ý định được so khớp.

Bối cảnh và thông số

Ngữ cảnh lưu trữ các giá trị thông số, nghĩa là bạn có thể truy cập vào các giá trị của thông số được xác định trong "Make Appointment" ý định trong các ý định khác như "MakeAppointment - custom"

Thêm phản hồi sau đây vào "MakeAppointment - custom" Intent và nhấp vào Save: "OK, chúng ta sẽ lên lịch một $AppointmentType, #MakeAppointment- Followup.date, tại #MakeAppointment-Followup.time. Hẹn gặp lại bạn!"

Bây giờ, bạn có thể truy vấn lại nhân viên hỗ trợ của mình và nhận phản hồi phù hợp. Trước tiên, hãy nhập "Tôi có thể thiết lập một cuộc hẹn để bảo dưỡng xe đạp của mình lúc 11 giờ sáng mai{4/}quot; và sau đó trả lời câu hỏi bằng "Tôi cần sửa chữa "

Trong nội dung phản hồi xác nhận cuộc hẹn, bạn sẽ thấy rằng các giá trị thông số ngày và giờ đã được truy xuất từ ngữ cảnh.

Cải thiện định dạng phản hồi

Thời lượng: 5:00

Sử dụng phương thức thực hiện đơn hàng để định dạng ngày và giờ

Như bạn có thể thấy, ngày và giờ hiển thị trong thông báo thành công không thân thiện với người dùng. Để khắc phục vấn đề này, chúng ta cần sử dụng lại phương thức thực hiện đơn hàng để có thể sử dụng JavaScript nhằm định dạng các thông số ngày và giờ sao cho người dùng có thể dễ dàng đọc được.

Chuyển đến ý định "Đặt cuộc hẹn – tùy chỉnh" bằng cách nhấp vào Ý định trong điều hướng bên trái, sau đó nhấp vào "MakeAppointment - custom" ý định. Di chuyển xuống cuối trang và bật Bật lệnh gọi webhook cho ý định này, sau đó nhấp vào Lưu.

Chuyển đến phần thực hiện đơn hàng bằng cách nhấp vào đường liên kết đến phương thức thực hiện đơn hàng trong bảng điều hướng bên trái. Sao chép mã dưới đây rồi dán vào bên dưới hàm makeAppointment.

function makeAppointmentFollowUp(agent) {
    let context = agent.getContext('makeappointment-followup');

    // extract required parameters
    const appointmentDate = new Date(context.parameters.date);
    const appointmentTime = new Date(context.parameters.time);
    const appointmentType = agent.parameters.AppointmentType;

    // format date and time to be human-readable
    const dateAsString = appointmentDate.toLocaleDateString('en-US',
        { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' });
    const timeAsString = appointmentTime.toLocaleString('en-US',
        { hour: 'numeric', minute: 'numeric', hour12: true });

    // compose response for user
    let responseText = 'Okay, we'll schedule a ' + appointmentType + ', ' + dateAsString +
        ', at ' + timeAsString + '.  We'll see you then.';

    let payload = {
      "fulfillmentMessages": [
      {
        "platform": "GOOGLE_RBM",
        "rbmText": {
          "text": responseText
        }
      }
    ]
    };

    return response.status(200).json(payload);
  }

Bên dưới hàm này, hãy tìm dòng intentMap.set('Make appointment', makeAppointment); rồi thêm intentMap.set('Make appointment - custom', makeAppointmentFollowUp); để khi ý định tiếp theo được gọi, hàm bạn đã dán trước đó sẽ được gọi.

Hãy xem mã makeAppointmentFollowUp và tìm hiểu cách các tham số được trích xuất từ cả ngữ cảnh đến và ý định này. Trước khi tạo responseText, mã hiện đang định dạng ngày và giờ để người dùng có thể đọc được.

Hãy thử xem!

Trên thiết bị, hãy nhấn vào loại hoặc đề xuất Đặt lịch hẹn và tôi muốn sửa xe đạp của mình." Bạn sẽ nhận được phản hồi "Bạn muốn truy cập vào ngày nào; cùng với một số đề xuất hữu ích: "Ngày mai", "Một tuần kể từ bây giờ" và "Hai tuần kể từ bây giờ" Hãy cho biết một ngày (" mai") và bạn sẽ nhận được phản hồi hỏi thời gian vào ngày đó.

Chọn thời gian và bạn sẽ thấy phản hồi mới mà bạn đã tạo hỏi về việc này là dịch vụ hay điều chỉnh.

Tiếp theo, nhập "tôi cần sửa chữa&quat; Bạn sẽ thấy phản hồi xác nhận cuộc hẹn với loại cuộc hẹn, ngày và giờ ở định dạng có thể đọc được.

Bạn đã hoàn tất!

Thời lượng: 1:00

Bạn làm rất tốt!

Đến đây, bạn đã hoàn thành tất cả các giai đoạn để xây dựng một tác nhân RBM do Dialogflow.

Chúc bạn phát triển thật thú vị cho nền tảng mới thú vị này!