语音信箱(Voicemail Pro)

Voicemail Pro 为每个分机提供独立信箱:问候语、本地/对象存储留言、MWI 通知与邮件投递。启用后每个分机自动获得信箱,无需逐个配置。适用于非工作时段留言、夜间模式队列,或作为 ACD 溢出链的兜底目标。

1. 启用

[proxy]
addons = ["voicemail"]

数据库要求:自动创建 voicemail_box 和 voicemail_message 表。支持 SQLite / MySQL / PostgreSQL。

2. 邮箱管理

2.1 创建邮箱

控制台 → Voicemail → 新建邮箱:

字段说明示例
分机关联的分机号1001
PIN访问密码(4-8 位)1234
邮箱通知邮箱user@example.com
问候语自定义问候语上传 WAV

2.2 PIN 策略

  • 4-8 位数字
  • 不允许全相同(如 1111)
  • 不允许连续(如 1234)
  • 使用 Argon2id 哈希存储

2.3 自定义问候语

邮箱 → 问候语 → 上传:支持 WAV 格式。

3. 留言流程

来电 → 无人接听/忙碌
    │
    ▼
Voicemail App
    ├── 播放问候语(自定义或默认)
    ├── 播放提示音
    ├── 录音(最大时长、静默超时)
    ├── 保存留言
    │     ├── 上传到存储后端
    │     ├── 写入数据库
    │     └── 发送通知
    └── 播放确认音 → 挂断

3.1 录音参数

config/voicemail.toml:

spool_dir = "voicemail_spool"
max_duration = 120          # 最大录音 120 秒
silence_timeout = 5         # 静默 5 秒自动结束
language = "zh"
sounds_dir = "config/sounds/voicemail"

4. 通知链

留言保存后,系统按序执行通知:

通知方式说明配置
EmailSMTP 发送通知邮件SMTP 服务器配置
WebhookHTTP POST 到指定 URLURL、Headers
SIP MWIRFC 3842 消息等待指示自动(SIP NOTIFY)

4.1 Email 配置

[voicemail.smtp]
host = "smtp.example.com"
port = 587
username = "noreply@example.com"
password = "smtp-password"
from = "noreply@example.com"
use_tls = true

4.2 Webhook 配置

[voicemail.webhook]
url = "https://api.example.com/voicemail/notify"
headers = { "Authorization" = "Bearer token" }

5. 收听留言

5.1 自助查询

拨打 *97 → PIN 验证 → IVR 菜单:

  • 播放新留言
  • 播放已保存留言
  • 删除留言
  • 修改 PIN

5.2 Web 界面

控制台 → Voicemail → 邮箱详情:

  • 留言列表(时间、来电、时长)
  • 在线播放
  • 下载音频
  • 标记已读/删除

6. 存储后端

支持多种存储:

后端配置
本地文件系统storage_type = "local"
AWS S3storage_type = "s3"
阿里云 OSSstorage_type = "s3" (S3 兼容)
腾讯 COSstorage_type = "s3" (S3 兼容)
MinIOstorage_type = "s3" (S3 兼容)
Azure Blobstorage_type = "azure"
GCP Storagestorage_type = "gcp"
[voicemail.storage]
type = "s3"
bucket = "voicemail-recordings"
region = "us-east-1"
endpoint = "https://s3.amazonaws.com"
access_key = "AKIA..."
secret_key = "secret..."

7. 多语言提示音

内置提示音支持 5 种语言:en、zh、ja、es、fr

提示音文件位于 addon 的 sounds/ 目录,可在控制台上传自定义提示音。

8. API

操作端点
邮箱列表GET /console/voicemail
邮箱详情GET /console/voicemail/{ext}
创建邮箱POST /console/voicemail/mailboxes
删除邮箱POST /console/voicemail/mailboxes/{ext}/delete
重置 PINPOST /console/voicemail/mailboxes/{ext}/reset-pin
上传问候语POST /console/voicemail/mailboxes/{ext}/greeting
留言列表GET /api/voicemail/{ext}/messages
流式播放GET /api/voicemail/messages/{id}/audio
标记已读POST /api/voicemail/messages/{id}/read
删除留言POST /api/voicemail/messages/{id}/delete
设置页面GET /console/voicemail/settings