VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Конференц-мост

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

ded
Сообщения: 15626
Зарегистрирован: 26 авг 2010, 19:00

Re: Конференц-мост

Сообщение ded »

Понятно. Вы же собирались свалить отсюда, торжественно прощались по-французски?
starley440 писал(а):Задолбал, родной... извини за мой французский. Иди детям мозг делай, а мне лучше по теме вопроса...
в случае крайней надобности переходя на ты, все кто сверху и снизу -г... а я д'Артаньян?
starley440 писал(а):Вас понесло, господа... тему можно закрывать и идти в другой форум. Не думал... адьёс, мучачи...
Тему можно удалять. Кстати и аккаунт можно тоже удалить. С вами общаться трудно.
Что же Вы опять прибежали сюда?
starley440
Сообщения: 33
Зарегистрирован: 19 апр 2012, 14:12

Re: Конференц-мост

Сообщение starley440 »

уж поверьте, вовсе не для того, чтобы выслушать очередную порцию высокомерного дерьма.
starley440
Сообщения: 33
Зарегистрирован: 19 апр 2012, 14:12

Несколько сместилась тема

Сообщение starley440 »

Вопрос с вызовом самопогасившегося юзера из конференции пока откладывается.
Сейчас на первый план выползла вот какая проблема:
На нынешний момент ситуация такова:
Asterisk FreePBX на своем железе. Весь основной функционал работает без сбоев.
Система чисто локальная. Ничего "наружу" не торчит и не будет никогда.
Конференция носит гордое имя 600
Пользвателей на опыты отдали двоих 120 и 121
Возможность вызова ConfBridge только у 121
В ConfBridge народ из колл-листа созывается (проверяли, когда подключали 7-8 юзеров).
С помощью CLI любой пользователь убивается из ConfBridge командой, например:

Код: Выделить всё

CLI> ConfBridge Kick 600 SIP/120-0000004e

Код: Выделить всё

localhost*CLI> confbridge kick 600 SIP/120-0000004e
Participant 'SIP/120-0000004e' kicked out of conference '600'
    -- <Bridge/0x7f4a9000d178-input> Playing 'confbridge-leave.gsm' (language 'en')
    -- <SIP/120-0000004e> Playing 'conf-kicked.ulaw' (language 'en')
    -- Auto fallthrough, channel 'SIP/120-0000004e' status is 'UNKNOWN'
Сложность в том, что идентификатор меняется каждый раз, как создается канал и очень напрягает из CLI запускать

Код: Выделить всё

CLI> ConfBridge List 600
и смотреть в нем Channel?
localhost*CLI> ConfBridge List 600

Код: Выделить всё

Channel                       User Profile     Bridge Profile   Menu             CallerID
============================= ================ ================ ================ ================
SIP/121-0000004d              default_user     default_bridge                    121
SIP/120-0000004e              default_user     default_bridge                    120
а потом его в команду вписывать...
Разумеется, самый лучший вариант, прибивать пользователя из диалплана по контексту h (спасибо за напоминание)

Код: Выделить всё

exten => h,1,Confbridge(600,kick,SIP/120-00000048) 
но нихрена не работает... может я в синтаксисе путаю? и как этот долбаный идентификатор убрать... он, сука, всегда разный...
И с другими параметрами не кикается... только <channel>. Ткните носом где рыть.
Никакие

Код: Выделить всё

MeetMe kick [confno] all 
и

Код: Выделить всё

confbridge kick <conference> all
не работают... ибо не понятно ему кто такие all
Может есть какие-то универсальные символы... типа, маски ввода ... чтобы не вводить всю эту длинную хрень SIP/120-00000048, а жахнуть сразу SIP/12* ?

ЗЫ: Родилось предложение вместо команды записать Playback и грозным голосом орать всем, чтобо они, сволочи, трубки положили... :lol:
ded
Сообщения: 15626
Зарегистрирован: 26 авг 2010, 19:00

Re: Конференц-мост

Сообщение ded »

starley440 писал(а):уж поверьте, вовсе не для того, чтобы выслушать очередную порцию высокомерного дерьма.
Фильтруйте буквы. ПишИте пжалуйста тут только согласные, а несогласные - не пишИте. Это не быдлофорум.
april22
Сообщения: 2187
Зарегистрирован: 09 июл 2012, 09:47

Re: Конференц-мост

Сообщение april22 »

позвольте , а кто мешает сделать отдельную переменную с номером канала при создании конференции !?
Своими вопросами , вы загоняете меня в ГУГЛЬ.
starley440
Сообщения: 33
Зарегистрирован: 19 апр 2012, 14:12

Re: Конференц-мост

Сообщение starley440 »

april22 писал(а):позвольте , а кто мешает сделать отдельную переменную с номером канала при создании конференции !?
Перемнную сделать нет проблем. Просто в формате команды: ConfBridge Kick <conference> <channel> нет возможности вписать какую либо другую переменную.
Если задать переменной channel что-то другое, либо совсем ничего не меняется, либо добавляет в конференцию только того, кто инициировал ее и больше никого не зовет. При этом в логах нету ничего.

При задании в call файле параметра

Код: Выделить всё

Set: Channel($number)=${BRIDGEPEER}
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER: не изменилось ничего: (вызвал всех из call листа)

Код: Выделить всё

 Using SIP RTP TOS bits 184
  == Using SIP RTP CoS mark 5
    -- Called SIP/120
    -- Executing [600@600:4] ConfBridge("SIP/121-00000008", "600") in new stack
    -- <SIP/121-00000008> Playing 'conf-onlyperson.ulaw' (language 'en')
    -- SIP/120-00000009 is ringing
    -- <SIP/121-00000008> Playing 'confbridge-join.ulaw' (language 'en')
    -- <Bridge/0x7fbca400abd8-input> Playing 'confbridge-join.gsm' (language 'en')
    -- SIP/120-00000009 answered Local/120@default-00000003;2
    -- Executing [s@conference:1] Answer("Local/120@default-00000003;1", "") in new stack
    -- Executing [s@conference:2] ConfBridge("Local/120@default-00000003;1", "600") in new stack
    -- <Local/120@default-00000003;1> Playing 'confbridge-join.gsm' (language 'en')
    -- <Bridge/0x7fbca400abd8-input> Playing 'confbridge-join.gsm' (language 'en')
    -- Executing [h@macro-dial-one:1] Macro("Local/120@default-00000003;2", "hangupcall,") in new stack
    -- Executing [s@macro-hangupcall:1] GotoIf("Local/120@default-00000003;2", "1?theend") in new stack
    -- Goto (macro-hangupcall,s,3)
    -- Executing [s@macro-hangupcall:3] ExecIf("Local/120@default-00000003;2", "0?Set(CDR(recordingfile)=)") in new stack
    -- Executing [s@macro-hangupcall:4] Hangup("Local/120@default-00000003;2", "") in new stack
  == Spawn extension (macro-hangupcall, s, 4) exited non-zero on 'Local/120@default-00000003;2' in macro 'hangupcall'
  == Spawn extension (macro-dial-one, h, 1) exited non-zero on 'Local/120@default-00000003;2'
  == Spawn extension (macro-dial-one, s, 42) exited non-zero on 'Local/120@default-00000003;2' in macro 'dial-one'
  == Spawn extension (macro-exten-vm, s, 14) exited non-zero on 'Local/120@default-00000003;2' in macro 'exten-vm'
  == Spawn extension (default, 120, 2) exited non-zero on 'Local/120@default-00000003;2'
    -- <Bridge/0x7fbca400abd8-input> Playing 'confbridge-leave.gsm' (language 'en')
    -- <Bridge/0x7fbca400abd8-input> Playing 'confbridge-leave.gsm' (language 'en')
[2014-05-23 17:45:54] NOTICE[3396]: pbx_spool.c:402 attempt_thread: Call completed to Local/120
В остальных случаях выдает

Код: Выделить всё

ERROR[***][C-00000***]: pbx.c:4135 ast_func_write: Function ******** not registered
или

Код: Выделить всё

WARNING[****]: pbx_spool.c:456 scan_service: Invalid file contents in /var/spool/asterisk/outgoing/***, deleting
и останавливает выполнение скрипта.

Может кто возился с ConfBridge? Что-то ступор...
Мне никак не кикнуть из конференции никого после Hangup из диалплана.
Напоминаю! Это не MeetMe, а ConfBridge
starley440
Сообщения: 33
Зарегистрирован: 19 апр 2012, 14:12

Re: Конференц-мост

Сообщение starley440 »

Итак: "Как выкинуть из конференции всех, после того, как инициатор конференции трубку положил"
Решение:
C ConfBridge сделать ничего не удлось. Зря я в нее полез.
Пришлось сделать на обычном MeetMe, тем более, что разницы вообще никакой не увидел.
1. Инициатор поднял трубку и набрал номер конференции.
2. Отработал скрипт на вызов всех, кто записан в колл-листе.
3. Трубки все поснимали и попали в конференцию.
4. Инициатор конференции трубку положил и все тут же из конференции повыпадали.

Код: Выделить всё

exten => h,1,MeetMe(<конференция>,kick,all)
Лог:

Код: Выделить всё

 -- Executing [h@600:1] MeetMe("SIP/121-0000004e", "600,Kick,All") in new stack
5. Конференция прибилась.

Новое не всегда лучше старого. Для моих задач вполне подойдет.
BerkutEagle
Сообщения: 1
Зарегистрирован: 18 июн 2014, 12:54

Re: Конференц-мост

Сообщение BerkutEagle »

В 12-й версии confbridge умеет кикать всех участников сразу:

Код: Выделить всё

confbridge kick <conf_name> all #кикнуть всех
Если не дописать идентификатор канала, то кикнет все каналы, начинающиеся с указанного:

Код: Выделить всё

confbridge kick <vonf_name> SIP #кикнуть все SIP каналы
У меня сейчас конференц-мост рулится bash-скриптами через непосредственный вызов asterisk -x '<command>'.
Остановка конференции производится простым рестартом (т.к. больше нигде asterisk не задействован):

Код: Выделить всё

asterisk -x 'core restart now'
Мониторинг конференции тоже через bash. Выводится список участников, подсвеченных в зависимости от состояния.

Топорно конечно, но работает. Когда отказался работать железный конференц-мост "Конгресс", пришлось быстро искать ему замену.
Сейчас всё работает на Asterisk-11 (в планах переезд на 12-ю версию)
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH