Гайд: Настройка голосовой почты Voicemail в Asterisk: пошаговое руководство по конфигурации
Представлен подробный, пошаговый гайд по настройке голосовой почты (Voicemail) в Asterisk без использования декоративных элементов. Руководство актуально для версий Asterisk 18+, но применимо и к более старым LTS-веткам с учётом особенностей синтаксиса.
Предварительные требования
- Установленный и работающий Asterisk
- Доступ к серверу с правами
rootили черезsudo - Понимание базовой структуры диалплана (
extensions.conf) - Настроенный системный MTA (Postfix/Sendmail/Exim) для отправки email-уведомлений (опционально, но рекомендуется)
5. Резервная копия текущих конфигов:
cp /etc/asterisk/voicemail.conf /etc/asterisk/voicemail.conf.bak
Пути к конфигам могут отличаться в зависимости от ОС. В Debian/Ubuntu: /etc/asterisk/, в CentOS/RHEL: /etc/asterisk/ или /etc/sysconfig/asterisk/. Уточните через asterisk -rx "core show settings" | grep etcdir.
Шаг 1: Проверка и загрузка модуля голосовой почты
Asterisk использует модуль app_voicemail.so.
Убедитесь, что он загружен:
asterisk -rx "module show like app_voicemail"
Если модуль не в списке:
asterisk -rx "module load app_voicemail.so"
Для автозагрузки добавьте в /etc/asterisk/modules.conf:
load => app_voicemail.so
Шаг 2: Настройка voicemail.conf
Откройте /etc/asterisk/voicemail.conf.
Базовая структура:
[general]
format = wav
attach = yes
delete = yes
saycid = yes
envelope = yes
maxmessage = 180
minpassword = 8
tz = europe/moscow
[default]
1001 => 123456,Иванов Иван,ivanov@company.com
1002 => 876543,Петрова Мария,petrova@company.com
Разбор параметров [general]
| Параметр | Описание |
|---|---|
format |
Формат записи: wav, wav49, gsm, mp3 (требует внешнего конвертера) |
attach |
yes → прикрепить сообщение к email |
delete |
yes → удалять сообщение из ящика после прослушивания |
saycid |
yes → озвучивать номер звонящего перед сообщением |
envelope |
yes → озвучивать дату/время/длительность |
maxmessage |
Макс. длительность в секундах (0 = без лимита) |
minpassword |
Мин. длина пароля (рекомендуется ≥8) |
tz |
Часовой пояс для email-уведомлений |
Синтаксис ящика
mailbox => password,name,email[,options]
Пример с опциями:
1003 => 112233,Сидоров Алексей,sidorov@company.com,attach=no|maxmessage=120
Шаг 3: Интеграция в диалплан (extensions.conf)
Откройте /etc/asterisk/extensions.conf и добавьте правила маршрутизации.
Пример 1: Прямой доступ к голосовой почте
[internal]
exten => *97,1,NoOp(Доступ к голосовой почте)
same => n,VoiceMailMain(${CALLERID(num)}@default)
same => n,Hangup()
VoiceMailMain открывает меню ящика для звонящего номера.
Пример 2: Переадресация при отсутствии ответа/занято/недоступно
exten => 1001,1,Dial(SIP/1001,20)
same => n,Gotoif($["${DIALSTATUS}" = "BUSY"]?busy:unavail)
exten => 1001,n(unavail),VoiceMail(1001@default,u)
same => n,Hangup()
exten => 1001,n(busy),VoiceMail(1001@default,b)
same => n,Hangup()
Флаги VoiceMail
| Флаг | Поведение |
|---|---|
u |
Воспроизвести приветствие "пользователь недоступен" |
b |
Воспроизвести приветствие "линия занят" |
s |
Пропустить стандартное приветствие |
i |
Игнорировать ошибки (например, если ящик не существует) |
Совет: В современных диалпланах часто используют Dial(...,30,tT) + VoiceMail(...,u) без Gotoif, т.к. VoiceMail сам определяет причину завершения вызова.
Шаг 4: Настройка email-уведомлений (опционально)
Asterisk не имеет встроенного SMTP-клиента.
Он передаёт письма системному MTA через sendmail или mailcmd.
1. Убедитесь, что MTA работает:
echo "Test" | mail -s "Asterisk Voicemail Test" your@email.com
- В
voicemail.confуже указаныattach=yesи email-адреса ящиков.
3. Если нужно кастомное тело письма, добавьте в [general]:
emailbody = Здравствуйте, ${VM_NAME}.\nНовое голосовое сообщение от ${VM_CIDNUM}.\nДлительность: ${VM_DUR}.\nДля прослушивания наберите *97.
4. Перезагрузите модуль:
asterisk -rx "voicemail reload"
Шаг 5: Тестирование
1. Перезагрузите диалплан и голосовую почту:
asterisk -rx "dialplan reload"
asterisk -rx "voicemail reload"
- Позвоните на внутренний номер
1001, дождитесь таймаута (или нажмите*для пропуска). - Наберите
*97с того же аппарата → введите пароль → прослушайте сообщение.
4. Проверьте CLI Asterisk (asterisk -rvvv) на предмет ошибок:
asterisk -rx "voicemail show users"
asterisk -rx "voicemail show mailboxes"
- Проверьте
/var/spool/asterisk/voicemail/default/1001/→ должны появиться.wavи.txtфайлы.
Шаг 6: Безопасность и оптимизация
| Задача | Решение |
|---|---|
| Сложные пароли | minpassword = 8 + политика смены |
| Защита от перебора | maxretries = 3, locktime = 300 в [general] |
| Ограничение доступа | Используйте include в extensions.conf только для доверенных контекстов |
| Резервное копирование | tar -czf voicemail_backup_$(date +%F).tar.gz /var/spool/asterisk/voicemail/ |
| Очистка старых сообщений | Настройте cron или используйте voicemail CLI-команды |
Диагностика типичных проблем
| Симптом | Возможная причина | Решение |
|---|---|---|
Module not found |
app_voicemail.so отсутствует или не в modules.conf |
apt install asterisk-voicemail (Debian) или yum install asterisk-voicemail (RHEL) |
| Сообщения не сохраняются | Нет прав на /var/spool/asterisk/voicemail/ |
chown -R asterisk:asterisk /var/spool/asterisk/voicemail/ |
| Email не уходит | MTA не настроен или заблокирован файрволом | Проверьте maillog, настройте Postfix/Exim |
*97 не работает |
Нет правила в extensions.conf или контекст не совпадает |
Проверьте CALLERID(num) и контекст в VoiceMailMain |
Ошибка Mailbox not found |
Нет ящика в voicemail.conf или неверный контекст |
Убедитесь, что формат mailbox@context совпадает |
Полезные команды CLI
asterisk -rx "voicemail show users" # Список всех ящиков
asterisk -rx "voicemail show mailboxes" # Активные ящики в памяти
asterisk -rx "voicemail count messages 1001@default" # Кол-во сообщений
asterisk -rx "core set verbose 5" # Включить детальное логирование
asterisk -rx "voicemail reload" # Перечитать voicemail.conf без перезапуска
Итог
- Настройте
voicemail.conf(ящики, пароли, email, общие параметры) - Добавьте
VoiceMail/VoiceMailMainвextensions.conf - Проверьте права на
/var/spool/asterisk/voicemail/ - Убедитесь в работоспособности системного MTA
- Протестируйте звонок → запись → прослушивание → email
- Настройте резервное копирование и политику хранения
Официальная документация:
- docs.asterisk.org
Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.