2017-06-05 138 views
0

我正在使用Node.js在Facebook Messenger平台上开发chatbot。这是我设置文本响应的功能代码:无法发送按钮模板作为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); 
    } 
    }); 
}; 

回答

0

相反的form你应该使用json

看看代码,我已经写上glitch

应该是这样的:

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

谢谢!有效。 –

相关问题