【问题标题】:How to Send this API Call to Twilio Flow via CFHTTP如何通过 CFHTTP 将此 API 调用发送到 Twilio Flow
【发布时间】:2019-06-20 15:30:44
【问题描述】:

所以我正在尝试使用 CFHTTP 设置对 Twilio Flow 的 API 调用,但没有运气。当我尝试查看响应时,不断返回的 CFHTTP 不存在。

我已经尝试从表单域调整为正文,将字符集设置为 utf-8 等。我成功地能够使用可编程 SMS 部分发送 SMS,但没有成功点击 Flow。

<cfset twilioUsername = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" />
<cfset twilioFlowSid = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" />
<cfset twilioPassword = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" />

<cfset twilioFrom = "+1XXXXXXXXXX" />
<cfset twilioTo = "+1XXXXXXXXXX" />

<cfset bodyFields = {
    "name" : "Tester",
    "cases" : "This Case this Time"
} />

<cfset twilioFlowResource = (
    "https://studio.twilio.com/v1/Flows/#twilioFlowSid#/Executions.json"
    ) />

<cfhttp result="POST" method="POST" charset="utf-8" url="#twilioFlowResource#" username="#twilioUsername#" password="#twilioPassword#">
    <cfhttpparam type="formfield" name="From" value="twilioFrom" />
    <cfhttpparam type="formfield" name="To" value="twilioTo" />
    <cfhttpparam type="formfield" name="Parameters" value="#serializeJSON(bodyFields)#" />
</cfhttp>

当我尝试查看 cfhttp.filecontent 的内容时,我不断收到的变量 CFHTTP 不存在。

【问题讨论】:

  • 什么版本的 ColdFusion
  • 这是因为您使用了result 属性,".. 让您指定接收结果的备用变量"。这意味着 CF 不会填充默认变量名称cfhttp。在your example 中,您应该转储变量名“POST”。虽然为了清楚起见,我建议使用不同的变量名。

标签: coldfusion twilio-api


【解决方案1】:

这是因为您使用了cfhttp's "result" attribute,其中 ".. 允许您指定一个接收结果的备用变量"。这意味着 CF 不会填充名为 cfhttp 的默认变量。因此,在您的示例中,您应该转储名为 #POST# 的变量。 (虽然为避免进一步混淆,我建议使用其他内容,例如“响应”。)

<cfhttp result="response" 
    method="POST" 
    charset="utf-8" 
    url="#twilioFlowResource#" 
    username="#twilioUsername#" 
    password="#twilioPassword#">

    ... parameters ...
</cfhttp>

<cfdump var="#response#">

另外,也许这只是一个错字,但是......如果这是您使用的实际代码,那么它在 &lt;cfhttpparam&gt; 声明中的变量周围缺少井号。所以代码实际上是发送文字字符串“twilioFrom”而不是变量值:+1XXXXXXXXXX。这些行:

<cfhttpparam type="formfield" name="From" value="twilioFrom" />
<cfhttpparam type="formfield" name="To" value="twilioTo" />

...应该改成这样:

<cfhttpparam type="formfield" name="From" value="#twilioFrom#" />
<cfhttpparam type="formfield" name="To" value="#twilioTo#" />

【讨论】:

  • 非常感谢,是的,缺少英镑符号的值只是为了在此处发布而调整内容的拼写错误,但结果就是问题所在。我在那里有这个,因为它可以发布到他们的 SMS 网关,但是为 Flow 网关破坏了这部分
  • 不客气 :-) 顺便说一句,我建议更改变量名称的原因是,即使我在第一次阅读时错过了“结果”变量。我看到“POST”,我的大脑进入自动完成模式并将其翻译成 method = "POST" ;-)
猜你喜欢
  • 2020-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-01
相关资源
最近更新 更多