Synology 聊天传入 webhooks

问题描述 投票:0回答:2

我购买了 Synology DiskStation 并在其上安装了 Synology chat(2.4.0 版)。

根据 Synology 的文档,应该可以通过 传入 webhooks 将 Synology 聊天中的数据(例如文本)发送到频道。

所以我创建了一个传入的 webhook 并使用curl 编写了一个 shell 脚本来将文本发送到我的频道:

curl -k -X POST 'https://IP-ADDRESS:5001/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2&token=THIS-IS-MY-TOKEN' -H 'Content-Type: application/json' -d '{"text": "This is a test"}'

但是,当我执行脚本时,它会抛出此错误:

{"error":{"code":120,"errors":{"name":"payload","reason":"required"}},"success":false}

我做错了什么?

bash shell curl webhooks synology
2个回答
0
投票

通过curl发布对你的命令的修改对我有用:

curl -X POST 'https://IP-ADDRESS:5001/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2&token=THIS-IS-MY-TOKEN' -H 'Content-Type: application/json' -d 'payload={"text": "This is a test"}'


0
投票

Synology 并不真正使用 JSON 负载。有效负载的格式必须为:“payload={JSON String}”。
例如:

curl 'https://IP-ADDRESS:5001/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2&token=THIS-IS-MY-TOKEN' -d 'payload={"text": "This is a test"}'
const options = {
    method: 'POST',
    body: 'payload=' + JSON.stringify({
        text: "This is a test"
    })
};

await fetch(`https://IP-ADDRESS:5001/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2&token=THIS-IS-MY-TOKEN`, options);

文档:https://kb.synology.com/tr-tr/DSM/help/Chat/chat_integration?version=7

有两种方法可以将数据发送到 webhook URL:

JSON 字符串作为 POST 请求中的有效负载参数。一个 JSON 字符串作为 POST 请求的正文。

© www.soinside.com 2019 - 2024. All rights reserved.