The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Организация работы конференций на базе Asterisk во FreeBSD (asterisk voip conference)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: asterisk, voip, conference,  (найти похожие документы)
From: Николаев Дмитрий (virus (at) subnets.ru) и Панфилов Алексей (lehis (at) subnets.ru) Date: Mon, 23 Oct 2010 17:02:14 +0000 (UTC) Subject: Организация работы конференций на базе Asterisk во FreeBSD Оригинал: http://subnets.ru/blog/?p=803 app_meetme VS app_conference для Asterisk под FreeBSD Появилась задача, организовать конференции в Asterisk. Все кажется просто, поправить два конфига и вуаля, но на деле все оказалось не просто. Читаем инструкцию Asterisk cmd MeetMe. Пробуем, получаем облом. Не работает. Почему ? Расскажу как было у меня: посмотрим, что у нас в подгруженных в Asterisk модулях, для этого зайдем в его CLI: /usr/local/sbin/asterisk -r и выполним команду show modules: aster*CLI> show modules у себя я обнаружил, что модуля app_meetme.so в списке нету.... можно выполнить и более предметную команду: aster*CLI> module show like app_meetme а в логах честно об этом написано: pbx_extension_helper: No application `MeetMe' Начинаем гуглить и копать. Выясняется, что для того, чтобы был этот модуль нужно собрать zaptel Ну чтож... идем в порт asterisk`а, делаем: cd /usr/ports/net/asterisk make rmconfig make выбираем в списке zaptel и после мейка делаем: make install в /usr/local/etc/rc.d появляется файл zaptel: /usr/local/etc/rc.d/zaptel дописываем в /etc/rc.conf: zaptel_enable="YES" запускаем: /usr/local/etc/rc.d/zaptel start после этого проверяем наличие загруженных модулей zaptel.ko и ztdummy.ko: /sbin/kldstat Id Refs Address Size Name .................. 3 5 0xc4fb9000 32000 zaptel.ko ..................... 14 1 0xc62a2000 2000 ztdummy.ko если не подгрузилось, то они лежат тут: /usr/local/lib/zaptel, подгрузите их руками. проверяем, что в /usr/local/lib/asterisk/modules появился app_meetme.so. открываем файл /usr/local/etc/asterisk/modules.conf и добавляем: load => app_meetme.so открываем /usr/local/etc/asterisk/meetme.conf и добавляем конференцию: conf => 501 открываем /usr/local/etc/asterisk/extensions.conf и добавляем экстенш для того, что бы попадать в эту конференцию: exten => 501,1,MeetMe(501) т.е. при звонке на внутренний номер 501 мы должны попадать в конференцию с номером 501. да, замечу, что номер exten и номер конференции могут не совпадать. Ну чтож, вроде все хорошо и здорово, перезапускаем asterisk: /usr/local/etc/rc.d/asterisk restart звоним на номер 501 и слышим: "В настоящий момент вы единственный в этой конференции" и трубка вешается (происходит Hangup) как говориться "приехали"..... смотрим в логи и видим: app_meetme.c:800 build_conf: Unable to open pseudo device начинаем гуглить и толком ничего не находим. Кто-то так и не смог решить проблему, кто-то ремил куски кода в исходках. Что бы мы не делали, тока менялись ошибки: app_meetme.c:1022 conf_run: Unable to set flags: Inappropriate ioctl for device или app_meetme.c:1756 conf_run: Unable to set buffering information: Bad file descriptor или app_meetme.c:1777 conf_run: Error getting conference или app_meetme.c: Unable to set flags: Inappropriate ioctl for device Вот последнее что удалось добиться: WARNING[4670] app_meetme.c: Unable to set flags: Inappropriate ioctl for device WARNING[4670] app_meetme.c: Unable to set buffering information: Bad file descriptor WARNING[4670] app_meetme.c: Unable to set linear mode: Bad file descriptor WARNING[4670] app_meetme.c: Error getting conference WARNING[4670] app_meetme.c: Error setting conference WARNING[4670] app_meetme.c: Error flushing channel WARNING[4670] app_meetme.c: Failed to read frame: Bad file descriptor конференция так и не заработала... Изрядно подустав от этого дела, мы обнаружили что существует альтернатива для app_meetme.so и это [14]app_conference.so. Читаем Asterisk cmd Conference Приступаем к инсталлу: cd /usr/ports/net/asterisk make extract cd work/asterisk-1.4.23.1 fetch http://dfn.dl.sourceforge.net/sourceforge/appconference/appconference-2.0.1.tar.gz tar -zxf appconference-2.0.1.tar.gz Правим Makefile, вот diff: --- Makefile 2008-02-26 19:05:57.000000000 +0300 +++ Makefile.new 2009-02-10 21:03:09.000000000 +0300 @@ -18,9 +18,9 @@ # INSTALL_PREFIX := -INSTALL_MODULES_DIR := $(INSTALL_PREFIX)/usr/lib/asterisk/modules +INSTALL_MODULES_DIR := $(INSTALL_PREFIX)/usr/local/lib/asterisk/modules -ASTERISK_INCLUDE_DIR ?= ../asterisk/include +ASTERISK_INCLUDE_DIR ?= /usr/local/include REVISION = $(shell svnversion -n .) Собираем: cd appconference-2.0.1 gmake install убеждаемся что файл app_conference.so появился в /usr/local/lib/asterisk/modules/ открываем файл /usr/local/etc/asterisk/modules.conf и добавляем: load => app_conference открываем /usr/local/etc/asterisk/extensions.conf и добавляем экстенш для того, что бы попадать в конференцию: exten => 502,1,Conference(502) перегружаем asterisk и убеждаемся что модуль подгружен: aster*CLI> module show like app_conference Module Description Use Count app_conference.so Channel Independent Conference Applicati 0 1 modules loaded Основное отличие app_meetme.so и это app_conference.so в том что app_conference.so создает конференцию налету (on the fly) и не требует наличия zaptel. Экстеншеном 502 мы попадаем в автоматом созданную конференцию 502. И все РАБОТАЕТ ! Но app_conference.so не полный аналог app_meetme.so. Например не поставить PIN на вход или так же просто записать разговор в конференции. Эти вопросы можно решить с помощью самого asterisk ;) о PIN: Asterisk cmd Conference в разделе " Setting up conferences". запись разговора в конференции: Asterisk cmd Monitor пример записи конференции, extensions.conf : exten => 502,1,Answer exten => 502,2,Wait(1) exten => 502,3,Monitor(wav,myfilename) exten => 502,4,Conference(502,ps) Записанные файлы myfilename-in.wav и myfilename-out.wav будут лежать в /var/spool/asterisk/monitor/ Удачных вам конференций !

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1, Аноним (-), 11:06, 13/11/2010 [ответить]  
  • +/
    Какя Фря? Какой Астериск?
    Я пробовал на Free 8.1 и Аст 1.6.2 собирать DAHDI (которую совсем недавно всё-таки портировали!) и у меня не отваливалось.
    Пробуй всё новенькое, zaptel уже не рулит!
     
  • 2, lehisnoe (?), 19:29, 02/12/2010 [ответить]  
  • +/
    Заметка была написана почти два года назад ;-)
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру