机器人通道
EasyShell 支持多种消息通道连接 AI 助手,让团队成员通过 Telegram、Discord、钉钉、飞书、Slack 或企业微信与 EasyShell 交互。
| 通道 | 模式 | 是否需要公网 IP | 说明 |
|---|---|---|---|
| Telegram | 长轮询 | 否 | 自动轮询,无需服务端暴露 |
| Discord | REST 轮询 | 否 | 每 2 秒拉取消息 |
| 钉钉 | Webhook / Stream | Webhook: 是 / Stream: 否 | Stream 模式通过 WebSocket 连接,无需公网 |
| 飞书 | Webhook / Stream | Webhook: 是 / Stream: 否 | Stream 模式通过 WebSocket 连接,无需公网 |
| Slack | Webhook | 是 | 通过 Events API 接收消息 |
| 企业微信 | Webhook | 否 | 仅支持主动推送消息到群 |
Telegram 机器人
Section titled “Telegram 机器人”1. 创建 Telegram Bot
Section titled “1. 创建 Telegram Bot”- 在 Telegram 中搜索 @BotFather
- 发送
/newbot命令 - 按提示设置 Bot 名称和用户名
- 创建成功后,BotFather 会返回 Bot Token(格式:
123456789:ABCdefGHI-jklMNO...) - 妥善保存此 Token
2. 获取 Chat ID
Section titled “2. 获取 Chat ID”- 先给 Bot 发送一条消息(或将 Bot 加入群组发一条消息)
- 浏览器访问:
https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates - 在返回的 JSON 中找到
"chat":{"id": 123456}即为 Chat ID
在 Telegram 搜索 @userinfobot,发送任意消息即可获取你的 Chat ID。
3. 在 EasyShell 中配置
Section titled “3. 在 EasyShell 中配置”- 进入 系统管理 → 机器人配置 → Telegram
- 填写以下配置项:
| 配置项 | 说明 | 是否必填 |
|---|---|---|
| Bot Token | 从 BotFather 获取的 Token | 必填 |
| Allowed Chat IDs | 允许的 Chat ID,多个用英文逗号分隔 | 选填(留空则接受所有消息) |
- 打开 启用 开关
- 配置完成后系统自动启动长轮询,Bot 会自动接收并回复消息
Discord 机器人
Section titled “Discord 机器人”1. 创建 Discord Bot
Section titled “1. 创建 Discord Bot”- 访问 Discord Developer Portal
- 点击 New Application,输入应用名称并创建
- 在左侧菜单进入 Bot 页面
- 点击 Add Bot 创建机器人
- 点击 Reset Token 获取 Bot Token,妥善保存
- 在 Privileged Gateway Intents 下开启 MESSAGE CONTENT INTENT(重要,否则无法读取消息内容)
2. 邀请 Bot 到服务器
Section titled “2. 邀请 Bot 到服务器”- 在左侧菜单进入 OAuth2 → URL Generator
- Scopes 勾选
bot - Bot Permissions 勾选:
Send Messages(发送消息)Read Message History(读取消息历史)View Channels(查看频道)
- 复制生成的邀请链接,在浏览器中打开
- 选择目标服务器,确认授权
3. 获取 Guild ID 和 Channel ID
Section titled “3. 获取 Guild ID 和 Channel ID”- 在 Discord 客户端中开启 开发者模式:
- 用户设置 → 高级 → 开启「开发者模式」
- 获取 Guild ID(服务器 ID):右键点击服务器名称 → 复制服务器 ID
- 获取 Channel ID(频道 ID):右键点击目标文字频道 → 复制频道 ID
4. 在 EasyShell 中配置
Section titled “4. 在 EasyShell 中配置”- 进入 系统管理 → 机器人配置 → Discord
- 填写以下配置项:
| 配置项 | 说明 | 是否必填 |
|---|---|---|
| Bot Token | Discord Bot Token | 必填 |
| Guild ID | 服务器 ID | 必填 |
| Allowed Channel IDs | 允许的频道 ID,多个用英文逗号分隔 | 选填(留空则监听所有频道) |
- 打开 启用 开关
钉钉机器人支持两种模式:Webhook 模式和 Stream 模式。
Stream 模式通过 WebSocket 长连接接收消息,无需公网 IP、无需 HTTPS 证书,是推荐的接入方式。
1. 创建企业内部应用
Section titled “1. 创建企业内部应用”- 登录 钉钉开放平台
- 创建企业内部应用 → 添加 机器人 能力
- 在应用的 凭证与基础信息 中获取 Client ID(AppKey)和 Client Secret(AppSecret)
2. 在 EasyShell 中配置
Section titled “2. 在 EasyShell 中配置”- 进入 系统管理 → 机器人配置 → 钉钉
- 将模式切换为 Stream
- 填写以下配置项:
| 配置项 | 说明 | 是否必填 |
|---|---|---|
| 模式 | 选择 Stream | 必填 |
| Client ID | 应用的 AppKey | 必填 |
| Client Secret | 应用的 AppSecret | 必填 |
- 打开 启用 开关
Webhook 模式需要服务器有公网可访问的 HTTPS 地址。
1. 创建钉钉自定义机器人
Section titled “1. 创建钉钉自定义机器人”- 打开钉钉电脑客户端,进入目标群聊
- 点击群设置 → 智能群助手 → 添加机器人
- 选择 自定义(通过 Webhook 接入)
- 设置机器人名称和头像
- 安全设置选择 加签,记录下 Secret(以
SEC开头的字符串) - 点击完成,复制生成的 Webhook URL
2. 配置回调地址(接收用户消息)
Section titled “2. 配置回调地址(接收用户消息)”企业内部应用机器人配置步骤:
- 登录 钉钉开放平台
- 创建企业内部应用 → 添加机器人能力
- 在消息接收地址中填写 EasyShell 的回调地址:
https://<你的服务器域名>:<端口>/api/v1/webhook/dingtalk
- 回调地址要求:
- 必须使用 HTTPS 协议
- 必须能从公网访问
- 如服务器在内网,可使用 ngrok、frp 等内网穿透工具
3. 在 EasyShell 中配置
Section titled “3. 在 EasyShell 中配置”- 进入 系统管理 → 机器人配置 → 钉钉
- 将模式切换为 Webhook
- 填写以下配置项:
| 配置项 | 说明 | 是否必填 |
|---|---|---|
| 模式 | 选择 Webhook | 必填 |
| Webhook URL | 钉钉 Webhook 地址 | 必填 |
| Secret | 加签密钥(以 SEC 开头) | 推荐配置 |
- 打开 启用 开关
飞书机器人同样支持 Webhook 模式和 Stream 模式。
Stream 模式通过 WebSocket 长连接接收消息,无需公网 IP、无需 HTTPS 证书。
1. 创建飞书应用
Section titled “1. 创建飞书应用”- 登录 飞书开放平台
- 创建企业自建应用
- 添加 机器人 能力
- 在 凭证与基础信息 中获取 App ID 和 App Secret
- 在 事件与回调 → 事件配置 中,选择使用 长连接 方式接收事件
- 添加事件订阅:
im.message.receive_v1(接收消息)
2. 在 EasyShell 中配置
Section titled “2. 在 EasyShell 中配置”- 进入 系统管理 → 机器人配置 → 飞书
- 将模式切换为 Stream
- 填写以下配置项:
| 配置项 | 说明 | 是否必填 |
|---|---|---|
| 模式 | 选择 Stream | 必填 |
| App ID | 飞书应用的 App ID | 必填 |
| App Secret | 飞书应用的 App Secret | 必填 |
- 打开 启用 开关
Webhook 模式需要服务器有公网可访问的 HTTPS 地址。
1. 创建飞书应用
Section titled “1. 创建飞书应用”- 登录 飞书开放平台
- 创建企业自建应用 → 添加 机器人 能力
- 在 凭证与基础信息 中获取 App Secret(用于签名验证)
- 在 事件与回调 中设置请求地址:
https://<你的服务器域名>:<端口>/api/v1/webhook/feishu
- 飞书会发送
url_verification请求验证地址,EasyShell 会自动处理此验证 - 添加事件订阅:
im.message.receive_v1(接收消息)
2. 获取 Webhook URL(主动推送)
Section titled “2. 获取 Webhook URL(主动推送)”如需主动推送消息到飞书群:
- 在飞书群设置中添加 自定义机器人
- 复制生成的 Webhook URL
- 可选择开启 签名校验,获取密钥
3. 在 EasyShell 中配置
Section titled “3. 在 EasyShell 中配置”- 进入 系统管理 → 机器人配置 → 飞书
- 将模式切换为 Webhook
- 填写以下配置项:
| 配置项 | 说明 | 是否必填 |
|---|---|---|
| 模式 | 选择 Webhook | 必填 |
| Webhook URL | 飞书 Webhook 地址(用于主动推送) | 选填 |
| Secret | 签名密钥(HMAC-SHA256 验证) | 推荐配置 |
- 打开 启用 开关
Slack 机器人
Section titled “Slack 机器人”1. 创建 Slack App
Section titled “1. 创建 Slack App”- 访问 Slack API,点击 Create New App
- 选择 From scratch,输入应用名称并选择工作区
- 在 Event Subscriptions 中开启事件订阅
- 设置请求地址:
https://<你的服务器域名>:<端口>/api/v1/webhook/slack
- 在 Subscribe to bot events 中添加:
message.channels、message.im - 在 OAuth & Permissions 中添加 Bot Token Scopes:
chat:write— 发送消息channels:history— 读取频道消息历史im:history— 读取私信历史
- 安装 App 到工作区,获取 Bot Token(以
xoxb-开头) - 在 Basic Information 中获取 Signing Secret
2. 在 EasyShell 中配置
Section titled “2. 在 EasyShell 中配置”- 进入 系统管理 → 机器人配置 → Slack
- 填写以下配置项:
| 配置项 | 说明 | 是否必填 |
|---|---|---|
| Webhook URL | Slack Incoming Webhook URL(用于主动推送) | 选填 |
| Bot Token | Bot Token(以 xoxb- 开头,用于频道内回复) | 推荐配置 |
| Allowed Channel IDs | 允许的频道 ID,多个用英文逗号分隔 | 选填 |
- 打开 启用 开关
企业微信机器人
Section titled “企业微信机器人”企业微信机器人当前支持 主动推送 消息到群聊。
1. 创建群机器人
Section titled “1. 创建群机器人”- 在企业微信群聊中,点击群设置 → 添加群机器人
- 输入机器人名称并创建
- 复制生成的 Webhook URL
2. 在 EasyShell 中配置
Section titled “2. 在 EasyShell 中配置”- 进入 系统管理 → 机器人配置 → 企业微信
- 填写以下配置项:
| 配置项 | 说明 | 是否必填 |
|---|---|---|
| Webhook URL | 企业微信 Webhook 地址 | 必填 |
- 打开 启用 开关
会话上下文设置
Section titled “会话上下文设置”机器人通道支持持久化对话上下文,AI 可以在一次会话中记住之前的消息。这些设置对所有通道全局生效。
进入 系统管理 → 机器人配置,找到 通道上下文设置 面板。
| 配置项 | 说明 | 默认值 |
|---|---|---|
| 上下文模式 | 持久化 — AI 在会话内记住对话历史。无状态 — 每条消息独立处理,不保留历史。 | 持久化 |
| 会话超时 | 空闲多少分钟后会话过期、上下文清除。设为 0 则不超时。 | 30 分钟 |
| 默认供应商 | 机器人通道对话使用的 AI 供应商(如 OpenAI、Anthropic 等)。未设置时使用系统默认 AI 供应商。 | 系统默认 |
| 默认模型 | 机器人通道对话使用的 AI 模型。未设置时使用供应商的默认模型。 | 供应商默认 |
通道级供应商与模型
Section titled “通道级供应商与模型”在每个通道的配置区域中,可以单独设置该通道的 供应商 和 模型,实现不同通道使用不同的 AI 模型。如留空,则使用上述全局通道默认设置。
重置对话上下文
Section titled “重置对话上下文”用户可以在任意机器人通道中发送 /new 命令来 重置对话上下文,开始全新会话。这将清除该用户/聊天的所有历史消息记录。
定时任务通道推送
Section titled “定时任务通道推送”定时巡检任务和定时脚本执行任务的结果可以推送到指定的机器人通道。在创建或编辑定时任务时,可以选择 通知通道,任务执行完成后结果会自动发送到选中的机器人通道。
支持推送到所有已启用的通道:Telegram、Discord、钉钉、飞书、Slack、企业微信。
机器人配置后无响应?
Section titled “机器人配置后无响应?”- 确认对应通道的 启用 开关已打开
- 查看 EasyShell 服务器日志,搜索关键字
Started channel或Failed to start channel - 确认 Bot Token 或 Webhook URL 填写正确
- 确认 AI 设置中已配置可用的模型提供商(如 OpenAI、DeepSeek 等)
钉钉/飞书 Stream 模式连接不上?
Section titled “钉钉/飞书 Stream 模式连接不上?”- 确认 Client ID / App ID 和 Secret 填写正确
- 确认应用已在开放平台上添加了机器人能力
- 检查服务器的出站网络是否可以访问
api.dingtalk.com或open.feishu.cn - 查看日志中的 WebSocket 连接错误信息
- Stream 模式断线后会自动指数退避重连,等待几秒即可
Telegram / Discord Bot 如何重启?
Section titled “Telegram / Discord Bot 如何重启?”在 机器人配置 页面,关闭对应通道的启用开关,等待几秒后重新打开即可。系统会自动停止旧连接并建立新连接。
钉钉机器人收不到消息(Webhook 模式)?
Section titled “钉钉机器人收不到消息(Webhook 模式)?”- 确认使用的是企业内部应用机器人(非群自定义机器人),且已配置消息接收地址
- 确认回调地址
https://<域名>/api/v1/webhook/dingtalk可从公网访问 - 检查加签密钥(Secret)是否与钉钉开放平台配置一致
- 查看服务器日志是否有签名验证失败的记录
飞书机器人收不到消息(Webhook 模式)?
Section titled “飞书机器人收不到消息(Webhook 模式)?”- 确认回调地址
https://<域名>/api/v1/webhook/feishu可从公网访问 - 确认已完成
url_verification验证(EasyShell 自动处理) - 确认已订阅
im.message.receive_v1事件 - 检查签名密钥(Secret)是否与飞书开放平台配置一致
Slack 机器人收不到消息?
Section titled “Slack 机器人收不到消息?”- 确认 Events API 的请求地址
https://<域名>/api/v1/webhook/slack可从公网访问 - 确认已添加
message.channels和message.im事件订阅 - 确认 Bot Token Scopes 包含
chat:write、channels:history - 检查 Signing Secret 是否正确
如何查看机器人运行状态?
Section titled “如何查看机器人运行状态?”查看 EasyShell 服务器启动日志:
Started channel: telegram — Telegram 机器人已启动Started channel: discord — Discord 机器人已启动DingTalk bot started (stream mode) — 钉钉机器人已启动(Stream 模式)DingTalk bot started (webhook mode) — 钉钉机器人已启动(Webhook 模式)Feishu bot started (stream mode) — 飞书机器人已启动(Stream 模式)Feishu bot started (webhook mode) — 飞书机器人已启动(Webhook 模式)Slack bot started (webhook mode) — Slack 机器人已启动WeChat Work bot started (webhook mode) — 企业微信机器人已启动Failed to start channel: xxx — 启动失败,查看错误详情机器人不记得对话历史?
Section titled “机器人不记得对话历史?”- 检查 通道上下文设置 中的 上下文模式 是否为 持久化(而非无状态)
- 确认 会话超时 时间未到期 — 如果用户空闲时间超过配置的超时时间,会话已被清除
- 查看服务器日志中是否有
Session expired for消息,表示会话因超时被清理 - 注意服务器重启会清除所有会话上下文
如何让不同通道使用不同的 AI 模型?
Section titled “如何让不同通道使用不同的 AI 模型?”在每个通道的配置区域中单独设置 供应商 和 模型。例如,Telegram 使用 GPT-4o,Discord 使用 Claude。如果通道未设置供应商/模型,则依次回退到全局通道默认配置、系统 AI 设置。