首页 > 解决方案 > Twilio - 如果未将其标记为失败,如何检查收集的语音结果是否具有预期值

问题描述

在验证语音结果时需要帮助:我正在尝试验证我们是否在 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 && 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)
}

标签: twiliotwilio-twimltwilio-programmable-voice

解决方案


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 && 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)

推荐阅读