Twilio - 在漫长的过程中播放音乐

Twilio - Play music during long process

这里是 Twilio 新手。

我有一个收集大量数据(国际充值销售)的 Twilio 语音应用程序 - 购买充值的实际过程发生在某个点。

这个过程可以持续 10 到 30 秒,其中大部分大约为 15 秒。在我看来我需要使用 Twilio <ENQUEUE> 标签 (https://www.twilio.com/docs/voice/twiml/enqueue),但它不起作用。

我只是这样称呼它(恰好是 ColdFusion):

<Enqueue 
  waitUrl="processtopup.cfm" 
  method="POST" 
  action="topupdone.cfm">processTopup</Enqueue>

processtopup.cfm 文件中有 <PLAY> 标签(该标签不起作用,因为该页面需要超过 15 秒。

抱歉 - 但我只是对这应该起作用感到困惑。提前致谢!

这是一个可能的解决方案。我已经对此进行了测试并且有效。

主要想法是循环播放一些 message/music 直到 ColdFusion 完成工作,然后,当 ColdFusion 完成时,通过制作 XML 指示调用执行不同的 Twilio XML =89=] 请求 Twilio 的 API 调用资源。

当有来电时,Twilio 到达您的端点,捕获呼叫 ID,它将用于切换呼叫到另一个 XML。它作为 FORM.CALLSIDURL.CALLSID[=70 传递的呼叫 ID =] 取决于您在 Twilio 的 webhook 配置。

呼叫 ID 类似于 CAdecbfa7e8e2a9d09336abcd57044cf74

通过您的流程传递呼叫 ID(因为 url 参数应该没问题)所以它到达 processtopup.cfm.

将长 运行 代码从 processtopup.cfm 移动到让我们说 processtopup-action.cfm


processtopup.cfm 中的代码现在应该 return 立即 XML 播放循环(或者你可以播放一些 .mp3),我正在显示一条消息:

<cfoutput><?xml version="1.0" encoding="UTF-8"?>

<Response>
    <Say loop="0">Please wait while we process your request...</Say>
</Response>

</cfoutput>

<cfhttp 
    url="http://www.yourwebsite.com/processtopup-action.cfm?callsid=#FORM.CALLSID#" 
    method="get" 
    timeout="1" />

processtopup-action.cfm

的代码
<!--- // place your long running code here --->

<cfset accountSid = '{your account sid}' />
<cfset authToken = '{your auth token}' />

<cfhttp 
    url="https://api.twilio.com/2010-04-01/Accounts/#variables.accountSid#/Calls/#URL.CALLSID#.json" 
    method="POST" 
    username="#variables.accountSid#" 
    password="#variables.authToken#"
    result="http_result">

    <cfhttpparam 
        name="Url" 
        value="http://www.yourwebsite.com/finish.cfm" 
        type="formfield" />

</cfhttp>

finish.cfm

代码
<cfoutput><?xml version="1.0" encoding="UTF-8"?>

<Response>
    <Say>This is the data you're looking for.</Say>
    <Say>Thank you. Goodbye!</Say>
    <Hangup />
</Response>

</cfoutput>

当然,您可以根据需要传递其他参数。


同样,主要思想是 processtopup-action.cfm,在执行您的长 运行 代码后,向 Twilio 的 API 发出 POST 请求并指示调用切换执行位于 http://www.yourwebsite.com/finish.cfm

的新 TwiML

文档: