Mises à jour quotidiennes (Dialogflow)

Un utilisateur s'abonnant aux mises à jour quotidiennes d'une action sur son téléphone

Si votre action apporte une valeur ajoutée aux utilisateurs tous les jours, rappelez-leur de l'utiliser en configurant des mises à jour quotidiennes. Lorsqu'un utilisateur s'abonne aux mises à jour quotidiennes de votre action, il reçoit une notification push sur laquelle il peut appuyer pour appeler l'un des intents de votre action.

L'expérience utilisateur avec ces mises à jour est la suivante:

  1. L'utilisateur appelle une mise à jour quotidienne pour l'un des intents de votre action que vous avez configurés.
  2. L'utilisateur suit une invite pour s'abonner aux mises à jour quotidiennes. Cette invite est envoyée en cours de conversation ou sous forme de chip de suggestion à la fin de la conversation.
  3. L'utilisateur planifie une heure de la journée à laquelle il souhaite recevoir votre mise à jour quotidienne, en enregistrant votre mise à jour auprès de l'Assistant Google.
  4. Chaque jour, à l'heure prévue, l'utilisateur reçoit une notification de l'Assistant sur son appareil mobile.
  5. Lorsque l'utilisateur ouvre cette notification, il appelle l'intent que vous avez configuré en tant que mise à jour quotidienne et interagit avec votre action.

Par défaut, l'invite d'inscription à la mise à jour quotidienne apparaît sous la forme d'un chip de suggestion lorsque l'utilisateur quitte votre action. Vous pouvez également ajouter une invite d'inscription en cours de conversation ou personnaliser les mises à jour de l'utilisateur.

Cas d'utilisation

Les mises à jour quotidiennes peuvent être un outil d'engagement utile, mais elles ne doivent pas être intégrées à chaque action. Tenez compte de ces conseils pour décider d'ajouter des abonnements de mises à jour quotidiennes à une action:

  • Assurez-vous que les mises à jour quotidiennes permettent à l'utilisateur de voir des informations différentes et utiles chaque jour. Si la même invite s'affiche à chaque fois en appuyant sur une mise à jour quotidienne, l'utilisateur se désabonnera probablement au bout de quelques jours.
  • Assurez-vous que votre boîte de dialogue est pertinente pour l'utilisateur s'il accède directement à l'intent de votre mise à jour quotidienne. L'utilisateur ne commence pas nécessairement par le début de la conversation. Il ne faut donc pas s'attendre à ce qu'il dispose de beaucoup de contexte.
  • Montrez à l'utilisateur le bénéfice de votre action avant de l'inviter à s'inscrire pour recevoir des informations quotidiennes. Lorsqu'ils ont la possibilité de s'abonner, les utilisateurs doivent se demander "Je veux que ce contenu soit diffusé tous les jours".
  • Ne submergez pas l'utilisateur de suggestions répétées de s'inscrire. Proposez un abonnement de mise à jour quotidienne juste après avoir montré à l'utilisateur à quoi il s'abonnerait, et évitez de répéter l'offre dans d'autres contextes.
  • Faites en sorte que la conversation soit courte après le déclenchement de l'intent de mise à jour. La plupart des mises à jour quotidiennes ne doivent consister qu'en une seule réponse, puis se fermer sans nécessiter de saisie de l'utilisateur.

Configurer des mises à jour quotidiennes

Explorer dans Dialogflow

Cliquez sur Continuer pour importer notre exemple "Mises à jour quotidiennes" dans Dialogflow. Suivez ensuite les étapes ci-dessous pour déployer et tester l'exemple:

  1. Saisissez un nom d'agent et créez un agent Dialogflow pour l'exemple.
  2. Une fois l'importation de l'agent terminée, cliquez sur Accéder à l'agent.
  3. Dans le menu de navigation principal, accédez à Fulfillment.
  4. Activez l'éditeur intégré, puis cliquez sur Déployer. L'éditeur contient l'exemple de code.
  5. Dans le menu de navigation principal, accédez à Integrations (Intégrations), puis cliquez sur Google Assistant (Assistant Google).
  6. Dans la fenêtre modale qui s'affiche, activez Auto-preview changes (Prévisualiser automatiquement les modifications), puis cliquez sur Test (Tester) pour ouvrir le simulateur Actions.
  7. Dans le simulateur, saisissez Talk to my test app pour tester l'échantillon.
Continuer

Pour configurer l'un des intents de votre action afin d'obtenir des mises à jour quotidiennes, procédez comme suit:

1. Préparer un intent de mise à jour

Configurez l'un des intents de votre action en tant qu'intent déclencheur. Cet intent permet d'envoyer une mise à jour quotidienne aux utilisateurs. Lorsqu'un utilisateur ouvre sa notification de mise à jour quotidienne, l'intent se déclenche et la conversation se poursuit.

Pour définir un intent de déclenchement dans Dialogflow, procédez comme suit:

  1. Dans la console Dialogflow, cliquez sur Intégrations.
  2. Dans la section Google Assistant (Assistant Google), cliquez sur Integration Settings (Paramètres d'intégration).
  3. Sous Découverte > Appel implicite, cliquez sur Ajouter un intent et sélectionnez votre intent de déclenchement si vous ne l'avez pas déjà fait.
  4. Activez les modifications de l'aperçu automatique si ce n'est pas déjà fait.
  5. Cliquez sur Fermer.

Dans le SDK Actions, définissez votre intent de mise à jour comme intent de déclenchement dans le package d'actions.

2. Activer les mises à jour

Pour activer les mises à jour quotidiennes de votre intent de déclenchement, procédez comme suit:

  1. Dans la console Actions, accédez à Développer > Actions.
  2. Sélectionnez votre intent de déclenchement. Si votre intent ne figure pas dans la liste, assurez-vous qu'il est configuré en tant qu'intent déclencheur et que l'intégration de l'Assistant de Dialogflow est configurée pour prévisualiser automatiquement les modifications.
  3. Faites défiler la page jusqu'à la section Engagement utilisateur et activez l'option Souhaitez-vous proposer des informations quotidiennes aux utilisateurs.
  4. Saisissez un titre de contenu.
  5. Cliquez sur Enregistrer.

Vous avez maintenant configuré votre action pour proposer des abonnements de mise à jour quotidiennes pour un intent. Vous pouvez désormais tester vos mises à jour quotidiennes sur votre propre appareil mobile.

Personnaliser l'enregistrement des mises à jour (facultatif)

En plus du chip de suggestion et du flux d'inscription des mises à jour quotidiennes gérées par l'Assistant, abonnez les utilisateurs aux mises à jour quotidiennes avec votre propre boîte de dialogue et une invite d'inscription.

Pour obtenir un exemple complet d'action qui gère des fonctionnalités de mise à jour quotidienne facultatives, consultez les exemples d'engagement utilisateur Actions on Google (Node.js et Java).

Pour ajouter une invite personnalisée d'enregistrement de mises à jour quotidiennes à votre conversation, procédez comme suit:

1. Ajouter une invite d'inscription

Ajoutez un dialogue et un chip de suggestion à la conversation lorsque vous souhaitez inviter les utilisateurs à s'abonner aux mises à jour quotidiennes. Présentez ces invites après que l'utilisateur a interagi avec votre intent de mise à jour afin qu'il comprenne le contenu de vos mises à jour quotidiennes.

L'exemple de code suivant invite un utilisateur à s'abonner aux mises à jour quotidiennes qui offrent la température la plus basse attendue chaque jour:

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();
}
JSON Dialogflow

Notez que le code JSON ci-dessous décrit une réponse 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"
          }
        ]
      }
    }
  }
}
SDK Actions JSON

Notez que le code JSON ci-dessous décrit une réponse 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. Gérer l'enregistrement des mises à jour

Configurez un nouvel intent qui se déclenche lorsque l'utilisateur suit votre invite d'inscription. Dans le traitement de ce nouvel intent, déclenchez l'intent intégré actions_intent_CONFIGURE_UPDATES avec les paramètres suivants:

  • intent : définissez l'intent de mise à jour que vous avez configuré.
  • frequency : définie sur DAILY.

Le code suivant enregistre des mises à jour quotidiennes pour l'intent "Température minimale quotidienne" :

Dialogflow Node.js
app.intent('Subscribe to Daily Updates', (conv) => {
  conv.ask(new RegisterUpdate({
    intent: 'Daily Lowest Temperature',
    frequency: 'DAILY',
  }));
});
SDK Actions Node.js
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();
}
SDK Actions Java
ResponseBuilder responseBuilder = getResponseBuilder(request);
return responseBuilder.add(new RegisterUpdate()
    .setIntent("Daily Lowest Temperature")
    .setFrequency("DAILY"))
    .build();
JSON Dialogflow
{
  "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"
            }
          }
        }
      }
    }
  }
}
JSON du SDK Actions
{
  "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. Gérer le résultat

L'Assistant prend en charge votre conversation et guide l'utilisateur tout au long de sa configuration des mises à jour quotidiennes. Une fois l'enregistrement terminé, l'Assistant déclenche un intent avec un paramètre indiquant si l'enregistrement a réussi ou non.

Les instructions de cette étape diffèrent selon que vous utilisez Dialogflow ou le SDK Actions pour le développement.

Dialogflow

Procédez comme suit pour créer un intent qui gère le résultat de l'enregistrement:

  1. Dans la console Dialogflow, créez un intent.
  2. Ajoutez l'événement actions_intent_REGISTER_UPDATE.
  3. Activez le traitement du webhook pour l'intent.
  4. Cliquez sur Enregistrer.
Dans le traitement de l'intent, vérifiez le paramètre registered du résultat et croisez la conversation en conséquence.
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();
}
JSON Dialogflow
{
  "payload": {
    "google": {
      "expectUserResponse": false,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "Ok, I'll start giving you daily updates."
            }
          }
        ]
      }
    }
  }
}
SDK Actions

Dans votre code de traitement, ajoutez la gestion de l'intent intégré actions.intent.REGISTER.UPDATE. Vérifiez le paramètre registered du résultat et faites pivoter la conversation en conséquence.

SDK Actions Node.js
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.`);
  }
});
SDK Actions 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();
}
JSON du SDK Actions
{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "simpleResponse": {
            "textToSpeech": "Ok, I'll start giving you daily updates."
          }
        }
      ]
    }
  }
}

Personnaliser les mises à jour (facultatif)

Pour personnaliser votre intent de mise à jour, ajoutez des paramètres personnalisés lorsque les utilisateurs enregistrent des mises à jour quotidiennes. Lorsque vous remplissez l'intent de mise à jour, référencez ces paramètres pour personnaliser la mise à jour quotidienne pour cet utilisateur.

Les instructions concernant cette fonctionnalité varient selon que vous utilisez Dialogflow ou le SDK Actions pour le développement.

Dialogflow

Définissez une entité Dialogflow pour gérer les paramètres personnalisés pour la mise à jour, puis transmettez la valeur du paramètre en tant qu'argument à votre intent de mise à jour. Pour configurer des informations personnalisées dans Dialogflow, procédez comme suit:

  1. Dans la console Dialogflow, créez une entité.
  2. Ajoutez des entrées et des synonymes pertinents pour votre paramètre.
  3. Cliquez sur Save (Enregistrer), puis ouvrez votre intent de mise à jour.
  4. Dans la section Actions and parameters (Actions et paramètres), définissez actions.intent.CONFIGURE_UPDATES en tant qu'événement. Dans la même section, ajoutez un paramètre du même type que la nouvelle entité.
  5. Ouvrez l'intent de mise à jour de l'enregistrement qui gère l'intent intégré CONFIGURE_UPDATES.
  6. Dans la section Actions et paramètres, ajoutez un paramètre obligatoire et définissez son type sur l'entité créée précédemment.
  7. Mettez à jour le code de traitement de votre intent d'enregistrement pour inclure un objet arguments avec le contenu suivant :
    • name : nom du paramètre tel que configuré dans Dialogflow.
    • textValue : valeur de votre paramètre.

Le code suivant lit la valeur du paramètre et l'utilise dans la requête d'enregistrement de mise à jour:

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();
}
JSON Dialogflow
{
  "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 Actions

Demandez des informations supplémentaires à l'utilisateur dans votre traitement d'intent, puis transférez-les en tant qu'arguments pour votre intent de mise à jour. Pour configurer des mises à jour personnalisées dans le SDK Actions, procédez comme suit:

  1. Invitez l'utilisateur à fournir les informations que vous souhaitez personnaliser.
  2. Dans le code de traitement de votre intent de mise à jour d'enregistrement qui gère CONFIGURE UPDATES, incluez un objet arguments avec le contenu suivant :
    • name : nom de votre argument.
    • textValue : informations de l'utilisateur à transmettre en tant qu'argument.

Le code suivant envoie un argument avec la requête d'enregistrement de mise à jour:

SDK Actions Node.js
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',
    }));
  }
});
SDK Actions 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();
}
JSON du SDK Actions
{
  "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\":{}}"
}

Lorsque l'utilisateur appelle votre mise à jour quotidienne, votre intent de mise à jour inclut à présent des arguments contenant les valeurs fournies par l'utilisateur lors de l'inscription. Utilisez ces valeurs pour personnaliser la mise à jour pour chaque utilisateur.

Tester les mises à jour quotidiennes

Testez vos mises à jour quotidiennes à l'aide d'un appareil mobile doté de l'Assistant Google et du compte Google avec lequel vous avez créé votre action. Appelez votre action et abonnez-vous aux mises à jour quotidiennes, puis vérifiez les notifications de votre appareil à l'heure de la mise à jour.