Skip to main content
Este documento describe como se puede agregar acciones al Agente de IA, como por ejemplo:
  • Apagar un agente de IA.
  • Asignar una fase al contacto.
  • Asignar una etiqueta al contacto.
  • Asignar una segmentacion al contacto.
  • Asignar un agente humano al contacto.
  • Marcar como resuelto.
  • Gestionar eventos (citas, reuniones, etc.).
Campos de la Accion
CampoDescripcion
intentIdentificador unico de la intencion de la accion. Se usa para detectar que esta solicitando el usuario (por ejemplo, "asignar_soporte").
referenceDescripcion detallada del contenido de la intencion. Se utiliza para poder darle informacion al agente y sepa la intencion del usuario, como por ejemplo: “Quiero hablar con un agente humano”.
tagsSon referencias para poder entender mas la informacion dentro de la accion. Complementa la reference con contexto adicional.
enabledBooleano que indica si la accion esta activada (true) o no (false).
requiredFieldsCampos que el agente debe recopilar del usuario antes de ejecutar la accion. Funciona igual que en los servicios.
responseMessageMensaje que el agente debe de responder al usuario. Soporta variables con formato {{variable}}, {variable} o @variable.
responseJsonBooleano que indica si el agente debe de responder con un JSON estructurado (true) o un mensaje de texto plano (false). Solo aplica en el orquestador clasico.
responseExactBooleano que indica si el responseMessage debe enviarse exactamente al usuario sin reformulacion del LLM (true). Solo aplica en modo Tool Calling. Por defecto false.
actionListado de acciones que se ejecutaran. Cada accion tiene un type y un value.
El agente de IA ejecutara las acciones en orden, esto quiere decir que si puso dos asignaciones, el agente de IA asignara la primera asignacion y luego la segunda asignacion. Por lo que prevalecera la ultima accion ejecutada.

Tipos de Accion

Cada accion dentro del arreglo action tiene un type que define que operacion se ejecutara:
TipoDescripcion
action.asignAsigna un agente humano al contacto. El value es el email del agente.
action.stageAsigna una fase/etapa al contacto. El value es el nombre de la fase.
action.agentShutDownApaga el agente de IA para el contacto. El value debe ser "true".
action.segmentationAsigna una segmentacion al contacto. El value es el nombre de la segmentacion.
action.tagAsigna una etiqueta al contacto. El value es el nombre de la etiqueta.
action.solvedMarca la conversacion como resuelta. El value debe ser "true".
action.event.addCrea un nuevo evento/cita en el calendario.
action.event.updateActualiza un evento existente.
action.event.deleteElimina un evento.
action.event.listLista los eventos disponibles.
action.event.confirmConfirma un evento pendiente.
action.event.cancelCancela un evento existente.
Las acciones de tipo action.event.* requieren que el agente tenga configurado un calendario. Cuando se configuran acciones de eventos, el sistema inyecta automaticamente una herramienta de consulta de disponibilidad (check_availability) para que el agente pueda verificar horarios libres antes de agendar.

Campos Requeridos en Acciones

Las acciones tambien soportan requiredFields, que funcionan de la misma forma que en los servicios. Esto es util cuando la accion necesita datos del usuario antes de ejecutarse (por ejemplo, una fecha para agendar un evento).
{
  "intent": "agendar_cita",
  "reference": "El usuario quiere agendar una cita o reunion",
  "enabled": true,
  "requiredFields": [
    {
      "name": "fecha",
      "description": "Fecha deseada para la cita",
      "promptHint": "Cual es la fecha que prefieres para la cita?",
      "type": "datetime"
    },
    {
      "name": "motivo",
      "description": "Motivo de la cita",
      "type": "string"
    }
  ],
  "responseMessage": "Tu cita ha sido agendada para el {{fecha}}.",
  "responseExact": true,
  "action": [
    {
      "type": "action.event.add",
      "value": "cita"
    }
  ]
}
Las variables recopiladas en requiredFields se pueden usar en el responseMessage con los formatos {{variable}}, {variable} o @variable.

Tipos de Respuesta

Las acciones del agente tienen configuraciones que determinan como responde despues de ejecutar las acciones:

responseExact (Tool Calling)

Cuando el agente esta en modo Tool Calling (useToolCalling: true), el resultado de una accion normalmente pasa al LLM, que reformula el mensaje antes de enviarlo al usuario. Con responseExact: true, el responseMessage se envia directamente al usuario sin pasar por el LLM.
ValorComportamiento
trueEjecuta las acciones + envia el responseMessage exacto al usuario (con variables sustituidas)
falseEjecuta las acciones + el LLM genera una respuesta basada en el resultado (comportamiento por defecto)
Ejemplo con responseExact = true:
Usuario: "Quiero hablar con soporte"
Bot: [Ejecuta acciones: action.asign → soporte@empresa.com]
Bot: "He transferido tu conversacion al equipo de soporte. Te atenderan en breve."
(exactamente el responseMessage configurado)
Ejemplo con responseExact = false:
Usuario: "Quiero hablar con soporte"
Bot: [Ejecuta acciones: action.asign → soporte@empresa.com]
Bot: "Entendido, he asignado tu caso a nuestro equipo de soporte tecnico. Ellos se pondran en contacto contigo muy pronto para ayudarte."
(el LLM reformula el mensaje)

responseJson (Orquestador Clasico)

Controla el formato de la respuesta cuando se consume via API/SDK. Solo aplica en el orquestador clasico (sin Tool Calling).
ValorFormato de Respuesta
falseTexto plano
trueJSON estructurado
Ejemplo con responseJson = false:
{
  "success": true,
  "answer": "Gracias por tu consulta, un ejecutivo te contactara pronto."
}
Ejemplo con responseJson = true:
{
  "success": true,
  "answer": {
    "message": "Gracias por tu consulta, un ejecutivo te contactara pronto.",
    "actionsExecuted": [
      {
        "type": "action.tag",
        "value": "comercial"
      },
      {
        "type": "action.stage",
        "value": "prospecto"
      }
    ]
  }
}
En modo Tool Calling, la respuesta siempre incluye actionsExecuted en el resultado del tool, independientemente del valor de responseJson.

Casos de Uso Comunes

1. Accion con Respuesta Exacta (Tool Calling)

{
  "intent": "contactar_soporte",
  "reference": "El usuario quiere contactar con soporte tecnico",
  "tags": ["soporte", "ayuda"],
  "enabled": true,
  "responseMessage": "He registrado tu solicitud de soporte. Un tecnico se comunicara contigo en breve.",
  "responseExact": true,
  "responseJson": false,
  "action": [
    {
      "type": "action.tag",
      "value": "soporte"
    },
    {
      "type": "action.stage",
      "value": "ticket_abierto"
    }
  ]
}
Resultado: Ejecuta las acciones + respuesta fija exacta (sin reformulacion del LLM).

2. Accion con Respuesta del LLM (Tool Calling)

{
  "intent": "solicitar_informacion",
  "reference": "El usuario solicita informacion sobre productos o servicios",
  "tags": ["informacion", "productos"],
  "enabled": true,
  "responseMessage": "",
  "responseExact": false,
  "responseJson": false,
  "action": [
    {
      "type": "action.tag",
      "value": "lead_caliente"
    }
  ]
}
Resultado: Ejecuta la accion + la IA responde inteligentemente segun el contexto.

3. Accion para API/Webhook (JSON)

{
  "intent": "registrar_lead",
  "reference": "Registro automatico de lead en sistema externo",
  "tags": ["lead", "crm"],
  "enabled": true,
  "responseMessage": "Registro completado exitosamente",
  "responseExact": false,
  "responseJson": true,
  "action": [
    {
      "type": "action.tag",
      "value": "lead_registrado"
    }
  ]
}
Resultado: Ejecuta las acciones + respuesta JSON estructurada (ideal para integraciones via API/SDK).

4. Accion de Evento con Campos Requeridos

{
  "intent": "agendar_reunion",
  "reference": "El usuario quiere agendar una reunion o cita",
  "tags": ["cita", "calendario"],
  "enabled": true,
  "requiredFields": [
    {
      "name": "fecha",
      "description": "Fecha y hora de la reunion",
      "promptHint": "Para cuando te gustaria agendar la reunion?",
      "type": "datetime"
    },
    {
      "name": "nombre_cliente",
      "description": "Nombre del cliente",
      "type": "string"
    }
  ],
  "responseMessage": "Listo {{nombre_cliente}}, tu reunion ha sido agendada para el {{fecha}}.",
  "responseExact": true,
  "action": [
    {
      "type": "action.event.add",
      "value": "reunion"
    },
    {
      "type": "action.tag",
      "value": "reunion_agendada"
    }
  ]
}
Resultado: El agente recopila fecha y nombre, crea el evento y responde con el mensaje exacto con las variables sustituidas.

Asignacion de Agentes

El agente de IA puede asignar un agente humano al contacto, esto se podra visualizar en la vista de contactos, en el campo de Agente Asignado.
{
  "type": "action.asign",
  "value": "agente@empresa.com"
}

Asignacion de Etiquetas

El agente de IA puede asignar una etiqueta al contacto, esto se podra visualizar en la vista de contactos, en el campo de Etiquetas.
{
  "type": "action.tag",
  "value": "nombre_etiqueta"
}

Asignacion de Fases

El agente de IA puede asignar una fase al contacto, esto se podra visualizar en la vista de contactos, en el campo de Fase.
{
  "type": "action.stage",
  "value": "nombre_fase"
}

Asignacion de Segmentacion

El agente de IA puede asignar una segmentacion al contacto, esto se podra visualizar en la vista de contactos, en el campo de Segmentacion.
{
  "type": "action.segmentation",
  "value": "nombre_segmentacion"
}

Marcar como Resuelto

El agente de IA puede marcar la conversacion como resuelta.
{
  "type": "action.solved",
  "value": "true"
}

Apagar el Agente de IA

El Agente de IA puede apagarse con la accion de Shutdown, esto se podra visualizar en la vista de contactos, en el campo de Agente Activo.
{
  "type": "action.agentShutDown",
  "value": "true"
}
Importante saber que esta opcion si se apaga ya no contestara el agente hasta que se vuelva a encender de forma manual.