gpt4 book ai didi

twilio - 对所有 session 参与者使用说动词

转载 作者:行者123 更新时间:2023-12-04 11:26:07 24 4
gpt4 key购买 nike

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

我的计划是获取录音 URL,然后获取参与者列表并对每个调用者进行 REST API 调用,将他们的调用修改为说“现在进入”,然后播放录音 URL。我想在那之后我也得把他们送回房间,我不确定。

我认为修改每个电话都会使他们离开 session 室,这并不理想。是否有一种更简单的方法可以对 REST API 中内置的 session 的所有成员使用 Say/Play?

最佳答案

自 2018 年 7 月 13 日起,Twilio 现在允许您发送 POST请求到 Conference (向整个 session 宣布一些事情)或Conference Participant (向单个调用者宣布某事)带有 AnnounceUrl 的资源链接到以下任一属性的属性:

  • WAV 或 MP3 音频文件,或
  • 使用 <Say /> 的 TwiML 文档和/或 <Play />动词。

  • 除了该属性,您还可以指定 AnnounceMethod允许您指定是否 GET 的属性或 POST (默认)那个 URL。

    发送上述的好地方 POST播放您录制​​的姓名可能处于使用 <Conference /> 时设置的状态回调中。将每个用户放入 session 的动词,如下所示:
    <?xml version="1.0" encoding="UTF-8"?>
    <Response>
    <Dial>
    <Conference statusCallback="/conference/join-callback"
    statusCallbackEvent="join">
    {conference ID}
    </Conference>
    </Dial>
    </Response>

    旧的解决方法保留在下面以供后代使用。

    Twilio 论坛上有人对 the very same question 感兴趣,答案是目前没有直接的 REST API 调用。

    您需要做的是,当与会者加入 session 时, you'll use the REST API to make Twilio dial back in to your application .您可以根据自己的喜好选择如何检测您正在调用自己的 session (例如,比较呼出和呼入电话号码是否相等);一旦检测到,您可以直接将该调用加入 session 并使用 TwiML <Say /><Play />动词来为大家回放介绍。

    这有点令人费解,但这样您就不会将每个参与者从 session 中删除(阻止他们暂时听到对方的声音)然后重新加入他们。

    这应该类似于一个好的端到端解决方案。

    首先,用户拨入,然后您按照标准提示获取 session 室的 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>

    现在,一旦您拥有用户的 pin 和录音,就会发生两件事;帖子的回复 /conference/name将包含 <Conference>动词,将用户放入房间:
    <?xml version="1.0" encoding="UTF-8"?>
    <Response>
    <Dial>
    <Conference>{conference ID}</Conference>
    </Dial>
    </Response>

    ...并且,与此异步,它将使用 REST API 发起一个新的回拨到 session 室。
    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 进行通信。您的来电处理程序需要检测 session 线路是否正在回拨自身并表现出不同的行为;它首先需要使用简单的 TwiML 进行响应,允许调用的传出端输入 session 室的 PIN。
    <?xml version="1.0" encoding="UTF-8"?>
    <Response>
    <Gather action="/conference/announce-pin" finishOnKey="#" />
    </Response>
    SendDigits POST 的参数将提供 TwiML 位期望的数字。然后,该操作应通过在新调用中召开 session 来做出响应。
    <?xml version="1.0" encoding="UTF-8"?>
    <Response>
    <Dial>
    <Conference>{conference ID}</Conference>
    </Dial>
    </Response>

    最后一块拼图是您在 POST 中指定的 URL 发出的 TwiML。这是将环回调用添加到 session 后将运行的标记。
    <?xml version="1.0" encoding="UTF-8"?>
    <Response>
    <Play>/conference/name-recordings/{name ID}</Play>
    <Say>has joined the call.</Say>
    <Hangup />
    </Response>

    该标记运行,在 session 室中播放调用者的姓名和一条消息,然后挂断。

    关于twilio - 对所有 session 参与者使用说动词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17845848/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com