Twilio — Как проверить, имеют ли собранные результаты речи ожидаемые значения, если не пометить их как неудачные

#twilio #twilio-twiml #twilio-programmable-voice

#twilio #twilio-twiml #twilio-программируемый-голосовой

Вопрос:

Нужна помощь в проверке результатов speechresults: я пытаюсь проверить, получаем ли мы правильные результаты речи в функции twiml. Я могу получить результаты речи и выполнить с ними определенные действия … но я хочу провалить свой тест, если он не соответствует. Как этого добиться.. Заранее благодарю. Мой пример кода

 exports.handler = function(context, event, callback) 
{
     let twiml = new Twilio.twiml.VoiceResponse();
     console.log("Event = "   JSON.stringify(event));
     let ivrSpeech = (event.SpeechResult ? event.SpeechResult : "").toLowerCase();
     let servicetype = event.servicetype;
     console.log("Call type"   servicetype);
     let IVRType = event.ivrgoal;
    if (ivrSpeech amp;amp; ivrSpeech.length > 0)
        {
             if(servicetype.includes("XX")) 
                {
                  if (ivrSpeech.includes("Call may be recorded and monitored for quality purpose"))
                        {
                             twiml.pause({ length: 10 });
                           
                        }
                   else 
                        {
                         XXX - fail my test 
                        }

                 }
         }
   callback(null, twiml)
}
 

Ответ №1:

Евангелист-разработчик Twilio здесь.

Во-первых, у вас есть одна проблема с вашим кодом, которая означает, что вы всегда будете проваливать проверку.

Когда вы получите ivrSpeech то, что вам нужно, позвоните .toLowerCase() по нему:

      let ivrSpeech = (event.SpeechResult ? event.SpeechResult : "").toLowerCase();
 

Но затем вы тестируете строку с заглавной буквой в ней:

 if (ivrSpeech.includes("Call may be recorded and monitored for quality purpose"))
 

Так что вы должны изменить это для начала.

В противном случае, я не уверен, что вы имеете в виду, когда говорите, что хотите «провалить мой тест», когда он не совпадает. Пока что у вас довольно хорошо написан код, но я не совсем понимаю, что вы хотите сделать в этом else условии.

Один из вариантов — повесить трубку, чего вы добьетесь следующим образом:

     if (ivrSpeech amp;amp; ivrSpeech.length > 0)
        {
             if(servicetype.includes("XX")) 
                {
                  if (ivrSpeech.includes("call may be recorded and monitored for quality purpose"))
                        {
                             twiml.pause({ length: 10 });
                           
                        }
                   else 
                        {
                             twiml.hangup();
                        }

                 }
         }
   callback(null, twiml)