Asterisk и факсы
Некоторые задачи выглядят как «банально-тривиальные», и кажется, что на их решение уйдет не более 15 минут. На деле же приходится тратить на них много часов. Так и получилось, когда мы с Yababa'ем прикручивали к Астериску прием и отправку факсов.
Факсы — великое изобретение, хотя непонятно зачем они нужны во времена электропочты. Многие ими уже и не пользуются вовсе, но немало есть мест где от факсов ещё не отказались. Так что в условиях предприятия эту технологию нужно учитывать при переходе на IP-телефонию. Гугль предлагает столько решений, что аж глаза разбегаются, но ни одно нам в готовом виде не подошло, это прям закон подлости.
С помощью доблестного Астериска можно без особых пермудростей звонить на определенный номер, где ожидает автоматический отправщик факсов. Он может даже произнести фразу «Примите, пожалуйста факс», после чего отправляет и заканчивает звонок. А хотелось бы, чтобы абоненты прямо во время разговора имели возможность передать факс, и возобновить голосовое общение. Хотя бы для того, чтобы спросить: «Прошёл?».
Решили задачу следующим образом.
В процессе разговора с обычного телефонного аппарата или софтфона один из абонентов (например, 209) делает трансфер, скажем, на номер 777, где происходит следующее:
Это код из extensions.conf.
Недостаток решения в том, что приходится на каждого абонента, которому нужна возможность приема/отправки факсов, писать правило с индивидуальным номером факса. Но плюс в том, что можно обойтись без всяких дополнительных надстроек и настроек, т.е. очень тупо, но это работает!
С отправкой таже история, тоже индивидуальный номер каждому абоненту и также все банально:
Прежде чем отправить файл, его нужно предварительно сконвертировать в .TIF формат, причем со строго определенными характеристиками (например, подогнать под ширину 1728 пикселей). Со всеми этими задачами справился доблестный ImageMagick, респект и уважуха его разработчикам, особенно за то, что использовать можно как под Linux, так и под Windows. Правда, конвертить офисный документ в tif с необходимыми характеристиками приходится за несколько проходов:
После принятия факс автоматом прилетает на e-mail абонента, его принявшего. Доставкой в почтовый ящик занимается работающий в бэкграунде демон, который следит за изменением файловой структуры папки со входящими факсами. С отправкой примерно тоже самое. Что делать с факсами в папках вы можете решить сами, тут целый простор для гениальных мыслей.
Пользуясь случаем, хочу передать примет маме и всем кто меня знает!
Факсы — великое изобретение, хотя непонятно зачем они нужны во времена электропочты. Многие ими уже и не пользуются вовсе, но немало есть мест где от факсов ещё не отказались. Так что в условиях предприятия эту технологию нужно учитывать при переходе на 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 абонента, его принявшего. Доставкой в почтовый ящик занимается работающий в бэкграунде демон, который следит за изменением файловой структуры папки со входящими факсами. С отправкой примерно тоже самое. Что делать с факсами в папках вы можете решить сами, тут целый простор для гениальных мыслей.
Пользуясь случаем, хочу передать примет маме и всем кто меня знает!
- —
- 25 декабря 2011, 22:51
Комментарии (5)
RSS свернуть / развернутьdurman
romachan2
FREExLOADER
romachan2
Sergei_T
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.