Twilio автопилот пустое тело после сбора, а затем перенаправлен на мой сервер - PullRequest
0 голосов
/ 02 июля 2019

Я использую автопилот twilio, работающий на сервере nodejs.Я начинаю с приветствия по умолчанию, затем запускаю эту задачу входа в систему, она слышит меня, отправляет сообщение, а затем запрос POST имеет пустое тело.Я в растерянности.Я попытался сделать POST для https и http.Не идет собирать на провал.У меня нет настройки идентификатора поля, так как все, что я хочу сделать, это вызвать задачу и затем отправить информацию о 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 / xml с login / pass / fail и их объектом customer, так что помощник может иметь это в памяти.Очевидно, я только на первом этапе, но это мой план.Помощь будет оценена.

1 Ответ

0 голосов
/ 04 июля 2019

Я нашел проблему, и это было с nodejs, по какой-то причине мне нужно было jsonencoded в первом посте, затем urlencoded и затем обратно urlencoded снова.У меня была третья нога как 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
...