短信(Twilio)
Hermes 通过 Twilio API 接入短信。别人给你的 Twilio 号码发短信,就能收到 AI 回复,体验与 Telegram 或 Discord 类似,只是底层变成了标准 SMS。
前提条件
- Twilio 账号
- 一个支持 SMS 的 Twilio 电话号码
- 公网可访问的服务器
- aiohttp
第 1 步:获取 Twilio 凭据
- 打开 Twilio Console
- 复制 Account SID 和 Auth Token
- 记录你的号码(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
环境变量
| Variable | Required | Description |
|---|---|---|
TWILIO_ACCOUNT_SID | Yes | Twilio Account SID |
TWILIO_AUTH_TOKEN | Yes | Twilio Auth Token |
TWILIO_PHONE_NUMBER | Yes | Twilio 电话号码 |
SMS_WEBHOOK_URL | Yes | 与 Twilio 控制台中完全一致的公网 URL |
SMS_WEBHOOK_PORT | No | webhook 监听端口 |
SMS_WEBHOOK_HOST | No | webhook 绑定地址 |
SMS_INSECURE_NO_SIGNATURE | No | 仅本地开发时关闭签名校验 |
SMS_ALLOWED_USERS | No | 允许聊天的手机号列表 |
SMS_ALLOW_ALL_USERS | No | 是否允许所有用户 |
SMS_HOME_CHANNEL | No | cron / 通知投递号码 |
SMS_HOME_CHANNEL_NAME | No | Home 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 控制台配置