Пост Gupshup - пустое тело
Я создаю простого бота, который отправляет HTTP-пост-вызов в JSON-объектах. Сервер отвечает обратно с ошибкой - {"detail":"Ошибка синтаксического анализа JSON - Ожидаемое значение: строка 1, столбец 1 (символ 0)"}:
Я не думаю, что проблема на стороне сервера; Я попытался запрос с использованием httpie.
Код в гупшуп
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 имя_бота = канал MrBot = отправитель Skype = сообщение MrSender = Привет
На стороне сервера: logger.debug("Тело запроса: " + str(request.body)) помещает - "Тело запроса: b'" в файл журнала.
PS: я использую Django, Django Rest Framework
1 ответ
[Обновление ответа 21.08.2017]
Синтаксис для выполнения вызова HTTP POST с использованием IDE Bot Builder из Gupshup является правильным. Посмотрите на этот пост: /questions/18931400/delat-http-post-zapros-na-gupshup-ide-rabotaet на SO, где присутствует рабочий код.
Полный рабочий код:
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.