[Показать] Спойлер: Предисловие или с чего все началось
В нашей крупной организации с обширной внутренней телефонной сетью( >10000 абонентов ) решили больше не расширять железные ЦАТС (3 hipath'a и пару десятков "векторов") а пробовать приобщиться к высоким технологиям. Было решено максимально сэкономить и пробовать разные решение. Я был немного знаком с астериском поэтому начал именно с него и на нем и остались. Состыковали HiPath с астером через 2 потока Е1. Закупили тестово пару телефона и ворох шлюзов IP->FXS. Потихоньку наигрались и начали по чуть чуть вводить именно IP телефонию. Я думаю всем знакома картина разношерстных технологий, у одного классический телефон звонилка по обычной 2х проводку, у другого крутой IP телефон который круче чем СТА на сименсе, у третьих вообще софтфон на компе с наушниками а у некоторых других шлюз и снова обычный 2х проводный телефончик без примочек.
Так вот вроде бы все довольны, все работает но лично как это обычно бывает народ хочет большего. Хотят телефон с экраном чтобы было видно кто звонит и т.д. . В голову закралась мысль поискать программные обвесы для астериска чтобы расширить возможности разношерстных телефонов и привести это к одному единому знаменателю.
Так вот вроде бы все довольны, все работает но лично как это обычно бывает народ хочет большего. Хотят телефон с экраном чтобы было видно кто звонит и т.д. . В голову закралась мысль поискать программные обвесы для астериска чтобы расширить возможности разношерстных телефонов и привести это к одному единому знаменателю.
[Показать] Спойлер: ТЗ самому себе или какие выявились сложности.
Сложности:
[*]У всех разные ПК с разным железом. Начиная от P4 и заканчивая монстрами на i7.
[*]У всех разные OS, примерно 50\50 windows и linux.
[*]Касательно OS Windows то и версии разные, начиная от XP и заканчивая 10.
[*]Браузеры есть не у всех, да и вообще писать что то для браузера слишком тяжело мне.
[*]Много людей далеких от тонкостей работы и пугающихся настроек и разных кнопочек.
[*]У всех разные ПК с разным железом. Начиная от P4 и заканчивая монстрами на i7.
[*]У всех разные OS, примерно 50\50 windows и linux.
[*]Касательно OS Windows то и версии разные, начиная от XP и заканчивая 10.
[*]Браузеры есть не у всех, да и вообще писать что то для браузера слишком тяжело мне.
[*]Много людей далеких от тонкостей работы и пугающихся настроек и разных кнопочек.
[Показать] Спойлер: Поиски решений
[*]Digium ADA (asterisk desktop assistant). Не заработал на WinXP, нет для Linux, платный. Работает через раз.
[*]OutCall. Работает на WinXP, не работает на Win7, полностью ломает аутлук. Нет на Linux, проект похоже помер.
[*]OutCall. Работает на WinXP, не работает на Win7, полностью ломает аутлук. Нет на Linux, проект похоже помер.
[Показать] Спойлер: Черновое ТЗ и минимальный функционал:
[*]Программа должна быть кросплатформенной. Тут Java SE, кроме того я постоянно пишу себе мелкие утилитки именно на ней и вспоминать о C++\Qt\C# не хочу.
[*]Должна быть возможность набора номера из этой програмки. Человек набрал номер, у него зазвенел телефон\софтфон, взял трубку и начался вызов целевого абонента чей номер был набран.
[*]Возможность показа номера куда звоню или кто звонит абоненту.
[*]Никаких менюшек, все предельно тупо, все настройки спрятать в текстовый файл для удобства настроек и хранить рядом с бинарником программы.
[*]Должна быть возможность набора номера из этой програмки. Человек набрал номер, у него зазвенел телефон\софтфон, взял трубку и начался вызов целевого абонента чей номер был набран.
[*]Возможность показа номера куда звоню или кто звонит абоненту.
[*]Никаких менюшек, все предельно тупо, все настройки спрятать в текстовый файл для удобства настроек и хранить рядом с бинарником программы.
Итак, прелюдия рассказана, пора что то делать. Т.к. для астериска ничего сложнее диалплана я не видел то было решено почитать как с астериском можно поиграть из вне. Для моих задач подошел AMI и библиотека asterisk-java. Сначала пару дней повникал как и что работает и приступил реализовывать задуманное. На выходе получилась вполне работоспособная софтинка, которая справляется со своими задачами, люди пользующиеся ей довольны.
На данный момент есть ранняя альфа версии программы которая поставленную задачу выполняет на ура, знакомые которые оценили мою маленькую работу порекомендовали написать пост тут и поинтересоваться мнением других людей.
Главные вопросы ради чего все это писалось:
[*]Интересна ли Вам такая программа помощник к телефонам, на самом деле очень хорошо себя зарекомендовала именно со шлюзами к которым подключены самые обычные телефоны.
[*]Если будет заинтересованность то программу планирую расширить. К примеру поддержку SIP Simple Message, call log, поиск имен контактов в бд или ldap и т.д, звонок в 1 клик по номеру с аутлука и т.д.
[*]Так же если будет необходимость расширения функционала то будет переход к модульной системе, все что не нужно лично Вам можно будет отключить чтобы не мешало.
[*]Возможно система плагинов и\или кастомизации аспектов работы программы. Т.е. общий интерфейс к примеру для чата для которого можно вместо Sip Simple использовать XMPP, поменять полностью всплывающее окошко с номером кто звонит например на герб организации и переместить его в другой угол, или расширить тот же информатор звонка плюшками скажем если звонит "Босс" то закрыть все нафиг на компе и моргать большой крассной табличкой что пипец рядом. Реализовать аналог BLF\Xfer в виде окна быстрого набора. Т.е. идея в том что бы дать возможность легко модифицировать что то или расширить. Сразу оговорюсь что это будут яваскрипты.
[*]Готовы ли Вы отблагодарить копейкой меня?
[*]Какой принцип распространения программы был бы приятнее Вам? (Классическая продажа, демо + полная версия, freeware с напоминалкой, бесптлатно и с пожертвованиями).
Скачать и попробовать а возможно и использовать можно с гугл диска https://drive.google.com/file/d/0B7oNw-Nr1ciRNTZzYUhTUEpSVjg/view?usp=sharing. Во вложение почему то не прикрепляется
[Показать] Спойлер: содержимое настроек config.properties
#логин ами пользователя
amiUser=ami-login-example
#пароль ами пользователя
amiPassword=ami-password-change-me
# IP или доменное имя сервера астериска
amiServer=sip1.example.corp
# Номер абонента. Используется чтобы отлавливать события звонка и выводить сообщение, а так же как начальный номер для вызова других абонентов
helpToNumber=3309
# Channel . Если абонент астера то строка будет иметь вид sip/ или как у некоторых local/ .
# Так же можно указать транк к примеру у меня работает по Е1 dahdi/g0/.
# Так же работает с чужими транками к примеру у меня есть ip транк корпоративных симкарт. Строка имеет вид sip/мой-сотовый-номер . В такой ситуации получился этакая вариация сall back
helpToNumberChannel=dahdi/g0/
# Контекст из которого будут совершаться звонки. У себя для небольшой безопасности, хоть это и не критично, сделал отдельный контекст
helpToNumberContext=from-internal
amiUser=ami-login-example
#пароль ами пользователя
amiPassword=ami-password-change-me
# IP или доменное имя сервера астериска
amiServer=sip1.example.corp
# Номер абонента. Используется чтобы отлавливать события звонка и выводить сообщение, а так же как начальный номер для вызова других абонентов
helpToNumber=3309
# Channel . Если абонент астера то строка будет иметь вид sip/ или как у некоторых local/ .
# Так же можно указать транк к примеру у меня работает по Е1 dahdi/g0/.
# Так же работает с чужими транками к примеру у меня есть ip транк корпоративных симкарт. Строка имеет вид sip/мой-сотовый-номер . В такой ситуации получился этакая вариация сall back
helpToNumberChannel=dahdi/g0/
# Контекст из которого будут совершаться звонки. У себя для небольшой безопасности, хоть это и не критично, сделал отдельный контекст
helpToNumberContext=from-internal
Скриншот окна звонилки. Окна информатора о звонке сейчас нет под рукой, если необходимо смогу прикрепить его завтра но там нет ничего особенного.
PS: Не забывайте что это самая ранняя версия программы, есть баги и недоработки. Пишите найденные ошибки и свои пожелания тут.