Saltar al contenido principal

Migrar desde Meta

Si ya tienes una integración funcionando contra el Graph, la migración es un cambio de dos cadenas. El resto de esta guía trata de todo lo que hay alrededor.

Desde la Meta Cloud API directa​

1. Conecta el número​

El número debe salir de tu Business Manager y entrar en el nuestro. En el panel, en Conectar número, el Embedded Signup lo hace — el cliente autoriza desde la ventana de Facebook.

Mientras el número no se migre, tu integración antigua sigue funcionando con normalidad.

2. Cambia dominio y token​

- https://graph.facebook.com/v21.0/{PHONE_NUMBER_ID}/messages
+ https://api.joinotify.com/v1/{PHONE_NUMBER_ID}/messages

- Authorization: Bearer EAAG...
+ Authorization: Bearer sk_live_xxx

El phone_number_id cambia en la migración. Toma el nuevo de GET /me o del panel.

Si tu código pasa el token como ?access_token=, eso debe cambiar: en Joinotify el token va siempre en la cabecera. Consulta Compatibilidad con Meta.

3. Apunta los webhooks​

Ya no configuras callback en Meta. Registra tu endpoint aquí:

curl -X POST https://api.joinotify.com/webhook-endpoints \
-H 'Authorization: Bearer sk_live_xxx' \
-H 'Content-Type: application/json' \
-d '{ "name": "produccion", "url": "https://tu-servidor.com/webhooks", "events": [] }'

El cuerpo entregado es el mismo sobre de Meta, así que tu handler no cambia. Lo que sí cambia es la validación de firma:

- X-Hub-Signature-256: sha256=<hmac del cuerpo con el App Secret>
+ X-Joinotify-Signature-256: sha256=<hmac de "{timestamp}.{cuerpo}" con el whsec_>

El paso a paso está en Verificar la firma.

4. Recrea las plantillas​

Las plantillas creadas en tu WABA antigua no vienen contigo. Recréalas y espera la aprobación antes de dar el cambio — es lo que más retrasa una migración.

curl https://api.joinotify.com/templates \
-H 'Authorization: Bearer sk_live_xxx'

5. Da el cambio​

Con el número migrado, las plantillas aprobadas y el webhook registrado, cambia la URL base en producción. El phone_number_id nuevo entra al mismo tiempo.

Desde otro proveedor (BSP)​

El camino es el mismo, con un detalle más: el número debe ser liberado por el proveedor actual antes de entrar en nuestro Business Manager. Algunos cobran o imponen un preaviso — revisa el contrato antes de fijar una fecha.

Si el proveedor actual expone una API propietaria en lugar del contrato de Meta, tu código de envío hay que reescribirlo. El espejo /v1 de Joinotify sigue a Meta, no al proveedor.

Lo que no migra​

ElementoSituación
Historial de conversacionesNo migra. En coexistencia, se puede sincronizar desde el móvil.
PlantillasHay que recrearlas y volver a aprobarlas.
Calidad del númeroEmpieza de cero.
Límite de mensajes en 24hEmpieza en el nivel inicial y sube con el uso.
phone_number_id y waba_idCambian. Actualízalos donde estén guardados.

Lista de verificación​

  • Número conectado en el panel de Joinotify
  • phone_number_id y waba_id nuevos anotados
  • Clave de API creada y guardada en un gestor de secretos
  • Token movido a la cabecera Authorization (nada de ?access_token=)
  • URL base cambiada a https://api.joinotify.com/v1/
  • Plantillas recreadas y aprobadas
  • Endpoint de webhook registrado y probado con POST /webhook-endpoints/{id}/test
  • Validación de firma cambiada a X-Joinotify-Signature-256
  • Tratamiento del 429 con Retry-After implementado
  • Integración antigua apagada solo tras el primer mensaje entregado por la nueva