对这个问题的简短回答是,它不能通过 Twiml 事件来完成,但是可以通过使用他们的 REST API 的一种 hack 来完成。
该问题已在 SO 上提出,答案可在此处获得:
Use Say verb to all Conference participants
如果问题/答案被删除/删除,我已将其粘贴在下面:
这应该类似于一个好的端到端解决方案。
首先,用户拨入,您通过标准提示获取会议室的 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 的响应将包含动词,将用户置于房间中:
<?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 进行响应,该 TwiML 允许呼叫的呼出端输入会议室的 pin。
<?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>
该标记运行,将呼叫者的姓名和消息播放到会议室,然后挂断。