Lautarotetamusa / LeadsExtractor

2 stars 0 forks source link

Meta no envía la request al webhook cuando llega un mensaje nuevo. #18

Closed Lautarotetamusa closed 1 week ago

Lautarotetamusa commented 2 weeks ago

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.

Lautarotetamusa commented 2 weeks 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 se encuentra en esta página waba_id: 260492810474024

Lautarotetamusa commented 2 weeks ago

Después del primer mensaje recibido vuelve a aparecer este campo override_callback_url

Lautarotetamusa commented 2 weeks ago

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.

Lautarotetamusa commented 2 weeks ago

Ni bien envío un mensaje al Bot la URL se vuelve a cambiar.

Lautarotetamusa commented 2 weeks ago

La URL se está cambiando aleatoriamente, seguramente el token está expuesto o la forma de verificación es incorrecta.

Lautarotetamusa commented 1 week ago

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