Recepción: respuestas frecuentes y cliente en vivo
Inbox usa una lista, encabezado, burbujas y compositor compactos; muestra envíos pendientes inmediatamente y mantiene los datos del cliente actualizados.
Qué revisar
Abre la conversación correcta en Inbox.
Escribe / y busca por nombre o atajo.
Inserta, revisa y edita el texto antes de enviarlo.
El menú Adjuntar de web y móvil permite elegir fotos, documentos, audio, video y ubicación; Documento acepta los formatos de oficina y archivos comunes permitidos por Marduko.
El compositor se libera al iniciar el envío; los adjuntos se suben en paralelo y su selector permanece sobre el compositor.
Para compartir ubicación en web o móvil, abre Adjuntar y elige Ubicación. Marduko usa el permiso del dispositivo para mostrar el GPS actual y establecimientos de Google Places ordenados por distancia; selecciona uno, revisa el mapa y confirma. En móvil el minimapa es una imagen segura compatible con iPhone y Android. Marduko envía un punto fijo porque Meta no permite ubicación en vivo desde sistemas externos.
Si acabas de cobrar saldo o verificar una reseña, conserva abierta la ficha: se actualizará automáticamente.
Para una cita histórica o futura, abre Calendario, busca por cliente, teléfono, email o fecha AAAA-MM-DD y selecciona el resultado.
Para registrar un apartado, abre la cita, selecciona Apartado, confirma monto y método de pago; el cobro conserva el estado de la cita y el encabezado muestra el acumulado.
Para eliminar un apartado, abre Ver en el acumulado, selecciona su movimiento y elimínalo como una venta; el saldo se revierte.
Si eliminas una cita con apartado, Eliminar sólo cita conserva la venta y el saldo del cliente; Eliminar cita y apartado revierte la venta y retira ese saldo. Marduko nunca decide borrar dinero silenciosamente.
Revisa el concepto Apartado en el detalle de venta o recibo; otros abonos se muestran como Saldo / crédito.
Desde la ficha del cliente, usa Conversaciones para abrir el hilo vinculado y enviar texto o una plantilla existente en Inbox.
Para compartir información comercial, usa Enviar catálogo; las tarjetas con foto muestran en Marduko su descripción debajo de la imagen.
Las reacciones de WhatsApp, Instagram y Messenger aparecen en el mensaje original. En computadora usa el icono a la derecha al pasar el puntero; en móvil mantén presionado el mensaje recibido. Instagram admite corazón.
Filtra por canal y usa sus contadores o la pestaña No leídas para priorizar la atención.
Los badges muestran exclusivamente mensajes nuevos no leídos: total general, desglose por canal y el mismo total en No leídos. Todos, Míos, Sin asignar y Cerrados no llevan badge.
El desglose unread normaliza el proveedor sin distinguir mayúsculas; todo mensaje con provider WhatsApp debe sumar tanto al total como al badge WhatsApp.
Los enlaces aparecen como tarjetas; las respuestas muestran su referencia y, cuando Meta entrega el dato, la burbuja identifica si el contacto llegó desde una publicación o anuncio.
Los replies a imágenes y archivos guardan una referencia estructurada al adjunto original. Web y móvil muestran miniatura o icono y permiten abrir el archivo desde la respuesta.
La tarjeta de Meta muestra el anuncio específico mediante su ID, encabezado, descripción, imagen o video y enlace cuando el webhook los incluye. El Agente IA usa ese contexto para reconocer el trabajo, servicio o producto anunciado sin inventar información faltante.
Si Instagram entrega únicamente source_id, Marduko intenta completar el creativo desde Graph API. Para obtener nombre interno, campaña y conjunto de anuncios, la conexión debe contar con ads_read; sin ese permiso se conserva el ID y no se inventa el contenido.
En móvil el compositor debe permanecer visible encima del teclado. Si el envío falla, conserva el borrador y verifica la sesión y la conexión antes de reintentar.
Si fallan WhatsApp, Instagram y Messenger al mismo tiempo, revisa INBOX_SEND_LIMITER_ERROR y confirma que la función check_inbox_send_limits esté instalada con la firma vigente.
Si falla solamente Instagram, revisa META_INBOX_SEND_FAILED. El registro incluye código, subcódigo y trace de Meta sin guardar el token ni el texto del cliente; distingue ventana de respuesta, permisos, token y destinatario inválido antes de reconectar el canal.
Para retomar una conversación de WhatsApp, el envío manual admite cualquier plantilla aprobada que la política permita al usuario. Activa sólo selecciona la versión utilizada por automatizaciones; si una plantilla aprobada desapareció de Meta, sincroniza WhatsApp Center y vuelve a elegirla.
Si Supabase reporta dos candidatos de check_inbox_send_limits, elimina la firma antigua cuyo client_message_id es uuid y conserva únicamente la firma text.
Una respuesta rápida de WhatsApp puede llegar sin profile.name; conserva el nombre existente del contacto y no lo reemplaces por el teléfono.
Los enlaces directos a Inbox deben limpiar cid, conversationId, messageId y mid después de abrir el destino para no regresar al hilo anterior.
El historial muestra chips de fecha (Hoy, Ayer o fecha) y una línea Mensajes nuevos antes del primer mensaje que estaba pendiente al abrir la conversación.
Leído y no leído son estados compartidos del negocio. Abrir el hilo lo marca leído para todos; desde los tres puntos del encabezado usa Marcar como no leída para devolverlo a pendientes de todo el equipo.
Los webhooks de WhatsApp se asignan por phone_number_id y WABA. Si una reparación dejó canales históricos, Marduko selecciona el canal conectado más reciente del WABA correcto. Un error del contador no leído se registra como inbound_counter_error pero no debe impedir que el mensaje aparezca.
Un teléfono puede pertenecer a clientes independientes de varios negocios. Contacto, cliente enlazado, conversación e historial siempre se consultan con business_id; una ambigüedad entre negocios se bloquea como WHATSAPP_WEBHOOK_CROSS_BUSINESS_AMBIGUITY_BLOCKED y nunca se resuelve por aproximación.
META_WEBHOOK_PROCESSING_ERROR con 'multiple (or no) rows returned' indica registros históricos duplicados de canal, contacto o conversación. El receptor selecciona el candidato correcto y devuelve 500 ante fallos reales para que Meta reintente sin duplicar el mensaje.
Al cargar Inbox, el estado compartido de la conversación sustituye contadores antiguos por empleado. Si el RPC de conteos falla, los chips usan las conversaciones cargadas como respaldo y no deben quedar ocultos.
Una carga atrasada del historial se concilia con mensajes optimistas y en tiempo real por ID local, ID del dispositivo e ID de Meta; no debe hacer desaparecer plantillas, fotos o ubicaciones que ya estaban visibles.
Leer, asignar o cambiar el estado compartido no reordena el Inbox. Solo last_message_at o sort_time nuevos mueven una conversación al inicio. Las plantillas muestran encabezado, cuerpo envuelto, pie y botones en una tarjeta vertical adaptable.
El buscador de Inbox consulta nombre, usuario, teléfono, correo y todo el historial de mensajes. Cuando coincide un mensaje anterior, la lista muestra un fragmento con el término resaltado en lugar de limitarse al último mensaje.
En Agente IA configura el nombre del bot y activa Identificar las respuestas del Agente IA. Si la firma visible queda vacía, sigue automáticamente ese nombre; una firma personalizada distinta se conserva. WhatsApp usa pie o firma según el formato; Instagram y Messenger agregan una firma breve.
Atención humana y Agente IA apagado deben impedir tanto la respuesta del agente como el respaldo automático para esa entrada.