Actionsを使用したフォームの表示

フォームを作成し終えたら、api.prompt.render()メソッドを使用してActionsで表示できます。

// Example using the post-login trigger

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

exports.onContinuePostLogin = async (event, api) => {
  // Add your logic after completing the form
}

Was this helpful?

/

form_id部分をフォームIDで置き換えます。IDは、フォームのURLに、ap_pUMG...のように表示されます。または、フォームエディターの[Embed(組み込み)]タブで選択してください。Actionsコードエディターでは、ビジネスロジックを定義して、フォーム表示のタイミングと方法を決定することができます。

exports.onExecutePostLogin = async (event, api) => {

  // Only render the form if user is missing company_name metadata
  if (!event.user.user_metadata.company_name) {
    api.prompt.render(':form_id');
  }
}

exports.onContinuePostLogin = async (event, api) => {
  // Add your logic after completing the form
}

Was this helpful?

/

  • ユーザーをリダイレクトして、同じアクションでフォームを表示することはできません。両方使用する必要がある場合は、別のアクションの使用を検討してください。

  • アクションごとに1つのフォームしか表示できません。複数のフォームを表示する必要がある場合は、別のアクションでフォームを表示しなければなりません。

既存のフィールドと非表示のフィールドの値を入力する(クライアント側)

イベントオブジェクトとそのコンテキスト情報についての詳細は、「Actionsトリガー: post-login- eventオブジェクト」をお読みください。

既存のフィールドと非表示のフィールドの値を入力したい場合は、api.prompt.render()メソッドがfieldsプロパティを使用した第二引数をサポートしています。下記の例では、IDがfirst_nameのフィールドに、Janeという値が入力されます。

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

exports.onContinuePostLogin = async (event, api) => {
  // Add your logic after completing the form
}

Was this helpful?

/

カスタムデータを、クライアント側に表示することなく注入する必要がある場合は、varsプロパティを使用することができます。

共有変数によるカスタムデータの注入(サーバー側)

下記の例では、123456789の値を使ってexternal_user_id変数を注入します。

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

exports.onContinuePostLogin = async (event, api) => {
  // Add your logic after completing the form
}

Was this helpful?

/

制約と制限

フォーム内で、収集されたフィールドと共有変数データは自動的に現在のアクションのresume関数のevent.promptで利用可能になります。

  • idプロパティはレンダリング対象のプロンプトIDを定義します。

  • fieldsオブジェクトにはすべてのフィールドと非表示のフィールドのデータがあります。

  • varsオブジェクトにはすべての共有変数データがあります。

/

{
  "id": "ap_fuVuFiiQWN3mTEujWTy966",
  "fields": {
    "first_name": "Jane",
    "company_name": "Okta"
  },
  "vars": {
    "external_crm_uuid": "f8f32e6f-2329-49bd-bf21-fa8b0bea2652",
    "api_hostname": "api.example.com"
  }
}

Was this helpful?

/

以下の例では、api.user.setUserMetadataにフォームから収集されたevent.prompt.fields.company_nameプロパティのあるuser_metadatacompany_name属性が入力されます。

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);
}

Was this helpful?

/

制約と制限

  • ユーザーをリダイレクトして、同じアクションでフォームをレンダリングすることはできません。両方とも使用する必要がある場合は、別のアクションを検討してください。

  • 1つのアクションからは1つのフォームのみをレンダリングできます。複数のフォームをレンダリングしなければならない場合は、別のアクションを使用します。

  • 同じフォームを同じトリガーで複数回レンダリングすることはできません。 たとえば、1つのpost-loginトリガーに2つのアクションがある場合、両方のアクションで同じフォームはレンダリングできません。それぞれのアクションに別のフォームを作成する必要があります。

  • fieldsプロパティのサイズは24 KBが上限です。

  • api.prompt.render()メソッドは以下のトリガーで利用できます。