twilio如何用c#10秒后关闭一个电话

时间:2014-04-24 16:18:53

标签: c# twilio

在10秒后关闭一个电话或3个分机号码 - (如果他们输入错误的号码3次)用c#

if (Request.Form["Digits"] == null || Request.Form["Digits"] == "")
{
   response += twimlGatherDigits("nothing was entered"));
}
有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

Twilio传道者在这里。

所以为了确保我理解,您使用<Gather>要求用户输入3位数代码,并且如果发生以下任何一种情况,您希望挂断电话:

  • 10秒内没有来自用户的输入
  • 三次无效参赛后

让我们解决在没有输入10秒后挂断的第一个问题。 <Gather>动词包含 timeout 属性,您可以使用该属性告诉Twilio等待输入的时间。如果在此期间没有提供任何输入,Twilio实际上不会调用操作 URL,而是通过<Gather>并且如果执行该操作后有另一个动词。例如:

<Response>
    <Say>Please enter your three digit code:</Say>
    <Gather timeout="10" action="http://example.com/login/process" />
    <Say>I didn't here that.  Can you try entering you code again?</Say>
    <Redirect>http://example.com/login/start</Redirect>
</Response>

在此示例中,如果调用者输入数字,将请求action参数中指定的url,Twilio将停止执行此响应中的任何其他TwiML谓词。

但是,如果来电者没有输入任何数字,Twilio将不会调用操作URL,而是转到此响应中的下一个动词,即<Say>动词。

您可以轻松地将<Hangup>动词放在响应中,以便挂断来电者:

<Response>
    <Say>Please enter your three digit code:</Say>
    <Gather timeout="10" action="http://example.com/login/process" />
    <Say>I didn't here that.  Goodbye</Say>
    <Hangup />
</Response>

现在,只要允许调用者有三次机会输入正确的代码,那也很容易。您可以使用查询字符串值在每次尝试之间携带计数器值。例如:

<Response>
    <Say>Please enter your three digit code:</Say>
    <Gather timeout="10" action="http://example.com/login/process?attempt=0" />
    <Say>I didn't here that.  Goodbye</Say>
    <Hangup />
</Response>

请注意,在代码段中,我添加了一个名为attempt的查询字符串值,用于操作URL。当用户输入数字并且Twilio调用我的操作URL时,它将包含此查询字符串值,如果我的应用程序确定调用者输入了错误代码,我只需递增该计数器并在TwiML中发出新计数器值我返回Twilio: / p>

if (Request.Form["Digits"] != "123")
{
     int attempts = int.Parse(Request["attempt"]);
     attempts++;

     //generate the Gather TwiML and append the value
     // of the attempts variable to the action URL         
}

这有意义吗?

希望有所帮助。