Гайд: Настройка голосовой почты Voicemail в Asterisk: пошаговое руководство по конфигурации

Настройка голосовой почты в Asterisk: установка модуля, конфигурация voicemail.conf, интеграция в extensions.conf, тестирование и безопасность.

2026.05.28                  


Гайд: Настройка голосовой почты Voicemail в Asterisk: пошаговое руководство по конфигурацииГайд: Настройка голосовой почты Voicemail в Asterisk: пошаговое руководство по конфигурации Представлен подробный, пошаговый гайд по настройке голосовой почты (Voicemail) в Asterisk без использования декоративных элементов. Руководство актуально для версий Asterisk 18+, но применимо и к более старым LTS-веткам с учётом особенностей синтаксиса.


Предварительные требования

  1. Установленный и работающий Asterisk
  2. Доступ к серверу с правами root или через sudo
  3. Понимание базовой структуры диалплана (extensions.conf)
  4. Настроенный системный 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
  1. В 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"
  1. Позвоните на внутренний номер 1001, дождитесь таймаута (или нажмите * для пропуска).
  2. Наберите *97 с того же аппарата → введите пароль → прослушайте сообщение.
4. Проверьте CLI Asterisk (asterisk -rvvv) на предмет ошибок:
   asterisk -rx "voicemail show users"
   asterisk -rx "voicemail show mailboxes"
  1. Проверьте /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 без перезапуска

Итог

  1. Настройте voicemail.conf (ящики, пароли, email, общие параметры)
  2. Добавьте VoiceMail / VoiceMailMain в extensions.conf
  3. Проверьте права на /var/spool/asterisk/voicemail/
  4. Убедитесь в работоспособности системного MTA
  5. Протестируйте звонок → запись → прослушивание → email
  6. Настройте резервное копирование и политику хранения

Официальная документация:

  • docs.asterisk.org

Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.


Комментарии

Загрузка...
Если комментарии не загружаются, можете попробовать отключить блокировщик рекламы для этого сайта