Asterisk и FAX

Ну вот вроде настроили и запустили Asterisk (ну кое как) Вроде звонят и все рады. Звонят с одного города на другой и еще более рады ... но как известно апетит приходит во время еды ... "Не мала баба клопоту ..." как захотелось ей факс ...

Само использование факса вызывает недоумение. НАХРЕНА. Но когда вам из телефонной трубки слышен нервный голос гламурной деффочки с IQ в пару пунктов, то объяснять, что такое сканер, электронная почта и электронный документооборот желания НЕТ. Поэтому попробуем настроить факс в Asterisk.

Факс в Asterisk это знатный геморой. Вроде все просто и все как то не просто.
Для начала попытаемся понять прописные истины. Подключить FAX аппарат напрямую к asterisk это хреновая мысль. Как телефон он работать будет. А вот как факс наврятли. Нужен очень стабильный, не загруженный канал и даже в этом случае нам ничего не гарантированно. Не говоря о том, что подключать факс нужно через плату которой у нас нет. Поэтому мы будем решать проблему по иному.

Компания Digium дает вам возможность подключить в один установленный Asterisk одну лицензию на получение и отправку факса, которая позволяет с использованием протоколов T.38 и G.711 принимать и отправлять факсы по одному каналу (ну вроде как будто у нас один факсовый аппарат). Получить ключик на лицензию можно на почту, после регистрации на сайте Digium, и оформления заказа на Free Fax в ихнем online магазине. При оформлении заказа нужно обратить внимание на 2 вещи. Первое это крайне внимательно отнестись к регистрации на сайте и запомнить все указываемые данные, поскольку вам придется их вводить в Asterisk при регистрации лицензии. Поэтому желательно использовать латинские символы. После успешного оформления заказа ключик к вам придет в течении месяца. То есть планируйте получение ключа заранее. Подробнее о регистрации можно прочесть тут или на сайте Digium найти и скачать брошюрку в pdf на английском с подробным описанием процесса. Если вас не устраивает 1 бесплатная лицензия и вы хотите приобрести у компании Digium их несколько (помогая тем самым разрабатывать Asterisk) то за каждую с вас попросят $39.99. Как оплачивать и прочее, еще не разбирался.

Итак мы зарегистрировали одну лицензию.

Давайте представим схему получения и отправки факсовых сообщений.


Ситуация номер раз: Клиент отправляет нам факс.
Звонит на наш внешний телефон, включается автоматическй факс и asterisk принимает факсовое сообщение и сохраняет его в файле в указанном каталоге.
Что дальше ?!

Можно полученные факсы отправлять на почту.
Достоинства:
- Хорошая организованность
- Возможность использовать все функции почтового клиента
- Легкий доступ практически с любой точки
Недостаток:
- Придется гонять трафик на почтовый сервер и обратно считай в холостую
- Кто то должен чистить ящик и принимать решение кому какой факс предназначен

Получать факсы можно в папку или разные папки (в зависимости от отдела получателя).
Достоинства:
- Простота и прозрачность реализации
- Видно основные необходимые параметры, как то - дата, время, и размер
- Можно просто организовать печать и бекапирование
Недостатки:
- они тоже есть

А еще больше понравилась идея примонтировать на сервер Asterisk папку расшаренную на WinServer2008. Тогда Asterisk принимая факс сразу записывает его в эту папку и пользователь без задержек получает доступ к принятому файлу. Идея понравилась и я приступил к её реализации. Установил пакет smbfs в котором есть нужные процедуры: smbmount ...
Первая проблема возникла с правами на папку. В домене был зарегистрирован пользователь faxuser который получил права на запись и редактирование папки , все остальные только на чтение. Таким образом пользователи Windows могут посмотреть полученный факс но не могут его удалить. Удалять и бекапировать файлы в расшаренной папке может пользователь faxuser (или Администратор).
Но настройка прав нужна не только и не столько под WinServer2008, но и под Asterisk, который стоит на Linux (Debian).
Примонтировав папку из под root мы получаем ситуацию когда её владельцем становиться root и изменить положение вещей уже нельзя. А как следствие Asterisk запущенный от пользователя asterisk (по соображениям безопастности) записать полученный факс в эту папку уже не может. Значит нужно примонтировать эту папку с владельцем asterisk и правами для него на чтение, запись (и зачем то на исполнние).

mount.cifs //172.16.8.40/fax /var/spool/asterisk/fax -o username=faxuser,password=passfaxuser,rw,iocharset=utf8,codepage=cp866,uid=102,gid=104,dir_mode=0777,file_mode=0777

Разберем по полочкам


mount.cifs - сама команда (я изначально набирал smbmount, но похоже alias перебрасывает на нее)
//172.16.8.40/fax - удаленный компьютер с WinServer2008 ( можно место IP использовать имя, по идее )
/var/spool/asterisk/fax - каталог к которому примонтируем удаленный каталог.
-o - опции
username=faxuser - имя пользователя под WinServer2008 от имени которого мы подключаемся к папке
password=passfaxuser - пароль пользователя faxuser в системе WinServer2008
rw - папки монтируеться с возможностью чтения и записи
iocharset=utf8,codepage=cp866 - кодировка, самый простой способ не использовать русских букв и не пригодиться
uid=102,gid=104 - uid и gid пользователя asterisk которые можно узнать командой id asterisk или другим способом ...
dir_mode=0777 - права доступа к каталогу
file_mode=0777 - права доступа к файлам каталога

Проверяем что получилось
ls -l /var/spool/asterisk/fax/

Если не понравилось отмонтируем
umount /var/spool/asterisk/fax

изменяем команду монтирования и повторяем процесс ...

Конешно есть вероятность, что соединение отвалиться или один из серваков уйдет в reload и тогда папка не будет примонтированна и будет получать факсы в локальную папку на сервере asterisk (что в принципе тоже не плохо). Можно прописать монтирование в файлик fstab и можно написать скриптик который будет проверять примонтирован ли каталог или нет, но я думаю что мы используем серверное оборудование а не тот старенький ком который завалялся (правда да ?)
В диалплане asterisk прописываем прием факса

Информация по формату и опциям call файлов:
Ссылка1 Ссылка2

Asterisk Email2FAX

fax2email несложен, а вот email2fax уже требует уровня эксперт в Linux.

Скрипт отправки почты из bash.

Добавлено 04.01.2014

Очень интересное решение описано тут Хочу создать нечто подобное.