Невозможно отправить шаблон кнопки в качестве ответа на платформе Facebook Messenger (Node.js)

Я разрабатываю чат-бот на платформе Facebook Messenger, используя Node.js. Это мой действующий код для настройки текстового ответа:

const fbReq = request.defaults({
  uri: 'https://graph.facebook.com/me/messages',
  method: 'POST',
  json: true,
  qs: {
    access_token: Config.FB_PAGE_TOKEN
  },
  headers: {
    'Content-Type': 'application/json'
  },
});


const fbMessage = (recipientId, msg, cb) => {
  const opts = {
    form: {
      recipient: {
        id: recipientId,
      },
      message: {
        text: msg,
      },
    },
  };

  fbReq(opts, (err, resp, data) => {
    if (cb) {
      cb(err || data.error && data.error.message, data);
    }
  });
};

Я также могу настроить ответ изображения таким образом. Однако, когда я пытаюсь сделать ответ шаблоном кнопки (https://developers.facebook.com/docs/messenger-platform/send-api-reference/button-template), ответ не получен. Ошибка тоже не вылетает.

const fbInfo = (recipientId, cb) => {
  const opts = {
    form: {
      recipient: {
        id: recipientId,
      },
      message: {
        attachment:{
          type:"template",
          text:"Check out our website",
          payload:{
            template_type:"button",
            buttons:[
              {
                type:"web_url",
                url:"https://some.website.com",
                title:"Website"
              }
            ]
          }
        }
      }
    }
  };

  fbReq(opts, (err, resp, data) => {
    if (cb) {
      cb(err || data.error && data.error.message, data);
    }
  });
};

person Rahul Mukherji    schedule 05.06.2017    source источник


Ответы (1)


Вместо form вы должны использовать json.

взгляните на код, который я написал на глюк

должно быть что-то вроде:

request({
    uri: 'https://graph.facebook.com/v2.6/me/messages',
    qs: { access_token: <TOKEN> },
    method: 'POST',
    json: messageData}, ...)
person Kunal Parekh    schedule 06.06.2017