修改实时通话状态twilio

时间:2014-01-07 02:27:50

标签: twilio

我想使用它的REST API修改twilio的live callStatus。我已经列出了所有可用的队列电话号码,并且想要从排队中调用callStatus来调用正在进行中或响铃。我怎么得到这个?

1 个答案:

答案 0 :(得分:1)

Twilio传道者在这里。

您可以使用REST API将队列中等待的特定呼叫出列。要执行此操作make a POST request to the CallSid you want to redirect,但您必须通过Members资源执行此操作。作为该HTTP请求的一部分,您传入Url参数。这样做会告诉Twilio将该调用重定向到队列之外,向该Url发出请求,然后开始执行返回的TwiML。

$member = $client->account->queues->get('QU5ef8732a3c49700934481addd5ce1659')->members->get("CA5ef8732a3c49700934481addd5ce1659");
$member->update(array(
    "Url" => "http://demo.twilio.com/docs/voice.xml",
    "Method" => "POST"
));

现在,要发出此请求,您需要知道要使用的队列的SID以及要重定向的队列成员的CallSid。

让我们逐步了解这两个值。

查找队列SID

有多种方法可以获取队列SID。如果您使用REST API创建队列,那么您的应用可以在每次creates a new Queue时保存队列SID:

$queue = $client->account->queues->create("newqueue", array());
echo $queue->sid;  //save the sid in a db or some other store

或者您可以使用REST APIlist all of your Queues。例如,我在这里使用REST API来获取Queue resources的列表,循环它们并打印当前的平均等待时间:

// Loop over the list of queues and echo a property for each one
foreach ($client->account->queues as $queue) {
    echo $queue->average_wait_time;
}

如果您想使用其友好名称查找特定队列,可以将其修改为循环以查看每个队列的*friendly_name* parameter

// Loop over the list of queues and echo a property for each one
foreach ($client->account->queues as $queue) {
    echo $queue->friendly_name;
}

在这种情况下,我只是打印出每个队列的友好名称。

找到CallSid

获得队列SID后,接下来需要获取要重定向的呼叫的CallSid。有不同的方法可以做到这一点。

您可以使用Members资源列出在该队列中等待的所有呼叫:

foreach ($client->account->queues->get('QU5ef8732a3c49700934481addd5ce1659')->members as $member) {
    echo $member->CallSid;
}

每个成员资源都会为您提供有关该成员的一些信息,包括CallSid。

如果您不知道具体的呼叫CallSid并希望根据呼叫者电话号码找到呼叫,您可以使用呼叫资源:

$call = $client->account->calls->getIterator(0, 50, array(
    "Status" => "in-progress",
    "From" => "+15555555555"));
$callsid = $call->CallSid;

在这里,我要求Twilio返回一个呼叫资源,其From电话号码为+15555555555“,其状态为”正在进行中“,然后抓取该呼叫CallSid。

重定向排队的来电者

既然我有Queue SID和CallSid,我可以将调用者重定向到队列之外,并转到另一种体验:

$member = $client->account->queues->get('QU5ef8732a3c49700934481addd5ce1659')->members->get("CA5ef8732a3c49700934481addd5ce1659");
$member->update(array(
    "Url" => "http://demo.twilio.com/docs/voice.xml",
    "Method" => "POST"
));

希望有所帮助。