Asterisk и факсы

Некоторые задачи выглядят как «банально-тривиальные», и кажется, что на их решение уйдет не более 15 минут. На деле же приходится тратить на них много часов. Так и получилось, когда мы с Yababa'ем прикручивали к Астериску прием и отправку факсов.



Факсы — великое изобретение, хотя непонятно зачем они нужны во времена электропочты. Многие ими уже и не пользуются вовсе, но немало есть мест где от факсов ещё не отказались. Так что в условиях предприятия эту технологию нужно учитывать при переходе на IP-телефонию. Гугль предлагает столько решений, что аж глаза разбегаются, но ни одно нам в готовом виде не подошло, это прям закон подлости.

С помощью доблестного Астериска можно без особых пермудростей звонить на определенный номер, где ожидает автоматический отправщик факсов. Он может даже произнести фразу «Примите, пожалуйста факс», после чего отправляет и заканчивает звонок. А хотелось бы, чтобы абоненты прямо во время разговора имели возможность передать факс, и возобновить голосовое общение. Хотя бы для того, чтобы спросить: «Прошёл?».

Решили задачу следующим образом.

В процессе разговора с обычного телефонного аппарата или софтфона один из абонентов (например, 209) делает трансфер, скажем, на номер 777, где происходит следующее:


exten = 777,1,Answer                                   // Здесь все вроде понятно: при звонке на 777 - ответить
exten = 777,n,ReceiveFax(/foo/bar././ИмяФакса.TIF) // Принять факс, превратив его в tif-файл
exten = 777,n,Transfer(209)                            // Вернуть звонок обратно на абонента 209

Это код из extensions.conf.

Недостаток решения в том, что приходится на каждого абонента, которому нужна возможность приема/отправки факсов, писать правило с индивидуальным номером факса. Но плюс в том, что можно обойтись без всяких дополнительных надстроек и настроек, т.е. очень тупо, но это работает!

С отправкой таже история, тоже индивидуальный номер каждому абоненту и также все банально:


exten = 778,1,Answer                                    // Здесь все вроде понятно: при звонке на 778 - ответить
exten = 778,n,SendFax(/foo/bar/sda././ИмяФакса.TIF) // Путь, где лежит файл
exten = 778,n,Transfer(209)                             // Вернуть звонок обратно на абонента 209


Прежде чем отправить файл, его нужно предварительно сконвертировать в .TIF формат, причем со строго определенными характеристиками (например, подогнать под ширину 1728 пикселей). Со всеми этими задачами справился доблестный ImageMagick, респект и уважуха его разработчикам, особенно за то, что использовать можно как под Linux, так и под Windows. Правда, конвертить офисный документ в tif с необходимыми характеристиками приходится за несколько проходов:


convert -interlace none -density 300 fax.pdf stage1.tif
convert -type bilevel -compress fax -endian LSB -resample 204x98 stage1.tif stage2.tif
convert -resize 1728x2444 stage2.tif OUT.TIF


После принятия факс автоматом прилетает на e-mail абонента, его принявшего. Доставкой в почтовый ящик занимается работающий в бэкграунде демон, который следит за изменением файловой структуры папки со входящими факсами. С отправкой примерно тоже самое. Что делать с факсами в папках вы можете решить сами, тут целый простор для гениальных мыслей.

Пользуясь случаем, хочу передать примет маме и всем кто меня знает!

Комментарии (5)

RSS свернуть / развернуть
+
0
Факс живее всех живых. В большинстве случаев документ, переданный посредством факса, де-факто является заверенной копией оригинала. По электронке такого нет
avatar

durman

  • 26 декабря 2011, 17:56
+
0
Скан отосланный по электронке тоже имеет юридическую силу, но народ предпочитает почему-то слать все факсами в ЧБ формате
avatar

romachan2

  • 26 декабря 2011, 22:04
+
0
раскуривал эту тему очень давно — был сервер который шибко настроен на прием и отправку факсов — собирал сам кое что — есть опыт — очень интересная статья.
avatar

FREExLOADER

  • 26 декабря 2011, 22:20
+
0
очень помог выход астериск 10 версии, там ничего не надо надстраивать над ним, все уже включено
avatar

romachan2

  • 27 декабря 2011, 09:25
+
0
Фундаментально написано!
avatar

Sergei_T

  • 01 января 2012, 14:22

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.