微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。