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 tipolink.
Detalles de state
- Tipo:
object - Descripción: Representa el estado asociado con la etapa.
Detalles de error
- Tipo:
objectmessage(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.