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

时间:2018-05-03 17:57:53

标签: coldfusion twilio twilio-functions

Twilio新手在这里。

我有一个收集大量数据(国际充值销售)的Twilio语音应用程序 - 并且有一个点可以实现购买充值的实际过程。

此过程可持续10到30秒,其中大部分时间约为15秒。听起来像我需要使用Twilio <Enqueue waitUrl="processtopup.cfm" method="POST" action="topupdone.cfm">processTopup</Enqueue> 标签(https://www.twilio.com/docs/voice/twiml/enqueue),但它不起作用。

我只是这样称呼它(碰巧是ColdFusion):

processtopup.cfm

<PLAY>文件中是{{1}}标记(它不会起作用,因为这是一个超过15秒的页面。

很抱歉 - 但我只是对此感到困惑。提前谢谢!

1 个答案:

答案 0 :(得分:2)

这是一个可能的解决方案。我已经测试了这个并且它可以工作。

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

当有来电,Twilio点击您的终端时, 捕获呼叫ID ,它将用于将呼叫切换到其他XML。呼叫ID将作为 FORM.CALLSID URL.CALLSID 传递,具体取决于您的webhook配置在Twilio。

通话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的新TwiML

<强> 文档: