在Twilio出站电话中播放声音

时间:2016-10-07 10:07:04

标签: cordova twilio twilio-php

我试图通过与Twilio的对话播放声音。我是Twilio的新手,我遇到了一些问题。

使用Twilio Client SDK plugin从移动应用程序启动呼叫。在Twilio控制台中,我创建了一个TwiML应用程序,并设置了请求URL。

这是我的TwiML代码。

我想要的是什么:

  • 用户从应用程序发起呼叫。
  • 用户获得时间限制(在我的服务器上的TwiML中设置)。
  • 呼叫与PSTN上的号码相关联。
  • 几乎达到时间限制时,必须播放声音 通知用户该呼叫将很快结束。 (例如:时间 限制是1分30秒进入声音播放的声音)
  • 达到限制时结束通话。

我已经可以在达到时间限制时结束通话,但无法弄清楚如何通知用户。

我尝试过:

我在TwiML应用程序中指定了状态回调URL,我想从那里修改呼叫状态,但只在呼叫完成后调用状态回叫。这是基于this帖子。

我曾尝试根据this帖子创建会议,但我无法让它发挥作用。我想因为我没有使用REST API。我正在使用客户端SDK从移动应用程序发起呼叫。我应该使用REST API吗?如何与客户端一起实现它?

服务器端我使用PHP。

如果需要更多信息,请告诉我们!

1 个答案:

答案 0 :(得分:0)

Twilio开发者传道者在这里。

要处理此服务器端,您需要从客户端拨打<Conference>,然后generate a call to the number your user was calling using the REST API,然后将他们引导到会议中。

因此,您对客户端原始拨号的响应应该看起来像这样:

require_once '/path/to/vendor/autoload.php';
use Twilio\Rest\Client;

// Your Account Sid and Auth Token from twilio.com/user/account
$sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
$token = "your_auth_token";
$client = new Client($sid, $token);

$number = htmlspecialchars($_REQUEST["TO"]);

// Generate a call to the other party
$call = $client->calls->create(
    $number, 
    $from,
    array("url" => "http://example.com/conference?conference_name=EXAMPLE")
);

$response = new Twiml;
$limit = getLimit($TWILIO_CALLER_ID, 1);

$dial = $response->dial(array('callerId' => $TWILIO_CALLER_ID, 'timelimit' => $limit));

$dial->conference("EXAMPLE");

header("Content-Type: text/xml");
echo $response;

这会将来电者拉入会议并拨打接收器。当他们接听电话时,您将获得URL(http://example.com/conference?conference_name=EXAMPLE在这种情况下)的webhook。您需要使用相同的会议室回复该URL。

$response = new Twiml;

$dial = $response->dial();
$dial->conference($_REQUEST['conference_name']);

header("Content-Type: text/xml");
echo $response;

然后,当您想要提醒剩余时间时,您需要再次拨打此次会议,这次只需使用TwiML的<Say><Play>即可阅读警惕。

您需要设置一个指向此会议拨打的号码。然后在时间限制接近时拨打该号码并使用显示该消息的URL。

require_once '/path/to/vendor/autoload.php';
use Twilio\Rest\Client;

// Your Account Sid and Auth Token from twilio.com/user/account
$sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
$token = "your_auth_token";
$client = new Client($sid, $token);

$number = $YOUR_CONFERENCE_NUMBER;

// Generate a call to the other party
$call = $client->calls->create(
    $number, 
    $TWILIO_CALLER_ID,
    array("url" => "http://example.com/time_message")
);

最后,您需要使用TwiML响应/time_message端点来说出该消息,然后挂断。

$text1 = "Your limit is";
$text2 = "seconds";

$response = new Twiml;
$response->say($text1 . "10 seconds" . $text2)
$response->hangup();

header("Content-Type: text/xml");
echo $response;

让我知道这是否有帮助。