Saltar al contenido principal
Una vez creado un formulario, puede renderizarlo con Actions mediante el método api.prompt.render():
// Ejemplo usando el trigger post-login

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

exports.onContinuePostLogin = async (event, api) => {
  // Agrega tu lógica después de completar el formulario
}
Reemplace form_id por el ID del formulario. Puede encontrar el ID en la URL del formulario, por ejemplo:  ap_pUMG..., o seleccionarlo en la pestaña Render del editor de formularios. En el editor de código de Actions, puede definir la lógica de negocio para decidir cuándo y cómo renderizar el formulario.
exports.onExecutePostLogin = async (event, api) => {

  // Solo renderizar el formulario si al usuario le falta el metadato company_name
  if (!event.user.user_metadata.company_name) {
    api.prompt.render(':form_id');
  }
}

exports.onContinuePostLogin = async (event, api) => {
  // Agrega tu lógica después de completar el formulario
}
Para obtener más información sobre estos objetos, consulta:
  • Event Object: Obtén más información sobre los objetos y las propiedades de Event.
  • API object: Obtén más información sobre los objetos y los métodos de API.

Rellenar valores en campos existentes y campos ocultos (del lado del cliente)

Puede rellenar valores en campos existentes y campos ocultos mediante la propiedad fields como segundo argumento en su método de renderizado. En el ejemplo siguiente, el valor Jane rellena el campo first_name.
exports.onExecutePostLogin = async (event, api) => {
  api.prompt.render(':form_id', {
    fields: {
      first_name: 'Jane',
    }
  });
}

exports.onContinuePostLogin = async (event, api) => {
  // Agrega tu lógica después de completar el formulario
}
No introduzca información confidencial; los valores introducidos quedan expuestos en el navegador (del lado del cliente).
Asegúrese de que el campo ID al que se hace referencia en el segundo argumento esté disponible del lado del cliente en sus nodos y componentes; de lo contrario, el valor no se rellenará.

Inyectar datos personalizados con variables compartidas (del servidor)

Puede inyectar variables del servidor mediante la propiedad vars como segundo argumento de su método de renderizado. Esto permite inyectar información sensible sin exponerla del lado del cliente. En el siguiente ejemplo, el valor 123456789 se asigna a 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) => {
  // Agrega tu lógica después de completar el formulario
}
Las variables compartidas {{vars.*}} no tienen restricciones de tipo de datos.Las variables compartidas {{vars.*}} siempre se enmascaran automáticamente.A diferencia de las variables {{fields.*}}, la propiedad {{vars.*}} no necesita existir en su formulario antes de inyectar valores.Puede usar la propiedad {{vars.*}} para hacer referencia a variables compartidas en sus Forms y en los Flows vinculados. Para obtener más información, consulte Variables.

Datos de campos y variables compartidas en Actions

Los datos recopilados de campos y variables compartidas en sus formularios están disponibles automáticamente en event.prompt dentro de la función de reanudación de la Action actual:
  • La propiedad id, con el ID de la pantalla que se está renderizando.
  • El objeto fields, que contiene todos los datos de sus campos y campos ocultos.
  • El objeto vars, que contiene todos los datos de sus variables compartidas.
{
  "id": "ap_fuVuFiiQWN3mTEujWTy966",
  "fields": {
    "first_name": "Jane",
    "company_name": "Okta"
  },
  "vars": {
    "external_crm_uuid": "f8f32e6f-2329-49bd-bf21-fa8b0bea2652",
    "api_hostname": "api.example.com"
  }
}
En el ejemplo siguiente, api.user.setUserMetadata establece el atributo company_name de user_metadata con el valor de la propiedad event.prompt.fields.company_name recopilada de su formulario.
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);
}

Restricciones y limitaciones

  • No puede redirigir a un usuario y renderizar un formulario en la misma Action. Si necesita usar ambas opciones, considere usar distintas Actions.
  • Solo puede renderizar un formulario por Action. Si necesita renderizar más de un formulario, debe hacerlo en distintas Actions.
  • El límite de tamaño de la propiedad fields es de 24 KB.
  • El método api.prompt.render() está disponible en los siguientes triggers: