如何解决使用来自 webview 的数据发送 Messenger 聊天机器人消息
我目前为预订餐厅餐桌创建了一个聊天机器人。我的问题是在提交 webview 表单后,我无法为用户发回消息(消息包含从 webview 输入的数据)。每当我提交表单时,日志发送如下,但在 Messenger 上没有发送消息。
2021-06-15T23:36:37.504744+00:00 app[web.1]: message sent!
2021-06-15T23:36:39.038022+00:00 heroku[router]: at=info method=POST path="/post-reserve" host=fb-appointment.herokuapp.com request_id=3934228c-ed83-4349-a2e9-02ac73ceb958 fwd="171.224.179.85" dyno=web.1 connect=933ms service=7387ms status=200 bytes=223 protocol=https
2021-06-15T23:36:40.585283+00:00 app[web.1]: message sent!
这一刻,我不知道我哪里错了。这是我的代码:
- 发布 webview 表单数据的路由
app.post('/post-reserve',webhookController.handlePostReserveService);
-
handlePostReserveService()
函数:
let handlePostReserveService = async (req,res) => {
try {
let response1 = {
text: "Thanks for your reserve! We will contact soon.",};
let response2 = {
text: `---Reserve information---
\nCustomer name: ${req.body.customerName},\nPhone number: ${req.body.phoneNumber},\nReserve date: ${req.body.reserveDate},\nReserve time: ${req.body.reserveTime},\nPeople number: ${req.body.peopleNumber}.
`,};
await chatbotService.callSendAPI(req.body.psid,response1);
await chatbotService.callSendAPI(req.body.psid,response2);
return res.status(200).json({
message: "ok",});
} catch (e) {
return res.status(500).json({
message: "Error server resevre",});
}
};
- 用于提交 webview 表单的 javascript 文件:
// Include the Messenger Extensions JS SDK
(function (d,s,id) {
var js,fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {
return;
}
js = d.createElement(s);
js.id = id;
js.src = "//connect.facebook.net/en_US/messenger.Extensions.js";
fjs.parentNode.insertBefore(js,fjs);
})(document,"script","Messenger");
window.extAsyncInit = function () {
// the Messenger Extensions JS SDK is done loading
MessengerExtensions.getContext(
"AppID",function success(thread_context) {
// success
//set psid to input
$("#psid").val(thread_context.psid);
handleClickButtonReserve();
},function error(err) {
// error
console.log("Reserve error:",err);
}
);
};
function handleClickButtonReserve() {
$("#btnReserve").on("click",function (e) {
let check = validateInputFields();
let data = {
psid: $("#psid").val(),customerName: $("#customerName").val(),phoneNumber: $("#phoneNumber").val(),reserveDate: $("#reserveDate").val(),reserveTime: $("#reserveTime").val(),peopleNumber: $("#peopleNumber").val(),// service: $("#service").val()
};
if (!check) {
//close webview
MessengerExtensions.requestClosebrowser(
function success() {
// webview closed
},function error(err) {
// an error occurred
console.log(err);
}
);
//send data to node.js server
$.ajax({
url: `${window.location.origin}/post-reserve`,method: "POST",data: data,success: function (data) {
console.log(data);
},error: function (error) {
console.log(error);
},});
}
});
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。