Twilio 无法在处理 Lucee/cfml SMS POST通过 CFHTP时执行 StatusCallback,其中包含编码的 StatusCallback URL

问题描述

向 Twilio SMS API 发送一个相当简单的 POST 请求:

        cfhttp(
        method          = "POST",charset         = "utf-8",url             = Twilio_API,username        = Account_SID,password        = Auth_Token,result          = "myResult"){
        //
        cfhttpparam(
            type    = "formField",name    = "To",value   = '+1615*******');
        //
        cfhttpparam(
            type    = "formField",name    = "From",value   = '+1714*******');
        //
        cfhttpparam(
            type    = "formField",name    = "Body",value   = 'This is a test message!');
        //
        cfhttpparam(
            type    = "formField",name    = "StatusCallback",value   = URLEncode(StatusCallback));
        //
    }

最后一个参数有问题:

            cfhttpparam(
            type    = "formField",value   = URLEncode(StatusCallback));
        //

如果我对 StatusCallback URL 进行 URLEncode(在“StatusCallback”变量中),Twilio 会回复错误 - 21609 无效的 StatusCallback URL”——但是,根据 RFC 3986,编码是正确的,并在 https://www.urlencoder.org/ 处确认(UTF-8 转换)。这是一个非常简单的过程。我们遇到的问题是,如果我们正确地对 StatusCallback URL 进行 URLEncode,我们会收到错误,如果我们不对 URL 进行编码,我们什么也不会得到 - 没有错误,也没有到我们的服务器的 StatusCallback,但是实际的短信仍然通过没有问题。无论哪种方式,我们的日志中都不会显示任何内容 - Twilio 从未联系过我们的服务器。

是否需要采用某种特殊的 URLEncoding 格式才能让 Twilio 识别我们的 StausCallback 处理程序 URL? URL 也没有什么特别之处:

http://xxxxxxxxxxxx.yyy/Twilio_CBS/hTwilioCallBack.cfm

我确实注意到 Twilio 对它们的参数大小写很挑剔('statusCallback' 作为 FORM 字段失败,而 'StatusCallback' 工作正常)。

有什么想法吗?我们主要感兴趣的是弄清楚如何编码回调 URL 以便 Twilio 喜欢它,而不是重新调整整个方法

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)