如何通过 CFHTTP 将此 API 调用发送到 Twilio Flow
How to Send this API Call to Twilio Flow via CFHTTP
所以我正在尝试使用 CFHTTP 设置对 Twilio Flow 的 API 调用,但我没有运气。当我尝试查看响应时,一直返回 CFHTTP 不存在。
我已经尝试过从表单域调整到正文,将字符集设置为 utf-8 等。我能够使用可编程 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.filecontent.
的内容时,我一直收到的是变量 CFHTTP 不存在
这是因为您使用了 cfhttp's "result" attribute,其中 ".. 让您可以指定一个替代变量来接收结果"。这意味着 CF 不会填充名为 cfhttp
的默认变量。因此,在您的示例中,您应该转储名为 #POST#
的变量。 (为了避免进一步混淆,我建议使用其他内容,例如 "response"。)
<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#" />
所以我正在尝试使用 CFHTTP 设置对 Twilio Flow 的 API 调用,但我没有运气。当我尝试查看响应时,一直返回 CFHTTP 不存在。
我已经尝试过从表单域调整到正文,将字符集设置为 utf-8 等。我能够使用可编程 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.filecontent.
的内容时,我一直收到的是变量 CFHTTP 不存在这是因为您使用了 cfhttp's "result" attribute,其中 ".. 让您可以指定一个替代变量来接收结果"。这意味着 CF 不会填充名为 cfhttp
的默认变量。因此,在您的示例中,您应该转储名为 #POST#
的变量。 (为了避免进一步混淆,我建议使用其他内容,例如 "response"。)
<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#" />