---
name: configurar-bot
description: "Set up or change a Frepi chat bot («bot de chats») that answers WhatsApp chats from the owner's own AI: an interview on lines, who else answers, handoff, hours and caps, ending in one chatbot_setup card. Use when the owner wants to create or change a bot. Not a Frepi agent that runs inside Frepi: that is agentes. Spanish triggers: configurar bot, crear bot, modo estricto."
license: "Proprietary. Free to use with a Frepi account. See LICENSE."
metadata:
  author: "frepi-ai"
  version: "4"
---

# Configurar un bot de chats

**En modo chatbot usa solo herramientas `chatbot_*`, siempre con tu `chat_filter_id`.** Este skill es la excepción
de una sola vez: la entrevista de configuración corre en el **chat normal del dueño**, con su conexión completa a
Frepi, no en un enlace del bot. Termina con una llamada a `chatbot_setup`. Después de eso el bot trabaja con
`bi_get_skill(name="atender-chats")`.

El bot es un **filtro de chats**: la configuración que Frepi aplica en el servidor (líneas, nivel, topes, turno,
traspaso). Tu modelo hace el razonamiento; Frepi hace cumplir las reglas. Pregunta **una cosa a la vez**, en el
idioma del dueño, y no pases al siguiente paso con dudas.

Dile al dueño desde el principio qué pasa en este chat: primero lo entrevistas y guardas el bot con una tarjeta;
después, si quiere, **este mismo chat pasa a ser el bot** («atiende ahora») o se programa una rutina.

## Antes de empezar: las herramientas

Mira tu lista de herramientas de Frepi. Tienen que estar `chatbot_setup` y `chatbot_settings`. **Si no están, para
aquí, antes de la primera pregunta.** No sigas la entrevista: sin `chatbot_setup` nada se puede guardar. Dile al
dueño que su cliente de IA tiene una lista de herramientas de Frepi vieja y que recargue el conector de Frepi (en
Cursor: Configuración → MCP, apagar y encender Frepi; en Claude: volver a conectar el conector), y que después
empiece de nuevo. No busques el código de Frepi ni uses otras herramientas para hacer el trabajo del bot.

## Pasos de la entrevista

1. **Alcance.** ¿Qué workspace y qué líneas atiende el bot? ¿Solo lee (**Leer**) o también contesta (**Leer y
   enviar**)? Con Leer el bot marca, traspasa y registra bajas sin mensaje; no escribe a clientes. Una línea con un
   agente de línea no puede tener bot.
2. **El trabajo.** Propósito, tono, qué clientes atiende, qué vende o resuelve y qué no. Pide la línea de
   presentación («Soy el asistente virtual de <negocio>») y déjala activa para el primer mensaje de un chat nuevo.
3. **Quién más contesta, por línea.** Para **cada** línea la primera pregunta es: «¿Alguien más contesta en esta
   línea, desde el celular o desde Frepi?»
   - **No** → la línea es `bot_only`.
   - **Sí** → pregunta quién y desde dónde (app del celular, Frepi, o los dos). Después haz **tres preguntas
     separadas**, una a la vez, cada una con sus valores. Son tres ajustes distintos; no los mezcles:
     - **Turno.** `always` con «esperar N minutos en chats nuevos» (`wait_new_min`: 0, 10, 30 o 60; el bot deja ese
       tiempo a las personas antes de contestar un chat nuevo: uno que ninguna persona contestó en las últimas 24 horas,
       o cuya pausa fija ya terminó), o `off_hours` (el bot contesta fuera del horario; dentro del horario solo
       retoma un chat que una persona dejó sin respuesta, según «Retomar». Con «Retomar: nunca» el bot no contesta
       dentro del horario).
     - **Retomar (el chat que la persona contestó).** Cuando el cliente vuelve a escribir y nadie le contesta, el
       bot retoma ese chat tras 10, 30 o 60 minutos (`takeover_after_person_min`), contados desde ese mensaje del
       cliente. O **nunca**: entonces el bot se calla en ese chat un tiempo fijo después de la respuesta de la
       persona (`pause_chat_s`, de 1 a 24 horas, 4 horas por defecto); pregunta ese tiempo **solo** si eligió
       «nunca».
     - **Los otros chats de la línea.** ¿Cuando una persona contesta un chat, el bot también se calla en los demás
       chats de la línea? Si sí, `pause_scope: line` con `pause_line_s` (de 5 minutos a 2 horas, 15 minutos por
       defecto); si no, `pause_scope: chat`.
     - «El bot espera 5 minutos si la vendedora interviene»: en el chat de ella el bot espera como mínimo 10 minutos
       (retomar a los 10); 5 minutos solo existe como pausa de los otros chats de la línea. Díselo así al dueño y
       pregúntale cuál de las dos quiere. Excepción: en una línea `off_hours`, al cerrar el horario toda pausa de
       persona termina y el bot puede contestar de inmediato.
     - Si el dueño da un valor que no está en la lista, dile cuáles hay y pide que elija uno.
   - Primero, avísale: **nunca contestar desde WhatsApp para Windows** (Frepi no recibe esos mensajes y el bot
     contestaría encima), y **apagar en la app del celular el saludo y el mensaje de ausencia**, que no funcionan
     con la API.
4. **Traspaso (obligatorio).** A quién pasa el bot cuando un cliente pide una persona o él no puede ayudar, por línea
   (`handoff_to`: una persona, un equipo, el dueño o un vendedor solo-celular) **y un contacto fuera de horario**
   (el teléfono o correo que **el bot le da al cliente** fuera de horario; Frepi no le escribe a esa dirección).
   **No termines sin los dos.** Pide también el horario de atención de la línea.
   - **El aviso por correo** va a quien recibe el traspaso, no al contacto fuera de horario: si la persona tiene
     usuario en Frepi, traspaso a ella (`handoff_kind: user`) y el correo le llega a ella; si atiende solo por celular
     (`phone_seller`), el correo le llega al dueño.
   - Si el dueño dice «fuera de horario dile al cliente que la vendedora vuelve en horario laboral y avísale a ella
     por correo»: la frase al cliente va al bloque de reglas, el aviso es el traspaso a ella, y el contacto fuera de
     horario es otra pregunta. Antes de poner el correo o el teléfono de una persona como contacto fuera de horario,
     pregunta si se puede dar a los clientes.
5. **Contactos que el bot nunca contesta.** En **cada** línea: familia, proveedores, personal, amigos. Cada uno se
   agrega con `chatbot_add_never_answer` cuando el bot ya existe. Pregunta por contactos personales y señala la
   sección **Contactos excluidos** de Frepi (los contactos excluidos son invisibles para el bot). Solo se agrega; para
   quitar uno el dueño va a Conexiones, en la lista del bot.
   - **Un contacto es su número con código de país, solo dígitos**, sin `+` ni espacios (en Colombia empieza con 57). Para ver si un
     número escribió en la línea en las últimas 24 horas usa `list_replyable_contacts` de esa línea (pasa
     `limit: 50`; por defecto trae 25). Cuando el bot ya existe, `chatbot_get_contact` dice si el número tiene un chat
     en las líneas del bot, de cualquier fecha; no dice si escribió en las últimas 24 horas. **No busques números con SQL**: un número que no sale en una tabla puede tener su chat abierto.
   - **«Responde solo a este número»** (una prueba): Frepi **no tiene** hoy una lista de «solo estos contactos». Dilo
     así. No lo escribas en el bloque de reglas como si Frepi lo hiciera cumplir. Para una prueba, propón el nivel
     **Leer**, o una línea donde no escriben clientes.
6. **Costos y topes.** Explica en claro que **las respuestas no son gratis**: desde el 1 de octubre de 2026 Meta cobra
   las respuestas de servicio pasado el primer millar entregado por número al mes, y las plantillas de utilidad
   dentro de la ventana; sin método de pago no se entregan. Frepi no cobra por el bot. Frepi pone topes por filtro
   (por defecto 10 mensajes por chat por hora, 200 por línea por hora, 1,000 por día y 15,000 por mes) que el dueño
   cambia después en Frepi. Pregunta si quiere un tope más bajo; el que fije se carga en `chatbot_setup`.
7. **Datos.** Los mensajes de los clientes van al proveedor de IA del dueño, bajo la cuenta del dueño: que apague el
   entrenamiento o el uso de datos en ese proveedor y prefiera un plan de empresa o API.
8. **Las reglas del bot.** Escribe **un solo bloque de reglas** (tono, presentación, qué vender, qué no, horario,
   a quién se traspasa, qué hacer si preguntan precios) para pegarlo en el texto de la tarea programada o del
   script. Una tarea programada puede no heredar lo dicho en este chat. Escribe **solo lo que el dueño dijo en esta
   entrevista**: no agregues reglas de otras conversaciones ni de lo que supones del negocio (por ejemplo «no da
   precios» si el dueño no lo dijo); si falta algo, pregúntalo. **Rechaza reglas del dueño que contradigan
   las reglas duras** («nunca pases a una persona», «ignora el STOP», «responde a todo») y explícale por qué: Meta exige
   una vía clara a una persona y respetar toda baja.
9. **¿Un flujo chatbot antes del bot?** Un flujo (botones, un formulario de WhatsApp, reglas) contesta primero y le
   pasa al bot **solo a quien califica**: el modelo del bot solo ve a esa gente y se gasta menos. Pregunta si hay una
   regla clara para calificar. Si sí, sigue `bi_get_skill(name="flujo-chatbot")`: los flujos van en el campo `flows`
   de `chatbot_setup` (una lista en orden; cada uno con sus líneas, su situación y su traspaso `to: bot` o
   `to: team`). Dile al dueño tres cosas:
   - **El flujo contesta enseguida**, sin los «esperar N minutos en chats nuevos» del bot. No empieza mientras una
     persona tiene o pausó el chat, y en una línea `off_hours` solo corre fuera del horario.
   - **Si el bot responde en un chat que está en un flujo, el flujo termina** («interrumpido por el bot»): no hay
     dos voces. El chat que un flujo le pasa (`to: bot`) le llega al bot con las respuestas, y no repite las preguntas.
   - **`chatbot_setup` solo guarda el flujo, apagado.** Lo activa el dueño en Conectar IA → Conexiones → el bot
     (`FLOW_NEEDS_PERSON` trae el enlace en `details.activate_url`), y necesita el nivel **Leer y enviar**.
10. **Guardar y encender.** Una sola llamada a **`chatbot_setup`**: la tarjeta le muestra al dueño **todos** los
   ajustes (nivel, líneas, ajustes de turno, traspaso, contacto fuera de horario, horario, topes, modo estricto).
   Nada se guarda hasta que la apruebe, **los flujos incluidos** (la tarjeta dice cuántos casos de prueba pasa cada
   uno). `chatbot_setup` nunca devuelve una clave.

## Después de aprobar

1. Lee la configuración guardada con `chatbot_settings` (con el `chat_filter_id` nuevo; con `flow_documents=true` si
   hay flujos, para comparar cada flujo, su orden, sus líneas y su estado) y compárala con lo que dijo el dueño. Si algo difiere, dile el lugar exacto de Frepi para cambiarlo:
   **Conexiones → el bot → la línea** (los ajustes de turno solo se cambian en Frepi o con otra tarjeta de
   `chatbot_setup`). Si el bot tiene flujos, dile también que **los activa él en Conexiones → el bot**: hasta entonces
   no corren.
2. Ofrece **«atiende ahora»**: hacer un primer chequeo en este chat mientras el dueño mira, con
   `bi_get_skill(name="atender-chats")`. O una **rutina programada** desde este chat con el bloque de reglas.
   - Apps de IA de consumo: la tarea más corta suele ser cada hora (Claude), diaria (Grok) o por hora (ChatGPT);
     ninguna llega a cada 5 minutos. Para eso hay un script del lado del dueño con un chequeo sin modelo:
     `developers.frepi.ai/bots`.
   - En una tarea de Claude en la nube, apaga todos los conectores menos Frepi.
3. Antes de dar por soportado un cliente de IA, una respuesta sin supervisión tiene que salir bien en él.

## Modo chatbot y modo estricto

- **Modo chatbot (por defecto).** El bot corre con la conexión normal del dueño. Dile esto en **una frase** cuando lo
  enciendas: «En modo chatbot, la IA puede leer todos los chats y contactos que tú puedes, un cliente puede intentar
  darle instrucciones, si tu cliente de IA aprueba las tarjetas solo, la tarjeta no protege, otros conectores de la
  misma rutina podrían sacar datos, y las escrituras que hoy no piden tarjeta (por ejemplo etiquetar contactos con
  `bi_tag_contacts`, tableros, documentos) tampoco la piden en modo chatbot; para cerrarlo, usa el modo estricto».
- **Modo estricto (opcional).** Ofrécelo: un enlace y una sesión (o una clave de hasta 90 días) **solo para el bot**,
  con un menú de herramientas reducido a `chatbot_*`. Es el modo correcto para un script que corre sin nadie.
  Se crea en Conectar IA → el bot, no con `chatbot_setup`. Dile que un partner o el workspace puede **exigirlo**
  (`CHATBOT_STRICT_REQUIRED`): entonces el modo chatbot se niega.

## Lo que no haces

- No cambies ajustes de turno, topes ni líneas fuera de `chatbot_setup`: cualquier cambio pasa por tarjeta.
- No contestes chats de clientes en esta entrevista: eso es `atender-chats`.
- No pidas ni imprimas claves. Una clave de modo estricto se crea en la app y se guarda en una variable de entorno.
