MINARA
使用 Minara客户端与界面消息平台

Mattermost

自托管 Mattermost,出站使用 bot-token,入站仅通过 outgoing webhook 支持公开频道。

🟡 出站已就绪,入站仅通过 outgoing webhook 支持公开频道。 接入成本最低。Mattermost 的 WebSocket bot 模式(支持私信和私有频道)将在后续版本中支持。

功能概览

  • 出站文本:通过 POST /api/v4/posts 配合 bot 个人访问 token 发送;支持通过 root_id 实现线程回复。
  • 入站 outgoing webhook:监听路径为 /webhooks/mattermost。当公开频道中出现已配置的触发词时,Mattermost 会向该 URL 发起 POST 请求。
  • 本版本仅支持文本。 通过 Mattermost Files API 上传文件及解析附件的功能暂未实现。
  • 文本上限 16383 字符(Mattermost 默认 PostMessageMaxRunes)。

配置步骤

1. 创建 bot 账号

  1. 以系统管理员身份登录 Mattermost
  2. 进入 System Console → "Integrations" → "Bot Accounts",点击 "Add Bot Account"
  3. 填写用户名(如 minara)、显示名称及可选头像。保存后,Mattermost 会显示 Bot Personal Access Token,请立即保存(之后无法再次查看)
  4. 在目标频道的输入框执行 /invite @minara,将 bot 加入该频道

2. 配置 outgoing webhook(可选,用于入站)

  1. 同一页面,进入 "Integrations" → "Outgoing Webhooks",点击 "Add Outgoing Webhook"
  2. 配置如下:
    • Channel:webhook 监听的公开频道
    • Trigger words:如 @bot!minara(Mattermost 仅在消息以触发词开头时触发 webhook)
    • Callback URLshttps://<your-host>/webhooks/mattermost
  3. 保存后复制生成的 Token(即 MATTERMOST_OUTGOING_WEBHOOK_TOKEN

3. 配置 Minara

minara auth messaging add
# 从列表中选择 `mattermost`。

或直接设置环境变量:

MATTERMOST_URL=https://mattermost.example.com
MATTERMOST_BOT_TOKEN=<personal access token>
MATTERMOST_DEFAULT_CHANNEL_ID=<channel id from Channel URL>
MATTERMOST_OUTGOING_WEBHOOK_TOKEN=<outgoing-webhook token>

打开频道后,URL 中会显示频道 ID: https://mattermost.example.com/team/channels/<id>,其中 <id> 即为频道 ID。

4. 测试

minara auth messaging test mattermost

入站 Webhook

Mattermost 的 outgoing webhook 会向 /webhooks/mattermost 发送 application/x-www-form-urlencoded 格式的 POST 请求,字段如下:

token=<webhook token>
channel_id=<channel id>
user_id=<user id>
user_name=<username>
text=<the user's message>
post_id=<message id>
trigger_word=<matched trigger>
from_webhook=false

Minara 会以常数时间比较 token 字段与 MATTERMOST_OUTGOING_WEBHOOK_TOKENfrom_webhook === "true" 标志用于过滤自循环(即 bot 自身的消息通过触发词再次到达)。

限制与注意事项

  • outgoing webhook 仅在公开频道中触发。 私有频道和私信需要通过 WebSocket bot 路径实现(计划中)。请合理配置触发词,避免高频频道持续触发 Agent。
  • 触发词须位于消息开头。 Mattermost 只匹配消息起始处的触发词。@bot hello 有效,hello @bot 无效。
  • 常数时间比较,非 HMAC。 token 是入站的唯一认证凭据,请妥善保密。
  • 不支持流式编辑。 Mattermost 提供 PUT /posts/<id> 接口,但网关暂未接入。

故障排查

出站报 "401 Unauthorized" MATTERMOST_BOT_TOKEN 有误、已过期,或权限范围限于其他团队。在 System Console 生成新 token 并更新环境变量。

"Outgoing webhook 未触发"

  • 频道为私有频道(仅支持公开频道)
  • 消息未以触发词开头
  • webhook 配置的频道与实际频道不一致

"入站报 401" MATTERMOST_OUTGOING_WEBHOOK_TOKEN 不匹配。重新创建 webhook 后 token 会轮换,请同步更新环境变量。

参考资料

本页目录