CRM - Agente con IA Developers

Gestionar conversaciones

Asigná responsables, cambiá estados y guardá datos de tu sistema en una conversación. Los ejemplos usan las variables de la introducción y el ID público 4821.

Asignar agente o equipo

Consultá GET .../inboxes/{inbox_id}/assignable_agents para elegir un agente válido de la bandeja. Después:

curl --fail-with-body --request POST \
  "$CRM_BASE_URL/api/v1/accounts/$CRM_ACCOUNT_ID/conversations/4821/assignments" \
  --header "api_access_token: $CRM_API_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{ "assignee_id": 7 }'

Para un equipo, enviá {"team_id": 3} a la misma ruta. Para desasignar, enviá {"assignee_id": null}. Si querés actualizar equipo y agente, hacelo en requests separados: cuando ambos vienen juntos, el controlador prioriza assignee_id.

Validá los IDs antes de asignar. Un ID inexistente puede interpretarse como una desasignación. Además, la cuenta puede restringir las asignaciones a administradores.

Cambiar el estado

curl --fail-with-body --request POST \
  "$CRM_BASE_URL/api/v1/accounts/$CRM_ACCOUNT_ID/conversations/4821/toggle_status" \
  --header "api_access_token: $CRM_API_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{ "status": "resolved" }'
Estado Uso
open Conversación abierta.
pending Pendiente; puede participar del flujo de bots de la instalación.
snoozed Pospuesta. Se puede enviar snoozed_until con una fecha ISO 8601.
resolved Resuelta.

Mandá siempre el estado explícito: sin status, la ruta alterna el estado. Resolver o reabrir puede disparar automatizaciones. No uses el estado como sustituto de un control explícito del asistente de IA.

Agregar etiquetas sin borrar las existentes

curl --fail-with-body --request POST \
  "$CRM_BASE_URL/api/v1/accounts/$CRM_ACCOUNT_ID/conversations/4821/labels" \
  --header "api_access_token: $CRM_API_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{ "labels": ["pedido-confirmado"], "mode": "append" }'

Sin mode: "append", labels reemplaza el conjunto completo. Un array vacío sin ese modo elimina las etiquetas actuales. Para quitar solo una, leé las etiquetas, calculá el conjunto final y enviá la lista; coordiná escrituras simultáneas para no perder cambios de otros usuarios.

Prioridad

POST .../conversations/4821/toggle_priority acepta:

{ "priority": "high" }

Los valores son urgent, high, medium, low o null para quitar la prioridad.

Atributos personalizados

Primero definí el atributo en Ajustes → Atributos personalizados, con el tipo y modelo correctos (contacto o conversación). Podés consultar las definiciones con GET .../custom_attribute_definitions.

POST .../conversations/4821/custom_attributes reemplaza el objeto completo. Para agregar un valor conservando los demás, leé la conversación, combiná los atributos y enviá el resultado. Este ejemplo necesita jq:

conversation=$(curl --fail-with-body \
  "$CRM_BASE_URL/api/v1/accounts/$CRM_ACCOUNT_ID/conversations/4821" \
  --header "api_access_token: $CRM_API_TOKEN") || exit 1

payload=$(printf '%s' "$conversation" | jq \
  '{custom_attributes: ((.custom_attributes // {}) + {numero_pedido: "ERP-2048"})}') || exit 1

curl --fail-with-body --request POST \
  "$CRM_BASE_URL/api/v1/accounts/$CRM_ACCOUNT_ID/conversations/4821/custom_attributes" \
  --header "api_access_token: $CRM_API_TOKEN" \
  --header "Content-Type: application/json" \
  --data "$payload"

La lectura y la escritura no son atómicas. Si más de un sistema actualiza estos campos, coordiná un único escritor o reconciliá los cambios. En los contactos, la actualización sí combina las claves enviadas con las existentes.

additional_attributes contiene metadatos del canal y del sistema. No lo uses como sustituto de tus atributos personalizados ni sobrescribas el origen de anuncios para guardar datos propios.

Verificar los cambios

Volvé a consultar GET .../conversations/4821 y comprobá status, labels, priority, custom_attributes, meta.assignee y meta.team. Para reaccionar a cambios, suscribite a webhooks; las actualizaciones pueden llegar repetidas o fuera de orden.

¿Falta algo en la documentación?

Contanos qué intentabas hacer y qué información necesitás. El equipo revisa cada reporte para mejorar estas guías.

La página se incluye en el reporte. No necesitás una cuenta de Monday.