PATCH
/api/mod/kommo/{espacio}/configConecta y ajusta Kommo
Guarda el subdominio y el token de tu cuenta, y enciende o ajusta el chat automático, las notas de voz, las etapas y la sincronización. Solo cambia lo que mandas.
- PERMISOescribe
- CRÉDITOSno gasta
- AUTENTICACIÓNBearer bth_…
PARÁMETROS
| CAMPO | TIPO | REQUERIDO | QUÉ ES |
|---|---|---|---|
| espacio | string | SÍ | El id del espacio (sale en GET /api/companies). Tiene que tener el módulo Kommo. |
CUERPO · JSON
| CAMPO | TIPO | REQUERIDO | QUÉ ES |
|---|---|---|---|
| credenciales | { clave: valor } | no | access_token: el token de larga duración de tu integración privada de Kommo. Para OAuth, client_id y client_secret. Se fusiona clave a clave: ver notas. |
| subdomain | string | no | El subdominio de tu cuenta: tiendaaurora en tiendaaurora.kommo.com. |
| modo_canal | "custom" | "salesbot" | no | Por dónde llegan los mensajes: custom, el canal de chat de Bentho en tu cuenta; salesbot, un paso de tu Salesbot (para los canales oficiales de Kommo, como WhatsApp). Por defecto custom. Ver la guía. |
| auth_mode | "long_lived" | "oauth" | no | long_lived (por defecto): un token de larga duración de Kommo. oauth: con renovación. |
| token_expires_at | number | no | Con OAuth, cuándo caduca el token, en segundos desde 1970; se renueva solo. Al pegar un token de larga duración, manda 0. |
| bot_activo | boolean | no | El chat automático: Bentho contesta los mensajes que llegan por Kommo. Por defecto false. |
| chat_allowlist | string[] | no | Chats de prueba: si tiene ids, el bot solo contesta a esas conversaciones y calla en las demás. Vacía (por defecto), contesta a todas. Con el Salesbot y los webhooks del CRM, el id es el del lead de Kommo. |
| pausa_humano_ttl_s | integer | no | Segundos que el bot se calla en un chat después de que escribe una persona de tu equipo. Por defecto 3600. |
| debounce_s · debounce_max_s | number | no | Si el cliente escribe varios mensajes seguidos, se contestan juntos: espera debounce_s de silencio (10 por defecto), y nunca más de debounce_max_s desde el primero (30). 0 en debounce_s: uno por uno. |
| audio_activo | boolean | no | Transcribir las notas de voz y contestarlas como texto. Por defecto false. Pide el módulo Transcripción. |
| audio_idioma | string | no | El idioma de las notas de voz. Por defecto "es". |
| audio_duracion_max_s | integer | no | Por encima de esta duración no se transcribe: el bot le pide al cliente que lo escriba o lo resuma. Por defecto 120. |
| audio_max_por_turno | integer | no | Notas de voz que se transcriben, como mucho, en una misma respuesta. Por defecto 3. |
| adjuntos_activo | boolean | no | Las imágenes y PDF que manda el cliente (JPG, PNG, WEBP, HEIC o PDF) se adjuntan como comprobante de pago a su pedido en curso. Por defecto false. |
| adjuntos_tamano_max_mb | number | no | El tamaño máximo de un adjunto, en MB. Por defecto 10. Lo que pase se queda en Kommo. |
| add_message_texto_activo | boolean | no | Atender también el texto que llega por el webhook de mensaje entrante, además del Salesbot. Por defecto true: así no se pierde ningún mensaje. |
| salesbot_liberacion_inmediata | boolean | no | En modo salesbot: libera tu Salesbot al instante y entrega la respuesta con un bot aparte (salesbot_bot_entrega_id). Por defecto false. |
| salesbot_bot_entrega_id | integer | null | no | El id del Salesbot de Kommo que muestra la respuesta, con la liberación inmediata. |
| salesbot_paso_cierre | integer | null | no | El paso al que salta tu Salesbot para cerrarse. null: termina donde esté. |
| mapeo_estados | { estado: { pipeline_id, status_id } } | no | A qué etapa de Kommo va cada estado del cliente en Bentho: nuevo, contactado, ganado, cerrado y handoff (requiere humano). Los ids, de embudos. Se reemplaza entero. |
| responsable_handoff_id | integer | null | no | El id del usuario de Kommo al que se asigna el lead cuando el cliente pide una persona. |
| sync_leads_activo | boolean | no | Mover las tarjetas de Kommo cuando cambia el estado del cliente en Bentho. Por defecto false. |
| amojo_id | string | null | no | El id de tu cuenta en el chat de Kommo. Lo rellena probar la conexión. |
| scope_id | string | null | no | En modo custom: el del canal de chat conectado a tu cuenta. |
| agent_ref_id | string | null | no | En modo custom: el usuario de Kommo que firma las respuestas, para que no parezcan del cliente. |
| name | string | no | Un nombre para la conexión. Por defecto, el id del espacio. |
RESPUESTA 200
La configuración ya cambiada, con todos los campos de GET config. Los que conviene mirar:
| CAMPO | TIPO | QUÉ ES |
|---|---|---|
| is_configured | boolean | true si hay subdominio y token de acceso: lo mínimo para hablar con Kommo. |
| credenciales_set | string[] | Los nombres de las credenciales guardadas (access_token, client_id…). Sus valores no salen nunca. |
ERRORES DE ESTA RUTA · SIEMPRE {"detail": …}
| STATUS | CUÁNDO | DETAIL LITERAL |
|---|---|---|
| 403 | El espacio no tiene el módulo Kommo | módulo no habilitado para este espacio. |
| 403 | La clave es de solo lectura | Tu cuenta es de solo lectura en este espacio. |
| 422 | Un campo de otro tipo, o un valor fuera de su lista (detail es una lista) | — |
Y los de cualquier ruta —clave inválida, cuenta no al día, IP, límites—, en Errores, límites y créditos.
CONVIENE SABER
credencialesse fusiona clave a clave: una clave nueva se añade, una que ya estaba se reemplaza y un valor vacío no borra nada. Los valores no se devuelven nunca.- Al pegar un token de larga duración, manda también
auth_mode: "long_lived"ytoken_expires_at: 0: así no se intenta renovar con datos de OAuth viejos. mapeo_estadosse reemplaza entero: manda el objeto completo. Para dejar un estado sin etapa, mándalo sin esa clave.- Después, prueba la conexión.