Отправка запроса с помощью приложения со сценарием в Shelly cloud

#javascript #node.js #scriptable #shelly

Вопрос:

После подключения и подключения Shelly2.5 с помощью моего затвора, пытаюсь подключить его к Siri. Решил сделать это с помощью скриптового приложения, а затем подключить к нему команды Siri, чтобы оно работало.

В настоящее время возникла проблема с отправкой запроса из скриптового приложения, поскольку код написан ниже, когда я попытался запустить его у почтальона, он работает.

 
// # 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!"}}
 

пожалуйста, обратите внимание, что я меняю реальный токен и реальный поддомен для shelly cloud.
Это будет здорово, если кто-нибудь знает, как это исправить, спасибо

Ответ №1:

похоже на тело, закодированное в форме Шелли. Попробуйте это

 let form  = Object.keys(body).map( k => `${k}=${encodeURIComponent(body[k])}`).join('amp;')

req.body = form