Closed Lautarotetamusa closed 1 week ago
Logré solucionarlo de un modo bastante extraño.
Me basé en este articulo. Se puede ver que es necesario subscribirse al webhook con cada numero waba.
revisa GET https://graph.facebook.com/v20.0/260492810474024/subscribed_apps
y obtuve un resultado raro con un campo 'override_url'.
response:
{
"data": [
{
"whatsapp_business_api_data": {
"link": "https://www.facebook.com/games/?app_id=1904002940034962",
"name": "Rebora",
"id": "1904002940034962"
},
"override_callback_uri": "https://chatwoot-production-000c.up.railway.app/webhooks/whatsapp/+5213328092850"
}
]
}
Al parecer este campo "override_callback_url" se agrega cuando intentamos agregar una url de ngok
como callback. La solución es la detallada a continuación:
Borrar la subscripción de ese waba_id haciendo DELETE https://graph.facebook.com/v20.0/260492810474024/subscribed_apps
y volver a cargarla con POST https://graph.facebook.com/v20.0/260492810474024/subscribed_apps
Para todas estas peticiones es necesario pasar el access token dentro de los headers. Se hace de este modo:
'Authorization: Bearer
El
Después del primer mensaje recibido vuelve a aparecer este campo override_callback_url
Logré cambiar el override_callaback_url de la siguiente manera.
POST https://graph.facebook.com/v20.0/260492810474024/subscribed_apps
{
"override_callback_uri":"https://reboraautomatizaciones.com/app/webhooks",
"verify_token":<TOKEN>
}
Parece que cuando intento usar el ngrok para testearlo vuelve a sobreescribir la url.
Ni bien envío un mensaje al Bot la URL se vuelve a cambiar.
La URL se está cambiando aleatoriamente, seguramente el token está expuesto o la forma de verificación es incorrecta.
Corregí la función de verificación del token, hay que comparar hub.verify con el token que le pasamos y ahi enviar la respuesta. Antes estaba enviando el hub.challenge siempre sin verificar el secret token. Lo que producía que servicios de terceros pudieran acceder a la api
Meta no envía ninguna petición al servidor cuando llega un mensaje nuevo. sin embargo, cuando le damos al botón de "test" dentro de bussiness facebook, si la envía bien.