对所有与会者使用Say动词

时间:2013-07-24 22:24:29

标签: twilio

我正在建立一个非常简单的电话会议系统,用户输入PIN并连接到与之相关的会议。我也正在设置它,以便在进入房间之前记录他们的名字。

我的计划是获取录制URL,然后获取参与者列表并对每个呼叫者进行REST API调用,将其调用修改为Say“Now enter”,然后播放录制URL。我想我不得不把它们送回房间,我不确定。

我认为修改每个电话会将他们带出会议室,这并不理想。是否有更简单的方法将Say / Play用于REST API内置的会议的所有成员?

1 个答案:

答案 0 :(得分:9)

截至7月13日 th 2018年,Twilio现在允许您向Conference发送POST请求(向整个会议宣布内容)或{{3 (向单个调用者宣布一些内容)资源,其AnnounceUrl属性链接到:

  • WAV或MP3音频文件,或
  • 使用<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>

该标记运行,将呼叫者的姓名和消息播放到会议室,然后挂断。