在Parse自定义webhook中,其格式为:
app.post('/receiveSMS', function(req, res) {
其中receiveSMS连接到Twilio api并正确调用此方法(我有日志来证明它),但我试图在这个方法中查询我的表,它似乎没有工作。
这是允许的,还是我需要做些什么特别的工作?
var contactObj = Parse.Object.extend("Contact");
var contactQuery = new Parse.Query(contactObj);
console.log(req.body.From);
contactQuery.each(function(contact) {
并且每个调用的主体永远不会被调用。 这是允许的,如果允许的话,我在这里做错了什么?
更新 - 整个webhook代码块是:
app.post('/receiveSMS', function(req, res) {
console.log('receive SMS');
console.log(req.body.Body);
res.send('Success');
if(req.body.Body.toLowerCase() == "in" || req.body.Body.toLowerCase() == "out") {
twilio.sendSMS({
From: "(xxx) xxx-xxxx",
To: req.body.From,
Body: "It's been noted, and notifications have been sent. Check us out!"
}, {
success: function(httpResponse) {
console.log(httpResponse);
response.success("SMS Sent!");
},
error: function(httpResponse) {
console.error(httpResponse);
response.error("Uh OH, something went wrong");
}
});
if(req.body.Body.toLowerCase() == "in") {
console.log("in was received");
// eventQuery
var contactObj = Parse.Object.extend("Contact");
var contactQuery = new Parse.Query(contactObj);
console.log(req.body.From);
// contactQuery.equalTo("phone", req.body.From);
contactQuery.first({
success: function(contact) {
console.log("found contact");
console.log(contact);
}, error: function(error) {
alert("Error: " + error.code + " " + error.message);
}
});
}
}
});
调用此代码并调用日志“console.log('接收SMS')”等等,但查询的第一次调用内部除外。
答案 0 :(得分:1)
对表格的查询很好,但是您不能使用each()
函数,因为它仅限于在后台作业中工作。
根据您的需要,您必须使用find()
或first()
或get()
。
好的,看到你的完整代码后,我有一些想法,为什么它不起作用。首先,在您完成之前发送res.send("Success");
,我不是肯定的,但我认为这导致它停止运行您的其余代码(尚未检查,可能是错的。)
此外,您还在进行多项异步操作而不对其进行链接,以便contactQuery.first()
在twilio.sendSMS()
完成之前运行。
在twilio.sendSMS()内,您正在调用response.success()
/ response.error()
。这些是云方法,而不是Web钩子,所以我希望这些会在服务器端抛出错误(检查仪表板上的日志)。
在contactQuery.first()
内,您使用的是alert()
,云代码不支持此功能。
我不确定这些错误是否会提前发现并抛出错误,或者是否会引发运行时异常,但是应该修复它们,重新部署代码并重试。然后报告服务器日志中的任何错误。
答案 1 :(得分:0)
是的,这是允许的,我使用相同的网络钩子。
我的猜测是你可能已经在Contact类上定义了安全限制,阻止查询获取任何内容。这个课程的安全设置是什么?
您可以尝试放松约束,或以虚拟用户身份登录,然后执行查询(我选择的方法)。
欢呼声 -A