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 mang lại giá trị cho người dùng mỗi ngày, hãy nhắc người dùng hãy sử dụng công cụ này bằng cách thiết lập các bản cập nhật hằng ngày. Khi người dùng đăng ký các cập nhật cho Hành động của bạn, họ sẽ nhận được một thông báo đẩy nhấn để gọi ra một trong các ý định của Hành động.

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

  1. Người dùng gọi ra một trong các ý định trong Hành động của bạn mà bạn đã định cấu hình 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. Câu lệnh này là vào giữa cuộc trò chuyện hoặc dưới dạng khối đề xuất khi cuộc trò chuyện kết thúc.
  3. Người dùng lên lịch thời gian trong ngày mà họ muốn nhận thông tin hằng ngày của bạn cập nhật, đăng ký bản cập nhật của bạn với Trợ lý Google.
  4. Vào thời gian họ đã lên lịch mỗi ngày, người dùng sẽ nhận được một Trợ lý trên thiết bị di động của họ.
  5. Khi người dùng mở thông báo này, họ sẽ gọi ý định mà bạn được định cấu hình làm bản 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 khối đề xuất khi người dùng thoát khỏi Hành động của bạn thành công. Bạn cũng có thể thêm một cuộc trò chuyện giữa các cuộc trò chuyện lời nhắc đăng ký 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

Thông tin cập nhật hằng ngày có thể là công cụ tương tác hữu ích nhưng bạn không nên được tích hợp vào mọi Hành động. Cân nhắc các mẹo sau khi quyết định xem có nên thêm số lượt đăng ký cập nhật hằng ngày cho một Hành động:

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

  1. Nhập tên nhân viên hỗ trợ và tạo một nhân viên hỗ trợ Dialogflow mới cho mẫu.
  2. Sau khi nhân viên hỗ trợ nhập xong, hãy nhấp vào Chuyển đến nhân viên hỗ trợ.
  3. Trong trình đơn điều hướng chính, hãy chuyển đến phần Fulfillment (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ẫu .
  5. Trong trình đơn điều hướng chính, hãy chuyển đến mục Tích hợp, rồi nhấp vào Google Trợ lý Google.
  6. Trong cửa sổ phụ xuất hiện, hãy bật tuỳ chọn Tự động xem trước các thay đổi rồi nhấp vào Kiểm tra để mở Trình mô phỏng thao tác.
  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 thông tin cập nhật hằng ngày, hãy làm theo các bước sau hướng dẫn:

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

Thiết lập 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 thông tin cập nhật hằng ngày cho người dùng; khi người dùng mở bản cập nhật hằng ngày thông báo, ý định kích hoạt và cuộc trò chuyện tiếp tục từ đó.

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

  1. Trong Bảng điều khiểnDialogflow, nhấp vào Các công cụ tích hợp.
  2. Trong mục Trợ lý Google, nhấp vào Integration Settings (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 và chọn ý định kích hoạt nếu chưa có.
  4. Bật tính năng Tự động xem trước các thay đổi nếu bạn chưa bật tính năng này.
  5. Nhấp vào Đóng.

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

2. Bật tính năng cập nhật

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

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

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

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

Để xem 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), xem các mẫu mức độ tương tác của người dùng Actions on Google (Node.jsJava).

Để thêm lời nhắc đăng ký cập nhật hằng ngày tuỳ chỉnh 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 bản 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 hằng ngày của bạn bản cập nhật.

Mã ví dụ sau đây nhắc người dùng đăng ký nhận các bản cập nhật hằng ngày đưa ra nhiệt độ dự kiến thấp nhất 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 bên dưới 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"
          }
        ]
      }
    }
  }
}
Tệp JSON của SDK Actions (Hành động)

Xin lưu ý rằng JSON bên dưới 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ý hoạt động đăng ký cập nhật

Thiết lập một ý định mới sẽ kích hoạt khi người dùng tuân theo đơn đăng ký của bạn . Trong phương thức thực hiện ý định mới này, hãy kích hoạt actions_intent_CONFIGURE_UPDATES ý định tích hợp bằng tính năng các thông số sau:

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

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

Dialogflow Node.js
app.intent('Subscribe to Daily Updates', (conv) => {
  conv.ask(new RegisterUpdate({
    intent: 'Daily Lowest Temperature',
    frequency: 'DAILY',
  }));
});
Node.js của 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();
}
Thao tác SDK Java (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"
            }
          }
        }
      }
    }
  }
}
Tệp JSON của SDK Actions (Hành động)
{
  "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 qua 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ý kích hoạt một ý định bằng một tham số cho biết liệu đăng ký có thành công hay không.

Các hướng dẫn cho bước này khác nhau tuỳ thuộc vào việc bạn sử dụng Dialogflow hoặc SDK Hành động để phát triển.

Dialogflow

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

  1. Trong bảng điều khiểnDialogflow, tạo ý đị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 registered cho 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ã thực hiện, hãy thêm tính năng xử lý cho actions.intent.REGISTER.UPDATE ý định tích hợp. Kiểm tra tham số registered để biết kết quả, rồi chuyển hướ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.`);
  }
});
Thao tác SDK Java (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();
}
Tệp JSON của SDK Actions (Hành động)
{
  "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 của bạn, 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ố sau để tuỳ chỉnh bản cập nhật hằng ngày cho người dùng đó.

Hướng dẫn cho tính năng này khác nhau tuỳ thuộc vào việc bạn sử dụng Dialogflow hoặc SDK Hành động để 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 giá trị của tham số đó làm đối số cho ý định cập nhật của bạn. Để thiết lập nội dung cập nhật được cá nhân hoá trong Dialogflow, hãy làm theo các bước sau:

  1. Trong bảng điều khiểnDialogflow, 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 thông 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 dưới dạng sự kiện. Trong cùng phần này, hãy thêm một tham số cùng loại với thực thể mới.
  5. Mở phần "đăng ký cập nhật" ý định 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 thông số cho thực thể đã tạo trước đó.
  7. Cập nhật mã thực hiện của ý định đăng ký để thêm đối tượng arguments với những nội dung sau:
    • name – Tên của thông số như đã định cấu hình trong Dialogflow.
    • textValue – Giá trị của tham số.

Đoạn mã sau đây sẽ đọc rồi sử dụng giá trị của tham số 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 của bạn, 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 thông tin mà bạn muốn sử dụng cá nhân hoá.
  2. Trong mã thực hiện cho "đăng ký cập nhật" của bạn ý định xử lý CONFIGURE UPDATES bao gồm đối tượng arguments có những nội dung sau:
    • name – Tên cho đối số.
    • textValue – Thông tin từ người dùng, được truyền dưới dạng đối số.

Mã sau đây gửi một đối số cùng với 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',
    }));
  }
});
Thao tác SDK Java (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();
}
Tệp JSON của SDK Actions (Hành động)
{
  "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 thông tin cập nhật hằng ngày, ý định cập nhật của bạn giờ đây sẽ bao gồm các đối số chứa các giá trị do người dùng cung cấp trong quá trình đăng ký. Sử dụng để cá nhân hoá bản 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 tra bản cập nhật hằng ngày bằng thiết bị di động có Trợ lý Google thông qua chính là 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 bản cập nhật hằng ngày, sau đó kiểm tra thông báo của thiết bị thời gian cập nhật.