twilio - Conf call:等待第一个人响应,然后连接第二个人
问题描述
基本情况:系统将呼叫A。如果A拿起电话,它将呼叫B,并且2将被连接。
我在这里阅读了几个答案,例如https://stackoverflow.com/a/20976996/1907888但仍不清楚。
下面的工作吗?如果有人响应它会调用 PERSON_A 它将连接到会议然后调用 PERSON_B 并连接到同一个会议?我需要先开始会议吗?
$response = new VoiceResponse();
$dial = $response->dial('PERSON_A');
if($dial->conference('Room 1234')) {
$dial = $response->dial('PERSON_B');
$dial->conference('Room 1234');
}
解决方案
Twilio 开发人员布道者在这里。
当您使用 Twilio 控制调用时,它有两种工作机制。您的应用程序可以使用Twilio REST API来使事情发生,例如开始或更改呼叫。然后是 webhook,这是 Twilio 在呼叫中发生变化时向您的应用程序发出的 HTTP 请求,例如有人拨打您的 Twilio 号码、在电话上输入数据或有人接听出站电话。您使用 XML 的子集TwiML响应 webhook ,并提供有关下一步如何处理调用的说明。
在这种情况下,您首先要呼叫人员 A。为此,您将需要REST API 来进行调用。当 A 接听电话时,Twilio 将向您的应用程序发出 webhook 请求,以了解下一步该做什么。此时,您既可以再次使用 REST API 呼叫人员 B,也可以通过 TwiML 响应将人员 A 置于电话会议中。
因此,您的初始出站 REST API 调用应如下所示:
use Twilio\Rest\Client;
// Find your Account Sid and Auth Token at twilio.com/console
// and set the environment variables. See http://twil.io/secure
$sid = getenv("TWILIO_ACCOUNT_SID");
$token = getenv("TWILIO_AUTH_TOKEN");
$twilio = new Client($sid, $token);
$call = $twilio->calls
->create($personANumber, // to
$yourTwilioNumber, // from
["url" => "http://example.com/conference.php"]
);
您拨打电话时发送的 URL 将是 Twilio 发送 webhook 请求的位置。因此,example.com/conference.php
在这种情况下,您需要拨打另一个人并使用 TwiML 进行响应,以将人 A 引导到电话会议中。
这一次,您实际上可以在 REST API 响应中发送 TwiML,而不是发送 URL。像这样的东西:
use Twilio\Rest\Client;
use Twilio\TwiML\VoiceResponse;
// Find your Account Sid and Auth Token at twilio.com/console
// and set the environment variables. See http://twil.io/secure
$sid = getenv("TWILIO_ACCOUNT_SID");
$token = getenv("TWILIO_AUTH_TOKEN");
$twilio = new Client($sid, $token);
$twiml = new VoiceResponse();
$dial = $twiml->dial();
$dial->conference("Conference Name");
$call = $twilio->calls
->create($personBNumber, // to
$yourTwilioNumber, // from
["twiml" => $twiml->toString()]
);
echo $twiml.toString();
在这种情况下,我对通话的两个分支都使用了相同的 TwiML,因为它们都进入了同一个会议。您可以根据发生的情况使用不同的 TwiML 进行响应。
让我知道这是否有帮助。
推荐阅读
- laravel - laravel 使用管理员角色进行多重身份验证
- user-experience - Ant design 3.12.0 草图文件
- python-3.x - 如何比较不同数据框的列?
- performance - 请求/响应的 Kafka 消息时间戳
- javascript - 仅使用 datepicker 出现在 chrome android 中的错误
- r - 使用 R 通过电子邮件发送表格
- java - 将 mysql 数据源添加到 jboss AS 7
- c - 如何对十六进制字符串求和
- python - Flask + Pyspark:重复的火花会话
- javascript - 在 Three.JS 中旋转和平移对象时剪辑不起作用