Как отправить этот вызов API в Twilio Flow через CFHTTP - PullRequest
3 голосов
/ 20 июня 2019

Итак, я пытаюсь настроить вызов API для Twilio Flow с использованием CFHTTP, но мне не везет. Продолжает возвращать 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, когда я пытаюсь просмотреть содержимое cfhttp.filecontent, не существует.

1 Ответ

2 голосов
/ 20 июня 2019

Это потому, что вы использовали атрибут результата "cfhttp * , который " .. позволяет вам указать альтернативную переменную, в которой будет получен результат ".Значение 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#" />
...