Thu hút người dùng bằng Hành động của bạn cho Trợ lý Google

1. Tổng quan

Actions on Google là một nền tảng dành cho nhà phát triển, cho phép bạn tạo phần mềm để mở rộng chức năng của Trợ lý Google (trợ lý ảo cá nhân của Google) trên hơn 1 tỷ thiết bị, bao gồm cả loa thông minh, điện thoại, ô tô, TV, tai nghe và nhiều thiết bị khác. Người dùng tương tác với Trợ lý thông qua cuộc trò chuyện để thực hiện các việc như mua hàng tạp hoá hoặc đặt xe. (Để xem danh sách đầy đủ những việc có thể làm, hãy xem thư mục Hành động.) Là nhà phát triển, bạn có thể sử dụng Actions on Google để dễ dàng tạo và quản lý những trải nghiệm đàm thoại thú vị và hiệu quả giữa người dùng và dịch vụ bên thứ ba của bạn.

Đây là một mô-đun lớp học lập trình nâng cao, dành cho những độc giả đã có kinh nghiệm xây dựng Hành động cho Trợ lý Google. Nếu chưa từng phát triển ứng dụng cho Actions on Google, bạn nên làm quen với nền tảng này bằng cách làm theo các khoá học lập trình giới thiệu của chúng tôi ( Cấp độ 1, Cấp độ 2Cấp độ 3). Các mô-đun nâng cao này sẽ hướng dẫn bạn sử dụng một loạt tính năng có thể giúp bạn mở rộng chức năng của Hành động và tăng lượng khán giả.

Một cách quan trọng để đo lường mức độ thành công của một Thao tác là mức độ tương tác của người dùng hoặc mức độ hiệu quả của Thao tác trong việc thu hút người dùng quay lại sau lượt tương tác đầu tiên. Để giúp người dùng dễ dàng quay lại cuộc trò chuyện, bạn có thể triển khai một số tính năng trong Hành động của mình để cung cấp cho người dùng các đường dẫn quay lại cuộc trò chuyện.

Lớp học lập trình này đề cập đến các tính năng tương tác với người dùng và các phương pháp hay nhất cho Actions on Google.

a3fc0061bd01a75.png 961ef6e27dc73da2.png

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

Bạn sẽ cải thiện một tính năng đã được xây dựng bằng cách cho phép tính năng đó:

  • Gửi cho người dùng thông tin cập nhật hằng ngày mà họ có thể nhấn vào để trò chuyện với Hành động của bạn
  • Gửi thông báo đẩy cho người dùng để liên kết trở lại Hành động của bạn
  • Tạo một đường liên kết đưa người dùng đến Hành động của bạn thông qua trình duyệt web di động

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

  • Mức độ tương tác của người dùng là gì và tại sao chỉ số này lại quan trọng đối với sự thành công của một Thao tác
  • Cách sửa đổi một Thao tác để tăng mức độ tương tác của người dùng
  • Nên sử dụng những tính năng tương tác nào với người dùng trong các loại Hành động
  • Cách sử dụng Actions API để gửi thông báo qua Trợ lý

Bạn cần có

Bạn phải có các công cụ sau:

  • Một IDE/trình chỉnh sửa văn bản mà bạn chọn, chẳng hạn như WebStorm, Atom hoặc Sublime
  • Một cửa sổ dòng lệnh để chạy các lệnh shell khi đã cài đặt Node.js, npm và git
  • Một trình duyệt web, chẳng hạn như Google Chrome
  • Môi trường phát triển cục bộ có giao diện dòng lệnh Firebase
  • Một thiết bị di động (Android hoặc iOS) có Trợ lý (Bạn phải đăng nhập vào Trợ lý bằng chính Tài khoản Google mà bạn sẽ dùng để tạo dự án này.)

Bạn nên làm quen với JavaScript (ES6) để hiểu mã webhook, mặc dù không bắt buộc.

2. Thiết lập dự án

Phần này hướng dẫn bạn cách thêm các tính năng tương tác của người dùng vào một Thao tác hoàn chỉnh đã được tạo trước đó.

Tìm hiểu về mẫu

Mẫu cho lớp học lập trình này là một Hành động đơn giản cho một phòng tập thể dục hư cấu có tên là "Action Gym". Thao tác này cung cấp thông tin về phòng tập thể dục, bao gồm cả danh sách các lớp học thay đổi mỗi ngày. Một Thao tác cung cấp thông tin như thế này là lựa chọn phù hợp cho tất cả các tính năng tương tác với người dùng vì danh sách lớp học xoay vòng sẽ cung cấp nhiều thông tin hữu ích mỗi ngày.

Sơ đồ sau đây cho thấy luồng trò chuyện của mẫu Action Gym:

e2d6e4ad98948cf3.png

Bạn sẽ thực hiện một số thay đổi nhỏ đối với hộp thoại để phù hợp hơn với các tính năng tương tác mà bạn thêm. Tuy nhiên, thiết kế chung của cuộc trò chuyện sẽ không thay đổi nhiều.

Tải các tệp cơ sở xuống

Chạy lệnh sau để sao chép kho lưu trữ GitHub cho lớp học lập trình:

git clone https://github.com/actions-on-google/user-engagement-codelab-nodejs

Thiết lập dự án và tác nhân

Để thiết lập dự án Actions và nhân viên hỗ trợ Dialogflow, hãy hoàn tất các bước sau:

  1. Mở Bảng điều khiển Actions.
  2. Nhấp vào Dự án mới.
  3. Nhập Tên dự án, chẳng hạn như engagement-codelab.
  4. Nhấp vào Tạo dự án.
  5. Thay vì chọn một danh mục, hãy di chuyển xuống phần Tuỳ chọn khác rồi nhấp vào thẻ Đàm thoại.
  6. Nhấp vào Tạo hành động để mở rộng các lựa chọn rồi chọn Thêm(các) hành động.
  7. Nhấp vào Thêm hành động đầu tiên.
  8. Trên hộp thoại Create Action (Tạo thao tác), hãy chọn Custom Intent (Ý định tuỳ chỉnh), rồi nhấp vào Build (Tạo) để chạy bảng điều khiển Dialogflow.
  9. Trên trang tạo đặc vụ của bảng điều khiển Dialogflow, hãy nhấp vào Tạo.
  10. Nhấp vào biểu tượng 6bf56243a8a11a3b.png (bánh răng) trên bảng điều hướng bên trái.
  11. Nhấp vào Xuất và nhập, rồi nhấp vào Khôi phục từ tệp ZIP.
  12. Tải tệp agent.zip lên từ thư mục /user-engagement-codelab-nodejs/start/ mà bạn đã tải xuống trước đó.
  13. Nhập RESTORE rồi nhấp vào Khôi phục.
  14. Nhấp vào Xong.

Triển khai yêu cầu thực hiện

Giờ đây, khi dự án Actions và tác nhân Dialogflow đã sẵn sàng, hãy triển khai tệp index.js cục bộ bằng Firebase Functions CLI.

Trong thư mục /user-engagement-codelab-nodejs/start/functions/ của bản sao tệp cơ sở, hãy chạy các lệnh sau:

firebase use <PROJECT_ID>
npm install
firebase deploy

Sau vài phút, bạn sẽ thấy thông báo "Triển khai hoàn tất!", cho biết bạn đã triển khai thành công webhook của mình vào Firebase.

Truy xuất URL triển khai

Bạn cần cung cấp cho Dialogflow URL của hàm trên đám mây. Để truy xuất URL này, hãy làm theo các bước sau:

  1. Mở Bảng điều khiển của Firebase.
  2. Chọn dự án Actions của bạn trong danh sách các lựa chọn.
  3. Chuyển đến mục Phát triển > Hàm trên thanh điều hướng bên trái. Nếu được nhắc "Chọn chế độ cài đặt chia sẻ dữ liệu", bạn có thể bỏ qua lựa chọn này bằng cách nhấp vào Để sau.
  4. Trong thẻ Trang tổng quan, bạn sẽ thấy một mục nhập cho "thực hiện" có URL trong phần Kích hoạt. Lưu URL này; bạn sẽ cần sao chép URL này vào Dialogflow trong phần tiếp theo.

1741a329947975db.png

Đặt URL webhook trong Dialogflow

Giờ đây, bạn cần cập nhật nhân viên hỗ trợ Dialogflow để sử dụng webhook cho việc thực hiện. Để thực hiện việc này, hãy làm theo các bước sau:

  1. Mở bảng điều khiển Dialogflow (bạn có thể đóng bảng điều khiển Firebase nếu muốn).
  2. Nhấp vào Thực hiện đơn hàng trong bảng điều hướng bên trái.
  3. Bật Webhook.
  4. Dán URL mà bạn đã sao chép từ trang tổng quan Firebase nếu URL đó chưa xuất hiện.
  5. Nhấp vào Lưu.

Xác minh rằng dự án của bạn được thiết lập đúng cách

Người dùng phải có thể gọi Hành động của bạn để biết thông tin về Action Gym, bao gồm cả phản hồi bằng văn bản được mã hoá cứng có giờ hoạt động và phản hồi bằng văn bản liệt kê lịch học cho từng ngày trong tuần.

Cách kiểm thử Hành động trong trình mô phỏng Hành động:

  1. Trong ngăn điều hướng bên trái của bảng điều khiển Dialogflow, hãy nhấp vào Tích hợp > Trợ lý Google.
  2. Đảm bảo bạn đã bật chế độ Tự động xem trước các thay đổi rồi nhấp vào Kiểm thử để cập nhật dự án Hành động.
  3. Trình mô phỏng Hành động sẽ tải dự án Hành động của bạn. Để kiểm thử Thao tác, hãy nhập Talk to my test app vào trường Đầu vào rồi nhấn phím Enter.
  4. Bạn sẽ thấy một câu trả lời chào mừng bạn đến với Action Gym. Hãy thử làm theo lời nhắc để tiếp tục cuộc trò chuyện, đồng thời đảm bảo rằng yêu cầu thực hiện của bạn có phản hồi cho từng dữ liệu đầu vào.

60acf1ff87b1a87f.png

3. Thêm gói đăng ký nhận thông tin cập nhật hằng ngày

Một cách phổ biến để thu hút người dùng là cung cấp thông tin cho họ khi thông tin đó hữu ích nhất. Điều này được thực hiện bằng cách cung cấp cho người dùng lựa chọn đăng ký nhận thông tin cập nhật hằng ngày cho một ý định, nhờ đó gửi cho họ một thông báo của Trợ lý có đường liên kết trực tiếp đến việc thực hiện ý định đó.

Trong bước này, bạn sẽ tìm hiểu về các gói thuê bao nhận thông tin cập nhật hằng ngày và thêm các gói đó vào ý định Class List của Hành động. Sau khi làm theo các hướng dẫn này, cuộc trò chuyện của Hành động sẽ có dạng như sơ đồ sau:

f48891c8118f7436.png

Điều này sẽ thu hút người dùng như thế nào?

Người dùng điện thoại thông minh có lẽ đã quen với thông báo đẩy, cung cấp thông tin và tin cập nhật dành riêng cho ứng dụng. Đăng ký nhận thông tin cập nhật hằng ngày là một cách đơn giản để tiếp cận người dùng trên thiết bị di động bên ngoài Trợ lý, miễn là ý định mà bạn đang gửi thông tin cập nhật tiếp tục mang lại giá trị cho người dùng hằng ngày.

Thông tin cập nhật hằng ngày có thể là một công cụ hữu ích để thu hút người dùng nhưng không nhất thiết phải được đưa vào mọi Thao tác. Hãy cân nhắc những mẹo sau khi quyết định có nên thêm chế độ đăng ký nhận thông tin cập nhật hằng ngày vào một Hành động hay không:

  • Đảm bảo rằng nội dung cập nhật hằng ngày sẽ giúp người dùng thấy thông tin hữu ích và khác nhau mỗi ngày. Nếu việc nhấn vào thông tin cập nhật hằng ngày luôn dẫn đến cùng một lời nhắc, thì có thể người dùng sẽ huỷ đăng ký sau vài ngày.
  • Đảm bảo hộp thoại của bạn có ý nghĩa đối với người dùng nếu họ chuyển thẳng đến ý định cập nhật hằng ngày của bạn. Người dùng của bạn không nhất thiết phải bắt đầu từ đầu cuộc trò chuyện, vì vậy, bạn không nên mong đợi họ có nhiều bối cảnh.
  • Cho người dùng thấy lợi ích của Hành động trước khi nhắc họ đăng ký nhận thông tin cập nhật hằng ngày. Người dùng của bạn phải nghĩ rằng "Tôi muốn xem nội dung này mỗi ngày" khi họ có lựa chọn đăng ký.
  • Đừng làm người dùng choáng ngợp bằng cách liên tục đề xuất họ đăng ký. Đề nghị người dùng đăng ký nhận thông tin cập nhật hằng ngày ngay sau khi cho họ biết nội dung họ sẽ đăng ký và tránh làm phiền họ về việc này ở những nơi khác.
  • Giữ cuộc trò chuyện ngắn gọn sau khi ý định cập nhật được kích hoạt. Hầu hết các bản cập nhật hằng ngày chỉ nên bao gồm một phản hồi duy nhất rồi đóng mà không yêu cầu người dùng nhập dữ liệu.

Bật chế độ cập nhật hằng ngày

Bạn có thể thêm gói thuê bao cập nhật hằng ngày vào ý định chào mừng để đưa người dùng vào đầu cuộc trò chuyện hoặc một ý định cụ thể hơn để liên kết sâu họ đến một vị trí nào đó trong cuộc trò chuyện. Đối với lớp học lập trình này, ý định Class List (Danh sách lớp học) là phù hợp nhất vì hộp thoại sẽ thay đổi mỗi ngày và người dùng có thể thấy hữu ích khi được nhắc về những lớp học có sẵn.

Hãy làm theo các bước sau để bật tính năng cập nhật hằng ngày cho ý định Danh sách lớp học:

  1. Trong bảng điều khiển Actions, hãy nhấp vào thẻ Phát triển rồi chọn Actions trong thanh điều hướng bên trái.
  2. Nhấp vào Danh sách lớp học trong danh sách Thao tác.
  3. Trong phần Mức độ tương tác của người dùng, hãy bật lựa chọn Bạn có muốn cung cấp thông tin cập nhật hằng ngày cho người dùng không.
  4. Đặt một Tiêu đề nội dung mô tả nội dung cập nhật hằng ngày. Bối cảnh sẽ là "Bạn muốn tôi gửi " hằng ngày cho bạn vào lúc mấy giờ?", vì vậy, hãy đảm bảo tiêu đề của bạn vừa mô tả được nội dung vừa nghe có vẻ chính xác khi nói to. Trong ví dụ này, hãy đặt Tiêu đề nội dung thành list of upcoming Action Gym classes.
  5. Nhấp vào Lưu ở đầu trang.

c00885cc30e14d68.png

Thiết lập Dialogflow

Hãy làm theo các bước sau trong bảng điều khiển Dialogflow để tạo ý định cho quy trình đăng ký nhận thông tin cập nhật hằng ngày:

Nhắc người dùng đăng ký

  1. Thiết lập một ý định mới để xử lý yêu cầu của người dùng về việc đăng ký nhận thông tin cập nhật hằng ngày. Trong bảng điều khiển Dialogflow, hãy nhấp vào nút + bên cạnh Ý định trong trình đơn điều hướng bên trái để tạo một ý định mới.
  2. Đặt tên cho ý định mới này là Setup Updates.
  3. Trong phần Cụm từ huấn luyện, hãy thêm biểu thức của người dùng sau đây:
  • Send daily reminders
  • Reminder
  • Remind me
  • Updates
  • Upcoming classes
  1. Trong phần Thực hiện, hãy bật tuỳ chọn Bật lệnh gọi webhook cho ý định này.
  2. Nhấp vào Lưu ở đầu trang.

5c70faa02151da0.png

Xử lý quyết định của người dùng

  1. Thiết lập một ý định mới để xử lý phản hồi của người dùng đối với lời nhắc đăng ký nhận thông tin cập nhật hằng ngày. Nhấp vào nút + bên cạnh Ý định trong trình đơn điều hướng bên trái để tạo một ý định mới.
  2. Đặt tên cho ý định mới này là Confirm Updates.
  3. Trong mục Sự kiện, hãy thêm actions_intent_REGISTER_UPDATE. Sự kiện Dialogflow này sẽ được kích hoạt khi người dùng hoàn tất quy trình đăng ký nhận thông tin cập nhật hằng ngày, bất kể họ có đăng ký hay không.
  4. Trong phần Thực hiện, hãy bật tuỳ chọn Bật lệnh gọi webhook cho ý định này.
  5. Nhấp vào Lưu ở đầu trang.

b871c2bdadac8abc.png

Triển khai việc thực hiện đơn hàng

Để triển khai phương thức thực hiện trong webhook, hãy hoàn tất các bước sau:

Tải phần phụ thuộc

b2f84ff91b0e1396.png Trong tệp index.js, hãy cập nhật hàm require() để thêm gói RegisterUpdate từ gói actions-on-google, để các câu lệnh nhập của bạn có dạng như sau:

index.js

const {
  dialogflow,
  Suggestions,
  RegisterUpdate,
} = require('actions-on-google');

Cập nhật các nút đề xuất

b2f84ff91b0e1396.png Trong tệp index.js, hãy thêm một mục DAILY vào danh sách tiêu đề của khối đề xuất, để định nghĩa Suggestion của bạn có dạng như sau:

index.js

// Suggestion chip titles
const Suggestion = {
  HOURS: 'Ask about hours',
  CLASSES: 'Learn about classes',
  DAILY: 'Send daily reminders',
};

Thêm tính năng thực hiện cho các ý định mới

Khi người dùng nói rằng họ muốn đăng ký, hãy bắt đầu quy trình đăng ký nhận thông tin cập nhật hằng ngày bằng cách gọi trợ lý RegisterUpdate với ý định mục tiêu của thông tin cập nhật (Class List) và loại (DAILY). Sau khi quy trình đăng ký hoàn tất, Trợ lý sẽ kích hoạt sự kiện actions_intent_REGISTER_UPDATE với đối số status mô tả việc đăng ký có thành công hay không. Đưa ra lời nhắc tiếp theo cho người dùng, lời nhắc này sẽ thay đổi tuỳ theo trạng thái gói thuê bao.

b2f84ff91b0e1396.png Trong tệp index.js, hãy thêm đoạn mã sau:

index.js

// Start opt-in flow for daily updates
app.intent('Setup Updates', (conv) => {
  conv.ask(new RegisterUpdate({
    intent: 'Class List',
    frequency: 'DAILY',
  }));
});

// Confirm outcome of opt-in for daily updates
app.intent('Confirm Updates', (conv, params, registered) => {
  if (registered && registered.status === 'OK') {
     conv.ask(`Gotcha, I'll send you an update everyday with the ` +
     'list of classes. Can I help you with anything else?');
  } else {
    conv.ask(` I won't send you daily reminders. Can I help you with anything else?`);
  }
  if (conv.screen) {
    conv.ask(new Suggestions([Suggestion.HOURS, Suggestion.CLASSES]));
  }
});

Đưa ra các câu lệnh thay thế cho người dùng

Phản hồi Danh sách lớp học sẽ cung cấp gói thuê bao cập nhật hằng ngày ở cuối, nhưng điều này gây ra một vấn đề. Vì phản hồi tương tự này sẽ được kích hoạt khi người dùng nhấn vào thông báo cập nhật hằng ngày, nên họ vẫn sẽ được yêu cầu đăng ký nhận thông tin cập nhật hằng ngày mặc dù họ vừa nhận được một thông báo. Làm cách nào để người dùng không nghĩ rằng họ cần đăng ký lại?

Rất may là các đối số của đối tượng conv bao gồm thông tin về nơi người dùng bắt đầu cuộc trò chuyện. Bạn có thể kiểm tra các đối số conv để xem chúng có chứa phần UPDATES hay không. Phần này cho biết người dùng đã bắt đầu cuộc trò chuyện từ thông báo cập nhật hằng ngày và thay đổi phản hồi cho phù hợp. Bạn cũng có thể sử dụng nhánh trò chuyện này để đóng hộp thoại ngay sau khi cung cấp danh sách các lớp học, theo phương pháp hay nhất của chúng tôi là giữ cho nội dung cập nhật hằng ngày ngắn gọn.

b2f84ff91b0e1396.png Trong tệp index.js, hãy thay thế mã sau:

index.js

// Class list intent handler
app.intent('Class List', (conv, {day}) => {
  if (!day) {
    day = DAYS[new Date().getDay()];
  }
  const classes =
  [...new Set(schedule.days[day].map((d) => `${d.name} at ${d.startTime}`))]
  .join(', ');
  const classesMessage =
  `On ${day} we offer the following classes: ${classes}. ` +
  `Can I help you with anything else?`;
  conv.ask(classesMessage);
  if (conv.screen) {
    conv.ask(new Suggestions([Suggestion.HOURS]));
  }
});

bằng:

index.js

// Class list intent handler
app.intent('Class List', (conv, {day}) => {
  if (!day) {
    day = DAYS[new Date().getDay()];
  }
  const classes =
  [...new Set(schedule.days[day].map((d) => `${d.name} at ${d.startTime}`))]
  .join(', ');
  let classesMessage = `On ${day} we offer the following classes: ${classes}. `;
  // If the user started the conversation from the context of a daily update,
  // the conv's arguments will contain an 'UPDATES' section.
  let engagement = conv.arguments.get('UPDATES');
  // Check the conv arguments to tailor the conversation based on the context.
  if (engagement) {
    classesMessage += `Hope to see you soon at Action Gym!`;
    conv.close(classesMessage);
  } else {
    classesMessage += `Would you like me to send you daily reminders of upcoming classes, or can I help you with anything else?`;
    conv.ask(classesMessage);
    if (conv.screen) {
      conv.ask(new Suggestions([Suggestion.DAILY, Suggestion.HOURS]));
    };
  };
});

Kiểm thử thông tin cập nhật hằng ngày

Trong dòng lệnh, hãy chạy lệnh sau để triển khai mã webhook đã cập nhật cho Firebase:

firebase deploy

Để kiểm thử lời nhắc lại tuỳ chỉnh trong Trình mô phỏng hành động, hãy làm theo các bước sau:

  1. Trong bảng điều khiển Actions, hãy chuyển đến mục Test (Kiểm thử).
  2. Nhập Talk to my test app vào trường Đầu vào rồi nhấn phím Enter.
  3. Nhập Learn about classes rồi nhấn phím Enter. Giờ đây, câu trả lời của Thao tác của bạn sẽ đề nghị gửi lời nhắc hằng ngày.
  4. Nhập Send daily reminders rồi nhấn phím Enter.
  5. Nhập thời gian bạn muốn xem thông tin cập nhật rồi nhấn phím Enter. Để kiểm thử, hãy thử trả lời sau thời gian hiện tại từ 3 đến 5 phút.

83a15ecac8c71787.png

Trên thiết bị di động, bạn sẽ nhận được thông báo từ Trợ lý vào khoảng thời gian mà bạn đã chỉ định để nhận thông tin cập nhật. Xin lưu ý rằng thông báo này có thể mất vài phút mới xuất hiện. Nhấn vào thông báo để chuyển thẳng đến ý định Danh sách lớp học trong Trợ lý, nhờ đó bạn sẽ thấy danh sách các lớp học sắp tới:

8582482eafc67d5b.png

4. Thêm thông báo đẩy

Ngoài ra, để thu hút người dùng bên ngoài Thao tác của bạn, bạn có thể gọi Actions API để gửi thông báo đẩy cho người dùng. Không giống như thông tin cập nhật hằng ngày, Trợ lý không tự động lên lịch gửi những thông báo này nên bạn có thể gửi bất cứ lúc nào.

Trong bước này, bạn sẽ tìm hiểu cách triển khai thông báo đẩy trong Thao tác bằng cách thêm một ý định Lớp học bị huỷ mới và gửi thông báo cho người dùng để thông báo cho họ về việc huỷ lớp học. Bạn cũng sẽ thiết lập 3 thành phần sau đây cần thiết để gửi thông báo:

  • Tài khoản Actions API – Bạn gửi thông báo cho người dùng bằng cách gửi yêu cầu POST đến một API. Vì vậy, bạn cần thiết lập một tài khoản dịch vụ và thông tin đăng nhập để tương tác với API này.
  • Trợ lý cấp quyền – Bạn cần có sự cho phép của người dùng để truy cập vào mã nhận dạng người dùng cần thiết để gửi thông báo đẩy cho họ. Trong ví dụ này, bạn sẽ sử dụng một hàm thư viện ứng dụng để gọi trình trợ giúp quyền và yêu cầu mã nhận dạng này.
  • Bộ nhớ – Để gửi thông báo đẩy cho người dùng bên ngoài cuộc trò chuyện, bạn cần lưu trữ mã nhận dạng người dùng ở một nơi nào đó có thể truy xuất theo ý muốn. Trong ví dụ này, bạn sẽ thiết lập một cơ sở dữ liệu Firestore để lưu trữ thông tin cho từng người dùng.

Sau khi làm theo các hướng dẫn này, bạn sẽ thêm hộp thoại sau vào cuộc trò chuyện của Thao tác:

7c9d4b633c547823.png

Điều này sẽ thu hút người dùng như thế nào?

Người dùng điện thoại thông minh có lẽ đã quen với thông báo đẩy, cung cấp thông tin và tin cập nhật dành riêng cho ứng dụng. Thông báo đẩy là một cách linh hoạt để tiếp cận người dùng trên thiết bị di động bên ngoài Trợ lý, miễn là bạn đưa ra lý do chính đáng để người dùng bật thông báo đẩy. Với thông tin cập nhật hằng ngày, người dùng đã biết rằng họ sẽ nhận được thông báo hằng ngày. Tuy nhiên, với thông báo đẩy, người dùng không biết liệu họ có chọn nhận thông báo không thường xuyên hay sẽ bị làm phiền bằng nhiều thông báo mỗi ngày.

Thông báo đẩy có thể là một công cụ hữu ích để thu hút người dùng nhưng không nhất thiết phải được tích hợp trong mọi Thao tác. Hãy cân nhắc những mẹo này khi quyết định có nên thêm thông báo đẩy vào một Thao tác hay không:

  • Lên kế hoạch cho một số lịch biểu mẫu cho thông báo đẩy. Nếu bạn chỉ định gửi một thông báo đẩy mỗi ngày, hãy cân nhắc sử dụng thông báo cập nhật hằng ngày.
  • Đảm bảo thông báo đẩy của bạn sẽ cung cấp thông tin hữu ích mỗi khi người dùng nhận được thông báo. Thông báo của bạn cũng có thể liên kết sâu đến một trong các ý định của Thao tác, vì vậy, hãy đảm bảo ý định đó hữu ích và phù hợp.
  • Nêu rõ lý do khi yêu cầu người dùng đăng ký nhận thông báo đẩy. Họ cần hiểu rõ nội dung của từng thông báo đẩy và biết được tần suất gửi thông báo.

Bật Actions API

  1. Mở Google Cloud Console rồi chọn tên dự án Actions của bạn trong trình đơn thả xuống.

d015c1515b99e3db.png

  1. Trong trình đơn điều hướng (☰), hãy chuyển đến API và dịch vụ > Thư viện.
  2. Tìm Actions API rồi nhấp vào Bật.

6d464f49c88e70b4.png

Tạo một tài khoản dịch vụ

Actions API yêu cầu xác thực nên bạn cần tạo một tài khoản dịch vụ để gửi yêu cầu. Hãy làm theo các bước sau để tạo và cài đặt khoá tài khoản dịch vụ cho Actions API:

  1. Trong trình đơn điều hướng (☰) của Google Cloud Console, hãy chuyển đến phần API và dịch vụ > Thông tin xác thực.
  2. Nhấp vào Tạo thông tin xác thực > Khoá tài khoản dịch vụ.
  3. Trong trình đơn thả xuống Tài khoản dịch vụ, hãy chọn Tài khoản dịch vụ mới.
  4. Điền những thông tin sau:
  • Tên tài khoản dịch vụ: service-account
  • Vai trò: Dự án > Chủ sở hữu
  • Mã tài khoản dịch vụ: service-account (luôn theo sau là @<project_id>.iam.gserviceaccount.com)
  • Loại khoá: JSON
  1. Nhấp vào Tạo.
  2. Di chuyển tệp JSON đã tải xuống vào thư mục /user-engagement-codelab/start/functions/ của dự án.
  3. Đổi tên tệp JSON thành service-account.json.

d9bd79d35691de3a.png

Bật Firestore

Để gửi thông báo bên ngoài cuộc trò chuyện, bạn cần có cách lưu trữ mã nhận dạng người dùng mà bạn có thể tham chiếu từ mã thông báo. Trong ví dụ này, chúng ta sẽ sử dụng cơ sở dữ liệu Firestore để lưu trữ mã nhận dạng người dùng của những người dùng đã đăng ký.

Hãy làm theo các bước sau để tạo cơ sở dữ liệu Firestore cho Thao tác của bạn:

  1. Trong bảng điều khiển của Firebase, hãy chọn tên dự án Actions của bạn.
  2. Trong bảng điều hướng bên trái, hãy chuyển đến Phát triển > Cơ sở dữ liệu rồi nhấp vào Tạo cơ sở dữ liệu.
  3. Chọn Bắt đầu ở chế độ thử nghiệm.
  4. Nhấp vào Bật.

6dfc386413954caa.png

Thiết lập Dialogflow

Hãy làm theo các bước sau trong bảng điều khiển Dialogflow để tạo quy trình chọn nhận thông báo đẩy:

Nhắc người dùng đăng ký

  1. Thiết lập một ý định mới để xử lý yêu cầu của người dùng về việc đăng ký nhận thông báo đẩy cho các lớp học bị huỷ. Trong bảng điều khiển Dialogflow, hãy nhấp vào nút + bên cạnh Ý định trong trình đơn điều hướng bên trái để tạo một ý định mới.
  2. Đặt tên cho ý định mới này là Setup Push Notifications.
  3. Trong phần Cụm từ huấn luyện, hãy thêm biểu thức của người dùng sau đây:
  • Subscribe to notifications
  • Send notification
  • Notify me
  • Send class notifications
  • Cancelled notifications
  1. Trong phần Thực hiện, hãy bật tuỳ chọn Bật lệnh gọi webhook cho ý định này.
  2. Nhấp vào Lưu ở đầu trang.

3d99bc41d0492552.png

Xử lý quyết định của người dùng

  1. Thiết lập một ý định mới để xử lý phản hồi của người dùng đối với lời nhắc đăng ký nhận thông báo đẩy. Nhấp vào nút + bên cạnh Ý định trong trình đơn điều hướng bên trái để tạo một ý định mới.
  2. Đặt tên cho ý định mới này là Confirm Push Notifications.
  3. Trong mục Sự kiện, hãy thêm actions_intent_PERMISSION. Sự kiện Dialogflow này sẽ được kích hoạt khi người dùng hoàn tất quy trình đăng ký nhận thông báo đẩy, cho dù họ có đăng ký hay không.
  4. Trong phần Thực hiện, hãy bật tuỳ chọn Bật lệnh gọi webhook cho ý định này.
  5. Nhấp vào Lưu ở đầu trang.

d37f550c5e07cb73.png

Xử lý thông báo đẩy

Bạn có thể liên kết thông báo đẩy với một ý định cụ thể, nhờ đó, những người dùng nhấn vào thông báo đẩy sẽ được liên kết sâu trực tiếp đến ý định đó trong Thao tác của bạn. Trong ví dụ này, hãy thêm một ý định mới cho thông báo đẩy cung cấp thông tin chi tiết về các lớp học bị huỷ.

Hãy làm theo các bước sau để thêm một ý định sẽ được kích hoạt khi người dùng nhấn vào một thông báo đẩy:

  1. Trong bảng điều khiển Dialogflow, hãy nhấp vào nút + bên cạnh Ý định trong trình đơn điều hướng bên trái để tạo một ý định mới.
  2. Đặt tên cho ý định mới này là Class Canceled.
  3. Trong mục Cụm từ huấn luyện, hãy thêm Cancelations làm biểu thức của người dùng.
  4. Trong phần Thực hiện, hãy bật tuỳ chọn Bật lệnh gọi webhook cho ý định này.
  5. Nhấp vào Lưu ở đầu trang.

940379556f559631.png

Gửi thông báo thử nghiệm trong cuộc trò chuyện

Trong quá trình sản xuất, bạn nên có một tập lệnh riêng biệt với mã thực hiện Hành động để gửi thông báo đẩy. Trong ví dụ này, hãy tạo một ý định mà bạn có thể gọi để gửi thông báo đẩy trong khi trò chuyện với Thao tác của mình. Ý định này chỉ dành cho mục đích gỡ lỗi; trên thực tế, thông báo đẩy không được xử lý bằng dịch vụ thực hiện hoặc được kích hoạt theo cách khác trong cuộc trò chuyện của Hành động.

Hãy làm theo các bước sau để tạo một ý định kiểm thử thông báo đẩy:

  1. Để kiểm thử và gỡ lỗi, hãy thiết lập một ý định mới cho phép bạn gửi thông báo đẩy đến những người dùng đã đăng ký. Trong bảng điều khiển Dialogflow, hãy nhấp vào nút + bên cạnh Ý định trong trình đơn điều hướng bên trái để tạo một ý định mới.
  2. Đặt tên cho ý định mới này là Test Notification.
  3. Trong mục Cụm từ huấn luyện, hãy thêm Test notification làm biểu thức của người dùng.
  4. Trong phần Thực hiện, hãy bật tuỳ chọn Bật lệnh gọi webhook cho ý định này.
  5. Nhấp vào Lưu ở đầu trang.

6967f5a997643eb8.png

Bật thông báo đẩy

Hãy làm theo các bước sau để bật thông báo đẩy cho ý định Class Canceled (Lớp học bị huỷ):

  1. Trong bảng điều khiển Dialogflow, hãy chuyển đến mục Tích hợp trong thanh điều hướng.
  2. Trên thẻ Trợ lý Google, hãy nhấp vào Chế độ cài đặt tích hợp.
  3. Thêm Class Canceled làm ý định Lời gọi ngầm. Bước này là cần thiết để Dialogflow nhận ra rằng người dùng có thể bắt đầu cuộc trò chuyện với ý định Lớp học bị huỷ (bằng cách nhấn vào một thông báo đẩy).
  4. Nhấp vào Close (Đóng).

1ac725231ed279a1.png

  1. Trong bảng điều khiển Actions, hãy nhấp vào thẻ Phát triển rồi chọn Actions trong thanh điều hướng bên trái.
  2. Nhấp vào Lớp học bị huỷ trong danh sách Hành động.
  3. Trong phần Mức độ tương tác của người dùng, hãy bật/tắt lựa chọn Bạn có muốn gửi thông báo đẩy không?.
  4. Đặt một Tiêu đề nội dung mô tả cho thông báo đẩy. Bối cảnh sẽ là "Liệu tôi có thể gửi thông báo đẩy liên quan đến ?", vì vậy, hãy đảm bảo tiêu đề của bạn vừa mang tính mô tả vừa nghe có vẻ chính xác khi nói to. Trong ví dụ này, hãy đặt Tiêu đề nội dung thành class cancelations.
  5. Nhấp vào Lưu ở đầu trang.

4304c7cd575f6de3.png

Triển khai việc thực hiện đơn hàng

Để triển khai phương thức thực hiện trong webhook, hãy hoàn tất các bước sau:

Tải phần phụ thuộc

b2f84ff91b0e1396.png Trong tệp index.js, hãy cập nhật hàm require() để thêm gói UpdatePermission từ gói actions-on-google, để các câu lệnh nhập của bạn có dạng như sau:

index.js

const {
  dialogflow,
  Suggestions,
  RegisterUpdate,
  UpdatePermission,
} = require('actions-on-google');

Cập nhật các nút đề xuất

b2f84ff91b0e1396.png Trong tệp index.js, hãy thêm một mục NOTIFICATIONS vào danh sách tiêu đề của khối đề xuất, để định nghĩa Suggestion của bạn có dạng như sau:

index.js

// Suggestion chip titles
const Suggestion = {
  HOURS: 'Ask about hours',
  CLASSES: 'Learn about classes',
  DAILY: 'Send daily reminders',
  NOTIFICATIONS: 'Get notifications',
};

Thiết lập tính năng nhập dữ liệu mới

Để kết nối với cơ sở dữ liệu Firestore, hãy thêm gói firebase-admin và thêm các hằng số cho các trường được lưu trữ trong cơ sở dữ liệu. Ngoài ra, hãy nhập các gói google-auth-libraryrequest để xử lý hoạt động xác thực và các yêu cầu đối với Actions API.

b2f84ff91b0e1396.png Trong tệp index.js, hãy thêm đoạn mã sau vào các mục nhập của bạn:

index.js

// Firebase admin import
const admin = require('firebase-admin');

// Initialize Firestore
admin.initializeApp();
const db = admin.firestore();

// Firestore constants
const FirestoreNames = {
 INTENT: 'intent',
 USER_ID: 'userId',
 USERS: 'users',
};

// Actions API authentication imports
const {auth} = require('google-auth-library');
const request = require('request');

Đề nghị thiết lập thông báo huỷ lớp học

b2f84ff91b0e1396.png Trong tệp index.js, hãy thay thế mã sau:

index.js

// Class list intent handler
app.intent('Class List', (conv, {day}) => {
  if (!day) {
    day = DAYS[new Date().getDay()];
  }
  const classes =
  [...new Set(schedule.days[day].map((d) => `${d.name} at ${d.startTime}`))]
  .join(', ');
  let classesMessage = `On ${day} we offer the following classes: ${classes}. `;
  // If the user started the conversation from the context of a daily update,
  // the conv's arguments will contain an 'UPDATES' section.
  let engagement = conv.arguments.get('UPDATES');
  // Check the conv arguments to tailor the conversation based on the context.
  if (engagement) {
    classesMessage += `Hope to see you soon at Action Gym!`;
    conv.close(classesMessage);
  } else {
    classesMessage += `Would you like me to send you daily reminders of upcoming classes, or can I help you with anything else?`;
    conv.ask(classesMessage);
    if (conv.screen) {
      conv.ask(new Suggestions([Suggestion.DAILY, Suggestion.HOURS]));
    };
  };
});

bằng:

index.js

// Class list intent handler
app.intent('Class List', (conv, {day}) => {
  if (!day) {
    day = DAYS[new Date().getDay()];
  }
  const classes =
  [...new Set(schedule.days[day].map((d) => `${d.name} at ${d.startTime}`))]
  .join(', ');
  let classesMessage = `On ${day} we offer the following classes: ${classes}. `;
  // If the user started the conversation from the context of a daily update,
  // the conv's arguments will contain an 'UPDATES' section.
  let engagement = conv.arguments.get('UPDATES');
  // Check the conv arguments to tailor the conversation based on the context.
  if (engagement) {
    classesMessage += `Hope to see you soon at Action Gym!`;
    conv.close(classesMessage);
  } else {
    classesMessage += `Would you like to receive daily reminders of upcoming classes, subscribe to notifications about cancelations, or can I help you with anything else?`;
    conv.ask(classesMessage);
    if (conv.screen) {
      conv.ask(new Suggestions([Suggestion.DAILY, Suggestion.NOTIFICATIONS,
Suggestion.HOURS]));
    };
  };
});

Thêm tính năng thực hiện cho các ý định mới

Khi người dùng cho biết họ muốn đăng ký nhận thông báo đẩy, hãy gọi trợ giúp UpdatePermission để yêu cầu người dùng cấp quyền. Nếu thành công, đối số PERMISSION sẽ được thêm vào các đối số của đối tượng conv mà bạn có thể kiểm tra để xoay cuộc trò chuyện.

Sau khi có được sự cho phép của người dùng, hãy lấy mã nhận dạng người dùng từ các đối số của đối tượng conv và lưu mã nhận dạng đó vào cơ sở dữ liệu của bạn. Sau đó, bạn sẽ gửi mã nhận dạng người dùng này đến Actions API. Đây là cách Trợ lý xác định người nhận thông báo.

Cuối cùng, hãy thêm phương thức thực hiện cho ý định Class Canceled được kích hoạt bằng cách nhấn vào thông báo đẩy. Trong ví dụ này, câu trả lời của bạn là một chuỗi giữ chỗ, mặc dù trong phiên bản sẵn sàng phát hành công khai của Thao tác này, tập lệnh thông báo của bạn sẽ cung cấp thêm thông tin động về lớp học đã bị huỷ.

b2f84ff91b0e1396.png Trong tệp index.js, hãy thêm đoạn mã sau:

index.js

// Call the User Information helper for permission to send push notifications
app.intent('Setup Push Notifications', (conv) => {
 conv.ask('Update permission for setting up push notifications');
 conv.ask(new UpdatePermission({intent: 'Class Canceled'}));
});

// Handle opt-in or rejection of push notifications
app.intent('Confirm Push Notifications', (conv) => {
 if (conv.arguments.get('PERMISSION')) {
   let userId = conv.arguments.get('UPDATES_USER_ID');
   if (!userId) {
     userId = conv.request.conversation.conversationId;
   }
   // Add the current conversation ID and the notification's
   // target intent to the Firestore database.
   return db.collection(FirestoreNames.USERS)
   .add({
     [FirestoreNames.INTENT]: 'Class Canceled',
     [FirestoreNames.USER_ID]: userId,
   })
   .then(() => {
     conv.ask(`Great, I'll notify you whenever there's a class cancelation. ` +
     'Can I help you with anything else?');
   });
 } else {
   conv.ask(`Okay, I won't send you notifications about class cancelations. ` +
     'Can I help you with anything else?');
 }
 if (conv.screen) {
    conv.ask(new Suggestions([Suggestion.CLASSES, Suggestion.HOURS]));
  }
});

// Intent triggered by tapping the push notification
app.intent('Class Canceled', (conv) => {
 conv.ask('Classname at classtime has been canceled.');
});

Thêm thông báo kiểm thử

Để gửi thông báo đẩy cho người dùng, hãy gửi một yêu cầu POST đến Actions API kèm theo mã nhận dạng người dùng, tiêu đề của thông báo và ý định mục tiêu. Trong ví dụ này, việc kích hoạt ý định Thông báo kiểm thử sẽ lặp lại cơ sở dữ liệu Firestore của bạn và gửi thông báo đẩy đến mọi người dùng đã đăng ký nhận thông báo.

Hãy nhớ rằng trong ví dụ này, bạn đang thêm mã gửi thông báo đẩy vào yêu cầu thực hiện webhook và kích hoạt mã đó bằng cách gọi một ý định kiểm thử trong cuộc trò chuyện. Trong những Thao tác mà bạn dự định xuất bản, mã thông báo đẩy phải nằm trong một tập lệnh riêng biệt với yêu cầu thực hiện.

b2f84ff91b0e1396.png Trong tệp index.js, hãy thêm đoạn mã sau:

index.js

// Debug intent to trigger a test push notification
app.intent('Test Notification', (conv) => {
 // Use the Actions API to send a Google Assistant push notification.
 let client = auth.fromJSON(require('./service-account.json'));
 client.scopes = ['https://www.googleapis.com/auth/actions.fulfillment.conversation'];
 let notification = {
   userNotification: {
     title: 'Test Notification from Action Gym',
   },
   target: {},
 };
 client.authorize((err, tokens) => {
   if (err) {
     throw new Error(`Auth error: ${err}`);
   }
   // Iterate through Firestore and send push notifications to every user
   // who's currently opted in to canceled class notifications.
   db.collection(FirestoreNames.USERS)
       .where(FirestoreNames.INTENT, '==', 'Class Canceled')
       .get()
       .then((querySnapshot) => {
         querySnapshot.forEach((user) => {
           notification.target = {
             userId: user.get(FirestoreNames.USER_ID),
             intent: user.get(FirestoreNames.INTENT),
           };
           request.post('https://actions.googleapis.com/v2/conversations:send', {
             'auth': {
               'bearer': tokens.access_token,
             },
             'json': true,
             'body': {'customPushMessage': notification, 'isInSandbox': true},
           }, (err, httpResponse, body) => {
             if (err) {
               throw new Error(`API request error: ${err}`);
             }
             console.log(`${httpResponse.statusCode}: ` +
               `${httpResponse.statusMessage}`);
             console.log(JSON.stringify(body));
           });
         });
       })
       .catch((error) => {
         throw new Error(`Firestore query error: ${error}`);
       });
 });
 conv.ask('A notification has been sent to all subscribed users.');
});

Kiểm thử thông báo đẩy

Trong dòng lệnh, hãy chạy lệnh sau để triển khai mã webhook đã cập nhật cho Firebase:

firebase deploy

Để kiểm thử thông báo trong Trình mô phỏng hành động, hãy làm theo các bước sau:

  1. Trong bảng điều khiển Actions, hãy chuyển đến thẻ Kiểm thử.
  2. Nhập Talk to my test app vào trường Đầu vào rồi nhấn phím Enter.
  3. Nhập Learn about classes rồi nhấn phím Enter.
  4. Nhập Get notifications rồi nhấn phím Enter.
  5. Nếu bạn chưa cấp cho Thao tác quyền gửi thông báo đẩy cho bạn, hãy nhập yes rồi nhấn phím Enter.
  6. Nhập yes rồi nhấn phím Enter. Giờ đây, Tài khoản Google của bạn sẽ nhận được thông báo đẩy cho Thao tác này.

3a8704bdc0bcbb17.png

  1. Nhập no rồi nhấn Enter để thoát.
  2. Nhập Talk to my test app rồi nhấn phím Enter để bắt đầu một cuộc trò chuyện mới.
  3. Nhập Test notification rồi nhấn phím Enter.

634dfcb0be8dfdec.png

Trong vòng vài phút, bạn sẽ nhận được thông báo đẩy "Thông báo kiểm thử từ Action Gym" của Trợ lý trên thiết bị di động. Khi nhấn vào thông báo này, bạn sẽ được chuyển đến ý định Lớp học bị huỷ của Thao tác.

33cbde513c10122e.png

5. Tạo đường liên kết đến Trợ lý

Đến thời điểm này, chúng ta đã thảo luận về các tính năng tương tác mà bạn có thể triển khai để giữ chân người dùng quay lại Hành động của bạn. Tuy nhiên, những tính năng đó dựa trên việc người dùng khám phá và sử dụng Hành động của bạn.

Bạn có thể tạo một đường liên kết đến Trợ lý để đưa người dùng trên thiết bị di động đến thẳng Hành động của bạn trên Trợ lý. Vì đường liên kết đến Trợ lý là một siêu liên kết tiêu chuẩn, nên bạn có thể thêm đường liên kết này vào một trang web hoặc bất kỳ tài liệu tiếp thị nào trên web, chẳng hạn như bài đăng trên blog hoặc mạng xã hội.

Trong bước này, bạn sẽ tìm hiểu về đường liên kết đến Trợ lý, cách tạo một đường liên kết cho ý định chào mừng của Thao tác và cách thêm đường liên kết đó vào một trang web đơn giản để kiểm thử.

Điều này sẽ thu hút người dùng như thế nào?

Việc thu hút người dùng đến với Hành động của bạn lần đầu tiên có thể là một thách thức, đặc biệt là khi họ cần phải gọi Hành động của bạn một cách rõ ràng trên Trợ lý. Đường liên kết Trợ lý giúp giảm bớt khó khăn này bằng cách cung cấp cho người dùng một đường liên kết trực tiếp đến Thao tác của bạn. Khi người dùng nhấp vào đường liên kết đến Trợ lý trên một thiết bị có Trợ lý, họ sẽ được chuyển thẳng đến Thao tác của bạn. Khi người dùng mở đường liên kết của bạn trên một thiết bị không phải thiết bị di động hoặc bất kỳ thiết bị nào khác không hỗ trợ Trợ lý, họ vẫn sẽ được chuyển đến trang thông tin của bạn trong danh mục Hành động (nếu trang thông tin đó đã được xuất bản) để đường liên kết vẫn có thể tiếp thị Hành động của bạn cho những người dùng đó.

Đường liên kết đến Trợ lý có thể là một công cụ tương tác hữu ích, vì vậy, bạn nên tạo một đường liên kết nếu dự định quảng cáo Hành động của mình thông qua trang web hoặc mạng xã hội. Hãy lưu ý những mẹo sau trước khi tạo và phân phối đường liên kết đến Trợ lý:

  • Các đường liên kết đến Trợ lý chỉ hoạt động sau khi Hành động của bạn được xuất bản. Khi dự án của bạn ở trạng thái bản nháp, đường liên kết sẽ chỉ hoạt động trên thiết bị của riêng bạn. Những người khác sẽ được chuyển đến trang 404 trong thư mục Actions.
  • Bạn có thể cho phép người dùng kiểm thử một đường liên kết đến Trợ lý trước khi xuất bản bằng cách phát hành Thao tác của bạn trong môi trường alpha hoặc beta. Xin lưu ý rằng chỉ những người dùng tham gia kiểm thử alpha hoặc beta mới có thể kiểm thử đường liên kết đến Trợ lý.
  • Đảm bảo ý định của đích đến cho đường liên kết đến Trợ lý tạo được ấn tượng tốt ban đầu với người dùng mới. Ý định chào mừng là đích đến mặc định cho một đường liên kết Trợ lý vì ý định này đã giới thiệu hiệu quả về Hành động của bạn

Làm theo các bước sau để tạo một đường liên kết đến Trợ lý cho ý định chào mừng:

  1. Trong bảng điều khiển Actions, hãy nhấp vào thẻ Phát triển rồi chọn Actions trong thanh điều hướng bên trái.
  2. Nhấp vào actions.intent.MAIN trong danh sách Thao tác.
  3. Trong phần Đường liên kết, hãy bật lựa chọn Bạn có muốn bật một URL cho Hành động này không.
  4. Đặt một Tiêu đề liên kết mô tả Hành động của bạn. Hãy đặt tiêu đề là một cặp động từ-danh từ đơn giản, mô tả những việc mà người dùng có thể làm được thông qua Hành động của bạn. Trong ví dụ này, hãy đặt Tiêu đề đường liên kết thành learn about Action Gym.
  5. Sao chép đoạn mã HTML ở cuối trang này và lưu lại để dùng sau.
  6. Nhấp vào Lưu ở đầu trang.

55341b8102b71eab.png

Triển khai một trang web thử nghiệm

Để kiểm tra đường liên kết đến Trợ lý, bạn có thể sử dụng các công cụ của Firebase để triển khai một trang web thử nghiệm cùng với dịch vụ thực hiện đơn hàng. Chúng tôi đã tạo một trang web kiểm thử đơn giản cho ví dụ này, bạn chỉ cần thêm đường liên kết đến Trợ lý.

Chuyển đến thư mục /user-engagement-codelab-nodejs/start/public/ của dịch vụ thực hiện đơn hàng rồi mở tệp index.html trong một trình chỉnh sửa văn bản.

b2f84ff91b0e1396.png Trong tệp index.html, hãy dán đoạn mã HTML của đường liên kết đến Trợ lý vào phần tử nội dung. Tệp sẽ có dạng như đoạn mã dưới đây:

index.html

<body>
    <p>
     <a href="https://assistant.google.com/services/invoke/uid/000000efb5f2fd97">🅖 Ask my test app to learn about Action Gym
     </a>
    </p>
</body>

Trong cửa sổ dòng lệnh, hãy chạy lệnh sau để triển khai trang web kiểm thử của bạn lên Firebase:

firebase deploy

Sau khi lệnh triển khai chạy xong, hãy ghi lại URL lưu trữ trong đầu ra.

b01e8d322fb5d623.png

Truy cập vào URL này trên trình duyệt web của thiết bị di động, bạn sẽ thấy đường liên kết đến Trợ lý trên trang web thử nghiệm. Khi nhấp vào đường liên kết này trên thiết bị di động, bạn sẽ được chuyển đến ý định chào mừng của Hành động trong Trợ lý.

599845d647f5b624.png

Bạn cũng có thể thử truy cập vào URL lưu trữ trên trình duyệt máy tính. Thao tác này sẽ đưa bạn đến trang lỗi 404 trong thư mục Trợ lý vì Thao tác của bạn chưa được xuất bản.

6. Các bước tiếp theo

Xin chúc mừng!

Giờ đây, bạn đã tìm hiểu được tầm quan trọng của mức độ tương tác của người dùng khi phát triển một Thao tác, những tính năng tương tác của người dùng có trên nền tảng và cách thêm từng tính năng vào một Thao tác.

Tài nguyên học tập bổ sung

Hãy khám phá những tài nguyên này để tìm hiểu thêm về mức độ tương tác của người dùng đối với Thao tác của bạn:

Theo dõi chúng tôi trên Twitter @ActionsOnGoogle để nắm bắt những thông báo mới nhất của chúng tôi, đồng thời đăng bài lên Twitter bằng thẻ hashtag #AoGDevs để chia sẻ những gì bạn đã tạo!

Bài khảo sát nhận ý kiến phản hồi

Trước khi rời đi, vui lòng điền vào biểu mẫu này để cho chúng tôi biết hiệu suất của chúng tôi!