🤖HermesBlog
แพลตฟอร์มส่งข้อความของ Hermes · Parte 108/9/2026

Mattermost Hermes Agent — แชททีมแบบโฮสต์เอง

วิธีเชื่อม Hermes Agent เข้ากับ Mattermost แบบ self-hosted ตั้งค่าบอท User ID และ env vars แล้วคุยกับเอเจนต์ได้ทั้ง DM และช่อง

Mattermost: Slack แบบโอเพนซอร์ส

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: เปิดใช้งานบัญชีบอท (ฝั่งผู้ดูแลระบบ)

ต้องเปิดใช้งานบัญชีบอทในเซิร์ฟเวอร์ก่อนจึงจะสร้างได้:

  1. เข้าสู่ระบบ Mattermost ในฐานะ System Admin
  2. ไปที่ System Console → Integrations → Bot Accounts
  3. ตั้ง Enable Bot Account Creation เป็น true แล้วคลิก Save

ไม่มีสิทธิ์ผู้ดูแลระบบ? ขอให้ผู้ดูแล Mattermost ของคุณเปิดใช้งานบัญชีบอทและสร้างให้คุณ

ขั้นตอนที่ 2: สร้างบัญชีบอท

  1. คลิกเมนู (มุมซ้ายบน) → IntegrationsBot AccountsAdd Bot Account
  2. กรอกรายละเอียด: Username เช่น hermes, Display Name เช่น Hermes Agent และ RoleMember ก็เพียงพอ
  3. คลิก Create Bot Account แล้ว คัดลอกโทเคนทันที — มันจะแสดงเพียงครั้งเดียว ถ้าทำหายคุณจะต้องสร้างใหม่จากหน้าตั้งค่าบัญชีบอท

⚠️ อย่าแชร์โทเคนหรือ commit ลง Git เด็ดขาด ใครก็ตามที่มีโทเคนนี้จะควบคุมบอทได้เต็มที่

อยากให้เอเจนต์โพสต์ในนามผู้ใช้ของคุณเองแทนที่จะเป็นบอทแยกต่างหาก? สร้าง personal access token ที่ Profile → Security → Personal Access Tokens → Create Token

ขั้นตอนที่ 3: เชิญบอทเข้าช่อง

บอทจะตอบเฉพาะในช่องที่มันอยู่เท่านั้น:

  1. เปิดช่อง → คลิกชื่อช่อง → Add Members
  2. ค้นหาชื่อผู้ใช้บอท (เช่น hermes) แล้วเพิ่มเข้าไป

สำหรับ DM เพียงเปิดข้อความส่วนตัวกับบอท — ไม่ต้องเชิญ

ขั้นตอนที่ 4: ค้นหา User ID ของคุณใน Mattermost

Hermes ใช้ User ID ของคุณ — ไม่ใช่ชื่อผู้ใช้ — ในการตัดสินว่าใครคุยกับบอทได้:

  1. คลิก avatar ของคุณ (มุมซ้ายบน) → Profile
  2. หน้าต่างจะแสดง 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