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:
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.