Java Twilio can';t如果接收到错误的按键/数字,则不能继续播放音频
我是新来的。我真正想要实现的是: 当用户接到呼叫时,音频将继续播放自定义消息,直到用户按预期的键“1” 如果用户按下“1”,我希望Twilio执行我在操作中指定的操作,这将起作用 但如果用户按下任何其他键,只要不做任何事情,继续播放相同的自定义消息,并在超时时执行特定操作,如果用户不按“1”。例如Java Twilio can';t如果接收到错误的按键/数字,则不能继续播放音频,java,twilio,Java,Twilio,我是新来的。我真正想要实现的是: 当用户接到呼叫时,音频将继续播放自定义消息,直到用户按预期的键“1” 如果用户按下“1”,我希望Twilio执行我在操作中指定的操作,这将起作用 但如果用户按下任何其他键,只要不做任何事情,继续播放相同的自定义消息,并在超时时执行特定操作,如果用户不按“1”。例如 我阅读了Twilio文档,但没有找到任何关于如何做到这一点的信息 文档中说,“收到第一个数字后,音频将停止播放。”我想避免这种情况 如果使用Twilio甚至可以做到这一点,有人能给我指点一下吗?据我所
我阅读了Twilio文档,但没有找到任何关于如何做到这一点的信息
文档中说,“收到第一个数字后,音频将停止播放。”我想避免这种情况
如果使用Twilio甚至可以做到这一点,有人能给我指点一下吗?据我所知,你实际上无法避免这一点。TWIML的工作方式(Twilio的标记语言)是收集一个数字并发送到服务器进行处理。换句话说,数字的聚集与决定如何处理该数字是完全独立的 如果我错了,有人会纠正我,但我相信这是真的
编辑:你能做的最好的事情可能是让一些音频说,“这是一个无效的选项”,然后重新启动你正在播放的原始音频。Shieldstroy是正确的 以下是您处理此案件的方式:
//this code is in the original voice script
twiml.Gather(
numDigits: 1,
input: new List<InputEnum>() { InputEnum.Dtmf },
timeout: 5,
method: "POST",
action: new System.Uri(Startup.hostAddress + "/TwilioCallbacks/InputResponse")
);
因此,如果你能幽默不恰当的C#,原始脚本会收集数字,并将用户重定向到InputResponse脚本。在这一阶段,您将确定按下了哪些数字,并根据输入指示调用脚本
原始脚本不可能知道按下了哪个键,因为采集正在电话系统中进行。您的软件和电话系统之间没有实际的实时连接,相反,您已经提前指示电话系统收集数字。一旦电话系统收集到数字,它就知道如何调用您的InputResponse方法,并将输入的数字发送到服务器
只有在这个阶段,您的软件才可能知道输入了哪个数字。Twilio开发者福音传道者,这在工作原理上是完全正确的。这条消息和重定向到原始操作是个好主意。@shieldstory感谢您的反馈,我之前已经考虑过了,播放无效音频,然后重新启动原始操作。但我想避免这种情况,因为你已经提到,现在似乎不可能做到。我会看看我的其他选择。@philnash很高兴Twilio开发人员在这里关注问题。@Aniks我们只是想确保每个人都对Twilio有很好的体验,请随意提问,我们会找到他们的@philnash正如本文中提到的,我已经更改了我的实现,以发送一个新的TwiML响应,该响应与之前生成的响应相同。消息会按照我的要求从头开始播放。但我认为在背景中,旧的信息也与之并行。我能听到两种声音。你能在这方面给我一些指导吗?
//C# Web Callback method structure
public ActionResult InputResponse(VoiceRequest request)
{
int digit = 0;
//create a new voice script
var twiml = new VoiceResponse();
try
{
//convert the digit to an int
digit = Convert.ToInt32(request.Digits);
}
catch (FormatException e)
{
//if the digit comes back as NaN for some reason, lets write an exception to debug
Debug.WriteLine(e.StackTrace.ToString());
}
//switch statement for which digit has been pressed
switch (digit)
{
case 1:
twiml.Say("You have chosen the correct digit");
break;
case 2:
twiml.Say("You have chosen the other possible correct digit");
default:
twiml.Say("You have pressed an invalid digit")
//since an invalid digit has been pressed, we redirect to the
//original voice script
var redirect( new Twilio.TwiML.Voice.Redirect(
new System.Uri.(originalVoiceScriptURL));
twiml.Append(redirect);
}
return TwiML(twiml);
}