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

从谷歌应用程序脚本调用新聊天 API 时出错

如何解决从谷歌应用程序脚本调用新聊天 API 时出错

我正在尝试从谷歌应用程序脚本调用 FreshChat API。出站消息的 GET 请求工作正常,但 POST 请求因错误而失败

异常:http://api.in.freshchat.com 的请求失败返回代码 400。截断的服务器响应:{"success":false,"errorCode":0,"errorMessage":"HTTP 405 Method Not Allowed"," errorData":null,"errorName":null}(使用 muteHttpExceptions 选项检查完整响应)

以下是请求的详细信息

function myFunctiontest() {
  var url = "http://api.in.freshchat.com/v2/outbound-messages/whatsapp";
  var headersPOST = { 
          'Authorization': 'Bearer XXXXXX','Content-Type': 'application/json','Accept': 'application/json'
          };
  var bodyPayload = {"from": {"phone_number": "+XXXXXX"},"provider": "whatsapp","to": [{"phone_number": "+XXXXX"}],"data": {"message_template": {"storage": "none","template_name": "XXXXXX","namespace": "XXXXX","language": {"policy": "deterministic","code": "en"},"template_data": [{"data": "XXXXX"}]}}};
var options = {
        'method': 'post','contentType': 'application/json','headers': headersPOST,'payload': JSON.stringify(bodyPayload),'muteHttpExceptions':true
};

  var response = UrlFetchApp.fetch(url,options);
  console.log(response.getAllHeaders());
  Logger.log(JSON.parse(response.getContentText()));
}

相同的标头适用于 GET 请求。同样的帖子请求也来自 POSTMAN。

解决方法

Freshchat 支持帮助解决了这个问题。

有两个主要变化

  1. 使用 https 而不是 http
  2. 在标题中添加了 contentType。

function myFunctiontest() {
    
    var url = "https://api.in.freshchat.com/v2/outbound-messages/whatsapp";
      var headersPOST = 'Bearer XXXXXX';
    
      var bodyPayload = {"from": {"phone_number": "+XXXXXX"},"provider": "whatsapp","to": [{"phone_number": "+ XXXXX"}],"data": {"message_template": {"storage": "none","template_name": "XXXXXX","namespace": "XXXXX","language": {"policy": "deterministic","code": "en"},"template_data": [{"data": "XXXXX"}]}}};
    var options = {
            method: 'POST',//content-type: 'application/json',headers: { Authorization: headersPOST,'content-type': 'application/json'},payload: JSON.stringify(bodyPayload),muteHttpExceptions:true
    };
    
      var response = UrlFetchApp.fetch(url,options);
      var text = response.getResponseCode();
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。