Files
TaskPool/internal/sdk/messenger

Messenger SDK

统一消息发送 SDK,可独立于 Message-Push-Nest 业务层使用。

特点

  • 零业务依赖:不依赖数据库、路由、认证等业务代码
  • 开箱即用:直接传配置 + 消息即可发送
  • 支持 12 种渠道:Email, 钉钉, 企业微信, 飞书, Telegram, Bark, Ntfy, Gotify, PushMe, 自定义Webhook, 微信公众号, 阿里云短信
  • 可扩展:通过 RegisterChannel 注册自定义渠道

快速使用

import "message-nest/pkg/sdk/messenger"

// 方式1: 直接发送
result, err := messenger.Send("Telegram", messenger.ChannelConfig{
    "bot_token": "your-bot-token",
    "chat_id":   "123456",
}, &messenger.Message{
    Title:    "告警通知",
    Text:     "服务器 CPU 超过 90%",
    Markdown: "**服务器 CPU** 超过 `90%`",
})

if err != nil {
    log.Fatal(err)
}
if !result.Success {
    log.Printf("发送失败: %s", result.Error)
}

使用 Client(预设默认配置)

client := messenger.NewClient()

// 预设 Telegram 配置
client.SetDefaultConfig("Telegram", messenger.ChannelConfig{
    "bot_token": "your-bot-token",
    "chat_id":   "default-chat",
})

// 后续发送可以覆盖部分配置,也可以传 nil 使用全部默认值
result, err := client.Send("Telegram", nil, &messenger.Message{
    Title: "Hello",
    Text:  "World",
})

各渠道配置参数

Email

参数 必填 说明
server SMTP 服务地址
port SMTP 端口
account 邮箱账号
passwd 邮箱密码
from_name 发信人名称
to_account 收件邮箱

Dtalk(钉钉)

参数 必填 说明
access_token 钉钉 access_token
secret 加签秘钥

QyWeiXin(企业微信)

参数 必填 说明
access_token 企业微信 access_token

Feishu(飞书)

参数 必填 说明
access_token 飞书 access_token
secret 加签秘钥

Telegram

参数 必填 说明
bot_token Bot Token
chat_id Chat ID
api_host 自定义 API 地址
proxy_url 代理地址 (http/https/socks5)

Bark

参数 必填 说明
push_key Bark Push Key
archive 是否存档
group 推送分组
sound 推送声音
icon 推送图标
level 时效性
url 跳转URL
key 加密Key
iv 加密IV

Ntfy

参数 必填 说明
topic Topic
url 自定义 API 地址
priority 优先级
icon 图标 URL
token Token
username 用户名
password 密码
actions Actions

Gotify

参数 必填 说明
url Gotify 服务地址
token Token
priority 优先级

PushMe

参数 必填 说明
push_key PushMe Push Key
url 自定义 API 地址
date 日期
type 类型

Custom(自定义Webhook

参数 必填 说明
webhook Webhook URL
body 请求体模板(TEXT 占位符会被替换)

WeChatOFAccount(微信公众号)

参数 必填 说明
appID 公众号 AppID
appsecret 公众号 AppSecret
tempid 模板消息 ID
to_account 接收者 OpenID

AliyunSMS(阿里云短信)

参数 必填 说明
access_key_id AccessKeyId
access_key_secret AccessKeySecret
sign_name 短信签名
region_id 区域ID(默认 cn-hangzhou
phone_number 手机号码
template_code 短信模板 CODE

自定义扩展

// 注册自定义渠道
messenger.RegisterChannel("MyChannel", func() messenger.Channel {
    return &myCustomChannel{}
})