Search code examples
c#asp.net-mvcnode.jsfacebookfacebook-messenger

Facebook Messenger API implementation in c# asp.net mvc app


In node.js implementation like

app.post('/webhook/', function(req, res) {  
console.log("message received " + req.body);
if(!req.body){
    console.log("no request body found");
    res.sendStatus(200);
    return;
}

messaging_events = req.body.entry[0].messaging;
for (i = 0; i < messaging_events.length; i++) {
    event = req.body.entry[0].messaging[i];
    sender = event.sender.id;
    console.log("sender " + event.sender + ", message " + event.message.text);
    if (event.message && event.message.text) {
        text = event.message.text;
        // Handle a text message from this sender
        sendTextMessage(sender, "Text received, echo: "+ text.substring(0, 200));
    }
}

res.sendStatus(200);
});

How to implement it in .net mvc application. especially how to implement this line

app.post('/webhook/', function(req, res)

in controller in mvc.


Solution

  • at last searching and gathering some data

    facebook post model json data like this

    {
    "entry": [{
    
        "messaging":[{
            "sender": {
              "id": "1126306517444636"
            },
            "recipient": {
              "id": "514501872066958"
            },
            "timestamp": 1469541638971,
            "message": {
              "mid": "mid.1469541638961:5d5d5d5bf1194eb824",
              "seq": 64,
              "text": "hi"
            }
    
            }
            ]
       }
    ]
    }
    

    So we have to create model like this

    public class Sender
    {
       public string id { get; set; }
    }
    
    public class Recipient
    {
        public string id { get; set; }
    }
    
    public class Message
    {
        public string mid { get; set; }
        public int seq { get; set; }
        public string text { get; set; }
    }
    
    public class Messaging
    {
        public Sender sender { get; set; }
        public Recipient recipient { get; set; }
        public long timestamp { get; set; }
        public Message message { get; set; }
    }
    
    public class Entry
    {
        public List<Messaging> messaging { get; set; }
    }
    
    public class RootObject
    {
         public List<Entry> entry { get; set; }
    }
    

    and in controller class

    public ActionResult Webhook(RootObject model)
    {
        ....................................
    }