我正在建立一个非常简单的电话会议系统,用户输入PIN并连接到与之相关的会议.我也正在设置它,所以他们在进入房间之前记录他们的名字.
我的计划是获取录制URL,然后获取参与者列表并对每个呼叫者进行REST API调用,将其调用修改为Say"Now enter",然后播放录制URL.我想我不得不把它们送回房间,我不确定.
我认为修改每个电话会将他们带出会议室,这并不理想.是否有更简单的方法将Say/Play用于REST API内置的会议的所有成员?
截至2018年7月13 日,Twilio现在允许您向会议发送POST请求(向整个会议宣布某些内容)或会议参与者(向单个呼叫者宣布某些内容)资源,其中包含以下任一属性的属性:AnnounceUrl
<Say />和/或<Play />动词的TwiML文档.除了该属性,您还可以指定一个AnnounceMethod属性,该属性允许您指定是否GET或POST(默认)该URL.
发送上述内容POST以播放录制的名称的好地方可能是在使用<Conference />动词将每个用户加入会议时设置的状态回调,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Dial>
<Conference statusCallback="/conference/join-callback"
statusCallbackEvent="join">
{conference ID}
</Conference>
</Dial>
</Response>
Run Code Online (Sandbox Code Playgroud)
对于后代来说,旧的解决方法仍然存在.
Twilio论坛上的某个人对同一个问题感兴趣,目前答案是没有直接的REST API调用.
您需要做的是,当参与者加入会议时,您将使用REST API将Twilio拨回您的应用程序.您可以根据需要选择如何检测您正在呼叫您自己的会议(例如,比较出站和入站电话号码是否相等); 一旦你检测到这一点,你就可以直接加入会议,并使用TwiML <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>
Run Code Online (Sandbox Code Playgroud)
现在,一旦你有了用户的引脚和录音,就会发生两件事; 帖子的响应/conference/name将包含<Conference>动词,将用户放在房间中:
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Dial>
<Conference>{conference ID}</Conference>
</Dial>
</Response>
Run Code Online (Sandbox Code Playgroud)
...并且,与此异步,它将使用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}
Run Code Online (Sandbox Code Playgroud)
现在,下一点变得令人困惑.Twilio现在将与您的回拨URL进行通话,以获取呼叫的传入结束,以及您为呼叫的传出结束指定的URL.您的来电处理程序需要检测到会议线路正在回调并且行为方式不同; 它首先需要用简单的TwiML响应,允许呼叫的输出端进入会议室的引脚.
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Gather action="/conference/announce-pin" finishOnKey="#" />
</Response>
Run Code Online (Sandbox Code Playgroud)
SendDigitsPOST 的参数将提供TwiML所期望的位数.然后,该操作应通过新呼叫中的会议进行响应.
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Dial>
<Conference>{conference ID}</Conference>
</Dial>
</Response>
Run Code Online (Sandbox Code Playgroud)
拼图的最后一部分是您在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>
Run Code Online (Sandbox Code Playgroud)
该标记运行,将呼叫者的姓名和消息播放到会议室,然后挂断.
| 归档时间: |
|
| 查看次数: |
2618 次 |
| 最近记录: |