词元之母TOK.MOM - 平台充值汇率 1:1 即 1 人民币充值到账 1 美元,支持一个 Key 调用近 600+ 海内外模型,限时特价模型低至 1 折,欢迎上岸!
| 场景 | 行为 |
|---|---|
| 个人聊天(私信) | 机器人响应每一条消息,无需 @提及。 |
| 群聊 | 机器人仅在被 @提及时响应。 |
| 频道 | 机器人仅在被 @提及时响应。 |
<at>BotName</at> 标签,Hermes 在处理前会自动去除这些标签。@microsoft/teams.cli 可自动完成机器人注册,无需进入 Azure 门户。TEAMS_ALLOWED_USERS 需要用到):localhost 投递消息。本地开发时,使用任意隧道工具获取一个公开的 HTTPS URL。默认端口为 3978,如需更改可通过 TEAMS_PORT 设置。https:// URL——下一步会用到。开发期间保持隧道运行。CLIENT_ID、CLIENT_SECRET 和 TENANT_ID,以及第六步所需的安装链接。请保存客户端密钥——它不会再次显示。~/.hermes/.env:3978(可通过 TEAMS_PORT 覆盖)。检查运行状态:[teams] Webhook server listening on 0.0.0.0:3978/api/messages| 变量 | 说明 |
|---|---|
TEAMS_CLIENT_ID | Azure AD 应用(客户端)ID |
TEAMS_CLIENT_SECRET | Azure AD 客户端密钥 |
TEAMS_TENANT_ID | Azure AD 租户 ID |
TEAMS_ALLOWED_USERS | 允许使用机器人的 AAD 对象 ID,逗号分隔 |
TEAMS_ALLOW_ALL_USERS | 设为 true 可跳过白名单,允许所有人使用 |
TEAMS_HOME_CHANNEL | 用于 cron/主动消息投递的会话 ID |
TEAMS_HOME_CHANNEL_NAME | 主频道的显示名称 |
TEAMS_PORT | Webhook 端口(默认:3978) |
~/.hermes/config.yaml 进行配置:/approve:teams 平台条目下与机器人配置并列配置:| 模式 | 适用场景 | 权衡 |
|---|---|---|
incoming_webhook | 使用 Teams 生成的静态 URL,简单地将摘要发布到某个频道。 | 不支持回复线程和表情回应,显示为 webhook 配置的身份。 |
graph | 通过 Microsoft Graph 以机器人身份发布带线程的频道帖子或 1:1/群聊消息。 | 需要完成 Graph 应用注册,并具备 ChannelMessage.Send(频道)或 Chat.ReadWrite.All(聊天)应用权限。 |
teams_pipeline 插件未启用,这些设置不会生效——它们仅在 pipeline 运行时绑定到 Graph webhook 入口时才会激活。TEAMS_PORT,默认 3978)可从互联网访问,且 TLS 证书有效——Teams 会拒绝自签名证书。| 问题 | 解决方案 |
|---|---|
health 端点正常但机器人不响应 | 检查隧道是否仍在运行,以及机器人的消息端点是否与隧道 URL 匹配 |
日志中出现 KeyError: 'teams' | 重启容器——此问题已在当前版本中修复 |
| 机器人响应时出现认证错误 | 验证 TEAMS_CLIENT_ID、TEAMS_CLIENT_SECRET 和 TEAMS_TENANT_ID 是否均已正确设置 |
No inference provider configured | 检查 ~/.hermes/.env 中是否设置了 ANTHROPIC_API_KEY(或其他提供商密钥) |
| 机器人收到消息但忽略它们 | 你的 AAD 对象 ID 可能不在 TEAMS_ALLOWED_USERS 中。运行 teams status --verbose 查找 |
| 隧道 URL 在重启后变更 | 使用命名隧道(devtunnel create hermes-bot)时,devtunnel URL 是持久的。ngrok 和 cloudflared 每次运行都会生成新 URL(除非你有付费计划)——URL 变更时请用 teams app update 更新机器人端点 |
| Teams 显示"此机器人未响应" | Webhook 返回了错误。检查 docker logs hermes 中的错误堆栈 |
日志中出现 [teams] Failed to connect | SDK 认证失败。仔细检查凭据,并确认租户 ID 与 teams login 时使用的账户匹配 |
TEAMS_ALLOWED_USERS,填入授权用户的 AAD 对象 ID。否则,任何能找到或安装你的机器人的人都可以与其交互。TEAMS_CLIENT_SECRET 视同密码对待——定期通过 Azure 门户或 Teams CLI 进行轮换。600 的 ~/.hermes/.env 中(chmod 600 ~/.hermes/.env)TEAMS_ALLOWED_USERS 中用户的消息;未授权的消息会被静默丢弃/api/messages)由 Teams Bot Framework 进行认证——不含有效 JWT 的请求会被拒绝