Saltar al contenido principal

Documentación: Interfaz FlowContextSchema

La interfaz FlowContextSchema define la estructura del contexto de un flujo interactivo, incluyendo la etapa actual (step) y la información general del flujo (flow).


Definición

export const FlowContextSchema = {
status: "ok" | "error",
flow: FlowSchema,
step: StepSchema,
};

Propiedades

1. status

  • Tipo: string
  • Descripción: Representa el estado del contexto. Valores posibles:
    • "ok": El contexto es válido y está listo para ser procesado.
    • "error": El contexto es inválido o contiene errores.

2. flow

  • Tipo: FlowSchema
  • Descripción: Representa la información general del flujo.

Propiedades de FlowSchema:

  • id (string): Identificador único del flujo.
  • organizationId (string): Identificador de la organización que posee el flujo.
  • updatedAt (string): Fecha y hora de la última actualización del flujo.
  • stages (array): Lista de etapas en el flujo.
    • id (string): Identificador único de la etapa.
    • name (string): Nombre descriptivo de la etapa.

3. step

  • Tipo: StepSchema
  • Descripción: Representa la etapa actual del flujo interactivo.

Propiedades de StepSchema:

  • id (string): Identificador único de la etapa.
  • title (string, opcional): Título descriptivo de la etapa.
  • description (string, opcional): Descripción de la etapa.
  • stageId (string, opcional): Identificador de la etapa dentro del flujo.
  • state (object, opcional): Representa el estado asociado con la etapa.
  • fields (array, opcional): Lista de campos definidos en la etapa (detallado a continuación).
  • actions (array, opcional): Lista de acciones disponibles en la etapa (detallado a continuación).
  • error (object, opcional): Representa un error asociado con la etapa.
  • result (object, opcional): Representa el resultado de la etapa.
  • isFinal (boolean, opcional): Indica si esta etapa es la última en el flujo.

Detalles de fields

  • Tipo: StepFieldSchema[]
  • Descripción: Define los campos interactivos que un usuario debe completar o interactuar en una etapa.

Propiedades de StepFieldSchema:

  • name (string): Nombre del campo.
  • label (string): Etiqueta descriptiva del campo.
  • type (enum): Tipo de dato del campo. Valores posibles incluyen:
    • "text", "boolean", "number", "email", "phone", "mobile_phone", "date", "time", "datetime", "password", "url", "void", "location", "availability".
  • component (enum, opcional): Componente de UI utilizado para representar el campo. Ejemplos:
    • "input", "textarea", "select", "radio", "checkbox", "map", etc.
  • selectionMode (enum, opcional): Modo de selección para campos de selección.
    • "single": Una sola opción (por defecto).
    • "multiple": Múltiples opciones.
  • placeholder (string, opcional): Texto sugerido para ayudar al usuario.
  • options (array, opcional): Lista de opciones para campos de selección.
    • label (string): Texto de la opción.
    • value (any, opcional): Valor correspondiente al tipo de campo.
    • image (URL, opcional): Imagen asociada.
    • description (string, opcional): Descripción adicional de la opción.
    • disabled (boolean, opcional): Indica si la opción está deshabilitada.
  • required (boolean, opcional): Indica si el campo es obligatorio.
  • configuration (object, opcional): Configuración específica para tipos de campo avanzados.
  • customError (object, opcional): Personaliza los mensajes de error de validación para el campo:
    • required (string): Mensaje mostrado cuando un campo requerido está vacío.
    • invalid (string): Mensaje mostrado cuando el valor del campo es inválido.
    • minLength (string): Mensaje mostrado cuando la longitud del texto está por debajo del mínimo.
    • maxLength (string): Mensaje mostrado cuando la longitud del texto excede el máximo.
    • minValue (string): Mensaje mostrado cuando el valor numérico está por debajo del mínimo.
    • maxValue (string): Mensaje mostrado cuando el valor numérico excede el máximo.
    • mismatch (string): Mensaje mostrado cuando el valor del campo no coincide con el campo relacionado.

Detalles de actions

  • Tipo: StepActionSchema[]
  • Descripción: Define las acciones que un usuario puede ejecutar en la etapa.

Propiedades de StepActionSchema:

  • id (string): Identificador único de la acción.
  • type (enum): Tipo de acción. Valores posibles:
    • "submit": Enviar datos.
    • "forward": Avanzar al siguiente paso.
    • "link": Redirigir a una URL externa.
    • "iCall": Abrir el servicio iCall.
  • label (string): Etiqueta descriptiva de la acción.
  • variant (enum): Variante visual de la acción. Valores:
    • "primary", "secondary", "success", "danger", "warning", "info".
  • url (string, opcional): URL asociada con acciones de tipo link.

Detalles de state

  • Tipo: object
  • Descripción: Representa el estado asociado con la etapa.

Detalles de error

  • Tipo: object
    • message (string): Mensaje de error.
    • code (string): Código de error.
    • fields (FieldsError[]): Lista de campos con errores.
      • name (string): Nombre del campo.
      • type (string): Tipo de campo.
      • value (any): Valor del campo.
      • error (string): Mensaje de error.
  • Descripción: Representa un error asociado con la etapa.

Códigos de Error

  • "INVALID_DATA": Datos de formulario inválidos.
  • "INVALID_ACTION": Acción enviada inválida.
  • "STEP_NOT_FOUND": Siguiente paso no encontrado.
  • "UNKNOWN_ERROR": Error desconocido.
  • "APPOINTMENT_INVALID_DATA": Datos de cita inválidos.
  • "APPOINTMENT_BUSY_SLOT": El espacio ya está reservado o bloqueado.
  • "APPOINTMENT_OUT_OF_DATE": El espacio está fuera del rango de fechas permitido.
  • "APPOINTMENT_FAILED": La creación de la cita falló.
  • "APPOINTMENT_UNKNOWN_ERROR": Error desconocido de cita.
  • "LEAD_INVALID_DATA": Datos de lead inválidos.
  • "LEAD_UNKNOWN_ERROR": Error desconocido de lead.
  • "CONTENT_INVALID_DATA": Datos de contenido inválidos.
  • "CONTENT_UNKNOWN_ERROR": Error desconocido de contenido.
  • "CONTACT_INVALID_DATA": Datos de contacto inválidos.
  • "CONTACT_UNKNOWN_ERROR": Error desconocido de contacto.
  • "LOST_OPPORTUNITY_INVALID_DATA": Datos de oportunidad perdida inválidos.
  • "LOST_OPPORTUNITY_UNKNOWN_ERROR": Error desconocido de oportunidad perdida.
  • "CALENDAR_INVALID_DATA": Datos de calendario inválidos.
  • "CALENDAR_UNKNOWN_ERROR": Error desconocido de calendario.
  • "OTP_VALIDATION_INVALID_DATA": Datos de validación OTP inválidos.
  • "OTP_VALIDATION_UNKNOWN_ERROR": Error desconocido de validación OTP.

Ejemplo de Estructura

Respuesta de contexto exitoso

const flowContext = {
status: "ok",
step: {
id: "step123",
title: "Formulario de Registro",
description: "Por favor complete los siguientes campos.",
fields: [
{
name: "name",
label: "Nombre",
type: "text",
required: true,
},
{
name: "acceptTOS",
label: "Acepto los términos y condiciones",
type: "boolean",
component: "checkbox",
required: true,
},
],
actions: [
{
id: "submitForm",
type: "submit",
label: "Enviar",
variant: "primary",
},
]
},
flow: {
id: "flow456",
organizationId: "123e4567-e89b-12d3-a456-426614174000",
updatedAt: "2025-01-17T10:00:00Z",
stages: [
{ id: "stage1", name: "Inicio" },
{ id: "stage2", name: "Confirmación" },
],
},
};

Respuesta de contexto con error

const flowContext = {
status: "error",
step: {
id: "step123",
title: "Formulario de Registro",
description: "Por favor complete los siguientes campos.",
fields: [
{
name: "name",
label: "Nombre",
type: "text",
required: true,
},
{
name: "acceptTOS",
label: "Acepto los términos y condiciones",
type: "boolean",
component: "checkbox",
required: true,
},
],
actions: [
{
id: "submitForm",
type: "submit",
label: "Enviar",
variant: "primary",
},
],
error: {
code: "INVALID_DATA",
message: "Los datos del formulario son inválidos",
fields: [
{
name: "name",
type: "text",
value: "",
error: "El nombre es obligatorio",
},
],
},
},
flow: {
id: "flow456",
organizationId: "123e4567-e89b-12d3-a456-426614174000",
updatedAt: "2025-01-17T10:00:00Z",
stages: [
{ id: "stage1", name: "Inicio" },
{ id: "stage2", name: "Confirmación" },
],
},
};

Notas

  • La interfaz FlowContextSchema se utiliza para representar el estado actual del flujo y su contexto general.
  • StepSchema y sus subcomponentes (fields y actions) son críticos para definir la interacción del usuario en cada etapa del flujo.