Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to Send this API Call to Twilio Flow via CFHTTP

So I'm trying to setup the API call to Twilio Flow using CFHTTP but am having no luck. Keeps returning CFHTTP doesn't exist when I try to view the response.

I've already tried adjusting from formfields to body, setting the charset to utf-8, etc. I was successfully able to send an SMS using the Programmable SMS portion but am having no luck hitting the 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>

All I keep receiving is variable CFHTTP doesn't exist when I try to view the contents of cfhttp.filecontent.

like image 965
MTut Avatar asked Nov 25 '25 21:11

MTut


1 Answers

It is because you used cfhttp's "result" attribute which ".. lets you specify an alternate variable in which to receive a result". Meaning CF won't populate the default variable named cfhttp. So in your example, you should be dumping the variable named #POST#. (Though to avoid further confusion, I'd recommend using something else, like "response".)

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

    ... parameters ...
</cfhttp>

<cfdump var="#response#">

Also, perhaps it's just a typo, but ... if that's the actual code you're using, it's missing pound signs around the variables in the <cfhttpparam> declarations. So the code is actually sending the literal string "twilioFrom" instead of the variable value: +1XXXXXXXXXX. These lines:

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

... should be changed to this:

<cfhttpparam type="formfield" name="From" value="#twilioFrom#" />
<cfhttpparam type="formfield" name="To" value="#twilioTo#" />
like image 193
SOS Avatar answered Nov 27 '25 20:11

SOS



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!