Cập nhật hàng ngày (Dialogflow)

Một người dùng đăng ký nhận thông tin cập nhật hằng ngày về một Hành động trên điện thoại

Nếu Hành động của bạn cung cấp giá trị cho người dùng mỗi ngày, hãy nhắc người dùng sử dụng hành động đó bằng cách định cấu hình các bản cập nhật hằng ngày. Khi người dùng đăng ký nhận thông tin cập nhật hằng ngày cho Hành động của bạn, họ sẽ nhận được một thông báo đẩy có thể nhấn để gọi một trong các ý định của Hành động đó.

Trải nghiệm của người dùng đối với các bản cập nhật này như sau:

  1. Người dùng gọi một trong các ý định của Hành động mà bạn đã thiết lập làm thông tin cập nhật hằng ngày.
  2. Người dùng làm theo lời nhắc đăng ký nhận thông tin cập nhật hằng ngày. Lời nhắc này được đưa ra giữa cuộc trò chuyện hoặc dưới dạng một khối đề xuất khi cuộc trò chuyện kết thúc.
  3. Người dùng đặt lịch vào một thời điểm trong ngày mà họ muốn nhận thông tin cập nhật hằng ngày, đăng ký thông tin cập nhật của bạn với Trợ lý Google.
  4. Vào thời điểm đã lên lịch mỗi ngày, người dùng sẽ nhận được thông báo của Trợ lý trên thiết bị di động.
  5. Khi người dùng mở thông báo này, họ sẽ gọi ý định mà bạn đã định cấu hình là thông tin cập nhật hằng ngày và tương tác với Hành động của bạn.

Theo mặc định, lời nhắc đăng ký cập nhật hằng ngày sẽ xuất hiện dưới dạng một khối đề xuất khi người dùng thoát thành công Hành động của bạn. Bạn cũng có thể thêm lời nhắc đăng ký giữa cuộc trò chuyện hoặc cá nhân hoá nội dung cập nhật của người dùng.

Trường hợp sử dụng

Bản cập nhật hằng ngày có thể là một công cụ tương tác hữu ích, nhưng bạn không nên tích hợp vào mọi Hành động. Hãy cân nhắc các mẹo sau đây khi quyết định xem có nên thêm gói thuê bao cập nhật hằng ngày vào một Hành động hay không:

  • Hãy đảm bảo rằng các bản cập nhật hằng ngày giúp người dùng thấy được các thông tin khác nhau, hữu ích mỗi ngày. Nếu thao tác nhấn vào bản cập nhật hằng ngày luôn dẫn đến cùng một lời nhắc, thì người dùng có thể sẽ huỷ đăng ký sau vài ngày.
  • Hãy đảm bảo hộp thoại có ý nghĩa với người dùng nếu họ chuyển thẳng đến ý định của nội dung cập nhật hằng ngày. Người dùng không nhất thiết phải bắt đầu từ đầu cuộc trò chuyện, vì vậy, họ không nên có nhiều ngữ 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 các bản cập nhật hằng ngày. Người dùng của bạn nên nghĩ rằng "Tôi muốn nội dung này mỗi ngày" khi họ được cung cấp tuỳ chọn đăng ký.
  • Đừng làm người dùng nhận được đề xuất lặp lại để đăng ký. Hãy cung cấp gói thuê bao cập nhật hằng ngày ngay sau khi cho người dùng biết nội dung họ đăng ký và tránh lặp lại ưu đãi trong các ngữ cảnh khác.
  • Đảm bảo cuộc trò chuyện ngắn gọn sau khi kích hoạt ý định cập nhậ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, sau đó đóng mà không yêu cầu hoạt động đầu vào của người dùng.

Thiết lập thông tin cập nhật hằng ngày

Khám phá trong Dialogflow

Nhấp vào Tiếp tục để nhập mẫu Cập nhật hằng ngày của chúng tôi vào Dialogflow. Sau đó, hãy làm theo các bước bên dưới để triển khai và kiểm thử mẫu:

  1. Nhập tên nhân viên hỗ trợ rồi tạo một nhân viên hỗ trợ Dialogflow mới cho mẫu.
  2. Sau khi nhập xong nhân viên hỗ trợ, hãy nhấp vào Chuyển đến nhân viên hỗ trợ.
  3. Trên trình đơn điều hướng chính, hãy chuyển đến mục Thực hiện đơn hàng.
  4. Bật Inline Editor (Trình chỉnh sửa cùng dòng), sau đó nhấp vào Deploy (Triển khai). Trình chỉnh sửa chứa mã mẫu.
  5. Trên trình đơn điều hướng chính, hãy chuyển đến phần Tích hợp, rồi nhấp vào Trợ lý Google.
  6. Trong cửa sổ phụ xuất hiện, hãy bật tính năng Auto-preview changes (Tự động xem trước các thay đổi) rồi nhấp vào Test (Kiểm thử) để mở Trình mô phỏng hành động.
  7. Trong trình mô phỏng, hãy nhập Talk to my test app để kiểm tra mẫu!

Để định cấu hình một trong các ý định của Hành động cho việc cập nhật hằng ngày, hãy làm theo các hướng dẫn sau:

1. Chuẩn bị ý định cập nhật

Định cấu hình một trong các ý định trong Hành động của bạn làm ý định kích hoạt. Ý định này cho phép gửi nội dung cập nhật hằng ngày cho người dùng; khi người dùng mở thông báo cập nhật hằng ngày, ý định sẽ được kích hoạt và cuộc trò chuyện sẽ tiếp tục từ đó.

Để xác định ý định kích hoạt trong Dialogflow, hãy làm như sau:

  1. Trong Dialogflow Console, hãy nhấp vào Tích hợp.
  2. Trong phần Trợ lý Google, hãy nhấp vào Cài đặt tích hợp.
  3. Trong phần Khám phá > Lời gọi ngầm ẩn, hãy nhấp vào Thêm ý định rồi chọn ý định kích hoạt của bạn nếu ý định đó chưa có ở đó.
  4. Bật các thay đổi về tính năng Tự động xem trước nếu tính năng này chưa được bật.
  5. Nhấp vào Close (Đóng).

Trong SDK Hành động, hãy xác định ý định cập nhật của bạn là ý định kích hoạt trong Gói Hành động.

2. Bật bản cập nhật

Để bật chế độ cập nhật hằng ngày cho ý định kích hoạt, hãy làm như sau:

  1. Trong Bảng điều khiển Actions, hãy chuyển đến phần Phát triển > Hành động.
  2. Chọn ý định kích hoạt. Nếu ý định của bạn không xuất hiện trong danh sách, hãy đảm bảo ý định đó được định cấu hình làm ý định kích hoạt và đặt chế độ tích hợp Trợ lý của Dialogflow thành tự động xem trước các thay đổi.
  3. Di chuyển xuống mục Mức độ tương tác của người dùng rồi bật 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. Nhập Tiêu đề nội dung.
  5. Nhấp vào Lưu.

Bây giờ, bạn đã định cấu hình Hành động của mình để cung cấp gói thuê bao cập nhật hằng ngày cho một ý định. Giờ đây, bạn có thể kiểm tra các bản cập nhật hằng ngày trên thiết bị di động của mình.

Tuỳ chỉnh đăng ký cập nhật (không bắt buộc)

Ngoài khối đề xuất và quy trình đăng ký bản cập nhật hằng ngày do Trợ lý xử lý, hãy đăng ký người dùng nhận thông tin cập nhật hằng ngày bằng hộp thoại và lời nhắc đăng ký của riêng bạn.

Để biết ví dụ đầy đủ về một Hành động xử lý các tính năng cập nhật hằng ngày không bắt buộc, hãy xem mẫu tương tác của người dùng Actions on Google (Node.jsJava).

Để thêm lời nhắc tuỳ chỉnh đăng ký cập nhật hằng ngày vào cuộc trò chuyện, hãy làm theo các hướng dẫn sau:

1. Thêm lời nhắc đăng ký

Thêm hộp thoại và khối đề xuất vào cuộc trò chuyện khi bạn muốn nhắc người dùng đăng ký nhận thông tin cập nhật hằng ngày. Đưa ra những lời nhắc này sau khi người dùng tương tác với ý định cập nhật của bạn để họ hiểu được nội dung của các bản cập nhật hằng ngày.

Mã ví dụ sau đây nhắc người dùng đăng ký nhận thông tin cập nhật hằng ngày đưa ra mức nhiệt độ thấp nhất dự kiến mỗi ngày:

Node.js
app.intent('Daily Lowest Temperature', (conv, params) => {
  const today = DAYS[new Date().getDay()];
  const lowestTemperature = lowestTemperatures[today];
  conv.ask(`The lowest temperature for today is ${lowestTemperature}`);
  conv.ask('I can send you daily updates with the lowest temperature' +
    ' of the day. Would you like that?');
  conv.ask(new Suggestions('Send daily updates'));
});
Java
@ForIntent("Daily Lowest Temperature")
public ActionResponse dailyLowestTemperature(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  Integer lowestTemperature =
      LOWEST_TEMPERATURES.get(LocalDate.now().getDayOfWeek());
  responseBuilder
      .add("The lowest temperature for today is " +  lowestTemperature + " degrees Fahrenheit.")
      .add("I can send you daily updates with the lowest temperature of " +
          "the day. Would you like that?")
      .addSuggestions(new String[] {
          "Send daily updates"
      });
  return responseBuilder.build();
}
Dialogflow JSON

Xin lưu ý rằng JSON dưới đây mô tả phản hồi webhook.

{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "The lowest temperature for today is 75 degrees Fahrenheit"
            }
          },
          {
            "simpleResponse": {
              "textToSpeech": "I can send you daily updates with the lowest temperature of the day. Would you like that?"
            }
          }
        ],
        "suggestions": [
          {
            "title": "Send daily updates"
          }
        ]
      }
    }
  }
}
Định dạng JSON cho SDK Hành động

Xin lưu ý rằng JSON dưới đây mô tả phản hồi webhook.

{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "possibleIntents": [
        {
          "intent": "actions.intent.TEXT"
        }
      ],
      "inputPrompt": {
        "richInitialPrompt": {
          "items": [
            {
              "simpleResponse": {
                "textToSpeech": "The lowest temperature for today is 75 degrees Fahrenheit"
              }
            },
            {
              "simpleResponse": {
                "textToSpeech": "I can send you daily updates with the lowest temperature of the day. Would you like that?"
              }
            }
          ],
          "suggestions": [
            {
              "title": "Send daily updates"
            }
          ]
        }
      }
    }
  ]
}

2. Xử lý việc đăng ký bản cập nhật

Thiết lập một ý định mới sẽ kích hoạt khi người dùng làm theo lời nhắc đăng ký. Trong quá trình thực hiện ý định mới này, hãy kích hoạt ý định tích hợp actions_intent_CONFIGURE_UPDATES bằng các tham số sau:

  • intent – Đặt thành ý định cập nhật mà bạn đã định cấu hình.
  • frequency – Đặt thành "daily".

Mã sau đây đăng ký thông tin cập nhật hằng ngày cho ý định "Nhiệt độ thấp nhất hằng ngày":

Dialogflow Node.js
app.intent('Subscribe to Daily Updates', (conv) => {
  conv.ask(new RegisterUpdate({
    intent: 'Daily Lowest Temperature',
    frequency: 'DAILY',
  }));
});
Node.js SDK Hành động
conv.ask(new RegisterUpdate({
  intent: 'Daily Lowest Temperature',
  frequency: 'DAILY',
}));
Dialogflow Java
@ForIntent("Subscribe to Daily Updates")
public ActionResponse subscribeToDailyUpdates(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  return responseBuilder.add(new RegisterUpdate()
      .setIntent("Daily Lowest Temperature")
      .setFrequency("DAILY"))
      .build();
}
Actions SDK Java
ResponseBuilder responseBuilder = getResponseBuilder(request);
return responseBuilder.add(new RegisterUpdate()
    .setIntent("Daily Lowest Temperature")
    .setFrequency("DAILY"))
    .build();
Dialogflow JSON
{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "systemIntent": {
        "intent": "actions.intent.REGISTER_UPDATE",
        "data": {
          "@type": "type.googleapis.com/google.actions.v2.RegisterUpdateValueSpec",
          "intent": "Daily Lowest Temperature",
          "triggerContext": {
            "timeContext": {
              "frequency": "DAILY"
            }
          }
        }
      }
    }
  }
}
SDK Hành động theo định dạng JSON
{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "possibleIntents": [
        {
          "intent": "actions.intent.REGISTER_UPDATE",
          "inputValueData": {
            "@type": "type.googleapis.com/google.actions.v2.RegisterUpdateValueSpec",
            "intent": "Daily Lowest Temperature",
            "triggerContext": {
              "timeContext": {
                "frequency": "DAILY"
              }
            }
          }
        }
      ]
    }
  ]
}

3. Xử lý kết quả

Trợ lý sẽ tiếp quản cuộc trò chuyện của bạn và hướng dẫn người dùng thực hiện phần còn lại của cấu hình cập nhật hằng ngày. Khi quá trình đăng ký hoàn tất, Trợ lý sẽ kích hoạt một ý định bằng một tham số cho biết liệu quy trình đăng ký có thành công hay không.

Hướng dẫn cho bước này sẽ khác nhau, tuỳ thuộc vào việc bạn sử dụngDialogflow hay SDK Actions để phát triển.

Dialogflow

Hãy làm theo các bước sau để tạo một ý định giúp xử lý kết quả đăng ký:

  1. Trong bảng điều khiển Dialogflow, hãy tạo một ý định mới.
  2. Thêm sự kiện actions_intent_REGISTER_UPDATE.
  3. Bật phương thức thực hiện webhook cho ý định.
  4. Nhấp vào Lưu.
Trong quá trình thực hiện ý định, hãy kiểm tra tham số registered để biết kết quả và chuyển hướng cuộc trò chuyện cho phù hợp.
Dialogflow Node.js
app.intent('Confirm Daily Updates Subscription', (conv, params, registered) => {
  if (registered && registered.status === 'OK') {
    conv.close(`Ok, I'll start giving you daily updates.`);
  } else {
    conv.close(`Ok, I won't give you daily updates.`);
  }
});
Dialogflow Java
@ForIntent("Confirm Daily Updates Subscription")
public ActionResponse confirmDailyUpdatesSubscription(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  if (request.isUpdateRegistered()) {
    responseBuilder.add("Ok, I'll start giving you daily updates.");
  } else {
    responseBuilder.add("Ok, I won't give you daily updates.");
  }
  return responseBuilder.endConversation().build();
}
Dialogflow JSON
{
  "payload": {
    "google": {
      "expectUserResponse": false,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "Ok, I'll start giving you daily updates."
            }
          }
        ]
      }
    }
  }
}
SDK Hành động

Trong mã phương thức thực hiện, hãy thêm tính năng xử lý cho ý định tích hợp actions.intent.REGISTER.UPDATE. Hãy kiểm tra tham số registered để biết kết quả và xoay vòng cuộc trò chuyện cho phù hợp.

Node.js SDK Hành động
app.intent('actions.intent.REGISTER_UPDATE', (conv, params, registered) => {
  if (registered && registered.status === 'OK') {
    conv.close(`Ok, I'll start giving you daily updates.`);
  } else {
    conv.close(`Ok, I won't give you daily updates.`);
  }
});
Actions SDK Java
@ForIntent("actions.intent.REGISTER_UPDATE")
public ActionResponse confirmDailyUpdatesSubscription(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  if (request.isUpdateRegistered()) {
    responseBuilder.add("Ok, I'll start giving you daily updates.");
  } else {
    responseBuilder.add("Ok, I won't give you daily updates.");
  }
  return responseBuilder.endConversation().build();
}
SDK Hành động theo định dạng JSON
{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "simpleResponse": {
            "textToSpeech": "Ok, I'll start giving you daily updates."
          }
        }
      ]
    }
  }
}

Cá nhân hoá nội dung cập nhật (không bắt buộc)

Để cá nhân hoá ý định cập nhật, hãy thêm thông số tuỳ chỉnh khi người dùng đăng ký thông tin cập nhật hằng ngày. Khi bạn thực hiện ý định cập nhật, hãy tham chiếu các tham số này để tuỳ chỉnh nội dung cập nhật hằng ngày cho người dùng đó.

Hướng dẫn cho tính năng này sẽ khác nhau, tuỳ thuộc vào việc bạn sử dụngDialogflow hay SDK Actions để phát triển.

Dialogflow

Xác định một thực thể Dialogflow để xử lý các tham số tuỳ chỉnh cho bản cập nhật, sau đó chuyển giao giá trị của tham số đó làm đối số cho ý định cập nhật của bạn. Để thiết lập thông tin cập nhật dành riêng cho bạn trong Dialogflow, hãy làm theo các bước sau:

  1. Trong bảng điều khiển Dialogflow, hãy tạo một thực thể mới.
  2. Thêm một số mục nhập và từ đồng nghĩa có liên quan đến tham số của bạn.
  3. Nhấp vào Lưu, sau đó mở ý định cập nhật của bạn.
  4. Trong mục Hành động và thông số, hãy đặt actions.intent.CONFIGURE_UPDATES làm sự kiện. Cũng trong phần này, hãy thêm một tham số có cùng loại với thực thể mới.
  5. Mở ý định "cập nhật hoạt động đăng ký" xử lý ý định tích hợp CONFIGURE_UPDATES.
  6. Trong mục Hành động và thông số, hãy thêm một thông số bắt buộc và đặt loại của thông số đó thành thực thể đã tạo trước đó.
  7. Cập nhật mã thực hiện của ý định đăng ký để đưa vào một đối tượng arguments với các nội dung sau:
    • name – Tên thông số của bạn được định cấu hình trong Dialogflow.
    • textValue – Giá trị của thông số.

Mã sau đây đọc giá trị của thông số và sử dụng giá trị đó trong yêu cầu đăng ký cập nhật:

Dialogflow Node.js
app.intent('setup_update', (conv) => {
  conv.ask(new RegisterUpdate({
    intent: 'update_of_the_day',
    arguments: [
      {
        name: 'category',
        textValue: 'Daily_lowest_temperature',
      },
    ],
    frequency: 'DAILY',
  }));
});
Dialogflow Java
@ForIntent("setup_update")
public ActionResponse setupUpdate2(ActionRequest request) {
  List<Argument> args =
      Arrays.asList(
          new Argument()
              .setName("category")
              .setTextValue(request.getParameter("category").toString()));
  return getResponseBuilder(request)
      .add(new RegisterUpdate().setIntent("intent_name").setArguments(args).setFrequency("DAILY"))
      .build();
}
Dialogflow JSON
{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "PLACEHOLDER"
            }
          }
        ]
      },
      "userStorage": "{\"data\":{}}",
      "systemIntent": {
        "intent": "actions.intent.REGISTER_UPDATE",
        "data": {
          "@type": "type.googleapis.com/google.actions.v2.RegisterUpdateValueSpec",
          "intent": "update_of_the_day",
          "arguments": [
            {
              "name": "category",
              "textValue": "Daily_lowest_temperature"
            }
          ],
          "triggerContext": {
            "timeContext": {
              "frequency": "DAILY"
            }
          }
        }
      }
    }
  },
  "outputContexts": [
    {
      "name": "/contexts/_actions_on_google",
      "lifespanCount": 99,
      "parameters": {
        "data": "{}"
      }
    }
  ]
}
SDK Hành động

Yêu cầu thêm thông tin từ người dùng trong quá trình thực hiện ý định, sau đó chuyển thông tin đó làm đối số cho ý định cập nhật của bạn. Để thiết lập các bản cập nhật được cá nhân hoá trong SDK Hành động, hãy làm theo các bước sau:

  1. Nhắc người dùng về thông tin bạn muốn sử dụng để cá nhân hoá.
  2. Trong mã phương thức thực hiện cho ý định "đăng ký cập nhật" giúp xử lý CONFIGURE UPDATES, hãy bao gồm một đối tượng arguments có nội dung sau:
    • name – Tên cho đối số của bạn.
    • textValue – Thông tin của người dùng sẽ được truyền dưới dạng đối số.

Mã sau đây sẽ gửi một đối số có yêu cầu đăng ký cập nhật:

Node.js SDK Hành động
app.intent('actions.intent.TEXT', (conv) => {
  if (conv.input.raw === 'Send daily') {
    conv.ask(new RegisterUpdate({
      intent: 'update_of_the_day',
      arguments: [
        {
          name: 'category',
          textValue: 'Daily_lowest_temperature',
        },
      ],
      frequency: 'DAILY',
    }));
  }
});
Actions SDK Java
@ForIntent("actions.intent.CONFIGURE_UPDATES")
public ActionResponse configureUpdatesActionsSdk(ActionRequest request) {
  List<Argument> args =
      Arrays.asList(
          new Argument()
              .setName("category")
              .setTextValue(request.getParameter("category").toString()));
  return getResponseBuilder(request)
      .add(new RegisterUpdate().setIntent("intent_name").setArguments(args).setFrequency("DAILY"))
      .build();
}

@ForIntent("actions.intent.TEXT")
public ActionResponse text(ActionRequest request) {
  ResponseBuilder rb = getResponseBuilder(request);
  String input = request.getRawInput().getQuery();
  if (input.equals("DAILY_NOTIFICATION_SUGGESTION")) {
    rb.add("For which category do you want to receive daily updates?");
  } else {
    rb.add("Sorry, I didn't get that. Please try again later").endConversation();
  }
  return rb.build();
}
SDK Hành động theo định dạng JSON
{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "inputPrompt": {
        "richInitialPrompt": {
          "items": [
            {
              "simpleResponse": {
                "textToSpeech": "PLACEHOLDER"
              }
            }
          ]
        }
      },
      "possibleIntents": [
        {
          "intent": "actions.intent.REGISTER_UPDATE",
          "inputValueData": {
            "@type": "type.googleapis.com/google.actions.v2.RegisterUpdateValueSpec",
            "intent": "update_of_the_day",
            "arguments": [
              {
                "name": "category",
                "textValue": "Daily_lowest_temperature"
              }
            ],
            "triggerContext": {
              "timeContext": {
                "frequency": "DAILY"
              }
            }
          }
        }
      ]
    }
  ],
  "conversationToken": "{\"data\":{}}",
  "userStorage": "{\"data\":{}}"
}

Khi người dùng gọi bản cập nhật hằng ngày, ý định cập nhật giờ đây sẽ bao gồm các đối số chứa giá trị mà người dùng đưa ra trong quá trình đăng ký. Hãy sử dụng các giá trị này để cá nhân hoá nội dung cập nhật cho từng người dùng.

Kiểm thử bản cập nhật hằng ngày

Kiểm thử các bản cập nhật hằng ngày của bạn bằng thiết bị di động với Trợ lý Google bằng chính Tài khoản Google mà bạn đã dùng để tạo Hành động. Gọi Hành động của bạn và đăng ký nhận thông tin cập nhật hằng ngày, sau đó kiểm tra thông báo trên thiết bị vào khoảng thời gian cập nhật.