收集后将twilio自动驾驶仪空的身体,然后重定向到我的服务器

时间:2019-07-02 20:48:43

标签: node.js twilio twilio-api

我正在使用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及其客户对象,因此助手可以将其存储在内存中。显然,我只是第一步,但这是我的计划。帮助将不胜感激。

1 个答案:

答案 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