Skip to main content

¿Qué es ctx.jelou?

ctx.jelou es el cliente de mensajería integrado. Permite enviar mensajes de WhatsApp directamente desde tu función sin configurar APIs externas. Está disponible automáticamente cuando la empresa tiene credenciales de la API de Jelou configuradas.

Verificar disponibilidad

ctx.jelou.available es false cuando la empresa no tiene clientId/clientSecret configurados. Llamar a send() o sendTemplate() en un cliente no disponible lanza un Error.

Enviar mensajes

ctx.jelou.send(options)

Envía un mensaje individual. Retorna { messageId: string }.

Mensajes interactivos

Mensajes avanzados

Enviar templates HSM

ctx.jelou.sendTemplate(options)

Envía un template HSM aprobado por WhatsApp. Retorna Array<{ id, destination }>.

Múltiples destinatarios

Template con media

Validar plantillas antes de enviar

Un sendTemplate falla en silencio por tres motivos: el nombre está mal escrito, el idioma no está aprobado, o mandas más o menos parámetros de los que espera la plantilla. ctx.templateRegistry te da acceso al catálogo de plantillas aprobadas del canal para detectarlo antes de llamar a Meta.

Métodos

has() y hasAnywhere() son verificaciones booleanas: si no hay canal asociado o el catálogo no responde, registran una advertencia y devuelven false en lugar de lanzar error. Cuando necesitas una respuesta definitiva usa get(), list() o validate(), que lanzan TemplateRegistryError con un code: unknown_template, language_not_approved, param_count_mismatch, template_paused, registry_unavailable o no_bot_context.
sendTemplate no valida por su cuenta — el catálogo es de solo lectura. Llama a validate() explícitamente cuando quieras la verificación.

En cron y ejecuciones diferidas

En un disparo de cron o de una ejecución diferida no hay canal resuelto, así que has() siempre devolvería false. Lleva el botId en tu propio payload y enlaza el catálogo explícitamente:
for(botId) es seguro en cualquier ruta: en una petición normal simplemente reenlaza al canal indicado.
Los resultados se guardan en caché 90 segundos. Una plantilla aprobada hace un momento puede no aparecer hasta que la caché expire.

Override de canal

Todos los mensajes usan ctx.bot.id por defecto. Para enviar desde otro canal:

Manejo de errores

Testing

Usa createMockJelouClient() para testing sin enviar mensajes reales:

Testing completo

Referencia de createMockJelouClient, createMockMemoryClient y más.