Отправка запроса с помощью скриптового приложения в облако Shelly
После подключения и подключения Shelly2.5 к моей шторке, пытаюсь связать его с Siri. Решил сделать это с помощью приложения Scriptable, а затем подключить к нему команды Siri, чтобы оно запустилось.
В настоящее время есть проблема с отправкой запроса из приложения Scriptable, поскольку код написан ниже, когда я пытался запустить его из Postman, он работает.
// # open shutter
let url = "https://domain.shelly.cloud";
let suffix ="/device/relay/roller/control/";
let auth_key = "AAAABBBBCCCDDDEEEEFFFFFF____EXAMPLE_TOKEN___AAAABBBBCCCDDDEEEEFFFFFF";
let channel = 0;
let turn = "on";
let direction = "open";
let id = "C45bbe75f1bd";
let body = {
"auth_key":auth_key,
"id": id,
"direction":direction
};
// console.log(body);
let req = new Request(url + suffix);
// console.log(url+suffix);
req.method = "POST";
req.body = body;
req.headers = { "Content-Type":"application/x-www-form-urlencoded" };
// req.body = JSON.stringify(body)
let json = await req.loadJSON()
console.log(json);
текущий ответ:
2021-09-13 11:20:46: {"isok":false,"errors":{"invalid_header":"Unauthorized! Wrong authorization header provided!","invalid_token":"The login information is invalid! Please login again!"}}
Обратите внимание, что я меняю реальный токен и реальный субдомен для шелли облака. Будет здорово, если кто-то знает, как это исправить, спасибо
1 ответ
похоже, что тело с кодировкой формы ожидает Шелли. Попробуй это
let form = Object.keys(body).map( k => `${k}=${encodeURIComponent(body[k])}`).join('&')
req.body = form