首页 > 解决方案 > Twilio - 在漫长的过程中播放音乐

问题描述

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 秒。

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

标签: coldfusiontwiliotwilio-functions

解决方案


这是一个可能的解决方案。我已经对此进行了测试,并且可以正常工作。

主要思想是循环播放一些消息/音乐,直到 ColdFusion 完成工作,然后,当 ColdFusion 完成时,通过向 Twilio 的 API 调用资源发出 POST 请求来指示调用执行不同的 Twilio XML。

当来电时,Twilio 到达您的端点,捕获呼叫 id,它将用于将呼叫切换到不同的 XML。FORM.CALLSID它作为或URL.CALLSID取决于您在 Twilio 的 webhook 配置传递的调用 ID 。

呼叫 ID 看起来像CAdecbfa7e8e2a9d09336abcd57044cf74.

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

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


中的代码processtopup.cfm现在应该立即返回 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


文件:


推荐阅读