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

我已经尝试过从formfields调整为body,将charset设置为utf-8,等等。我能够使用Programmable SMS部分成功发送SMS,但是运气不佳。

<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,当我尝试查看cfhttp.filecontent的内容时不存在。

最佳答案

这是因为您使用了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#">




另外,也许这只是一个错字,但是...如果这是您正在使用的实际代码,则它会在<cfhttpparam>声明中的变量周围缺少井号。因此,代码实际上是在发送文字字符串“ 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#" />

09-13 04:25