动态设置Twilio <dial> timeLimit </dial>

时间:2013-12-14 06:47:26

标签: twilio twiml

我有一个应用程序,允许用户拨打他们想要添加到呼叫的号码。每个用户都需要在帐户中拥有余额。

使用TwiML <Dial>

执行拨号

根据我的每分钟费率,我以秒计算剩余余额,并将其设为timeLimit <Dial>

我想做一个简单的事情,例如当用户正在通话并且他的电话timeLimit即将到期时,我会想要使用我的付款方式向他们收费,如果收费是成功补充的话timeLimit同一个电话。

可以这样做吗?

2 个答案:

答案 0 :(得分:7)

Twilio开发者传播者在这里。

在通话过程中无法修改拨号上的timeLimit。但我认为我有一个适合你的解决方案。

您可以使用timeLimit调用conference,而不是直接拨号。

<Response>
  <Dial timeLimit="30">
    <Conference>YourCall</Conference>
  </Dial>
</Response>

然后,当他们的帐户被补充时,您可以modify the live call重定向到使用新timeLimit重新加入电话会议的TwiML网址:

<?php
// Get the PHP helper library from twilio.com/docs/php/install
require_once('/path/to/twilio-php/Services/Twilio.php'); // Loads the library

// Your Account Sid and Auth Token from twilio.com/user/account
$sid = "{{ sid }}"; 
$token = "{{ auth_token }}"; 
$client = new Services_Twilio($sid, $token);

// Get an object from its sid. If you do not have a sid,
// check out the list resource examples on this page
$call = $client->account->calls->get("{{call sid}}");
$call->update(array(
        "Url" => "http://youserver.com/conference.xml",
    "Method" => "POST"
    ));
echo $call->to;

答案 1 :(得分:2)

使用Twilio REST API的https://www.twilio.com/docs/api/rest/change-call-state功能可能更容易.REST API是异步的。

在您的情况下,您可以按照以下方式执行此操作:

  1. 拨打时间限制= [最大](无限时间,最长4小时)
  2. 过了一会儿,试着给账户充值。
  3. 关于充值成功:什么都不做,呼叫仍然存在。
  4. 关于充电失败:通过执行Twilio REST API的change-call-state功能断开连接。在断开连接之前,您甚至可以播放音频文件或执行其他操作。例如,要求呼叫者验证其帐户,因为充值失败或其他原因。