Tickets de soporte (MCP)
- Cómo abrir y dar seguimiento a tickets de soporte de AutoTalk desde un asistente de IA
- Cómo funcionan los adjuntos, el markdown y la prioridad
- El ciclo de vida del ticket y qué transiciones puedes hacer tú mismo
Tu asistente puede abrir tickets con el equipo de AutoTalk en tu nombre, seguir la conversación y cerrar el tema — sin que salgas del editor. Resulta útil justo cuando ya estás ahí: el asistente tiene a mano la petición que falló, el mensaje de error y la captura de pantalla, así que el ticket llega con los detalles que soporte tendría que pedir después.
create_support_ticket escribe en la cola de soporte de AutoTalk. Para hablar con tus usuarios finales, usa send_message — consulta Servidores MCP.
Requisitos previos
El mismo token de API y el mismo endpoint MCP que cualquier otra herramienta — no hay nada extra que habilitar.
Las herramientas
| Herramienta | Qué hace |
|---|---|
create_support_ticket | Abre un ticket. subject, body y, opcionalmente, category, priority, attachments, requesterUserId |
reply_to_support_ticket | Añade tu respuesta al ticket y notifica al equipo de soporte |
get_support_ticket | Devuelve un ticket con todo su hilo de respuestas |
list_support_tickets | Lista tus tickets, con la actividad más reciente primero. Opcionales: status, page, limit (por defecto 20, máximo 50) |
resolve_support_ticket | Marca el ticket como resuelto porque el problema ya está corregido |
reopen_support_ticket | Reabre un ticket resuelto cuando el problema vuelve |
Todas las herramientas están acotadas a tu propia empresa. Un ticket de otra empresa aparece simplemente como ticket_not_found.
Abrir un ticket
Pídelo en lenguaje natural — el asistente completa el resto:
Abre un ticket técnico de prioridad alta sobre el canal de Telegram que pierde mensajes desde esta mañana, y adjunta la captura que acabo de tomar.
El body es markdown, y se renderiza como markdown en la vista del ticket y en el correo de notificación. Las listas, code, la negrita y los enlaces se conservan, así que pega el payload que falló en un bloque de código en vez de aplastarlo en una frase.
{
"subject": "El canal de Telegram dejó de entregar mensajes entrantes",
"body": "Desde ~09:00 UTC de hoy, los mensajes entrantes se detienen en el webhook.\n\n- Canal: `tg-main`\n- Último mensaje entregado: 09:04 UTC\n- El envío sigue funcionando\n\nRespuesta del webhook:\n\n```\n502 Bad Gateway\n```",
"category": "technical",
"priority": "high"
}
category acepta billing, technical, account, feature_request u other — el valor por defecto es other. Un valor no reconocido cae al valor por defecto en lugar de hacer fallar la llamada.
Adjuntos
create_support_ticket acepta hasta 6 adjuntos como referencias de almacenamiento:
"attachments": [{ "bucket": "autotalk-prod", "fullPath": "companies/<id>/api/images/mcp_upload/<id>.png" }]
Obtén esas referencias con upload_file_inline, o con begin_file_upload + complete_file_upload — el mismo flujo descrito en Subir archivos. Una captura de la pantalla rota suele resolver un ticket más rápido que párrafos describiéndola.
Las referencias se validan contra el prefijo de almacenamiento de tu propia empresa. Una ruta que pertenece a otro cliente se descarta del ticket en vez de adjuntarse, así que un adjunto que desaparece sin aviso suele ser una ruta de la empresa equivocada.
Los adjuntos se aceptan al abrir el ticket. Para añadir uno a un ticket existente, sube el archivo e incluye la referencia como enlace en el cuerpo de una respuesta.
A nombre de quién va el ticket
/v1 autentica una empresa, no a una persona, así que un ticket abierto por MCP se atribuye por defecto al propietario de la empresa.
Para atribuirlo a alguien concreto del equipo, pasa requesterUserId. Ese usuario debe pertenecer a tu empresa — si no, la llamada falla con requester_not_in_company, y es a propósito: impide abrir un ticket a nombre de otra persona.
Prioridad y plazos de respuesta
priority define el plazo de respuesta al que apunta soporte:
| Prioridad | Plazo |
|---|---|
urgent | 2 horas |
high | 8 horas |
normal | 24 horas (por defecto) |
low | 72 horas |
Son plazos de reloj corrido, contados desde el momento en que la pelota está del lado de soporte — cuando abres el ticket y, de nuevo, cada vez que respondes. Reserva urgent para cuando el soporte realmente se detuvo; inflar la prioridad no acelera nada.
Ciclo de vida del ticket
| Estado | Significado |
|---|---|
open | Abierto, aún sin tomar |
pending_agent | Esperando a AutoTalk |
pending_customer | Esperándote a ti |
resolved | Resuelto — reversible |
closed | Cerrado en definitiva |
Lo que puedes hacer tú mismo:
- Responder en cualquier momento, salvo en un ticket
closed. Responder a un ticketresolvedlo reabre, así que no necesitasreopen_support_ticketsolo para decir "volvió a pasar". - Resolver desde
open,pending_agentopending_customer. Es la forma elegante de cerrar cuando lo arreglaste tú — evita que soporte siga persiguiendo un problema que ya no existe. - Reabrir únicamente desde
resolved. closedes definitivo. Abre un ticket nuevo; si intentas responder, recibirásticket_closed.
¿Por qué no create_document?
support_tickets es de solo lectura para los clientes a través de las herramientas genéricas de documentos, y es intencional. Un ticket escrito directamente no tendría solicitante, ni plazo de respuesta, ni notificación al equipo — se quedaría en la base de datos sin llegar nunca a una persona. Las herramientas de arriba ejecutan el mismo camino de código que el formulario de soporte del panel, así que un ticket abierto desde tu editor es indistinguible de uno abierto en la aplicación.
Todavía puedes leer tickets con query_documents; support_tickets es un slug reservado, por lo que no puede usarse como nombre de tipo personalizado.
Errores
| Error | Significado |
|---|---|
missing_params | subject o body llegó vacío |
invalid_ticket_id | Id de ticket no válido |
ticket_not_found | No existe ese ticket en tu empresa |
ticket_closed | No se puede responder a un ticket cerrado — abre uno nuevo |
ticket_not_resolvable | Ya está resuelto o cerrado |
ticket_not_reopenable | Solo un ticket resolved puede reabrirse |
requester_not_in_company | El requesterUserId no pertenece a tu empresa |
invalid_requester_user_id | El requesterUserId no es un id de usuario válido |
no_requester_available | No se pudo identificar al propietario de la empresa para atribuir el ticket |