毎日の更新(Dialogflow)

スマートフォンでアクションの毎日の通知を登録しようとしているユーザー

アクションが日々ユーザーに価値を提供している場合は、 [日次更新]を設定しますユーザーが毎日 最新情報を受け取ると、通知が届くため タップして、アクションのインテントの 1 つを呼び出します。

これに伴うユーザーのエクスペリエンスの流れは次のとおりです。

  1. アクションのインテントとして構成したインテントの 1 つを、 毎日アップデートします。
  2. ユーザーは毎日の通知を登録するためのプロンプトに従います。このプロンプトは または会話終了後に候補ワードとして表示できます。
  3. ユーザーが毎日の通知を受け取りたい時間帯をスケジュール設定している アップデート、Google アシスタントへのアップデートの登録を行います。
  4. 毎日、設定した時刻にアシスタントが応答します 通知を受け取ることができます。
  5. ユーザーがこの通知を開くと、ユーザーが指定した 日次更新として設定し、アクションとやり取りします。

デフォルトでは、毎日のアップデートの登録プロンプトが候補ワードとして表示されます。 ユーザーがアクションを正常に終了したとき。また、会話の途中で 登録プロンプトを表示したりユーザーの更新をカスタマイズしたりできます

ユースケース

毎日の通知はエンゲージメント ツールとして役立ちますが、 すべてのアクションに組み込まれています。広告を追加するかどうかを決定する際は、次のヒントを参考にしてください 1 つのアクションに対するサブスクリプションの日次更新:

  • 毎日の通知によって、異なる有用な情報がユーザーに表示されるようにします。 日々情報を得ています。[毎日更新] をタップすると、同じプロンプトが表示される ユーザーは数日後に配信登録を解除するでしょう
  • ユーザーがすぐに結果ページにたどり着いたときに、意味が通じるようにする 更新のインテントを指定できますユーザーがゼロからスタートするとは限りません 会話の主軸を握っているため、コンテキストをあまり期待すべきではありません。
  • 登録を促す前にアクションのメリットをユーザーに示す 毎日アップデートされます。ユーザーは、このコンテンツをすべての人に 日」購読のオプションが表示されたときです
  • ユーザーに何度も繰り返し登録をすすめないでください。特典を ユーザーが購読する商品が表示された直後から毎日更新される購読 他の状況で特典を繰り返さないようにします。
  • 更新インテントがトリガーされた後の会話は短くします。1 日あたり 更新は 1 つの応答のみとし、それなしで閉じる必要がある ユーザー入力が必要です。
で確認できます。

毎日の通知を設定する

Dialogflow で探索

[Continue] をクリックして、Dialogflow の日次更新サンプルをインポートします。次に、 サンプルをデプロイしてテストする手順は次のとおりです。

  1. エージェント名を入力し、サンプルの新しい Dialogflow エージェントを作成します。
  2. エージェントのインポートが完了したら、[Go to agent] をクリックします。
  3. メインのナビゲーション メニューから [Fulfillment] に移動します。
  4. [Inline Editor] を有効にして、[Deploy] をクリックします。エディタにはサンプルが含まれています。 できます。
  5. メイン ナビゲーション メニューから [Integrations] に移動し、[Google] をクリックします アシスタント
  6. 表示されたモーダル ウィンドウで、[変更の自動プレビュー] を有効にして [テスト] をクリックします。 Actions シミュレータを開きます
  7. シミュレータで「Talk to my test app」と入力して、サンプルをテストします。
<ph type="x-smartling-placeholder"></ph> 続行

アクションのインテントの 1 つを毎日の通知用に構成する手順は以下のとおりです。 手順:

1. 更新インテントを準備する

アクションのインテントの 1 つをトリガー インテントとして構成します。このインテント 毎日の更新情報をユーザーに送信できます。ユーザーが毎日のアップデートを開いたとき インテント トリガーと会話が 続きます

Dialogflow でトリガー インテントを定義する手順は次のとおりです。

  1. Dialogflow コンソールで、次のアイコンをクリックします。 インテグレーション
  2. [Google Assistant](Google アシスタント)セクションで、[Integration Settings](統合設定)をクリックします。
  3. [発見] >暗黙的呼び出しの場合は、[Add intent] をクリックします。 トリガー インテントがない場合は選択します。
  4. [Auto-preview](自動プレビュー)をオンにして変更の自動プレビューを有効にします(まだ有効にしていない場合)。
  5. [閉じる] をクリックします。

Actions SDK で、トリガー インテントとして更新インテントを定義します。 アクション パッケージ。

2. 通知を有効にする

トリガー インテントの毎日の通知を有効にする手順は次のとおりです。

  1. Actions Console で、次の操作を行います。 [開発] >アクション
  2. トリガー インテントを選択します。目的のインテントがリストにない場合は、 トリガー インテントおよび Dialogflow のアシスタントとして構成されていることを確認してください 統合は [自動プレビュー]に設定されています
  3. [User engagement](ユーザー エンゲージメント)セクションまでスクロールして、[Would you like to offer daily updates to users](ユーザーに毎日の通知を提供する)をオンにします。
  4. コンテンツのタイトルを入力します。
  5. [保存] をクリックします。

日次更新サブスクリプションを提供するようにアクションが構成されました。 使用します。この毎日の通知を自分のモバイル デバイスでテストできます。

通知の登録をカスタマイズする(省略可)

候補ワードと Google アシスタントによって処理される毎日の更新に加え、 登録フローに加え、ユーザーがニュース メディアの 登録プロンプトを作成します。

オプションの日次アップデート機能を処理するアクションの詳細な例については、 Actions on Google のユーザー エンゲージメント サンプルを (Node.js Java など)に対応しています。

会話に毎日の通知のカスタム登録プロンプトを追加するには、 こちらの手順をご覧ください。

1. 登録プロンプトを追加する

プロンプトを入力する際に会話と候補ワードを会話に追加する 購読者を増やすこともできますユーザーが操作した後にこれらのメッセージを提示する 更新インテントを関連付けておけば、ユーザーは毎日の あります。

次のサンプルコードは、ユーザーに対し、配信期間の設定変更に関する 毎日の予想最低気温が表示されます。

<ph type="x-smartling-placeholder">
</ph> で確認できます。
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'));
});
</ph> で確認できます。
@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();
}
</ph>

下記の JSON は 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"
         
}
       
]
     
}
   
}
 
}
}
</ph>

下記の JSON は 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. 通知の登録を処理する

ユーザーが登録内容をフォローしたときにトリガーされる新しいインテントをセットアップする 表示されます。この新しいインテントのフルフィルメントで、actions_intent_CONFIGURE_UPDATES をトリガーする 組み込みインテント 次のパラメータがあります。

  • intent - 構成した更新インテントに設定します。
  • frequency - [毎日] に設定します。

次のコードは、「毎日最低気温」の日次更新を登録します。 インテント:

<ph type="x-smartling-placeholder">
</ph> で確認できます。
app.intent('Subscribe to Daily Updates', (conv) => {
  conv
.ask(new RegisterUpdate({
    intent
: 'Daily Lowest Temperature',
    frequency
: 'DAILY',
 
}));
});
</ph> で確認できます。
conv.ask(new RegisterUpdate({
  intent
: 'Daily Lowest Temperature',
  frequency
: 'DAILY',
}));
</ph> で確認できます。
@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();
}
</ph> で確認できます。
ResponseBuilder responseBuilder = getResponseBuilder(request);
return responseBuilder.add(new RegisterUpdate()
   
.setIntent("Daily Lowest Temperature")
   
.setFrequency("DAILY"))
   
.build();
</ph> で確認できます。
{
 
"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"
           
}
         
}
       
}
     
}
   
}
 
}
}
</ph>
{
 
"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. 結果を処理する

アシスタントが会話を引き継ぎ、ユーザーの操作を 日次更新の構成を 残りの部分で行います登録が完了すると リクエストに応じて、Google アシスタントは、ユーザーがリクエストまたは 成功したかどうかがわかります。

このステップの手順は、 開発には Dialogflow または Actions SDK を使用します。

<ph type="x-smartling-placeholder">
DialogflowActions SDK
</ph>

次の手順に従って、登録結果を処理するインテントを作成します。

  1. Dialogflow コンソールで、次の操作を行います。 新しいインテントを作成します。
  2. actions_intent_REGISTER_UPDATE イベントを追加します。
  3. インテントの Webhook フルフィルメントを有効にします。
  4. [保存] をクリックします。
で確認できます。 インテントのフルフィルメントで、registered を確認します。 パラメータを使用して、それに応じて会話を方向転換できます。 <ph type="x-smartling-placeholder">
</ph> で確認できます。
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.`);
 
}
});
</ph> で確認できます。
@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();
}
</ph> で確認できます。
{
 
"payload": {
   
"google": {
     
"expectUserResponse": false,
     
"richResponse": {
       
"items": [
         
{
           
"simpleResponse": {
             
"textToSpeech": "Ok, I'll start giving you daily updates."
           
}
         
}
       
]
     
}
   
}
 
}
}
をご覧ください。
</ph>

フルフィルメント コードに actions.intent.REGISTER.UPDATE の処理を追加します。 組み込みインテントです。registered パラメータで結果を確認します。 それに応じて会話を方向転換できます。

<ph type="x-smartling-placeholder">
</ph> で確認できます。
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.`);
 
}
});
</ph> で確認できます。
@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();
}
</ph>
{
 
"expectUserResponse": false,
 
"finalResponse": {
   
"richResponse": {
     
"items": [
       
{
         
"simpleResponse": {
           
"textToSpeech": "Ok, I'll start giving you daily updates."
         
}
       
}
     
]
   
}
 
}
}

更新をカスタマイズする(省略可)

更新インテントをカスタマイズするには、ユーザー登録時にカスタム パラメータを追加します 毎日アップデートします。更新インテントを実行する際に、これらのパラメータを参照する そのユーザーの毎日の通知をカスタマイズできます。

手順は、 開発には Dialogflow または Actions SDK を使用します。

<ph type="x-smartling-placeholder">
DialogflowActions SDK
</ph>

更新のカスタム パラメータを処理する Dialogflow エンティティを定義してから、 パラメータの値を引数として更新インテントに渡します。 Dialogflow でパーソナライズされた更新を設定する手順は次のとおりです。

  1. Dialogflow コンソールで、新しいエンティティを作成します。
  2. パラメータに関連のあるエントリと同義語を追加します。
  3. [Save](保存)をクリックしてから、更新インテントを開きます。
  4. [Actions and parameters](アクションとパラメータ)セクションで actions.intent.CONFIGURE_UPDATES を設定します。 指定します。同じセクションで、新しいエンティティと同じタイプを持つパラメータを追加します。
  5. CONFIGURE_UPDATES 組み込みインテントを処理する「update registration」インテントを開きます。
  6. [Actions and parameters] セクションで必須パラメータを追加し、そのタイプを前のステップで作成したエンティティに設定します。
  7. 登録インテントのフルフィルメント コードを更新して、次を含む arguments オブジェクトを追加します。 次の内容が含まれます。 <ph type="x-smartling-placeholder">
      </ph>
    • name - Dialogflow で構成されたパラメータの名前。
    • textValue - パラメータの値。

次のコードは、パラメータの値を読み取って使用します。 更新登録リクエストでは次のようになります。

<ph type="x-smartling-placeholder">
</ph> で確認できます。
app.intent('setup_update', (conv) => {
  conv
.ask(new RegisterUpdate({
    intent
: 'update_of_the_day',
    arguments
: [
     
{
        name
: 'category',
        textValue
: 'Daily_lowest_temperature',
     
},
   
],
    frequency
: 'DAILY',
 
}));
});
</ph> で確認できます。
@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();
}
</ph> で確認できます。
{
 
"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": "{}"
     
}
   
}
 
]
}
をご覧ください。
</ph>

インテント フルフィルメントでユーザーに追加情報をリクエストする 更新インテントの引数として情報を渡します。 Actions SDK でパーソナライズされたアップデートをセットアップする手順は次のとおりです。

  1. 使用したい情報を入力するようユーザーに要求する パーソナライズできます
  2. 「更新登録」のフルフィルメント コードインテントの CONFIGURE UPDATES を処理する際に、次の値を持つ arguments オブジェクトが含まれている。 次の内容が含まれます。 <ph type="x-smartling-placeholder">
      </ph>
    • name - 引数の名前。
    • textValue - 引数として渡される、ユーザーからの情報。

次のコードは、更新登録リクエストで引数を送信します。

<ph type="x-smartling-placeholder">
</ph> で確認できます。
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',
   
}));
 
}
});
</ph> で確認できます。
@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();
}
</ph>
{
 
"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\":{}}"
}

ユーザーが日次更新を呼び出すと、更新インテントに以下が含まれます。 登録時にユーザーが指定した値を含む引数。使用する ユーザーごとに更新をパーソナライズします。

毎日の通知をテストする

Google アシスタントを搭載したモバイル デバイスでの毎日の更新をテストする アクションの作成に使用したのと同じ Google アカウントを使用する必要があります。アクションを呼び出す 毎日の通知に登録して、周囲にデバイスの通知をチェックできます 更新します。