Ready?

mari, setelah sukses konfigurasi awal. kita tela'ah apa struktur yang dibuat saat sebuat pesan diterima dari user.

/Webhook POST Verb

app.post('/webhook', (req, res) => {
    console.log(req.body);
    if (req.body.object === 'page') {
      req.body.entry.forEach((entry) => {
        entry.messaging.forEach((event) => {
          if (event.message && event.message.text) {
            //sendMessage(event);
            //console.log(event);
          }
        });
      });
      res.status(200).end();
    }
  });

ketika dicek di console, maka struktur yang dikirim user adalah sebagai berikut

{ object: 'page',
  entry: 
   [ 
       { 
           id: '261180211076328',
           time: 1509126665343,
           messaging: [Object] 
       } 
   ] 
}

Lanjutannya. Kita akan buat gimana agar Webhook kita mampu mereply pesan. agar lebih mudah dalam proses request network. kita akan menggunakan module request.

$ npm install request --save
const request = require('request');

Proses Pengiriman Text Standard

{
  "recipient": {
    "id": "USER_ID"
  },
  "message": {
    "text": "Balasan!"
  }
}

Link Referensi : https://developers.facebook.com/docs/messenger-platform/send-messages

Fungsi Send Messages

function sendMessage(event) {
    let sender = event.sender.id;
    let text = event.message.text;

    /* Test Data */
    console.log("Dikirim ke %s ", sender);

    request({
      url: 'https://graph.facebook.com/v2.6/me/messages',
      qs: {access_token: ACCESS_TOKEN},
      method: 'POST',
      json: {
        recipient: {id: sender},
        message: {text: text}
      }
    }, function (error, response) {
      if (error) {
          console.log('Error sending message: ', error);
      } else if (response.body.error) {
          console.log('Error: ', response.body.error);
      }
    });
  }

kemudian cek dengan mencoba mengirimkan pesan di facebook page

Mencoba Attachment Files ? bisa jenis file apa saja ?

  • [ ] audio
  • [ ] video
  • [ ] image
  • [ ] file

Request Untuk Gambar Adalah Sebagai Berikut.

{
"recipient":{
    "id":"1254459154682919"
  },
  "message":{
    "attachment":{
      "type":"image", 
      "payload":{
        "url":"http://www.messenger-rocks.com/image.jpg", 
        "is_reusable":true
      }
    }
  }
}

mari mencoba implementasikannya di coding.

function sendImageFile(event) {
    let sender = event.sender.id;
    let text = event.message.text;

    /* Create Data Structured */
    var messageData = {
        "attachment":{
            "type":"image",
            "payload":{
                "url":"http://www.100resilientcities.org/wp-content/uploads/2017/06/semarang-tugu-muda.jpg", 
                "is_reusable":true
            }
        }
    };
    /* Test Data */
    console.log("Dikirim ke %s ", sender);

    request({
      url: 'https://graph.facebook.com/v2.6/me/messages',
      qs: {access_token: ACCESS_TOKEN},
      method: 'POST',
      json: {
        recipient: {id: sender},
        message: messageData
      }
    }, function (error, response) {
      if (error) {
          console.log('Error sending message: ', error);
      } else if (response.body.error) {
          console.log('Error: ', response.body.error);
      }
    });
  }

coba dijalankan. Bagaimana ?

Mencoba membuat Template untuk Reply.

var messageTemplate = {
        "attachment":{
            "type":"template",
            "payload":{
              "template_type":"button",
              "text":"Mau Trip Ke Semarang Nggak?",
              "buttons":[
                {
                    "type":"web_url",
                    "url":"https://www.rakaadinugroho.com",
                    "title":"Booking Hotel"
                },
                {
                    "type":"postback",
                    "title":"Paket Wisata",
                    "payload":"NANYA_CHAT"
                }
              ]
            }
          }
    };

Klik booking Hotel akan menuju situs messenger. dan klik nanya lagi, akan menampilkan data tertentu.

Handle Payload Dari Template. Hasil Response nya adalah sebagai berikut

{ recipient: { id: '261180211076328' },
  timestamp: 1509129607458,
  sender: { id: '1777062502356572' },
  postback: { payload: 'NANYA_CHAT', title: 'Paket Wisata' } }

Penambahan Untuk Handle postback standard template

if (event.message && event.message.text) {
            ......
}  else if(event.postback && event.postback.payload){
    console.log();
    switch(event.postback.payload){
        case 'NANYA_CHAT':
            quickReply(event.sender.id);
            break;

        default:
            console.log('nggak ada');
            break;
    }
  }

Fitur Quick Reply

var dataQuickReply  = {
        "text": "Choose your Trip Plan",
        "quick_replies":[
            {
                "content_type": "text",
                "title": "2D3N",
                "payload": "2D3N"
            },
            {
                "content_type": "text",
                "title": "3D2N",
                "payload": "3D2N"
            }
        ]
    };

Dan Hasil Akhirnya Seperti Ini.

results matching ""

    No results matching ""