跳到主要内容

短信(Twilio)

Hermes 通过 Twilio API 接入短信。别人给你的 Twilio 号码发短信,就能收到 AI 回复,体验与 Telegram 或 Discord 类似,只是底层变成了标准 SMS。

前提条件

  • Twilio 账号
  • 一个支持 SMS 的 Twilio 电话号码
  • 公网可访问的服务器
  • aiohttp

第 1 步:获取 Twilio 凭据

  1. 打开 Twilio Console
  2. 复制 Account SIDAuth Token
  3. 记录你的号码(E.164 格式,例如 +15551234567

第 2 步:配置 Hermes

交互式设置(推荐)

hermes gateway setup

手动设置

TWILIO_ACCOUNT_SID=ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TWILIO_AUTH_TOKEN=your_auth_token_here
TWILIO_PHONE_NUMBER=+15551234567
SMS_ALLOWED_USERS=+15559876543,+15551112222
SMS_HOME_CHANNEL=+15559876543

第 3 步:配置 Twilio Webhook

在 Twilio 控制台中把 webhook 指向:

https://your-server:8080/webhooks/twilio

同时在 ~/.hermes/.env 中配置:

SMS_WEBHOOK_URL=https://your-server:8080/webhooks/twilio

如果需要更改端口:

SMS_WEBHOOK_PORT=3000

第 4 步:启动网关

hermes gateway

环境变量

VariableRequiredDescription
TWILIO_ACCOUNT_SIDYesTwilio Account SID
TWILIO_AUTH_TOKENYesTwilio Auth Token
TWILIO_PHONE_NUMBERYesTwilio 电话号码
SMS_WEBHOOK_URLYes与 Twilio 控制台中完全一致的公网 URL
SMS_WEBHOOK_PORTNowebhook 监听端口
SMS_WEBHOOK_HOSTNowebhook 绑定地址
SMS_INSECURE_NO_SIGNATURENo仅本地开发时关闭签名校验
SMS_ALLOWED_USERSNo允许聊天的手机号列表
SMS_ALLOW_ALL_USERSNo是否允许所有用户
SMS_HOME_CHANNELNocron / 通知投递号码
SMS_HOME_CHANNEL_NAMENoHome channel 显示名

SMS 特有行为

  • 仅支持纯文本
  • 长回复会自动拆分
  • 会忽略来自你自己 Twilio 号码的消息,避免回路
  • 日志中的电话号码会自动脱敏

安全

  • Hermes 会校验 X-Twilio-Signature
  • SMS_WEBHOOK_URL 是必填项
  • 强烈建议配置 SMS_ALLOWED_USERS
  • SMS 不提供端到端加密;敏感场景建议使用 Signal 或 Telegram

故障排除

  • 收不到消息:检查 webhook URL、Twilio 凭据和 SMS_ALLOWED_USERS
  • 回复发不出去:检查 TWILIO_PHONE_NUMBER、账号能力与 gateway 日志
  • 端口冲突:修改 SMS_WEBHOOK_PORT,并同步更新 Twilio 控制台配置