Thực hành: Hội thảo về phụ nữ trong tiếng nói

1. Giới thiệu

Trong phòng thí nghiệm này, bạn sẽ tạo một thao tác đơn giản bằng Dialogflow và tìm hiểu cách tích hợp công cụ này với Trợ lý Google.

Các bài tập được sắp xếp để phản ánh trải nghiệm phổ biến của nhà phát triển trên đám mây:

  1. Tạo nhân viên hỗ trợ Dialogflow phiên bản 2
  2. Tạo thực thể
  3. Tạo ý định
  4. Thiết lập webhook bằng các chức năng Cloud của GCP
  5. Sử dụng cơ sở kiến thức để nhập các câu hỏi thường gặp
  6. Kiểm thử bot trò chuyện
  7. Bật tính năng tích hợp Trợ lý Google

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

Chúng tôi sẽ xây dựng một ứng dụng Trợ lý Google cho nhóm gặp mặt phụ nữ trong Voice. Chúng tôi sẽ có thể hỏi về thời gian diễn ra buổi gặp mặt tiếp theo, bài viết & mẹo đặt trước hoặc câu hỏi chung về nhóm họp mặt.

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

  • Cách tạo bot trò chuyện bằng Dialogflow phiên bản 2
  • Cách tạo cuộc trò chuyện tuyến tính bằng Dialogflow
  • Cách sử dụng thực thể
  • Cách sử dụng cơ sở kiến thức
  • Cách thiết lập phương thức thực hiện webhook bằng các chức năng Dialogflow và GCP
  • Cách đưa ứng dụng của bạn lên Trợ lý Google bằng Actions on Google

Điều kiện tiên quyết

  • Bạn cần có một địa chỉ Google Identity / Gmail để tạo nhân viên hỗ trợ Dialogflow.
  • Chúng tôi sẽ cấp cho bạn tín dụng GCP Cloud để sử dụng GCP Cloud Functions
  • Bạn sẽ cần truy cập vào Google Trang tính công khai này để tải dữ liệu của nhân viên hỗ trợ.
  • Mở đường liên kết trong thẻ mới: https://docs.google.com/spreadsheets/d/1UWx3WYVCrqz0D4uJ_pO56WeqEPa9rQDG1cfc_H11kgY/edit?usp=sharing
  • Bạn không bắt buộc phải có kiến thức cơ bản về JavaScript, nhưng có thể áp dụng nếu muốn thay đổi mã thực hiện webhook.

2. Thiết lập

Bật chế độ Hoạt động trên web trong trình duyệt

  1. Lượt nhấp: http://myaccount.google.com/activitycontrols

  1. Đảm bảo Web & Hoạt động ứng dụng được bật:

bf8d16b828d6f79a.png

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

  1. Mở: https://console.dialogflow.com

  1. Trên thanh bên trái, bên dưới biểu trưng, hãy chọn "Create New Agent" (Tạo nhân viên hỗ trợ mới). Trong trường hợp bạn đang có nhân viên hỗ trợ, trước tiên, hãy nhấp vào trình đơn thả xuống.

1d7c2b56a1ab95b8.pngS

  1. Chỉ định tên nhân viên hỗ trợ: yourname-wiv (hãy dùng tên của chính bạn)
  2. Làm ngôn ngữ mặc định, hãy chọn: Tiếng Anh – en.
  3. Làm múi giờ mặc định, chọn múi giờ gần bạn nhất.
  4. Không chọn Mega Agent. (Với tính năng này, bạn có thể tạo một tác nhân tổng quát để điều phối các tác nhân "phụ". Hiện tại, chúng tôi không cần công cụ này.)
  5. Nhấp vào Tạo

382af956cbf308a4.pngs

Định cấu hình Dialogflow

  1. Nhấp vào biểu tượng bánh răng trong trình đơn bên trái, bên cạnh tên dự án.

1d7c2b56a1ab95b8.pngS

  1. Nhập nội dung mô tả nhân viên hỗ trợ sau: Nhân viên hỗ trợ phụ nữ trong Voice
  2. Cuộn xuống phần Các tính năng thử nghiệm, rồi gạt nút chuyển để bật các tính năng thử nghiệm.
  3. Di chuyển xuống phần Cài đặt nhật ký rồi gạt cả hai nút chuyển để Ghi lại hoạt động tương tác của Dialogflow và để ghi tất cả hoạt động tương tác trong Google Cloud Stackdriver. Chúng ta sẽ cần thông tin này vào lúc khác, phòng trường hợp muốn gỡ lỗi hành động của mình.

e80c17acc3cce993.png

  1. Nhấp vào Lưu
  2. Nhấp vào Xong

Định cấu hình Actions on Google

  1. Nhấp vào đường liên kết đến Trợ lý Google trong phần Xem cách hoạt động của tính năng này trong Trợ lý Google ở bảng điều khiển bên phải.

5a4940338fc351e3.pngS

Thao tác này sẽ mở ra: http://console.actions.google.com

LƯU Ý: Hãy đảm bảo rằng bạn đăng nhập bằng cùng một Tài khoản Google như trong Dialogflow.

Khi mới sử dụng Actions on Google, trước tiên, bạn cần điền vào biểu mẫu này:

3fd4e594fa169072.pngS

  1. Hãy thử mở thao tác của bạn trong trình mô phỏng** bằng cách nhấp vào tên dự án.**
  2. Chọn Phát triển trong thanh trình đơn

Bỏ chọn So khớp chế độ cài đặt ngôn ngữ của người dùng. Để đảm bảo ngôn ngữ mặc định của Trợ lý không chi phối tính năng chuyển văn bản sang lời nói của bộ tổng hợp.

3b6bc284050571f5.pngS

  1. Nhấp vào Lưu
  2. Chọn Test (Kiểm thử) trong thanh trình đơn

dd55b141677932fe.png

  1. Hãy đảm bảo rằng bạn đặt trình mô phỏng thành Tiếng Anh và Nhấp vào Trò chuyện với ứng dụng thử nghiệm của tôi

Thao tác sẽ chào đón bạn, với ý định mặc định cơ bản của Dialogflow. Điều đó có nghĩa là việc thiết lập chế độ tích hợp với Action on Google đã mang lại hiệu quả!

Định cấu hình Google Cloud

Để xem hướng dẫn này, bạn cần có tài khoản GCP cùng với tài khoản thanh toán. Nếu chưa có tài khoản, bạn có thể tạo tài khoản theo những bước sau.

Thông thường, tài khoản thanh toán yêu cầu một phương thức thanh toán như thẻ tín dụng. Đối với hội thảo này, chúng ta có thể sử dụng tín dụng hội thảo mà có thể bỏ qua quy trình này.

  1. Chuyển đến URL này và đăng nhập

gcpcredits.com/wivnl

  1. Nhấp vào: Nhấp vào đây để truy cập vào các khoản tín dụng của bạn
  2. Nhấp vào Chấp nhận và Tiếp tục

Bạn đã hoàn tất. Bạn đã tạo một tài khoản thanh toán với số tiền 25 đô la, đủ để sử dụng Cloud Functions trong thời gian dài.

Bật API Google Trang tính

Nếu tác nhân của bạn cần nhiều hơn phản hồi ý định tĩnh (ví dụ: để tìm nạp dữ liệu từ một dịch vụ web, cơ sở dữ liệu hoặc Trang tính), bạn cần sử dụng phương thức thực hiện để kết nối dịch vụ web với tác nhân. Việc kết nối dịch vụ web cho phép bạn hành động dựa trên biểu cảm của người dùng và gửi lại phản hồi động cho người dùng.

Ví dụ: nếu người dùng muốn nhận mẹo về blog hoặc sách, thì dịch vụ web của bạn có thể kiểm tra trong cơ sở dữ liệu và trả lời người dùng bằng một bài viết cần đọc.

Trong hướng dẫn này, chúng ta sẽ không sử dụng cơ sở dữ liệu mà sẽ sử dụng Google Trang tính. Sau khi trang tính được cập nhật, hành động của Trợ lý Google cũng sẽ được cập nhật. Tuyệt vời!

  1. Mở tệp Google Trang tính này trong thẻ trình duyệt mới, nếu bạn chưa làm vậy:
  2. https://docs.google.com/spreadsheets/d/1UWx3WYVCrqz0D4uJ_pO56WeqEPa9rQDG1cfc_H11kgY/edit#gid=1240329448
  3. QUAN TRỌNG: Tạo bản sao của trang tính này. Nhấp vào File > (Tệp >) Tạo bản sao
  4. Sau khi sao chép trang tính, hãy nhấp vào Chia sẻ
  5. Chúng tôi cần cấp quyền chỉnh sửa Tài khoản dịch vụ Dialogflow. Để thực hiện việc này, hãy mở Dialogflow > Chế độ cài đặt (bánh răng).
  6. Di chuyển xuống Dự án của Google
  7. Sao chép địa chỉ tài khoản dịch vụ (email). Mã sẽ có dạng như sau: dialogflow-<someid>@<my-gcp-project>.iam.gserviceaccount.com

8bc778a04efb3dd2.pngS

  1. Dán tài khoản dịch vụ này vào cửa sổ bật lên Chia sẻ của Google Trang tính và cấp cho tài khoản quyền Chỉnh sửa.

e296b9c069c2028e.png

  1. Tiếp theo, chúng ta cần nhớ Mã trang tính mà chúng ta đang xử lý.

f9061a3724086bf7.png

    The Sheets URL will look something like this:

https://docs.google.com/spreadsheets/d/1fPd8b_z19U7ZzAaY327QhYoogn6q8c1rpGSNF8KIR_o/edit#gid=1240329448

    But we are only interested in the Sheet id, which is the part between:

https://docs.google.com/spreadsheets/d/

    So it will look something like this: **1fPd8b_z19U7ZzAaY327QhYoogn6q8c1rpGSNF8KIR_o**

    **Write this Sheet ID down**, or copy it to Notepad. In the Webhook steps we will use this again.
  1. Mở trong một thẻ trình duyệt khác; http://console.cloud.google.com. (Nếu bạn có dự án Google Cloud khác, hãy kích hoạt dự án Dialogflow mới: yourname-wiv). – Trong thanh tìm kiếm, hãy tìm: Google Trang tính API

8b42de259eb40547.pngS

  1. Nhấp vào đây rồi nhấp vào nút Bật API Google Trang tính ở trên cùng.

4b41a64a6cd5a37e.png.

3. Pháp nhân tuỳ chỉnh

Thực thể là những đối tượng mà ứng dụng hoặc thiết bị của bạn thực hiện hành động. Hãy coi đây là các tham số / biến. Trong hành động này, chúng tôi sẽ yêu cầu:

"Tôi muốn biết mẹo đọc về

chatbot

/ Tôi muốn biết mẹo đọc về

giọng nói*"*

Cho dù bạn nói Bot trò chuyện, Voice hay Cả hai, thông tin này sẽ được thu thập từ một thực thể tuỳ chỉnh sẽ được dùng làm thông số trong yêu cầu của tôi đến một dịch vụ web.

Đây là thông tin khác về các Thực thể Dialogflow.

Tạo thực thể kênh

  1. Nhấp vào Bảng điều khiển Dialogflow trên mục trong trình đơn: Thực thể
  2. Nhấp vào Tạo thực thể
  3. Tên thực thể: tech (hãy đảm bảo tất cả đều là chữ thường)
  4. Chỉ định các tuỳ chọn bằng các từ đồng nghĩa. (Bạn có thể nhấn phím tab qua giao diện.)
  • Chatbots - Chatbots, Chat, Web
  • Voice - Voice, Voicebots, Voice Assistants
  • Both - Both, All

f9b213472a75915b.png

5**.** Chuyển sang chế độ **Chỉnh sửa thô** bằng cách nhấp vào nút trình đơn bên cạnh nút lưu màu xanh dương.

e294b49b123e034f.png

  1. Lưu ý rằng bạn cũng có thể đã nhập tất cả các thực thể ở định dạng CSV. Tính năng này có thể hữu ích khi bạn cần tạo nhiều thực thể.
"Chatbots","Chatbots","Chat","Web"
"Voice","Voice","Voicebots","Voice Assistants"
"Both","Both","All"

6cfaa328bcd2bad3.png.

  1. Nhấp vào Lưu

4. Ý định

Dialogflow sử dụng ý định để phân loại ý định của người dùng. Ý định có các Cụm từ huấn luyện, là ví dụ về những gì người dùng có thể nói với tác nhân của bạn.

Ví dụ: nếu một người dùng muốn biết ai muốn biết thời gian diễn ra sự kiện tiếp theo, họ có thể hỏi:

"Buổi gặp mặt tiếp theo diễn ra khi nào?"

Khi người dùng viết hoặc nói điều gì đó, còn gọi là biểu thức người dùng, Dialogflow sẽ so khớp biểu thức người dùng với ý định tốt nhất mà nhân viên hỗ trợ của bạn có được. Việc so khớp một ý định còn được gọi là phân loại ý định.

Dưới đây là thông tin khác về ý định Dialogflow.

Sửa đổi ý định chào mừng mặc định

Khi bạn tạo một nhân viên hỗ trợ Dialogflow mới, 2 ý định mặc định sẽ được tạo tự động. Ý định chào mừng mặc định là quy trình đầu tiên bạn thực hiện khi bắt đầu cuộc trò chuyện với nhân viên hỗ trợ. Ý định dự phòng mặc định là luồng bạn sẽ nhận được khi tác nhân không thể hiểu ý định của bạn hoặc không thể so khớp một ý định với ý định bạn vừa nói.

  1. Nhấp vào Ý định > Ý định chào mừng mặc định

Trong trường hợp Trợ lý Google, Trợ lý sẽ tự động bắt đầu bằng Ý định chào mừng mặc định. Lý do là Dialogflow đang nghe Sự kiện chào mừng. Tuy nhiên, bạn cũng có thể gọi ý định bằng cách nói một trong các cụm từ huấn luyện đã nhập.

17610dbd5450e53.pngS

Dưới đây là tin nhắn chào mừng của Ý định chào mừng mặc định:

User

Nhân viên hỗ trợ

"Ok Google, trò chuyện với <tên của bạn>-WIV"

"Xin chào! Tôi là Anna, nhân viên hỗ trợ ảo của nhóm Women in Voice."

  1. Di chuyển xuống phần Câu trả lời.
  2. Xoá tất cả câu trả lời dạng văn bản.
  3. Trong thẻ mặc định, hãy tạo 3 câu trả lời sau đây. (Nhấp vào Thêm câu trả lời > Văn bản hoặc Câu trả lời SSML cho mỗi dòng mới:)
  • Xin chào! Tôi là Anna, nhân viên hỗ trợ ảo của Women in Voice.
  • Bạn có thể yêu cầu tôi cung cấp thông tin về các buổi hội ngộ, chương trình Women in Voice hoặc mẹo đọc sách.
  • Bạn muốn biết điều gì?

Cấu hình sẽ tương tự như ảnh chụp màn hình này.

a0078ea79188dcb3.png

  1. Kết quả trước được dùng cho các bot trò chuyện, chúng ta có thể sửa đổi kết quả đó một chút, đặc biệt là đối với Trợ lý Google. Chúng tôi sẽ dùng công nghệ SSML (Ngôn ngữ đánh dấu tổng hợp giọng nói) để lồng ghép các khoảng tạm dừng trong các câu của mình. Nhấp vào thẻ Trợ lý Google.
  • Không bật nút bật/tắt Mặc định vì chúng tôi sẽ không sử dụng lại tin nhắn bot trò chuyện.
  • Nhấp vào Thêm câu trả lời > Phản hồi đơn giản
  • Thêm phiên bản văn bản sau:

Hey there, I'm Anna, the virtual agent of Women in Voice.

You can ask me for information about meetups, Women in Voice or a reading tip. What would you like to know?

  • Sau đó, hãy nhấp vào Tuỳ chỉnh đầu ra âm thanh
  • Và thêm phiên bản SSML sau đây:

<speak><p><s>Hey there, I'm Anna, the virtual agent of Women in Voice.</s><s>

You can ask me for information about meetups, Women in Voice or a reading tip.</s></p><break time="500ms"/><p><s> What would you like to know?</s></p></speak>

Cấu hình sẽ tương tự như ảnh chụp màn hình này.

62f0f58753463fbe.png.

  1. Nhấp vào Lưu

Bạn có thể tìm hiểu thêm tại đây thông tin về SSML cho Actions on Google.

  1. Hãy kiểm thử ý định này. Trước tiên, chúng ta có thể thử nghiệm công cụ này trong Trình mô phỏng Dialogflow.

Nhập: Xin chào. Trình duyệt sẽ trả về thông báo này.

12d40056fbd25dfe.pngS

  1. Bây giờ, hãy chuyển về bảng điều khiển Actions on Google.

(Bạn nên giữ thẻ này trong một thẻ khác.)

Nhấp vào: "Trò chuyện với ứng dụng thử nghiệm của tôi". Và lắng nghe tin nhắn chào mừng mới.

Sửa đổi ý định dự phòng mặc định

  1. Nhấp vào Ý định > Ý định dự phòng mặc định
  2. Di chuyển xuống phần Câu trả lời.
  3. Xoá tất cả câu trả lời dạng văn bản.
  4. Trong thẻ mặc định, hãy tạo các phản hồi sau đây, mỗi phản hồi trên một dòng mới để thay thế giữa các lựa chọn sau:
  • Sorry, can you repeat this?
  • I didn't understand you. You can ask me questions about Women in Voice, a book or article tip or when the next meetup will be.

bdecc217bafff97b.png

  1. Nhấp vào Lưu

Lưu ý: Khi bạn không nhập kết quả của Trợ lý Google, kết quả đó sẽ lấy kết quả mặc định.

Tạo ý định dừng

  1. Nhấp vào mục trong trình đơn Intent (Ý định).
  2. Nhấp vào Tạo ý định
  3. Nhập Tên ý định: Stop Intent
  4. Nhấp vào Thêm cụm từ huấn luyện
  • No
  • That's it
  • Bye
  • I don't want that
  • Goodbye
  • It's ok for now
  • Quit
  • I want to stop
  • Close this
  • End the conversation

7ec6455cabdf7e36.pngs

  1. Cuộn xuống phần Câu trả lời.> Thêm câu trả lời
  2. Thêm các tuỳ chọn văn bản sau:
  • Alright! Hopefully we will see you at one of our meetups!
  • No problem. See you at one of our meetups!
  1. Lật nút chuyển: Đặt ý định này làm kết thúc cuộc trò chuyện. Sau khi được so khớp, ý định này sẽ đóng hành động của Trợ lý Google.

ba532398680d457d.png

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

Tạo ý định cho buổi gặp mặt

Mục đích cuộc gặp mặt sẽ bao gồm phần sau của cuộc trò chuyện:

User

Nhân viên hỗ trợ

"Buổi gặp mặt tiếp theo diễn ra khi nào?"

"Buổi gặp mặt tiếp theo sẽ là <date> lúc <time> tại <location>. Chủ đề sẽ là <topic>. Đó là: <speakers>. Bạn có thể đăng ký qua bản tin của chúng tôi."

  1. Nhấp vào mục trong trình đơn Intent (Ý định).
  2. Nhấp vào Tạo ý định
  3. Nhập Tên ý định: Meetup Intent (hãy nhớ sử dụng chữ M viết hoa và chữ I viết hoa. – Nếu bạn viết ý định theo cách khác, thì dịch vụ phụ trợ sẽ không hoạt động!)
  4. Nhấp vào Thêm cụm từ huấn luyện
  • When is the next meetup?
  • Do you have any events?
  • Which events are in the planning?
  • Are there meetup events soon?
  • I would love to attend a meetup
  • Can I join a virtual meetup?
  • When will you get together?
  • Can I join?
  • What does your calendar look like?
  1. Nhấp vào Thực hiện đơn hàng > Bật tính năng thực hiện đơn hàng

7eb73ba04d76140e.png.

  1. Lật nút chuyển Bật lệnh gọi Webhook cho ý định này.

748a82d9b4d7d253.pngS

  1. Nhấp vào Lưu

Tạo ý định tính tiền boa

Tip Intent (Ý định tiền boa) sẽ chứa phần sau của cuộc trò chuyện:

User

Nhân viên hỗ trợ

"Tôi muốn biết mẹo đọc."

"Bạn muốn đọc thêm về chatbot, Voice hay Cả hai không?"

"Giọng nói"

"Được rồi, sau đây là mẹo hay! Thẻ <type> &lt;title&gt; của <author>. Bạn có muốn nhận một mẹo khác về sách hoặc bài viết không? Ngoài ra, tôi có thể cho bạn biết thêm về buổi hội ngộ hoặc những gì chúng tôi làm. Tôi có thể giúp gì cho bạn?"

  1. Nhấp lại vào mục trong trình đơn Intents (Ý định).
  2. Nhấp vào Tạo ý định
  3. Nhập Tên ý định: Tip Intent (hãy nhớ sử dụng chữ L viết hoa và I viết hoa. – Nếu bạn viết ý định theo cách khác, thì dịch vụ phụ trợ sẽ không hoạt động!)
  4. Nhấp vào Thêm cụm từ huấn luyện rồi thêm đoạn mã sau:
  • Can I get a tip for an article?
  • I would like to receive a reading tip
  • Any book tips?
  • What's nice to read?
  • I want to learn more about Chatbots, what should I read?
  • What are nice blogs?
  • Do you have book suggestions?
  • I want to receive information about Both
  • Can I have Chatbots reading tip
  • I would like to read more about Voice
  • Voice please
  • Both are okay.
  • Reading tip
  • Tip
  • Blog
  • Article
  • Book
  • Book suggestions
  • Yes
  • Yeah
  • Another tip
  • Yes one more
  1. Di chuyển xuống mục Hành động và thông số
  2. Đánh dấu tech là rEqured

7cdf7fdf5d2c3fbe.png.

Nhấp vào: Confirm Prompt (Xác định câu lệnh) rồi nhập:

  • Do you want to read more about Chatbots, Voice or Both?
  1. Nhấp vào Thực hiện đơn hàng > Bật tính năng thực hiện đơn hàng

Lần này, chúng tôi không mã hoá cứng phản hồi. Phản hồi sẽ đến từ chức năng đám mây! Do đó, hãy lật nút chuyển Bật lệnh gọi Webhook cho ý định này.

Nhấp vào Thực hiện đơn hàng > Bật tính năng thực hiện đơn hàng

7eb73ba04d76140e.png.

  1. Lật nút chuyển Bật lệnh gọi Webhook cho ý định này.

748a82d9b4d7d253.pngS

  1. Nhấp vào Lưu

5. Trình kết nối tri thức

Trình kết nối tri thức bổ sung cho ý định đã xác định. Dịch vụ này phân tích cú pháp tài liệu kiến thức để tìm câu trả lời tự động. (ví dụ: Câu hỏi thường gặp hoặc bài viết từ tệp CSV, trang web trực tuyến hoặc thậm chí là tệp PDF!) Để định cấu hình chúng, bạn xác định một hoặc nhiều cơ sở kiến thức, là tập hợp các tài liệu kiến thức.

Đọc thêm về Trình kết nối tri thức.

Hãy thử xem.

  1. Chọn thẻ en để chọn ngôn ngữ tiếng Anh ở trình đơn trên cùng.
  2. Chọn Kiến thức (thử nghiệm) trong trình đơn.

e0a3d2e03dd1076c.png

  1. Nhấp vào nút màu xanh dương bên phải: Tạo Cơ sở kiến thức
  2. Nhập làm tên Cơ sở kiến thức; Phụ nữ trong Voice và nhấn vào lưu.
  3. Nhấp vào đường liên kết Tạo tài khoản đầu tiên

9b2ca6b25c4100ab.png.

  1. Một cửa sổ sẽ mở ra.

Sử dụng cấu hình sau:

Tên tài liệu: Trang câu hỏi thường gặp về Women in Voice

Loại kiến thức: Câu hỏi thường gặp

Loại Mime: CSV

  1. Chúng tôi sẽ cần dữ liệu từ trang tính này, hãy đảm bảo bạn đã mở bảng dữ liệu rồi chọn thẻ Câu hỏi thường gặp
  2. Chọn File > (Tệp >) Tải xuống > CSV

e7f0066408fc1721.png

  1. Quay lại Dialogflow, nhấp vào Tải tệp lên từ máy tính và chọn tệp CSV mà bạn đã tải xuống. Nhấp vào Tạo

Một cơ sở kiến thức đã được tạo:

64513e2e484dda31.pngS

  1. Nhấp vào Thêm câu trả lời

Tạo câu trả lời sau rồi nhấp vào lưu:

$Knowledge.Answer[1]

  1. Nhấp vào Xem chi tiết

Thao tác này sẽ hiển thị tất cả các Câu hỏi thường gặp mà bạn đã triển khai trong Dialogflow.

Thật dễ dàng!

Xin lưu ý rằng bạn cũng có thể trỏ đến trang web HTML trực tuyến có phần Câu hỏi thường gặp để nhập Câu hỏi thường gặp vào nhân viên hỗ trợ của mình. Thậm chí, bạn có thể tải một tệp PDF có một đoạn văn bản lên và Dialogflow sẽ đưa ra các câu hỏi.

  1. Nhấp vào Kiến thức (thử nghiệm) trong trình đơn Dialogflow để quay lại tất cả các trình kết nối Cơ sở kiến thức.
  2. Bạn có thể thay đổi điểm mạnh và điểm yếu của Cơ sở kiến thức. Điều này là hợp lý khi bạn biết được các câu hỏi thường gặp đang thành công hay thua cuộc so với ý định của chính bạn. Vì chúng ta không có nhiều ý định, nên hãy cải thiện Cơ sở kiến thức của mình một chút. Thay đổi thang tỷ lệ thành -0,2. Sau khi kéo thanh trượt, thanh trượt sẽ tự động lưu giá trị.

Giờ đây, câu hỏi thường gặp sẽ được coi là "thông tin bổ sung" để thêm vào nhân viên hỗ trợ, bên cạnh các luồng ý định. Các câu hỏi thường gặp trong Cơ sở kiến thức không thể giúp huấn luyện mô hình. Vì vậy, việc đặt câu hỏi theo cách hoàn toàn khác có thể không phù hợp vì không sử dụng công nghệ Hiểu ngôn ngữ tự nhiên (mô hình máy học). Vì vậy, đôi khi bạn nên chuyển đổi mục Câu hỏi thường gặp thành ý định.

6. Thực hiện webhook

Tạo một hàm Google Cloud

  1. Chuyển đến http://console.cloud.google.com trong một thẻ trình duyệt khác.
  2. Chọn trong trình đơn bên trái Cloud Functions
  3. Nhấp vào Create Function (Tạo hàm)

bf2441ba1271a95e.png

  1. Chỉ định cấu hình sau:
  • Tên: dialogflow
  • Bộ nhớ được phân bổ: 256MiB
  • Trình kích hoạt: HTTP
  • Sao chép URL vào bảng nhớ tạm.
  • Chọn Trình chỉnh sửa cùng dòng
  • Thời gian chạy: NodeJS 8
  • Hàm cần thực thi: dialogflow
  1. Đảm bảo bạn đã chọn hộp kiểm xác thực sau:

317140d44ec3299c.png.

61ecb8f57a6fd21b.png.

  1. Đây là nội dung của tệp package.json. Sao chép và dán tệp này vào thẻ package.json của trình chỉnh sửa.

Đoạn mã này tải đúng các thư viện npm chính xác vào Google Cloud:

{
 "name": "dialogflow",
 "description": "Cloud Functions",
 "engines": {
   "node": "8"
 },
 "dependencies": {
   "request": "^2.85.0",
   "request-promise": "^4.2.5",
   "dialogflow-fulfillment": "^0.6.1",
   "actions-on-google": "^2.2.0",
   "googleapis": "^48.0.0",
   "moment": "^2.24.0"
 },
 "devDependencies": {
   "eslint": "^5.12.0",
   "eslint-plugin-promise": "^4.0.1",
   "ngrok": "^3.2.7"
 },
 "private": true
}
  1. Dưới đây là nội dung cho index.js. Sao chép và dán đoạn mã này vào thẻindex.js của trình chỉnh sửa.

Đoạn mã này sẽ tích hợp với thư viện googleapis để tìm nạp dữ liệu từ Google Trang tính. Tính năng này sử dụng thư viện Hành động trên Google để hiển thị các thẻ trên thiết bị có Trợ lý Google. Công cụ này sử dụng thư viện dialogflow-fulfillment để phân loại ý định của Dialogflow. Đồng thời, công cụ này tận dụng thời điểm thư viện để xử lý các đối tượng ngày và giờ.

/* jshint esversion: 8 */
'use strict';

process.env.DEBUG = 'dialogflow:debug';

const ACCOUNTS_SHEET_ID = '1UWx3WYVCrqz0D4uJ_pO56WeqEPa9rQDG1cfc_H11kgY';

const {
 BasicCard,
 Button,
} = require('actions-on-google');

const {google} = require('googleapis');
const moment = require('moment');
moment.locale('nl');
const { WebhookClient } = require('dialogflow-fulfillment');
var books;
var meetups;

const SHEETS_SCOPE = 'https://www.googleapis.com/auth/spreadsheets.readonly';

/**
* Authenticates the Sheets API client for read-only access.
*
* @return {Object} sheets client
*/
async function getSheetsClient() {
   // Should change this to file.only probably
   const auth = await google.auth.getClient({
       scopes: [SHEETS_SCOPE],
   });
   return google.sheets({version: 'v4', auth});
}

/**
* Return a natural spoken date
* @param {string} date in 'YYYY-MM-DD' format
* @returns {string}
*/
var getSpokenDate = function(date){
   let datetime = moment(date, 'YYYY-MM-DD');
   return `${datetime.format('D MMMM')}`;
};


/* When the tipIntent Intent gets invoked.  */
function tipIntent(agent) {
 var par = agent.parameters.tech;
   var selection = [];
   //console.log(par);
   //console.log(books);
    for(var i = 0; i<books.length; i++){
     if(books[i][2].toLowerCase() == par.toLowerCase()) {
         selection.push(books[i]);
       }
   }
    var random = Math.floor(Math.random() * selection.length);
   var booktip = selection[random];
   //console.log(selection[random]);

   let spokenText = `<p><s>Alright, here's the tip of the day!</s></p><p>The ${booktip[6]} ${booktip[0]} of ${booktip[1]}.</p>`;
   let writtenText = `Alright, here's the tip of the day! The ${booktip[6]} ${booktip[0]} of ${booktip[1]}.`;
   //console.log(booktip[8]);
    if (agent.requestSource === agent.ACTIONS_ON_GOOGLE) {
       let conv = agent.conv();
       conv.ask(`<speak>${spokenText}</speak>`);
       conv.ask(new BasicCard({
           title: `Tip of the day!`,
           subtitle: `${par}`,
           text: `The ${booktip[6]} ${booktip[0]} of ${booktip[1]}.`,
           buttons: new Button({
               title: 'Read',
               url: `${booktip[8]}`,
           })
       }));
       conv.ask(`<speak><p><s>Do you want another book or article tip? Also, I can tell you more about meetups or what we do. How can I help?</s></p></speak>`);
       // Add Actions on Google library responses to your agent's response
       agent.add(conv);
   } else {
       agent.add(writtenText + ' Do you want another book or article tip? Also, I can tell you more about meetups or what we do. How can I help?');
   }
}


function meetupIntent(agent) {
 let conv = agent.conv();
 let record;
  console.log(meetups);
  for(var i = 0; i<meetups.length; i++){
   let d = moment(meetups[i][0], 'YYYY-MM-DD');
   let today = moment(new Date());

   if(moment(d).isSameOrAfter(today)) {
     // the i event is not in the past
     record = meetups[i];
     console.log(record);
     break; 
   }
 }
  let date = getSpokenDate(record[0]);
 let spokenText1 = `The next meetup will be ${date} at ${record[1]} in ${record[3]}.`;
 let spokenText2 = `The topic will be <emphasis level="moderate">${record[2]}.</emphasis>`;
 let spokenText3 = `You can register via our newsletter.`;
  let writtenText = `${spokenText1} The topic will be ${record[2]}. ${spokenText3}`;

 if (agent.requestSource === agent.ACTIONS_ON_GOOGLE) {
   conv.ask(`<speak>${spokenText1} ${spokenText2} ${spokenText3}</speak>`);
   conv.ask(new BasicCard({
     title: `Meetup`,
     subtitle: `${record[2]}`,
     text: `${record[0]} ${record[1]} - ${record[3]}`,
     buttons: new Button({
       title: 'Register',
       url: `http://www.meetup.com`
     })
   }));
   conv.ask('<speak><p><s>Is there anything else I can help you with?</s></p></speak>');
   agent.add(conv);
 } else {
   agent.add(`${writtenText} Is there anything else I can help you with?`);
 }
}

exports.dialogflow = async (request, response) => {
 var agent = new WebhookClient({ request, response });

 console.log('Dialogflow Request headers: ' + JSON.stringify(request.headers));
 console.log('Dialogflow Request body: ' + JSON.stringify(request.body));
  const client = await getSheetsClient();   
 const allBooks = await client.spreadsheets.values.get({
   spreadsheetId: ACCOUNTS_SHEET_ID,
   range: 'Books&Blogs!A:I',
 });
 const allEvents = await client.spreadsheets.values.get({
   spreadsheetId: ACCOUNTS_SHEET_ID,
   range: 'Meetups!A:D',
 });
  books = allBooks.data.values;
 meetups = allEvents.data.values;
 books.shift();
 meetups.shift();

 var intentMap = new Map();
 intentMap.set('Tip Intent', tipIntent);
 intentMap.set('Meetup Intent', meetupIntent);
 agent.handleRequest(intentMap);
};

b130ee596061832c.png

  1. Nhấp vào đường liên kết Biến môi trường, kết nối mạng, thời gian chờ và các lựa chọn khác

e81c29549f696937.png

  1. Chọn tài khoản dịch vụ Dialogflow Integration.

(Theo mặc định, tài khoản này sử dụng tài khoản Dịch vụ GAE App Engine, nhưng đây phải là tài khoản dịch vụ giống với tài khoản được chia sẻ trong Google Trang tính của bạn ở các bước đầu tiên của hướng dẫn này.)

61ecb8f57a6fd21b.png.

  1. Trước khi chúng ta triển khai chức năng đám mây. Chúng ta sẽ thay đổi một dòng trong mã trên thẻ index.js. Dòng mã thứ 3:

const ACCOUNTS_SHEET_ID = '1Yo_E8KONgSiUm00ZmTOqtjXCwULmc2JuI3sjxRyvrkE';

Ở một trong các bước đầu tiên, chúng ta đã ghi lại phím này trong Notepad. Vì vậy, hãy sao chép và dán id này vào mã của bạn.

  1. Bây giờ, chúng ta đã sẵn sàng. Nhấp vào nút Tạo. Quá trình này sẽ mất chút thời gian vì hệ thống đang triển khai chức năng không máy chủ.

Bật tính năng thực hiện đơn hàng trong Dialogflow

  1. Chuyển về Dialogflow
  2. Nhấp vào Thực hiện đơn hàng trong trình đơn chính
  3. Bật nút chuyển Webhook.
  4. Nhập URL của hàm đám mây đã được sao chép vào bảng nhớ tạm.

Ví dụ: https://us-central1-leeboonstra-wiv-uhtefa.cloudfunctions.net/dialogflow

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

89dfd437c6689538.pngS

  1. Hãy kiểm tra webhook để xem mã có hoạt động hay không và kiểm tra quy trình ngay trong trình mô phỏng Dialogflow.

297e8f7ed1b9e801.pngS

7. Actions on Google

Actions on Google là một nền tảng phát triển dành cho Trợ lý Google. API này cho phép bên thứ ba phát triển "hành động" – các chương trình phụ trợ dành cho Trợ lý Google nhằm cung cấp chức năng mở rộng.

Bạn sẽ cần gọi một Hành động của Google bằng cách yêu cầu Google mở hoặc trò chuyện với một ứng dụng.

Thao tác này sẽ mở hành động của bạn, thay đổi giọng nói và bạn sẽ thoát khỏi "gốc" Phạm vi của Trợ lý Google. Tức là mọi nội dung bạn yêu cầu nhân viên hỗ trợ của bạn bắt đầu từ thời điểm này đều phải do bạn tạo. Trong hành động của chính mình, bạn không thể đột nhiên yêu cầu Trợ lý Google cung cấp thông tin thời tiết của Google, nếu đó là điều bạn muốn; bạn nên để (đóng) phạm vi của hành động hiện tại (ứng dụng của bạn) trước.

Thử nghiệm hành động trong trình mô phỏng Trợ lý Google

Hãy kiểm tra cuộc trò chuyện sau:

User

Trợ lý Google

"Ok Google, trò chuyện với ứng dụng thử nghiệm của tôi."

"Đang tải phiên bản thử nghiệm của ứng dụng của tôi."

User

Tên-của-bạn-WIV

-

"Xin chào! Tôi là Anna, nhân viên hỗ trợ ảo của Women in Voice. Bạn có thể yêu cầu tôi cung cấp thông tin về các cuộc gặp mặt, chương trình Women in Voice hoặc mẹo đọc sách. Bạn muốn biết điều gì?"

Cho tôi biết mẹo về blog không?

"Bạn muốn đọc thêm về chatbot, Voice hay Cả hai không?"

chatbot

"Được rồi, sau đây là mẹo hay! The Article Chatbots And The Thử thách of các tập luyện vô hình của Cobus Greyling.Bạn có muốn một cuốn sách hay mẹo viết bài khác không? Ngoài ra, tôi có thể cho bạn biết thêm về buổi hội ngộ hoặc những gì chúng tôi làm. Tôi có thể giúp gì cho bạn?"

Khi nào diễn ra buổi hội ngộ tiếp theo?

"Buổi gặp mặt tiếp theo sẽ diễn ra lúc 6:00 chiều ngày 29 tháng 4 trong một Hangout trực tuyến. Chủ đề sẽ là Hội thảo trực tuyến: Tạo hành động của Google bằng Dialogflow!.Bạn có thể đăng ký qua bản tin của chúng tôi.Tôi còn giúp gì được cho bạn nữa không?"

URL trang web của bạn là gì?

"Bạn có thể tìm thấy chúng tôi tại www.Womeninvoice.com. Tôi còn giúp gì được cho bạn nữa không?"

Không, cảm ơn

"Được rồi! Hy vọng chúng ta sẽ được gặp bạn tại một trong những buổi hội ngộ của chúng ta!"

  1. Chuyển về trình mô phỏng Trợ lý Google

Mở: https://console.action.google.com

  1. Hãy nhấp vào biểu tượng micrô và hỏi những điều sau:

aa43d7f1568c4d80.png

  • Talk to my test app.
  1. Giờ hãy đặt câu hỏi:
  • Can I have a tip for a blog?

Giá trị này sẽ trả về:

"Bạn muốn đọc thêm về chatbot, Voice hay Cả hai không?"

  • Chatbots

"Được rồi, sau đây là mẹo hay! The Article Chatbots and The Thử thách của những tập hợp tài liệu vô hình của Cobus Greyling.

Bạn có muốn nhận một mẹo khác về sách hoặc bài viết không? Ngoài ra, tôi có thể cho bạn biết thêm về buổi hội ngộ hoặc những gì chúng tôi làm. Tôi có thể giúp gì cho bạn?"

  1. Hãy thử một phiên bản khác của cùng một câu hỏi:
  • "Yes, I want to read more about Voice"

"Được rồi, sau đây là mẹo hay! Cuốn sách thiết kế giao diện người dùng bằng giọng nói: Nguyên tắc về trải nghiệm trò chuyện. ... của Cathy Pearl.

Bạn có muốn nhận một mẹo khác về sách hoặc bài viết không? Ngoài ra, tôi có thể cho bạn biết thêm về buổi hội ngộ hoặc những gì chúng tôi làm. Tôi có thể giúp gì cho bạn?"

Xin lưu ý rằng bạn chưa từng sử dụng cụm từ huấn luyện này trong Dialogflow. Chỉ cần khớp với ý định phù hợp.

Ngoài ra, xin lưu ý rằng bạn không nhận được câu hỏi nối tiếp vì bạn đã cung cấp đủ thông tin để Dialogflow tiếp tục.

  1. Tiếp tục dùng Dialogflow với các cụm từ sau:
  • What's the URL for your website
  • Bye

a0bd5578d6833c98.png

Lỗi? Hãy kiểm tra nhật ký!

Mỗi lần bạn sử dụng console.log() trong mã Cloud Function, dữ liệu sẽ được ghi vào nhật ký GCP của bạn (Stackdriver). Bạn có thể truy cập vào các nhật ký này bằng cách mở Bảng điều khiển Cloud > Ghi nhật ký.

Trong trình đơn thả xuống đầu tiên, bạn có thể chọn Chức năng đám mây > hộp thoại để lọc nhật ký của bạn.

8. Xin chúc mừng

Rất tốt! Bạn đã tạo hành động đầu tiên của mình trên Trợ lý Google bằng Dialogflow!

Như bạn có thể nhận thấy, hành động của bạn đang chạy ở chế độ thử nghiệm được liên kết với Tài khoản Google của bạn. Nếu bạn đăng nhập vào thiết bị Nest hoặc ứng dụng Trợ lý Google trên điện thoại iOS hoặc Android bằng cùng một tài khoản. Bạn cũng có thể kiểm thử hành động của mình.

Hiện tại, đây là bản minh hoạ hội thảo. Tuy nhiên, trong quá trình xây dựng ứng dụng thực sự cho Trợ lý Google, bạn có thể gửi Hành động của mình để yêu cầu phê duyệt. Hãy đọc hướng dẫn này để biết thêm thông tin.

Nội dung đã đề cập

  • Cách tạo bot trò chuyện bằng Dialogflow phiên bản 2
  • Cách tạo thực thể tuỳ chỉnh bằng Dialogflow
  • Cách tạo cuộc trò chuyện tuyến tính bằng Dialogflow
  • Cách thiết lập phương thức thực hiện webhook bằng Dialogflow và Chức năng đám mây của Google
  • Cách đưa ứng dụng của bạn lên Trợ lý Google bằng Actions on Google

Tiếp theo là gì?

Bạn thích lớp học lập trình này? Hãy khám phá các phòng thí nghiệm tuyệt vời này!