使用可编写脚本的应用程序向Shelly云发送请求



在将Shelly2.5与我的快门连接并连接后,尝试将其与Siri连接。决定在Scriptable应用程序中这样做,然后将Siri命令连接到它,这样它就会运行。

目前有一个问题,从Scriptable应用程序发送请求的代码如下所述,当我试图从邮差它工作。


// # 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的实令牌和实子域。如果有人知道如何解决这个问题,这将是伟大的,谢谢

看起来像Shelly expect格式编码的正文。试试这个

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

最新更新