我正在建立一个非常简单的电话会议系统,用户输入PIN并连接到与之相关的会议。我也正在设置它,以便在进入房间之前记录他们的名字。
我的计划是获取录制URL,然后获取参与者列表并对每个呼叫者进行REST API调用,将其调用修改为Say“Now enter”,然后播放录制URL。我想我不得不把它们送回房间,我不确定。
我认为修改每个电话会将他们带出会议室,这并不理想。是否有更简单的方法将Say / Play用于REST API内置的会议的所有成员?
答案 0 :(得分:9)
截至7月13日 th 2018年,Twilio现在允许您向Conference发送POST
请求(向整个会议宣布内容)或{{3 (向单个调用者宣布一些内容)资源,其AnnounceUrl
属性链接到:
<Say />
和/或<Play />
动词的TwiML文档。除了该属性外,您还可以指定AnnounceMethod
属性,该属性可让您指定该网址是GET
还是POST
(默认值)。
发送上述POST
以播放您录制的姓名的好地方可能是在您使用<Conference />
动词将每个用户加入会议时设置的状态回调,像这样:
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Dial>
<Conference statusCallback="/conference/join-callback"
statusCallbackEvent="join">
{conference ID}
</Conference>
</Dial>
</Response>
对于子孙后代,旧的解决方法仍然存在。
Twilio论坛上有人对Conference Participant感兴趣,目前答案是没有直接的REST API调用。
当参加者加入会议时,您需要做的是the very same question。您可以根据自己的喜好选择如何检测自己正在呼叫自己的会议(例如,比较出站和入站电话号码是否相等);一旦您检测到这一点,您就可以直接将该电话加入会议,并使用you'll use the REST API to make Twilio dial back in to your application <Say />
和<Play />
动词播放每个人的简介。
这有点令人费解,但这样你就不会从会议中删除每个参与者(阻止他们暂时听到对方),然后重新加入他们。
这里的东西应该类似于一个好的端到端解决方案。
首先,用户拨入并通过标准提示获取会议室的PIN及其名称。
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Gather action="/conference/pin" finishOnKey="#">
<Say>Please the conference pin number followed by the pound key.</Say>
</Gather>
</Response>
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Say>Say your name and then press the pound key.</Say>
<Record action="/conference/name" finishOnKey="#" />
</Response>
现在,一旦你有用户的引脚和录音,就会发生两件事;帖子对/conference/name
的回复将包含<Conference>
动词,将用户置于会议室中:
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Dial>
<Conference>{conference ID}</Conference>
</Dial>
</Response>
...并且,与此异步,它将使用REST API将新呼叫发回会议室。
POST /2010-04-01/Accounts/{AccountSid}/Calls
From = {your conference phone number}
To = {your conference phone number}
SendDigits = wwww{conference PIN}#
Url = /conference/announce?name={name ID}
现在,下一点变得令人困惑。 Twilio现在将与您的回拨URL进行通话,以获取呼叫的传入结束,以及您为呼叫的传出结束指定的URL。您的来电处理程序需要检测到会议线路正在回调并且行为方式不同;它首先需要用简单的TwiML进行响应,允许呼出的呼出端进入会议室的引脚。
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Gather action="/conference/announce-pin" finishOnKey="#" />
</Response>
POST的SendDigits
参数将提供TwiML所期望的位数。然后,该操作应通过新呼叫中的会议进行响应。
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Dial>
<Conference>{conference ID}</Conference>
</Dial>
</Response>
最后一个难题是你在POST中指定的URL发出的TwiML。这是将环回呼叫添加到会议后将运行的标记。
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Play>/conference/name-recordings/{name ID}</Play>
<Say>has joined the call.</Say>
<Hangup />
</Response>
该标记运行,将呼叫者的姓名和消息播放到会议室,然后挂断。