Files
certd/packages/ui/certd-server/src/plugins/plugin-notification/slack/index.ts
T

57 lines
1.3 KiB
TypeScript
Raw Normal View History

import { BaseNotification, IsNotification, NotificationBody, NotificationInput } from '@certd/pipeline';
@IsNotification({
name: 'slack',
title: 'Slack通知',
desc: 'Slack消息推送通知',
2024-11-30 01:57:09 +08:00
needPlus: true,
})
export class SlackNotification extends BaseNotification {
@NotificationInput({
title: 'webhook地址',
component: {
placeholder: 'https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX',
},
helper: '[APPS](https://api.slack.com/apps/)->进入APP->incoming-webhooks->Add New Webhook to Workspace',
required: true,
})
webhook = '';
2024-12-02 14:06:55 +08:00
@NotificationInput({
title: '代理',
component: {
placeholder: 'http://xxxxx:xx',
},
helper: '使用https_proxy',
required: false,
})
httpsProxy = '';
@NotificationInput({
title: '忽略证书校验',
value: false,
component: {
name: 'a-switch',
vModel: 'checked',
},
required: false,
})
skipSslVerify: boolean;
async send(body: NotificationBody) {
if (!this.webhook) {
throw new Error('token不能为空');
}
await this.http.request({
url: this.webhook,
method: 'POST',
data: {
text: `${body.title}\n${body.content}\n[查看详情](${body.url})`,
},
2024-12-02 14:06:55 +08:00
httpProxy: this.httpsProxy,
skipSslVerify: this.skipSslVerify,
});
}
}