hermes-agent/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/user-guide/messaging/sms.md
Teknium 76135b329d
docs(i18n): translate all docs into Simplified Chinese (zh-Hans) (#31942)
Translates the full English docs corpus (335 files) into Simplified
Chinese under website/i18n/zh-Hans/. Combined with PR #31895 (cross-
locale link fix), the 简体中文 locale toggle now serves a complete
Chinese site with working cross-page navigation.

Pipeline:
- Claude Sonnet 4.6 via OpenRouter, 8-way concurrent
- Preserves frontmatter keys, code blocks, MDX/JSX, link URLs, brand
  names, and technical jargon (prompt/token/hook/MCP/ACP/etc.)
- Translates only frontmatter title/description and prose
- Two largest files (configuration.md 93KB, research-paper-writing.md
  107KB) retried with 64K max_tokens after initial fence-drift
- 3 manual post-fixes for MDX edge cases the model didn't escape:
  < in optional-skills-catalog table, double-quotes in an alt= tag,
  and a bare URL adjacent to a full-width period

Cost: ~$30 total (Sonnet 4.6 input $3/M + output $15/M).

Verified `npm run build` succeeds for both en and zh-Hans locales,
no double-prefixed /docs/zh-Hans/docs/ URLs in rendered output,
all in-page navigation resolves correctly.

Translations are machine-generated and may need human review on
specific pages — but they're an enormous improvement over the
previous state (3 zh-Hans pages out of 335).
2026-05-25 01:47:38 -07:00

6.4 KiB
Raw Blame History

sidebar_position sidebar_label title description
8 SMS (Twilio) SMS (Twilio) 通过 Twilio 将 Hermes Agent 设置为 SMS 聊天机器人

SMS 设置Twilio

Hermes 通过 Twilio API 接入 SMS。用户向你的 Twilio 电话号码发送短信,即可获得 AI 回复——与 Telegram 或 Discord 的对话体验相同,但通过标准短信进行。

:::info 共享凭据 SMS gateway网关与可选的 telephony skill 共享凭据。如果你已为语音通话或单次 SMS 配置了 Twilio该 gateway 可直接使用相同的 TWILIO_ACCOUNT_SIDTWILIO_AUTH_TOKENTWILIO_PHONE_NUMBER。 :::


前提条件

  • Twilio 账户在 twilio.com 注册(提供免费试用)
  • 具备 SMS 功能的 Twilio 电话号码
  • 可公开访问的服务器 — Twilio 在收到 SMS 时会向你的服务器发送 webhook
  • aiohttppip install 'hermes-agent[sms]'

第一步:获取 Twilio 凭据

  1. 前往 Twilio 控制台
  2. 从仪表板复制你的 Account SIDAuth Token
  3. 前往 Phone Numbers → Manage → Active Numbers,记录 E.164 格式的电话号码(例如 +15551234567

第二步:配置 Hermes

交互式设置(推荐)

hermes gateway setup

从平台列表中选择 SMS (Twilio),向导将提示你输入凭据。

手动设置

~/.hermes/.env 中添加:

TWILIO_ACCOUNT_SID=ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TWILIO_AUTH_TOKEN=your_auth_token_here
TWILIO_PHONE_NUMBER=+15551234567

# 安全:限制特定电话号码(推荐)
SMS_ALLOWED_USERS=+15559876543,+15551112222

# 可选:为 cron 任务投递设置主频道
SMS_HOME_CHANNEL=+15559876543

第三步:配置 Twilio Webhook

Twilio 需要知道将传入消息发送到哪里。在 Twilio 控制台 中:

  1. 前往 Phone Numbers → Manage → Active Numbers
  2. 点击你的电话号码
  3. Messaging → A MESSAGE COMES IN 下,设置:
    • Webhookhttps://your-server:8080/webhooks/twilio
    • HTTP MethodPOST

:::tip 暴露你的 Webhook 如果你在本地运行 Hermes请使用隧道工具暴露 webhook

# 使用 cloudflared
cloudflared tunnel --url http://localhost:8080

# 使用 ngrok
ngrok http 8080

将生成的公网 URL 设置为你的 Twilio webhook。 :::

SMS_WEBHOOK_URL 设置为你在 Twilio 中配置的相同 URL。 这是 Twilio 签名验证所必需的——如果未设置,适配器将拒绝启动:

# 必须与 Twilio 控制台中的 webhook URL 一致
SMS_WEBHOOK_URL=https://your-server:8080/webhooks/twilio

webhook 端口默认为 8080,可通过以下方式覆盖:

SMS_WEBHOOK_PORT=3000

第四步:启动 Gateway

hermes gateway

你应该看到:

[sms] Twilio webhook server listening on 127.0.0.1:8080, from: +1555***4567

如果看到 Refusing to start: SMS_WEBHOOK_URL is required,请将 SMS_WEBHOOK_URL 设置为你在 Twilio 控制台中配置的公网 URL参见第三步

向你的 Twilio 号码发送短信——Hermes 将通过 SMS 回复。


环境变量

变量 是否必填 说明
TWILIO_ACCOUNT_SID Twilio Account SIDAC 开头)
TWILIO_AUTH_TOKEN Twilio Auth Token同时用于 webhook 签名验证)
TWILIO_PHONE_NUMBER 你的 Twilio 电话号码E.164 格式)
SMS_WEBHOOK_URL 用于 Twilio 签名验证的公网 URL——必须与 Twilio 控制台中的 webhook URL 一致
SMS_WEBHOOK_PORT Webhook 监听端口(默认:8080
SMS_WEBHOOK_HOST Webhook 绑定地址(默认:0.0.0.0
SMS_INSECURE_NO_SIGNATURE 设为 true 可禁用签名验证(仅限本地开发——不适用于生产环境
SMS_ALLOWED_USERS 允许聊天的 E.164 格式电话号码,逗号分隔
SMS_ALLOW_ALL_USERS 设为 true 允许所有人(不推荐)
SMS_HOME_CHANNEL 用于 cron 任务/通知投递的电话号码
SMS_HOME_CHANNEL_NAME 主频道的显示名称(默认:Home

SMS 特有行为

  • 纯文本 — Markdown 会被自动剥离,因为 SMS 会将其渲染为字面字符
  • 1600 字符限制 — 较长的回复会在自然边界处(换行符,其次是空格)拆分为多条消息
  • 防回声 — 来自你自己 Twilio 号码的消息将被忽略,以防止循环
  • 电话号码脱敏 — 日志中的电话号码会被脱敏处理以保护隐私

安全

Webhook 签名验证

Hermes 通过验证 X-Twilio-SignatureHMAC-SHA1来确认入站 webhook 确实来自 Twilio防止攻击者注入伪造消息。

SMS_WEBHOOK_URL 为必填项。 将其设置为你在 Twilio 控制台中配置的公网 URL否则适配器将拒绝启动。

如需在本地开发时不使用公网 URL可禁用验证

# 仅限本地开发——不适用于生产环境
SMS_INSECURE_NO_SIGNATURE=true

用户白名单

Gateway 默认拒绝所有用户。 请配置白名单:

# 推荐:限制特定电话号码
SMS_ALLOWED_USERS=+15559876543,+15551112222

# 或允许所有人(对于具有终端访问权限的机器人,不推荐)
SMS_ALLOW_ALL_USERS=true

:::warning SMS 没有内置加密。除非你了解相关安全风险,否则不要通过 SMS 进行敏感操作。对于敏感场景,请优先使用 Signal 或 Telegram。 :::


故障排查

消息未到达

  1. 检查 Twilio webhook URL 是否正确且可公开访问
  2. 验证 TWILIO_ACCOUNT_SIDTWILIO_AUTH_TOKEN 是否正确
  3. 在 Twilio 控制台 → Monitor → Logs → Messaging 中查看投递错误
  4. 确保你的电话号码在 SMS_ALLOWED_USERS 中(或设置 SMS_ALLOW_ALL_USERS=true

回复未发送

  1. 检查 TWILIO_PHONE_NUMBER 是否正确设置E.164 格式,带 +
  2. 验证你的 Twilio 账户是否有支持 SMS 的号码
  3. 查看 Hermes gateway 日志中的 Twilio API 错误

Webhook 端口冲突

如果 8080 端口已被占用,请更改端口:

SMS_WEBHOOK_PORT=3001

并在 Twilio 控制台中更新 webhook URL 以匹配新端口。