Шрифт:
exten => 14165551212,1,NoOp(dundi-local: Number advertisement and incoming)
exten => 14165551212,n,Answer
exten => 14165551212,n(call),Dial(SIP/1000)
exten => 14165551212,n,Voicemail(u1000)
exten => 14165551212,n,Hangup
exten => 14165551212,n(call)+101,Voicemail(b1000)
exten => 14165551212,n,Hangup
Альтернативные методы хранения голосовой почты
Обычный способ хранения голосовой почты Asterisk - простая запись сообщения в файл, размещаемый на локальном жестком диске в папке /var/spool/asterisk/voicemail. Этот метод хорош для простых офисных АТС, но в больших распределенных сетях или окружениях, в которых желательна более тесная интеграция с внешними приложениями, потребуются более сложные методы хранения.
Хранение голосовой почты на IMAP-сервере
Уже довольно долгое время телефонная отрасль обещает предоставить возможность хранения голосовых сообщений вместе с обычными сообщениями электронной почты. Это называется универсальной системой передачи и обработки сообщений (Unified Messaging), и хотя большинство офисных АТС сегодня предлагают такую систему в том или ином виде, обычно ее лицензирование и реализация очень дороги.
Естественно, Asterisk отбрасывает все эти глупости и просто позволяет интегрировать ящик голосовой почты в среду IMAP. Хранение голосовой почты на IMAP-сервере обеспечивает несколько преимуществ. После прослушивания по телефону сообщение голосовой почты переводится в состояние read (прочитано) на IMAP-сервере. Это означает, что клиентское почтовое приложение также отметит это сообщение как прочитанное. Аналогичным образом, если сообщение прослушивается из клиентского почтового приложения, система голосовой почты отключает сигнал уведомления о наличии непрочитанного сообщения на всех телефонах, закрепленных за этим почтовым ящиком. Удаление сообщения в одном месте обеспечит его удаление везде. Таким образом, однажды удаленное сообщение действительно уничтожается. Такова универсальная система передачи и обработки сообщений, «священный грааль» интеграции голосовой и электронной почты, но Asterisk скромно предпочитает не акцентировать на этом особое внимание. Интеграция с IMAP по-прежнему является новой функциональностью, поэтому для ее активации необходимо кое-что добавить. Первым делом для работы с IMAP-сервером Asterisk необходимо установить IMAP- клиент. Подойдет практически любой IMAP-сервер (даже Exchange Server). Авторы лично протестировали поддержку голосовой почты по протоколу IMAP с IMAP-серверами Courier-IMAP и Dovecot. IMAP- сервер физически может располагаться на одном компьютере с установленной Asterisk или находиться в другой части земного шара. Чтобы иметь возможность доступа к IMAP-серверу, Asterisk требует наличия библиотеки IMAP-клиента. Эта библиотека является бесплатным IMAP-клиентом под именем c-client, созданным в Вашингтонском университете. Чтобы установить c-client, надо просто перейти в свою папку /usr/src и выполнить следующие команды:
# wget ftp://ftp.cac.washington.edu/mail/imap.tar.Z
Это обеспечит загрузку исходного кода. Извлеките его из архива следующим образом:
# tar zxvf imap.tar.Z
Обратите особое внимание на имя папки, создаваемой этой командой, поскольку оно, вероятно, изменится к тому времени, когда вы будете читать данную книгу. Пока книга готовилась к выходу, имя папки менялось четыре раза. Последним было /usr/src/imap-2006h.
Перейдите в созданную папку и выполните команду
# make lrh IP6=4
Это обеспечит компиляцию всего, что необходимо Asterisk для использования библиотек IMAP-клиента [133] .
Теперь необходимо повторно скомпилировать Asterisk с возможностями IMAP. Понадобится перейти в ту папку, в которой располагаются исходные файлы Asterisk (к примеру, /usr/src/asterisk), и выполнить следующую команду:
# /configure --with-imap=/usr/src/imap-2006h
Теперь необходимо повторно выполнить команду make menuconfig, чтобы включить IMAP-хранилище в компиляцию. В разделе Voicemail Build Options (Параметры создания голосовой почты) выберите параметр IMAP STORAGE (ХРАНИЛИЩЕ IMAP) и нажмите кнопку x, чтобы сохранить изменения и выйти. Теперь при компиляции Asterisk будет выполнена и сборка модуля IMAP. Очевидно, что следующий шаг - повторная компиляция и установка Asterisk. Для этого просто выполните в вашем терминале следующую команду:
133
Опция lrh указывает компилятору, что это система Linux Red Hat. Опция IP6=4 говорит о том, что мы не хотим выполнять компиляцию с поддержкой IPv6. Остальные опции можно найти в Makefile. Для систем RHEL 5 или CentOS 5 вместо lrh необходимо использовать lr5.
Сравните с клубной страницей IETF, которая гласит: «IETF - не организация со специальными атрибутами членства (никаких карточек, никаких взносов, никаких секретных рукопожатий :-)... Она открыта для всех, кому это интересно. Добро пожаловать в IETF». Вот это сообщество!
# make && make install
Итак, модуль скомпилирован и установлен. Пришло время его сконфигурировать.
Добавим несколько строк в раздел [general] файла voicemail.conf, хранящегося в папке /etc/asterisk:
imapserver=localhost
imapport=143
expungeonhangup=yes
authuser=vmail
authpassword=vmailsecret
imapfolder=Voicemail
Поскольку Dovecot доступен в хранилище пакетов CentOS, установить небольшой IMAP-сервер для обработки виртуальных пользователей (голосовой почты) на сервере Asterisk просто:
# yum install dovecot
Обеспечим активацию поддержки IMAP в файле /etc/dovecot.conf, раскомментировав строку protocols, чтобы она выглядела следующим образом:
protocols = imap imaps Активировав поддержку IMAP, создадим учетную запись пользователя для сохранения почты:
# groupadd vmail
# useradd vmail -g vmail -s /bin/true -c "asterisk voicemail user" -p vmailsecret -d /var/spool/asterisk/imap-voicemail vmail
# chown -R vmail.vmail /var/spool/asterisk/imap-voicemail
Теперь перезапустим Dovecot и Asterisk - и все должно быть готово.
# service dovecot restart
# service asterisk restart
Поздравляем! Вы успешно установили базовую поддержку голосовой почты IMAP в Asterisk! Однако это лишь верхушка айсберга. Имея хранилище голосовой почты, работающее по протоколу IMAP, можно без труда реализовать совместно используемую (например, по отделам) голосовую почту с помощью совместно используемых IMAP-папок. Многие компании уже имеют совместно используемую по отделам электронную почту, так что совместно используемый ящик голосовой почты - весьма естественное и логичное развитие технологии. При наличии IMAP-хранилища голосовой почты каждый сотрудник может работать с несколькими ящиками голосовой почты, не смешивая личные и рабочие сообщения. С точки зрения Asterisk в конфигурации нет ничего необычного; вы просто вызываете приложение VoiceMail с указанием желаемого почтового ящика и контекста и обеспечиваете, чтобы совместно используемая IMAP-папка была включена в список папок почтового клиента служащего отдела.
Наконец, вместо глобального IMAP-пользователя Asterisk может быть реализована авторизация для каждого почтового ящика в отдельности (то есть каждый ящик голосовой почты аутентифицируется как отдельный пользователь). Asterisk поддерживает это с помощью опций imapuser и imapsecret в индивидуальных описаниях ящиков голосовой почты:
[imapvoicemail]
# => 1234,Sue's Mailbox,,,imapuser=sue@example.tld|imapsecret=suesimapsecret
# => 5555,Bob's Mailbox,,,imapuser=bob@example.tld|imapsecret=bobsimapsecret