Search code examples
facebookfacebook-messenger

Getting repeated calls on facebook-messenger webhook


I have successfully setup a facebook-messenger webhook. Until yesterday I was able to send and receive messages as well. But today, when I am sending one message from user, I am getting multiple calls at server webhook POST API. They never seem to stop.


Solution

  • Figured it out. I was sending response to every communication that came from facebook. So I ended up responding to ACK messages as well. In turn one more ACK came. Thats why it led to infinite loop.

    In this page we can find different object structures for messages recieved:

    text

    {
    "object":"page",
    "entry":[
    {
      "id":PAGE_ID,
      "time":1457764198246,
      "messaging":[
        {
          "sender":{
            "id":USER_ID
          },
          "recipient":{
            "id":PAGE_ID
          },
          "timestamp":1457764197627,
          "message":{
            "mid":"mid.1457764197618:41d102a3e1ae206a38",
            "seq":73,
            "text":"hello, world!"
          }
        }
      ]
    }
    ]
    }
    

    Message-Delivered callback

    {
     "object":"page",
     "entry":[
      {
         "id":PAGE_ID,
         "time":1458668856451,
         "messaging":[
            {
               "sender":{
                  "id":USER_ID
               },
               "recipient":{
                  "id":PAGE_ID
               },
               "delivery":{
                  "mids":[
                     "mid.1458668856218:ed81099e15d3f4f233"
                  ],
                  "watermark":1458668856253,
                  "seq":37
               }
            }
         ]
      }
     ]
    }
    

    So, for differentiating we can refer to entry[0].messaging[0].message this exist only in user sent message. Callback or postbacks do not contain this part. Check for this, before responding. If it exists, respond, otherwise dont.