我正在使用twilio自动试验运行nodejs服务器。我以默认的问候语开始,然后运行此登录任务,它会听到我的声音,发送帖子,然后POST请求的正文为空。我很茫然。我尝试将POST设为https和http。它不会失败收集。我没有设置字段ID,因为我要做的就是触发任务,然后发送COLLECT信息。一些方向将不胜感激。尽管我没有发送给twilio函数,但我完成了教程中的所有操作。我不明白为什么尸体是空的。
{
"actions": [
{
"collect": {
"name": "collect_login",
"questions": [
{
"question": "what is your number?",
"name": "loginID",
"type": "Twilio.NUMBER_SEQUENCE"
}
],
"on_complete": {
"redirect": {
"method": "POST",
"uri": "https://server.com/pm/auto/login"
}
}
}
}
]
}
还有其他需要做的事情吗?我认为这很简单。收集信息并将其发送到我的服务器,然后我的服务器将发送一个新的twiml。我目前所做的只是记录整个传入请求。
我的计划是让某人通过助手登录。 呼叫我的电话号码,它以可编程语音播放数字,然后将其交给助理,然后助理询问登录ID,将收集的信息发送到我的服务器进行处理,然后我将响应从我的服务器采用TWIML / xml的形式,带有login / pass / fail及其客户对象,因此助手可以将其存储在内存中。显然,我只是第一步,但这是我的计划。帮助将不胜感激。
答案 0 :(得分:0)
我发现了问题,这是与nodejs有关的,无论出于什么原因,我都需要在第一篇文章中对jsonencode进行编码,然后再进行urlencode编码,然后再次返回urlencode编码。我的第三回合是jsonencoded。希望这可以帮助其他人。我希望在twilio上有更多的例子。
app.post('/pm/twil/v/login', jsonencodedParser, function (req, res) {
const rt = new VoiceResponse();
rt.say('Hello how are you doing today?')
rt.play({
digits: 'wwwwww'
});
rt.play({
loop: 1
}, 'https://server.com/pm/5.wav');
rt.play({
digits: 'wwwwww'
});
rt.play({
loop: 1
}, 'https://server.com/pm/5.wav');
const gather = rt.gather({
numDigits: 6,
action: '/pm/twil/v/pD',
});
gather.say('enter in your i d number to login');
console.log(rt.toString());
rt.play({
digits: 'wwww'
});
res.send(rt.toString());
})//end post
app.post('/pm/twil/v/pD', urlencodedParser, function (req, res) {
const rt = new VoiceResponse();
console.log('request.body in pd');
console.log(req.body);
if (req.body.Digits) {
for(var i = 0; i < userGlobList.length; i++){
if(req.body.Digits == userGlobList[i].userId){
rt.say('Logged in. Remember everytime you call it costs 2 credits');
rt.say('your balance is '+ userGlobList[i].credits+' credits');
rt.account = userGlobList[i].userId;
if(userGlobList[i].credits !== 0){
const gather = rt.gather({
numDigits: 1,
action: '/pm/twil/v/LoggedIn',
});
gather.say('1 for call, 2 for text,');
rt.play({
digits: 'ww'
});
}
if(userGlobList[i].credits == 0){
rt.say('Please have credits added to your account');
rt.hangup();
}//if
break;
}//end if
////SAVE CUSTobj and minus credits for lookup
}//for
rt.say('Error no account')
}//if
console.log(rt.toString());
res.send(rt.toString());
})/////////end post
app.post('/pm/twil/v/LoggedIn', urlencodedParser, function (req, res) {
const rt = new VoiceResponse();
console.log('request.body in LoggedIn');
}
if (req.body.Digits == 1) {
console.log('in voicemail');
rt.say('welcome to voicemail');
}//endif
if(req.body.Digits == 2){
console.log('in text');
}//end if
if(req.body.Digits != 1 && req.body.Digits != 2){
rt.say('Not an option');
}
rt.hangup()
console.log(rt.toString());
res.send(rt.toString());
})//end post