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

Что значит, расширить конференцию? *5

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

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

Аватара пользователя
Wapo
Сообщения: 795
Зарегистрирован: 02 мар 2011, 17:53

Re: Что значит, расширить конференцию? *5

Сообщение Wapo »

Да я в курсе насчет устаревания и хороших возможностей AMI - просто клиентура ХОЧЕТ видеть вэб-морду состояния на одном экране в фоп2-лайк варианте.
Аватара пользователя
Aven
Сообщения: 798
Зарегистрирован: 28 янв 2011, 16:20

Re: Что значит, расширить конференцию? *5

Сообщение Aven »

У меня состояния тоже через веб самописный отображаются.

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

stick*CLI> manager show event Confbridge
ConfbridgeEnd         ConfbridgeJoin        ConfbridgeLeave       ConfbridgeMute        ConfbridgeRecord      ConfbridgeStart       ConfbridgeTalking     ConfbridgeUnmute      ConfbridgeStopRecord
Решения телефонии на базе Asterisk || http://it-need.ru
Аватара пользователя
postscripter
Сообщения: 93
Зарегистрирован: 16 сен 2015, 15:24

Re: Что значит, расширить конференцию? *5

Сообщение postscripter »

Новый способ обрушить астериск: пользователь заходит в конференцию, вызывает из меню конференции dial_exec, в котором этого же пользователя отправляют (ChannelRedirect) в эту же конференцию снова. После 3-4 таких попыток имеем segfault, более того, уже после первого раза этот канал нельзя будет кикнуть никакими скриптами.
Последний раз редактировалось postscripter 13 янв 2016, 09:11, всего редактировалось 1 раз.
помучился сам - дай помучиться другим
Аватара пользователя
postscripter
Сообщения: 93
Зарегистрирован: 16 сен 2015, 15:24

Re: Что значит, расширить конференцию? *5

Сообщение postscripter »

Ну, и может кому пригодится -- способ выбросить пользователя из конфы прямо из диалплана :lol:

;; удаление участника
[macro-my-leaveconf]
exten => s,1,Noop(Ubiraem iz razgovora)
exten => s,n,Set(CM=import telnetlib,time\; tn=telnetlib.Telnet('127.0.0.1',5038)\; tn.write(')
exten => s,n,Set(CM=${CM}Action: Login\\r\\nUsername: themanager\\r\\nSecret: niktoneuznaet\\r\\nEvents: no\\r\\n\\r\\n)
exten => s,n,Set(CM=${CM}Action: Confbridgekick\\r\\nConference: ${ARG1}\\r\\nChannel: ${ARG2}\\r\\n\\r\\n)
exten => s,n,Set(CM=${CM}')\;)
exten => s,n,System(python -c "${CM}")

;;uncomment to debug
;exten => s,n,Set(CM=${CM}time.sleep(2)\; print tn.read_very_eager()\;)
;exten => s,n,System(python -c "${CM}" > /tmp/123 2>&1)
;exten => s,n,wait(3)
;exten => s,n,Set(foo=${FILE(/tmp/123)})
exten => s,n,MacroExit()



Вызывать так
exten => _X.,n,Macro(my-leaveconf,${conf_nomer},${chan_nomer})
помучился сам - дай помучиться другим
Аватара пользователя
Aven
Сообщения: 798
Зарегистрирован: 28 янв 2011, 16:20

Re: Что значит, расширить конференцию? *5

Сообщение Aven »

Проще тогда через CLI команды:

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

CLI> confbridge kick
Usage: confbridge kick <conference> <channel>
       Kicks a channel out of the conference bridge.
Решения телефонии на базе Asterisk || http://it-need.ru
Аватара пользователя
postscripter
Сообщения: 93
Зарегистрирован: 16 сен 2015, 15:24

Re: Что значит, расширить конференцию? *5

Сообщение postscripter »

А почему в ConfBridge-меню не с первого раза команда может срабатывать? Звонок с софтофона phoner lite.

На цифре пять стандартно висит выход из конференции и продолжение диалплана. Первый раз всегда выходит нормально, затем в диалплане у меня некоторые манипуляции, которые занимают много времени (dial), и после него опять возвращение в ту же конфу:

ConfBridge(${EXTEN},my_mybridge,my_myadmin,my_myadminmenu)

И как-то совершенно рандомно после возвращения отваливается меню. Чтобы оно заработало, нужно просто подождать минутку, нормализуется само. Иногда после 3-4 нажатий наконец срабатывает... В логах на максимальном уровне отладки видно прохождение dtmf, но и всё на этом:


[2016-01-14 11:09:23] DEBUG[844][C-00000017]: bridging.c:769 bridge_channel_join_multithreaded: Going into a multithreaded waitfor for bridge channel 0xb4df6a6c of bridge 0xb504cbfc
[2016-01-14 11:09:23] DEBUG[844][C-00000017]: bridging.c:769 bridge_channel_join_multithreaded: Going into a multithreaded waitfor for bridge channel 0xb4df6a6c of bridge 0xb504cbfc

[2016-01-14 11:09:23] DEBUG[7754]: manager.c:4856 match_filter: Examining event:
Event: RTCPSent
Privilege: reporting,all
To: 10.220.0.20:5063
OurSSRC: 972299122
SentNTP: 1452748163.1589010432
SentRTP: 3637784
SentPackets: 22443
SentOctets: 3590880
ReportBlock:
FractionLost: 0
CumulativeLoss: 0
IAJitter: 0.0004
TheirLastSR: 2884698978
DLSR: 9.4310 (sec)


[2016-01-14 11:09:23] DEBUG[2030][C-00000017]: bridging.c:769 bridge_channel_join_multithreaded: Going into a multithreaded waitfor for bridge channel 0xb44883f4 of bridge 0xb504cbfc
[2016-01-14 11:09:23] DEBUG[844][C-00000017]: bridging.c:769 bridge_channel_join_multithreaded: Going into a multithreaded waitfor for bridge channel 0xb4df6a6c of bridge 0xb504cbfc
[2016-01-14 11:09:23] DEBUG[2030][C-00000017]: bridging.c:769 bridge_channel_join_multithreaded: Going into a multithreaded waitfor for bridge channel 0xb44883f4 of bridge 0xb504cbfc
помучился сам - дай помучиться другим
Аватара пользователя
Aven
Сообщения: 798
Зарегистрирован: 28 янв 2011, 16:20

Re: Что значит, расширить конференцию? *5

Сообщение Aven »

где тут DTMF?
Версия * какая?
Решения телефонии на базе Asterisk || http://it-need.ru
Аватара пользователя
postscripter
Сообщения: 93
Зарегистрирован: 16 сен 2015, 15:24

Re: Что значит, расширить конференцию? *5

Сообщение postscripter »

Вот это событие, RTCPSent, приходит каждый раз по нажатию кнопки. Больше ничего, и это при debug level 10 + verbose по максимуму.

Asterisk 11.16.0 / PBX 12.0.76
помучился сам - дай помучиться другим
Аватара пользователя
postscripter
Сообщения: 93
Зарегистрирован: 16 сен 2015, 15:24

Re: Что значит, расширить конференцию? *5

Сообщение postscripter »

Закончил свой вариант n-way-conf, зацените. Может, какие-то мысли появятся по вышеописанной проблеме? Хотя я подозреваю phonerLite.


;; Сочетание *0 включает режим конференции
[macro-MyFeature1]
exten => s,1,Noop(Perevod v konfu)
exten => s,n,Set(confno=${CALLERID(num)})
exten => s,n,Noop(Perevod sobesed)
exten => s,n,ChannelRedirect(${BRIDGEPEER},my-addtoconf,${confno},asuser)
exten => s,n,Noop(Perevod sebya)
exten => s,n,ChannelRedirect(${CHANNEL},my-addtoconf,${confno},asadmin)
exten => s,n,Hangup
exten => s,n,MacroExit()


;; Редирект канала в конференцию $EXTEN
[my-addtoconf]
exten => _X.,1(asadmin),Noop(...as ADMIN)
exten => _X.,n,ConfBridge(${EXTEN},my_mybridge,my_myadmin,my_myadminmenu)
exten => _X.,n,Read(dst,speed-enternumber)
exten => _X.,n,Set(devinfo_context=${ODBC_CHECK_CONTEXT(${EXTEN})})
exten => _X.,n,Dial(LOCAL/${dst}@${devinfo_context},10,gG(my-addtoconf^${EXTEN}^redir))
exten => _X.,n,GotoIF($[${DIALSTATUS} = NOANSWER]?noansw)
exten => _X.,n,GotoIF($[${DIALSTATUS} = BUSY]?zanjat)
exten => _X.,n(wrongnum),Playback(pbx-invalid)
exten => _X.,n,GoTo(asadmin)
exten => _X.,n(noansw),Playback(ne-otvechaet&poprobujte-eshhe-raz)
exten => _X.,n,GoTo(asadmin)
exten => _X.,n(zanjat),Playback(extension&zanjat)
exten => _X.,n,GoTo(asadmin)
exten => _X.,n(redir),GoTo(asadmin)
exten => _X.,n(asuser),Noop(...as USER)
exten => _X.,n,ConfBridge(${EXTEN},my_mybridge,my_myuser,user_menu)
exten => _X.,n,Hangup



Функция ODBC_CHECK_CONTEXT описана так

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

[CHECK_CONTEXT]
dsn=asterisk_db
readsql=(SELECT data FROM sip WHERE id=${ARG1} AND keyword='context' LIMIT 1)  
          UNION   
        (SELECT data FROM dahdi WHERE id=${ARG1} AND keyword='context' LIMIT 1)
Собеседники добавляются кнопкой, назначенной на выход из конференции, обычно *5, у меня *0.
помучился сам - дай помучиться другим
Аватара пользователя
postscripter
Сообщения: 93
Зарегистрирован: 16 сен 2015, 15:24

Re: Что значит, расширить конференцию? *5

Сообщение postscripter »

К сожалению, не вижу никакой (тривиальной) возможности завершить конференцию по выходу администратора. kick all появилась только в 12-м астериске. 12-й астер есть, кажется, в комплекте с 13-м FreePBX, но PBX я трогать не хочу, 13-я версия глючная насквозь. Насколько сложно, и вообще, возможно ли обновиться с 11.6 на 12, не трогая FreePBX?

В качестве workaround добавил RAND() при создании конференции, в старой участники могут продолжать общаться. В принципе, тоже неплохо, если в Dial поставить ограничение по времени типа L(3600000:600000).
помучился сам - дай помучиться другим
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH