我试图通过与Twilio的对话播放声音。我是Twilio的新手,我遇到了一些问题。
使用Twilio Client SDK plugin从移动应用程序启动呼叫。在Twilio控制台中,我创建了一个TwiML应用程序,并设置了请求URL。
这是我的TwiML代码。
我想要的是什么:
我已经可以在达到时间限制时结束通话,但无法弄清楚如何通知用户。
我尝试过:
我在TwiML应用程序中指定了状态回调URL,我想从那里修改呼叫状态,但只在呼叫完成后调用状态回叫。这是基于this帖子。
我曾尝试根据this帖子创建会议,但我无法让它发挥作用。我想因为我没有使用REST API。我正在使用客户端SDK从移动应用程序发起呼叫。我应该使用REST API吗?如何与客户端一起实现它?
服务器端我使用PHP。
如果需要更多信息,请告诉我们!
答案 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;
让我知道这是否有帮助。