3

我有一个应用程序可以让用户拨打他们想要添加到呼叫中的号码。每个用户都受制于他们帐户中的余额。

拨号是使用 TwiML 进行的<Dial>

因此,根据我每分钟的金额,我以秒为单位计算剩余余额并将其设置为timeLimitfor <Dial>

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

这可以做到吗?

4

2 回答 2

7

Twilio 开发人员布道者在这里。

在通话进行时,无法修改拨号上的 timeLimit。但我想我有一个可以为你工作的解决方案。

您可以使用 timeLimit呼叫会议,而不是直接拨打号码。

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

然后,当他们的帐户得到补充时,您可以修改实时通话以重定向到 TwiML url,该 URL 使用新的 timeLimit 重新加入电话会议:

<?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;
于 2014-01-13T22:46:06.527 回答
2

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

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

  1. 拨号 timeLimit=[Max](无限时间,最长 4 小时)
  2. 过一会,尝试为账户充值。
  3. 充值成功:什么都不做,通话继续。
  4. 充值失败时:通过执行 Twilio REST API 的 change-call-state 函数断开连接。您甚至可以在断开连接之前播放音频文件或做其他事情。例如,由于充值失败或其他原因,要求呼叫者验证其帐户。
于 2016-09-09T05:13:24.490 回答