Russian Qt Forum

Qt => Дополнительные компоненты => Тема начата: Nimbus от Октября 05, 2010, 13:56



Название: VoIP
Отправлено: Nimbus от Октября 05, 2010, 13:56
Сопсна сабж. Имееются ли в библиотеке Qt 4.7 классы для работы с IP-телефонией? На сервере крутится Asterisk, интерфейс пока только через Free PBX флешовый кривой и с глюками. Необходимо сделать десктопное приложение - аналог флешового интерфейса. Что для этого требуется. Погуглив, нашёл это (http://doc.qt.nokia.com/qtextended4.4/syscust-voip.html). Только вот где скачать данный сабж? Как собрать библиотеки под венду на MinGW. Сайт http://qtextended.org/ очень "информативный", конечно же. Или это уже не требуется в 4.7 и есть аналог?


Название: Re: VoIP
Отправлено: ecspertiza от Октября 05, 2010, 14:45
Почитав вот это http://www.voip-info.org/wiki/view/Asterisk+manager+API я писал свои классы для подключения, звонков и т.д. к сожалению поделится не могу проект коммерческий, но у меня отняло что то около дня на реализацию основного функционала, общаешься по TCP просто шлешь нужные заголовки и получаешь ответы я реализацию писал на boost::asio. Это на случай если на Qt ничего не найдешь :)


Название: Re: VoIP
Отправлено: Nimbus от Октября 05, 2010, 17:56
Но ведь в ранних версиях Qt это было же реализовано. И классы эти в том мануале. Не могли же они просто так взять и убрать эту фичу?


Название: Re: VoIP
Отправлено: ритт от Октября 05, 2010, 20:07
Qt Extended != Qt
ищите исходники и пользуйте )


Название: Re: VoIP
Отправлено: Nimbus от Октября 06, 2010, 04:13
Ой, пардон, неправильно выразился. Qt Extended я и ищу, грубо говоря. Где его можно скачать?

http://qt.nokia.com/about/news/qt-software-discontinues-qt-extended/
Мды. Теперь в нынешнем 4.7 где это всё находится?


Название: Re: VoIP
Отправлено: crackedmind от Октября 11, 2010, 08:06
А помойму нигде щас не находится. Возможно в будущем появится в пакете Qt Mobility.


Название: Re: VoIP
Отправлено: crossly от Октября 18, 2010, 12:57
Ой, пардон, неправильно выразился. Qt Extended я и ищу, грубо говоря. Где его можно скачать?

http://qt.nokia.com/about/news/qt-software-discontinues-qt-extended/
Мды. Теперь в нынешнем 4.7 где это всё находится?
http://qtmoko.org/ (http://qtmoko.org/)


Название: Re: VoIP
Отправлено: Nimbus от Октября 26, 2010, 06:51
Эмммм... Может, кто-нибудь уже делал парсер логов астериска? Просто их валится огромное количество даже от внутреннего звонка. Какие события надо парсить? Или лучше спросить - существуют ли открытые исходники парсеров логов астериска?


Название: Re: VoIP
Отправлено: ecspertiza от Октября 26, 2010, 08:32
Я делал так, создавал два подключения, одно из них с "Events: off" и оно просто передает команды, а второе для чтения монитора(стало быть с Events: on), помимо этого создал два потока, один пишет данные в буффер из монитора, второй читает данные из буфера и удаляет, и реализовал два класса (странно как то всего по два  ???) один класс читает из самого буфера данные блоками прочитал и удалил блок, блок данных это с начала текста и до "\n\r" у меня это один блок, потом передаю его второму классу который парсит сам блок и может возвращать из него значения, по имени. Исходниками не поделюсь ибо проект коммерческий, но так вроде все хорошо расписал, я реализовал за пол дня, думаю тоже справишься ;)


Название: Re: VoIP
Отправлено: Nimbus от Октября 26, 2010, 09:56
Я делал так, создавал два подключения, одно из них с "Events: off" и оно просто передает команды, а второе для чтения монитора(стало быть с Events: on), помимо этого создал два потока, один пишет данные в буффер из монитора, второй читает данные из буфера и удаляет, и реализовал два класса (странно как то всего по два  ???) один класс читает из самого буфера данные блоками прочитал и удалил блок, блок данных это с начала текста и до "\n\r" у меня это один блок, потом передаю его второму классу который парсит сам блок и может возвращать из него значения, по имени. Исходниками не поделюсь ибо проект коммерческий, но так вроде все хорошо расписал, я реализовал за пол дня, думаю тоже справишься ;)
Спасибо за идею про два подключения - тоже надо бы так сделать. А другое всё как и у вас. Создал два класса, унаследованных от QThread - один читает из буфера данные и сигналит второму этими данными, который закидывает их в очередь обработки, затем в цикле обрабатывает, не забывая вызывать при каждом цикле qApp->processEvents(); и при каждом парсинге одного события (или респонза) генерит разные свои сигналы. Пока что, событий обрабатывается только три - Newchannel, NewCallerid и Dial. На них на каждое свой сигнал. И эти сигналы уже коннектятся основным потоком куда-либо.
У меня вопрос в другом - какие события можно пропускать? Мне главное просто отрисовывать состояние всех телефонов чисто визуально в GUI. Вытаскиваю список всех телефонов из мускульной базы. Что дальше делать? Описывать полностью все сущности в отдельных классах, чтобы что-то делать с событиями типа VarSet и Newexten, которых просто несметное множество валится? Или можно как-то схитрить и отлавливать только некоторые события, держа в памяти временные списки некоторых небольших сущностей? Прошу годных советов по этому поводу.


Название: Re: VoIP
Отправлено: ecspertiza от Октября 26, 2010, 11:22
Мне главное просто отрисовывать состояние всех телефонов чисто визуально в GUI.

Если честно то как отловить состояние телефона не знаю, у меня была немного другая задача.

Или можно как-то схитрить и отлавливать только некоторые события, держа в памяти временные списки некоторых небольших сущностей?

У меня еще был класс фильтра, в который я заносил имена событий которые нужно отлавливать, и стало быть проверялось если событие есть в фильтре читаем его настройки если нет просто удаляем из очереди.

А что имеется ввиду под состоянием телефона? Просто подключен ли он к серверу, или нужно ловить куда он звонит и что вообще делает?


Название: Re: VoIP
Отправлено: Nimbus от Октября 26, 2010, 12:39

У меня еще был класс фильтра, в который я заносил имена событий которые нужно отлавливать, и стало быть проверялось если событие есть в фильтре читаем его настройки если нет просто удаляем из очереди.

А что имеется ввиду под состоянием телефона? Просто подключен ли он к серверу, или нужно ловить куда он звонит и что вообще делает?
Я описал нужные события в XML-нике. При загрузке закинул их в QMap с ключём именем события.

Ну да, именно. Как в Free PBX есть Flash Operator Panel. Как в ней всё.