Passer au contenu principal
Après avoir créé un formulaire, vous pouvez l’afficher avec Actions à l’aide de la méthode api.prompt.render() :
// Exemple utilisant le déclencheur post-login

exports.onExecutePostLogin = async (event, api) => {
  api.prompt.render(':form_id');
}

exports.onContinuePostLogin = async (event, api) => {
  // Ajoutez votre logique après avoir rempli le formulaire
}
Remplacez form_id par l’ID du formulaire. Vous pouvez repérer l’ID dans l’URL du formulaire, par exemple : ap_pUMG..., ou le sélectionner dans l’onglet Render de l’éditeur du formulaire. Dans l’éditeur de code Actions, vous pouvez définir la logique métier pour déterminer à quel moment et comment afficher le formulaire.
exports.onExecutePostLogin = async (event, api) => {

  // Afficher le formulaire uniquement si l'utilisateur n'a pas les métadonnées company_name
  if (!event.user.user_metadata.company_name) {
    api.prompt.render(':form_id');
  }
}

exports.onContinuePostLogin = async (event, api) => {
  // Ajoutez votre logique après avoir rempli le formulaire
}
Pour en savoir plus sur ces objets, consultez :
  • Objet Event : Découvrez les objets Event et leurs propriétés.
  • Objet API : Découvrez les objets API et leurs méthodes.

Définir des valeurs pour les champs existants et les champs masqués (côté client)

Vous pouvez définir des valeurs pour les champs existants et les champs masqués à l’aide de la propriété fields comme deuxième argument de votre méthode de rendu. Dans l’exemple ci-dessous, la valeur Jane est définie dans le champ first_name.
exports.onExecutePostLogin = async (event, api) => {
  api.prompt.render(':form_id', {
    fields: {
      first_name: 'Jane',
    }
  });
}

exports.onContinuePostLogin = async (event, api) => {
  // Ajoutez votre logique après avoir rempli le formulaire
}
Ne renseignez pas de données sensibles, car les valeurs renseignées sont exposées au navigateur (côté client).
Assurez-vous que le champ ID mentionné dans le deuxième argument est disponible côté client dans vos nœuds et composants ; sinon, la valeur ne sera pas renseignée.

Injectez des données personnalisées avec des variables partagées (côté serveur)

Vous pouvez injecter des variables côté serveur en utilisant la propriété vars comme deuxième argument de votre méthode de rendu. Cela permet d’injecter des renseignements sensibles sans les exposer au client. Dans l’exemple ci-dessous, la valeur 123456789 alimente la variable external_user_id.
exports.onExecutePostLogin = async (event, api) => {
  api.prompt.render(':form_id', {
    vars: {
      external_user_id: '123456789',
    }
  });
}

exports.onContinuePostLogin = async (event, api) => {
  // Ajoutez votre logique après avoir complété le formulaire
}
Les variables partagées {{vars.*}} ne sont soumises à aucune restriction de type de données.Les variables partagées {{vars.*}} sont toujours masquées automatiquement.Contrairement aux variables {{fields.*}}, la propriété {{vars.*}} n’a pas besoin d’exister dans votre formulaire avant que vous y injectiez des valeurs.Vous pouvez utiliser la propriété {{vars.*}} pour faire référence à des variables partagées dans vos formulaires et les flux qui y sont liés. Pour en savoir plus, consultez Variables.

Données des champs et des variables partagées dans Actions

Les données recueillies dans vos formulaires pour les champs et les variables partagées sont automatiquement accessibles au moyen de event.prompt dans la fonction de reprise de l’Action en cours :
  • La propriété id, qui contient l’ID de l’invite en cours d’affichage.
  • L’objet fields, qui contient toutes les données de vos champs et de vos champs masqués.
  • L’objet vars, qui contient toutes les données de vos variables partagées.
{
  "id": "ap_fuVuFiiQWN3mTEujWTy966",
  "fields": {
    "first_name": "Jane",
    "company_name": "Okta"
  },
  "vars": {
    "external_crm_uuid": "f8f32e6f-2329-49bd-bf21-fa8b0bea2652",
    "api_hostname": "api.example.com"
  }
}
Dans l’exemple ci-dessous, api.user.setUserMetadata renseigne l’attribut company_name de user_metadata à l’aide de la propriété event.prompt.fields.company_name recueillie à partir de votre formulaire.
exports.onExecutePostLogin = async (event, api) => {
  api.prompt.render(':form_id');
}

exports.onContinuePostLogin = async (event, api) => {
  api.user.setUserMetadata('company_name', event.prompt.fields.company_name);
}

Restrictions et limites

  • Vous ne pouvez pas rediriger un utilisateur et afficher un formulaire dans la même Action. Si vous devez utiliser les deux, envisagez d’utiliser des Actions distinctes.
  • Vous ne pouvez afficher qu’un seul formulaire par Action. Si vous devez en afficher plusieurs, vous devez les afficher dans des Actions distinctes.
  • La limite de taille de la propriété fields est de 24 KB.
  • La méthode api.prompt.render() est disponible avec les déclencheurs suivants :