Для примера настрою голосовую почту для SIP номера 207.
Голосовые сообщения будут отправляться на email с помощью Postfix.
Как его установить я описывал в этой статье — Установка и настройка Postfix.
Для начала укажем в контексте SIP 207 (обычно в файле /etc/asterisk/sip.conf) следующее:
mailbox=207@voicemailcontext
Далее настроим конфигурацию голосовой почты в файле /etc/asterisk/voicemail.conf:
[general] ; формат звуковых файлов format=wav49|gsm|wav ; от кого слать письма с уведомлениями serveremail=noreply@example.com ; прикреплять ли к письму аудио файл attach=yes ; максимальное количество сообщения (стандартно 100, максимум 9999) maxmsg=100 ; максимальное время сообщения в секундах maxsecs=120 ; максимальное время приветствия в секундах maxgreet=60 ; Количество секунд тишины до завершения записи maxsilence=10 ; порог чувствительности к тишине, чем ниже тем чувствительнее, значение от 0 до 256, стандартно 128 silencethreshold=128 ; Максимальное число неудачных попыток подключения maxlogins=3 ; Автоматически перемещать прослушиваемые сообщения в папку «Old». По умолчанию включено. moveheard=yes ; Кодировка сообщений, стандартная ISO-8859-1, с ней у меня часть текста отображалась неверно, поэтому лучше указать UTF-8 charset=UTF-8 ; Пропустить строку «[PBX]:» из заголовка сообщения pbxskip=yes ; Текст строки «От:» fromstring=VoiceMail ; Тема письма emailsubject=Новое голосовое сообщение ${VM_MSGNUM} в ящике ${VM_MAILBOX} ; Содержимое письма emailbody=Уважаемый ${VM_NAME}:\n\n\tВам пришло новое голосовое сообщение длиной ${VM_DUR} под номером (number ${VM_MSGNUM})\nв ящик ${VM_MAILBOX} от ${VM_CALLERID}, в ${VM_DATE}. \n\t ; Формат даты emaildateformat=%A, %d %B %Y в %H:%M:%S pagerdateformat=%T %D ; стандартная программа для отправки почты mailcmd=/usr/sbin/sendmail -t [zonemessages] ru=Europe/Moscow|'vm-received' q 'digits/at' H 'hours' M 'minutes' ua=Europe/Kiev|'vm-received' q 'digits/at' H 'hours' M 'minutes' ; пропишем параметры контекста voicemailcontext, 1111 - пароль голосовой почты(можно не указывать), Username - имя пользователя, test@example.com - на какой адрес слать голосовые сообщения, после запятой можно указать еще один, в конце опции [voicemailcontext] 207 => 1111,Username,test@example.com,,attach=yes|tz=ua|delete=yes
Кстати если не указать delete=yes, то при достижении лимита maxmsg, автоответчик будет говорить приветствие, а потом текст что голосовой ящик абонента переполнен и не сохранять сообщение, а также не отправлять на email. В этом случае нужно звонить на номер голосовой почты и удалять сообщения. Если указано delete=yes, то сообщения не сохраняются на сервере, не приходят в голосовой ящик, а только отправляются на email, в этом случае лимит maxmsg не действует и переполнение не возможно.
Теперь в конфигурации плана набора /etc/asterisk/extensions.conf в основной контекст добавим номер позвонив на который можно прослушать почту
exten => 500,1,Log(NOTICE, Dialing out from ${CALLERID(all)} to VoiceMail (500)) exten => 500,n,VoiceMailMain(0${CALLERID(num)}@voicemailcontext,s) exten => 500,n, Hangup
И добавим в контекст набора номера 207 строку VoiceMail (после чего, если номер не отвечает или не в сети, будет срабатывать голосовая почта), например:
[207] exten => 207,1,Dial(SIP/207,30) exten => 207,n,Answer exten => 207,n,VoiceMail(207@voicemailcontext)
Напоследок подключимся к консоли Asterisk, перезагрузим конфигурацию, посмотрим список голосовых ящиков и писем:
asterisk -rvv sip reload voicemail reload dialplan reload voicemail show users exit
Записанные сообщения хранятся в директории /var/spool/asterisk/voicemail/
Звуковые файлы хранятся в /usr/share/asterisk/sounds
Смотрите также:
Отправка голосовой почты Asterisk на несколько email
Решение ошибки в Asterisk «File vm-newn does not exist in any format»
Как конвертировать звуковые файлы в ulaw, alaw, gsm, g722 и т.д.