Mattermost Hermes Agent — แชททีมแบบโฮสต์เอง
วิธีเชื่อม Hermes Agent เข้ากับ Mattermost แบบ self-hosted ตั้งค่าบอท User ID และ env vars แล้วคุยกับเอเจนต์ได้ทั้ง DM และช่อง
Mattermost Hermes Agent — แชททีมแบบโฮสต์เอง
ถ้าทีมของคุณใช้งาน Mattermost อยู่แล้ว คุณคงรู้ถึงจุดเด่นของมันดี: หน้าตาและการใช้งานคล้าย Slack แต่เซิร์ฟเวอร์ — และข้อมูล — ยังคงอยู่ในโครงสร้างพื้นฐานของคุณเอง Hermes Agent เชื่อมต่อเข้ากับระบบผ่านบอท โดยใช้ Mattermost REST API (v4) ร่วมกับ WebSocket สำหรับเหตุการณ์แบบเรียลไทม์ ผู้ช่วยของคุณจึงตอบได้ทั้งใน DM และช่องทีม โดยไม่มีข้อมูลออกไปนอกเครือข่ายของคุณ
ไม่ต้องติดตั้งไลบรารีเพิ่มเติม: adapter ใช้ aiohttp ซึ่งมาพร้อมกับ Hermes อยู่แล้ว ใช้งานได้ทั้ง Mattermost Team Edition (ฟรี) และ Enterprise Edition
Hermes ทำงานอย่างไรใน Mattermost
| ที่ที่คุณคุยกับมัน | สิ่งที่เกิดขึ้น |
|---|---|
| DM | Hermes ตอบทุกข้อความ — ไม่ต้อง @mention แต่ละ DM มีเซสชันของตัวเอง |
| ช่อง (Channels) | Hermes ตอบเมื่อคุณ @mention มัน ถ้าไม่ mention มันจะไม่สนใจข้อความนั้น |
| เธรด (Threads) | เมื่อตั้ง MATTERMOST_REPLY_MODE=thread การตอบกลับจะซ้อนอยู่ใต้ข้อความของคุณและแยกจากช่องหลัก |
| ช่องที่แชร์กัน (Shared channels) | ประวัติเซสชันถูกแยกตามผู้ใช้โดยค่าเริ่มต้น คนสองคนในช่องเดียวจึงไม่แชร์บทสนทนาร่วมกัน |
พฤติกรรมข้อสุดท้ายควบคุมด้วย group_sessions_per_user ใน config.yaml:
group_sessions_per_user: true # each person keeps their own context
ตั้งเป็น false เฉพาะเมื่อคุณต้องการให้ทั้งช่องใช้บทสนทนาร่วมกันจริง ๆ เท่านั้น เซสชันที่แชร์กันหมายความว่าทุกคนแชร์ทั้งบริบทที่เพิ่มขึ้นและค่าใช้จ่ายโทเคน และงานที่ใช้เครื่องมือหนัก ๆ ของคนหนึ่งอาจทำให้บริบทบวมหรือรบกวนการทำงานของคนอื่นได้
ขั้นตอนที่ 1: เปิดใช้งานบัญชีบอท (ฝั่งผู้ดูแลระบบ)
ต้องเปิดใช้งานบัญชีบอทในเซิร์ฟเวอร์ก่อนจึงจะสร้างได้:
- เข้าสู่ระบบ Mattermost ในฐานะ System Admin
- ไปที่ System Console → Integrations → Bot Accounts
- ตั้ง Enable Bot Account Creation เป็น true แล้วคลิก Save
ไม่มีสิทธิ์ผู้ดูแลระบบ? ขอให้ผู้ดูแล Mattermost ของคุณเปิดใช้งานบัญชีบอทและสร้างให้คุณ
ขั้นตอนที่ 2: สร้างบัญชีบอท
- คลิกเมนู ☰ (มุมซ้ายบน) → Integrations → Bot Accounts → Add Bot Account
- กรอกรายละเอียด: Username เช่น
hermes, Display Name เช่นHermes Agentและ Role —Memberก็เพียงพอ - คลิก Create Bot Account แล้ว คัดลอกโทเคนทันที — มันจะแสดงเพียงครั้งเดียว ถ้าทำหายคุณจะต้องสร้างใหม่จากหน้าตั้งค่าบัญชีบอท
⚠️ อย่าแชร์โทเคนหรือ commit ลง Git เด็ดขาด ใครก็ตามที่มีโทเคนนี้จะควบคุมบอทได้เต็มที่
อยากให้เอเจนต์โพสต์ในนามผู้ใช้ของคุณเองแทนที่จะเป็นบอทแยกต่างหาก? สร้าง personal access token ที่ Profile → Security → Personal Access Tokens → Create Token
ขั้นตอนที่ 3: เชิญบอทเข้าช่อง
บอทจะตอบเฉพาะในช่องที่มันอยู่เท่านั้น:
- เปิดช่อง → คลิกชื่อช่อง → Add Members
- ค้นหาชื่อผู้ใช้บอท (เช่น
hermes) แล้วเพิ่มเข้าไป
สำหรับ DM เพียงเปิดข้อความส่วนตัวกับบอท — ไม่ต้องเชิญ
ขั้นตอนที่ 4: ค้นหา User ID ของคุณใน Mattermost
Hermes ใช้ User ID ของคุณ — ไม่ใช่ชื่อผู้ใช้ — ในการตัดสินว่าใครคุยกับบอทได้:
- คลิก avatar ของคุณ (มุมซ้ายบน) → Profile
- หน้าต่างจะแสดง User ID ของคุณ: สตริงตัวอักษรและตัวเลข 26 ตัว เช่น
3uo8dkh1p7g1mfk49ear5fzs5cคลิกเพื่อคัดลอก
หรืออ่านจาก API ก็ได้:
curl -H "Authorization: Bearer YOUR_TOKEN" \
https://your-mattermost-server/api/v4/users/me | jq .id
User ID ของคุณ ไม่ใช่
@usernameที่คุณเห็นในข้อความ การวางชื่อผู้ใช้เป็นสาเหตุที่พบบ่อยที่สุดที่ทำให้บอทเงียบ
ขั้นตอนที่ 5: ตั้งค่า Hermes
รันตัวช่วยตั้งค่าแบบมีคำแนะนำ แล้วเลือก Mattermost เมื่อถูกถาม — มันจะถามหา URL ของเซิร์ฟเวอร์ โทเคนบอท และ User ID ของคุณ:
hermes gateway setup
หรือตั้งค่าด้วยตัวเองใน ~/.hermes/.env:
# Required
MATTERMOST_URL=https://mm.example.com
MATTERMOST_TOKEN=your-bot-token
MATTERMOST_ALLOWED_USERS=3uo8dkh1p7g1mfk49ear5fzs5c
# Multiple allowed users (comma-separated)
# MATTERMOST_ALLOWED_USERS=3uo8dkh1p7g1mfk49ear5fzs5c,8fk2jd9s0a7bncm1xqw4tp6r3e
# Optional: reply in a thread instead of flat messages (default: off)
# MATTERMOST_REPLY_MODE=thread
# Optional: respond without an @mention (default: true = mention required)
# MATTERMOST_REQUIRE_MENTION=false
# Optional: channels where no @mention is needed (comma-separated channel IDs)
# MATTERMOST_FREE_RESPONSE_CHANNELS=channel_id_1,channel_id_2
จากนั้นเริ่ม gateway:
hermes gateway
บอทจะเชื่อมต่อกับเซิร์ฟเวอร์ Mattermost ของคุณภายในไม่กี่วินาที ลองส่ง DM ไปหามัน หรือ @mention มันในช่องที่เพิ่มมันไว้เพื่อทดสอบ
ขั้นตอนที่ 6: สวิตช์พฤติกรรมเสริม
| การตั้งค่า | สิ่งที่มันทำ |
|---|---|
MATTERMOST_REPLY_MODE |
off (ค่าเริ่มต้น) โพสต์ข้อความแบบแบน; thread ซ้อนการตอบกลับใต้ข้อความของคุณและทำให้ช่องที่วุ่นวายเป็นระเบียบ |
MATTERMOST_REQUIRE_MENTION |
ค่าเริ่มต้น true ตั้งเป็น false เพื่อตอบทุกข้อความในช่อง (DM ทำงานได้เสมอ) |
MATTERMOST_FREE_RESPONSE_CHANNELS |
Channel ID ที่ข้ามข้อกำหนดการ mention แม้จะเปิดให้ต้อง mention |
MATTERMOST_HOME_CHANNEL |
ที่ที่ข้อความเชิงรุกไป — เอาต์พุต cron, การเตือน, การแจ้งเตือน หรือพิมพ์ /sethome ในช่อง |
mattermost.allowed_channels |
จำกัดบอทให้อยู่ในรายการ Channel ID ที่กำหนด; ข้อความจากที่อื่นจะถูกทิ้ง DM ได้รับยกเว้น |
mattermost.channel_prompts |
แทรก system prompt ชั่วคราวต่อช่อง — ใช้ทุกเทิร์น ไม่ถูกบันทึกลงประวัติบทสนทนา |
เมื่อบอทถูก @mention การ mention จะถูกตัดออกจากข้อความก่อนประมวลผล ดังนั้น @hermes summarize this thread จะมาถึงเป็นคำสั่งที่สะอาด
การแก้ปัญหา
| อาการ | สาเหตุที่เป็นไปได้ | วิธีแก้ |
|---|---|---|
| บอทไม่สนใจคุณในช่อง | มันไม่ได้อยู่ในช่อง หรือ User ID ของคุณไม่อยู่ใน MATTERMOST_ALLOWED_USERS |
เพิ่มบอทเข้าช่อง ตรวจสอบ User ID 26 ตัว แล้วรีสตาร์ท gateway |
| บอทโพสต์ไม่ได้ | โทเคนไม่ถูกต้อง หรือบอทไม่มีสิทธิ์ในช่องนั้น | ตรวจสอบ MATTERMOST_TOKEN ยืนยันว่าบัญชียังใช้งานได้และเป็นสมาชิกช่อง |
| หลุดการเชื่อมต่อบ่อย | WebSocket หลุด เซิร์ฟเวอร์รีสตาร์ท หรือปัญหาพร็อกซี/ไฟร์วอลล์ | adapter จะเชื่อมต่อใหม่ด้วย exponential backoff (2s → 60s); สำหรับ nginx ตรวจสอบว่าตั้งค่า WebSocket upgrade headers แล้ว |
| ไม่มีอะไรเกิดขึ้นเลย | gateway ไม่ได้รัน หรือ URL/โทเคนผิด | ตรวจสอบเอาต์พุตของ hermes gateway และดูว่า MATTERMOST_URL มี https:// และไม่มีเครื่องหมายทับปิดท้าย |
ทดสอบโทเคนโดยตรงด้วย:
curl -H "Authorization: Bearer YOUR_TOKEN" \
https://your-server/api/v4/users/me
การรักษาความปลอดภัยของบอท
ตั้ง MATTERMOST_ALLOWED_USERS เสมอ หากไม่มี gateway จะปฏิเสธผู้ใช้ทั้งหมดโดยค่าเริ่มต้นเพื่อความปลอดภัย — และผู้ใช้ที่ได้รับอนุญาตจะเข้าถึงความสามารถทั้งหมดของเอเจนต์ รวมถึงการใช้เครื่องมือและการเข้าถึงระบบ ดังนั้นควรจำกัดรายการให้แคบ สำหรับมุมมองที่กว้างขึ้นเกี่ยวกับการเสริมความปลอดภัยของการติดตั้ง ดูคำแนะนำด้านความปลอดภัยอย่างเป็นทางการ
ต่อไปทำอะไรได้บ้าง?
เมื่อ gateway ทำงานแล้ว Mattermost ก็ทำงานเหมือนช่องทาง Hermes อื่น ๆ ทุกประการ: slash commands, การอัปโหลดไฟล์, ข้อความเสียง, เอาต์พุต cron ที่ส่งไปยัง home channel ของคุณ — ทั้งหมดบนโครงสร้างพื้นฐานที่คุณควบคุม หากคุณอยากใช้ตัวเลือกแบบโฮสต์แทน การเชื่อมต่อ Slack ครอบคลุมเส้นทาง Socket Mode; หากคุณรัน gateway บนหลายเครื่อง Hermes Relay เชื่อมต่อพวกมันเข้าด้วยกัน
📖 เอกสารทางการ
この記事は Hermes Agent のเอกสารทางการに基づいています:เอกสารทางการ › user-guide/messaging/mattermost