在TWIML <dial>中等待答案时播放音乐

All*_*pps 2 twilio twilio-php twilio-twiml

如何在等待成功连接时拨打号码并将音乐扩散到呼叫者?

在执行之前,下面的代码等待音乐结束<dial>(这是逻辑)

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Play>http://com.twilio.music.ambient.s3.amazonaws.com/gurdonark_-_Plains.mp3</Play>
    <Dial timeout="10" callerId="+1234567890">
        <Number url="whisper?id=1">+1122334455</Number>
        <Number url="whisper?id=2">+1122334466</Number>
        <Number url="whisper?id=3">+1122334477</Number>
    </Dial>
</Response>
Run Code Online (Sandbox Code Playgroud)

注意:使用会议功能会很好.一些与<Enqueue>可能?

phi*_*ash 5

Twilio开发者传道者在这里.

你可以这样做<Enqueue>.以下是它的工作原理:

您需要替换<Play>s然后<Dial>s的TwiML .这必须是一个动态操作,因为您需要使用REST API而不是TwiML 进行三个同时调用.您将返回的TwiML会将您的原始呼叫者按照您的建议放入队列并播放音乐.在PHP中看起来有点像:

<?php
// Get the PHP helper library from twilio.com/docs/php/install
require_once '/path/to/vendor/autoload.php';
use Twilio\Rest\Client;

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

$numbers = array('+1122334455', '+1122334466', '+1122334477');

foreach ($numbers as $number) {
  $call = $client->calls->create(
      $number, $YOUR_CALLER_ID,
      array("url" => "http://example.com/dial_queue")
  );
}

header("content-type: text/xml");
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
?>
<Response>
  <Enqueue waitUrl="http://com.twilio.music.ambient.s3.amazonaws.com/">
    dialling
  </Enqueue>
</Response>
Run Code Online (Sandbox Code Playgroud)

在URL处,http://example.com/dial_queue您需要返回将被叫方拨入原始呼叫方的TwiML.您在原始示例中有一个私语URL,您可以通过将其内联到TwiML中来实现.

<Response>
  <Say>Your custom message</Say>
  <Dial>
    <Queue>dialling</Queue>
  </Dial>
</Response>
Run Code Online (Sandbox Code Playgroud)

请注意,您拨打<Queue>了原始名称<Enqueue>.如果此系统将用于多个调用方,则您可能需要为它们生成唯一的队列名称.

最后要做的是在呼叫连接后取消其他两个呼叫,如果没有呼叫应答则取消队列.我会把它留给你,因为我确信有很多方法可以用你自己的设置来实现它.

如果这有帮助,请告诉我.