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_metadata
のcompany_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()
メソッドは以下のトリガーで利用できます。