Gupshup Post - 空身

时间:2017-08-17 15:37:12

标签: json django python-3.x django-rest-framework gupshup

我正在构建一个简单的bot,它使一个http post调用传递给JSON对象。服务器响应错误 - {“detail”:“JSON解析错误 - 期望值:第1行第1列(char 0)”}:

我不认为服务器端是问题;我已经尝试过使用httpie的请求。

Gupshup中的代码

    var contextParam = {
        "botname": event.botname, 
        "channel": event.channel, 
        "sender": event.sender,
        "message":event.message
    };
    var url = "https://abcserver.com/sm/postData";
    var param = JSON.stringify(contextParam);
    var header = {"Content-Type": "application/json"};
    context.simplehttp.makePost(url, param, header) 

来自httpie的相应电话

http POST https://abcserver.com/sm/postData botname = MrBot频道= Skype发送者= MrSender消息=嗨

在服务器端:logger.debug(“Request body:”+ str(request.body))在日志文件中输入“Request body:b'”。

PS:我正在使用Django,Django Rest Framework

1 个答案:

答案 0 :(得分:0)

[回复更新 21/8/2017]

使用Gupshup的IDE Bot Builder进行HTTP POST调用的语法是正确的。在SO上查看此帖子making-http-post-request-on-gupshup-ide-works,其中包含工作代码。

完整的工作代码:

 var url_ = 'http://p-curl-i.herokuapp.com/getresponse/';
var body = {
    "botname": event.botname,
    "channel": event.channel,
    "sender": event.sender,
    "message": event.message
};
  var headers = {
'cache-control': 'no-cache',
    'content-type': 'application/json',
    'Content-Length' : JSON.stringify(body).length 
};
   context.simplehttp.makePost(url_, JSON.stringify(body), headers);

您需要发送" Content-Length"因为您的服务器将此作为强制性要求,Gupshup的后端默认情况下不会像Postman或httpie那样发送内容长度。