From 2789119882772d468dd1e9f5a3df387a95bf5358 Mon Sep 17 00:00:00 2001 From: Leo_chen Date: Sat, 29 Oct 2022 15:45:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=99=BA=E8=83=BD=E5=BE=AE?= =?UTF-8?q?=E7=A7=98=E4=B9=A6=E9=80=9A=E7=9F=A5=20(#1680)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back/data/notify.ts | 8 +++++ back/services/notify.ts | 41 +++++++++++++++++++++ sample/config.sample.sh | 9 +++++ sample/notify.js | 80 +++++++++++++++++++++++++++++++++++++++++ sample/notify.py | 39 ++++++++++++++++++++ src/utils/config.ts | 20 +++++++++++ 6 files changed, 197 insertions(+) diff --git a/back/data/notify.ts b/back/data/notify.ts index 3197bb85..865b598f 100644 --- a/back/data/notify.ts +++ b/back/data/notify.ts @@ -11,6 +11,7 @@ export enum NotificationMode { 'dingtalkBot' = 'dingtalkBot', 'weWorkBot' = 'weWorkBot', 'weWorkApp' = 'weWorkApp', + 'aibotk' = 'aibotk', 'iGot' = 'iGot', 'pushPlus' = 'pushPlus', 'email' = 'email', @@ -75,6 +76,12 @@ export class WeWorkAppNotification extends NotificationBaseInfo { public weWorkAppKey = ''; } +export class AibotkNotification extends NotificationBaseInfo { + public aibotkKey: string = ''; + public aibotkType: 'room' | 'contact' = 'room'; + public aibotkName: string = ''; +} + export class IGotNotification extends NotificationBaseInfo { public iGotPushKey = ''; } @@ -109,6 +116,7 @@ export interface NotificationInfo DingtalkBotNotification, WeWorkBotNotification, WeWorkAppNotification, + AibotkNotification, IGotNotification, PushPlusNotification, EmailNotification, diff --git a/back/services/notify.ts b/back/services/notify.ts index 39fc510a..56c02f90 100644 --- a/back/services/notify.ts +++ b/back/services/notify.ts @@ -24,6 +24,7 @@ export default class NotificationService { ['dingtalkBot', this.dingtalkBot], ['weWorkBot', this.weWorkBot], ['weWorkApp', this.weWorkApp], + ['aibotk', this.aibotk], ['iGot', this.iGot], ['pushPlus', this.pushPlus], ['email', this.email], @@ -321,6 +322,46 @@ export default class NotificationService { return res.errcode === 0; } + private async aibotk() { + const { aibotkKey, aibotkType, aibotkName } = this.params; + let url = '' + let json = {} + switch (aibotkType) { + case 'room': + url = 'https://api-bot.aibotk.com/openapi/v1/chat/room' + json = { + apiKey: `${aibotkKey}`, + roomName: `${aibotkName}`, + message: { + type: 1, + content: `【青龙快讯】\n\n${this.title}\n${this.content}` + } + } + break; + case 'contact': + url = 'https://api-bot.aibotk.com/openapi/v1/chat/contact' + json = { + apiKey: `${aibotkKey}`, + name: `${aibotkName}`, + message: { + type: 1, + content: `【青龙快讯】\n\n${this.title}\n${this.content}` + } + } + break; + } + + const res: any = await got + .post(url, { + ...this.gotOption, + json: { + ...json + } + }).json(); + + return res.code === 0; + } + private async iGot() { const { iGotPushKey } = this.params; const url = `https://push.hellyw.com/${iGotPushKey.toLowerCase()}`; diff --git a/sample/config.sample.sh b/sample/config.sample.sh index 5b874ec6..be62c003 100644 --- a/sample/config.sample.sh +++ b/sample/config.sample.sh @@ -151,4 +151,13 @@ export DEER_KEY="" export CHAT_URL="" export CHAT_TOKEN="" +## 13. aibotk +## 官方说明文档:http://wechat.aibotk.com/oapi/oapi?from=ql +## aibotk_key (必填)填写智能微秘书个人中心的apikey +export AIBOTK_KEY="" +## aibotk_type (必填)填写发送的目标 room 或 contact, 填其他的不生效 +export AIBOTK_TYPE="" +## aibotk_name (必填)填写群名或用户昵称,和上面的type类型要对应 +export AIBOTK_NAME="" + ## 其他需要的变量,脚本中需要的变量使用 export 变量名= 声明即可 diff --git a/sample/notify.js b/sample/notify.js index 6406cdd2..9e67b89a 100644 --- a/sample/notify.js +++ b/sample/notify.js @@ -110,6 +110,16 @@ let PUSH_PLUS_USER = ''; let QQ_SKEY = ''; let QQ_MODE = ''; + +// =======================================智能微秘书设置区域======================================= +//官方文档:http://wechat.aibotk.com/docs/about +//AIBOTK_KEY: 填写智能微秘书个人中心的apikey +//AIBOTK_TYPE:填写发送的目标 room 或 contact, 填其他的不生效 +//AIBOTK_NAME: 填写群名或用户昵称,和上面的type类型要对应 +let AIBOTK_KEY = ''; +let AIBOTK_TYPE = ''; +let AIBOTK_NAME = ''; + //==========================云端环境变量的判断与接收========================= if (process.env.GOTIFY_URL) { GOTIFY_URL = process.env.GOTIFY_URL; @@ -220,6 +230,15 @@ if (process.env.PUSH_PLUS_TOKEN) { if (process.env.PUSH_PLUS_USER) { PUSH_PLUS_USER = process.env.PUSH_PLUS_USER; } +if(process.env.AIBOTK_KEY) { + AIBOTK_KEY = process.env.AIBOTK_KEY +} +if(process.env.AIBOTK_TYPE) { + AIBOTK_TYPE = process.env.AIBOTK_TYPE +} +if(process.env.AIBOTK_NAME) { + AIBOTK_NAME = process.env.AIBOTK_NAME +} //==========================云端环境变量的判断与接收========================= /** @@ -255,6 +274,7 @@ async function sendNotify( gotifyNotify(text, desp), //gotify ChatNotify(text, desp), //synolog chat PushDeerNotify(text, desp), //PushDeer + aibotkNotify(text, desp), //智能微秘书 ]); } @@ -983,6 +1003,66 @@ function pushPlusNotify(text, desp) { }); } +function aibotkNotify(text, desp) { + return new Promise((resolve) => { + if(AIBOTK_KEY&&AIBOTK_TYPE&&AIBOTK_NAME) { + let json = {}; + let url = ''; + switch (AIBOTK_TYPE) { + case 'room': + url = 'https://api-bot.aibotk.com/openapi/v1/chat/room' + json = { + apiKey: `${AIBOTK_KEY}`, + roomName: `${AIBOTK_NAME}`, + message: { + type: 1, + content: `【青龙快讯】\n\n${text}\n${desp}` + } + } + break; + case 'contact': + url = 'https://api-bot.aibotk.com/openapi/v1/chat/contact' + json = { + apiKey: `${AIBOTK_KEY}`, + name: `${AIBOTK_NAME}`, + message: { + type: 1, + content: `【青龙快讯】\n\n${text}\n${desp}` + } + } + break; + } + const options = { + url: url, + json, + headers: { + 'Content-Type': 'application/json', + }, + timeout, + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('智能微秘书发送通知消息失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.code === 0) { + console.log('智能微秘书发送通知消息成功🎉。\n'); + } else { + console.log(`${data.error}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + } + }) +} + module.exports = { sendNotify, BARK_PUSH, diff --git a/sample/notify.py b/sample/notify.py index e5d48d5a..70a8ffa5 100644 --- a/sample/notify.py +++ b/sample/notify.py @@ -81,6 +81,10 @@ push_config = { 'TG_PROXY_AUTH': '', # tg 代理认证参数 'TG_PROXY_HOST': '', # tg 机器人的 TG_PROXY_HOST 'TG_PROXY_PORT': '', # tg 机器人的 TG_PROXY_PORT + + 'AIBOTK_KEY': '', # 智能微秘书 个人中心的apikey 文档地址:http://wechat.aibotk.com/docs/about + 'AIBOTK_TYPE': '', # 智能微秘书 发送目标 room 或 contact + 'AIBOTK_NAME': '', # 智能微秘书 发送群名 或者好友昵称和type要对应好 } notify_function = [] # fmt: on @@ -521,6 +525,39 @@ def telegram_bot(title: str, content: str) -> None: print("tg 推送失败!") +def aibotk(title: str, content: str) -> None: + """ + 使用 智能微秘书 推送消息。 + """ + if not push_config.get("AIBOTK_KEY") or not push_config.get("AIBOTK_TYPE") or not push_config.get("AIBOTK_NAME"): + print("智能微秘书 的 AIBOTK_KEY 或者 AIBOTK_TYPE 或者 AIBOTK_NAME 未设置!!\n取消推送") + return + print("智能微秘书 服务启动") + + if push_config.get("AIBOTK_TYPE") == 'room': + url = "https://api-bot.aibotk.com/openapi/v1/chat/room" + data = { + "apiKey": push_config.get("AIBOTK_KEY"), + "roomName": push_config.get("AIBOTK_NAME"), + "message": {"type": 1, "content": f'【青龙快讯】\n\n${title}\n${content}' } + } + else: + url = "https://api-bot.aibotk.com/openapi/v1/chat/contact" + data = { + "apiKey": push_config.get("AIBOTK_KEY"), + "name": push_config.get("AIBOTK_NAME"), + "message": {"type": 1, "content": f'【青龙快讯】\n\n${title}\n${content}' } + } + body = json.dumps(data).encode(encoding="utf-8") + headers = {"Content-Type": "application/json"} + response = requests.post(url=url, data=body, headers=headers).json() + print(response) + if response["code"] == 0: + print("智能微秘书 推送成功!") + else: + print(f'智能微秘书 推送失败!{response["error"]}') + + def one() -> str: """ 获取一条一言。 @@ -561,6 +598,8 @@ if push_config.get("QYWX_KEY"): notify_function.append(wecom_bot) if push_config.get("TG_BOT_TOKEN") and push_config.get("TG_USER_ID"): notify_function.append(telegram_bot) +if push_config.get("AIBOTK_KEY") and push_config.get("AIBOTK_TYPE") and push_config.get("AIBOTK_NAME"): + notify_function.append(aibotk) def send(title: str, content: str) -> None: diff --git a/src/utils/config.ts b/src/utils/config.ts index 9e2d8e85..f6b145e0 100644 --- a/src/utils/config.ts +++ b/src/utils/config.ts @@ -88,6 +88,7 @@ export default { { value: 'dingtalkBot', label: '钉钉机器人' }, { value: 'weWorkBot', label: '企业微信机器人' }, { value: 'weWorkApp', label: '企业微信应用' }, + { value: 'aibotk', label: '智能微秘书' }, { value: 'iGot', label: 'IGot' }, { value: 'pushPlus', label: 'PushPlus' }, { value: 'chat', label: '群辉chat' }, @@ -196,6 +197,25 @@ export default { required: true, }, ], + aibotk: [ + { + label: 'aibotkKey', + tip: '密钥key,智能微秘书个人中心获取apikey,申请地址:https://wechat.aibotk.com/signup?from=ql', + required: true, + }, + { + label: 'aibotkType', + tip: '发送的目标,群组或者好友', + required: true, + placeholder: '请输入要发送的目标', + items: [{ value: 'room', label: '群聊' }, { value: 'contact', label: '好友' }], + }, + { + label: 'aibotkName', + tip: '要发送的用户昵称或群名,如果目标是群,需要填群名,如果目标是好友,需要填好友昵称', + required: true, + }, + ], iGot: [ { label: 'iGotPushKey',