我目前为预订餐厅餐桌创建了一个聊天机器人。我的问题是在提交 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!
这一刻,我不知道我哪里错了。这是我的代码:
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",
});
}
};
// 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);
},
});
}
});
}