Страница 1 из 2

Как кикнуть назойливого абонента из конференции ?

Добавлено: 03 апр 2015, 08:11
Reader
Здравствуйте, уважаемые господа эксперты.
Имеется "Elastix 2.4.0 32bit", имеется необходимость собирать каждый день в одно и то же время телефонную конференцию из одних и тех же участников по одной и той же проблематике с автоматическим обзвоном и приглашением каждого участника (кстати, успешно реализовано). Так вот. С одним и тем же абонентом неделя за неделей стала повторяться одна и та же проблема. Абонент-участник телеконференции 1 ... 2 раза в неделю получает задание и направляется в командировку по городу. Берёт свой мобильный, а со своего служебного телефона (стационарного, который прописан в телеконференции) ставит переадресацию на мобильный и с раннего утра уезжает в командировку по городу. Так вот, перед началом конференции "Elastix" звонит в том числе этому абоненту и приглашает его в конференцию и проключает его туда. А чаще всего в это время срабатывет переадресация на мобильный,а там частенько отвечает другой автоответчик "В настоящее время абонент недоступен или находится вне зоны действия сети". Самое неприятное, что автоответчик повторяет и повторяет эту фразу. Раз за разом (каждый раз всё громче, но это имхо). И вся конференция хором слушает весь этот бред минутами !.. Я предложил абоненту не устанавливать переадресацию на мобильный - он ничего не желает слушать. Предложил каждое утро входить в конф. самостоят. - ничего не желает слушать - подавай ему приглашение и проключение каждое утро. Теперь вместо того, чтобы решать текущие задачки я вынужден каждый день по 15 мин. мониторить телеконференцию и выпинывать его их конференции командой "meetme kick 78 19" из CLI. Где "19" - это конкретный его номер (каждый день меняется) в конференции "78". Но это его текущий номер. А так его А-номер "1999". "Выдёргивается" он средствами "Elastix" в конференцию с TDM PBX по потоку E1. В нормальном состоянии качество - идеальное (работает эходав). Но вот беда - все автоответчики (а они бывают каждую неделю) также громко и чётко транслируются на всё предприятие !.. Вопрос - как бы его выпинывать (kick) из конференции средствами "Asterisk" автоматически.
Когда начал курить эту проблему - обнаружил, что он вообще никогда сам в конференции не выступает. Говорил с его начальством - оказывается он он в конференции впринципе не имеет права голоса (только право слушать - но слушать обязательно, ибо выполняет функции, тесно зависящие от решений спикеров конференции). У него даже специальный аппарат стоит с кнопочкой "Mute", которую он усердно всегда жмёт в конференции ... У меня есть крошечный опыт написания строк в Cron. Вот думаю написать бы такую строку, чтоб вычисляла его по А-номеру и кикала. А проверку учиняла только во время конференции с интервалом в 10 сек. А спустя скажем полчаса после начала конфы сама дезактивизировалась. Чтобы проверяла конфу на наличие участника по признакам "Caller Number = 1999", "Confno = 78", "talking". А как это прописать командами - пока не соображу ...

Re: Как кикнуть назойливого абонента из конференции ?

Добавлено: 03 апр 2015, 10:44
awsswa
конференция с помощью meetme собираете ?
в meetme можно mute сделать на абонента

Re: Как кикнуть назойливого абонента из конференции ?

Добавлено: 03 апр 2015, 11:17
Reader
Да, собираю с помощью MeetMe:
В опред. время Cron запускает call-file, который в свою очередь ссылкается на некий контекст, в котором содержится в частности строка:
exten => 78,n,MeetMe(77,oTqsr,)
По поводу "mute" мне приходила в голову такая идея. Да, Вы правы, нужно поставить "mute" при входе только конкретному абоненту "1999" в конференцию, и дальше хоть трава не расти. Так я и сделаю.
Но мне бы всё-таки сделать ещё один вариантик более жёсткий. Чтобы "Kick". Сложно объяснить зачем ... Словом однажды (не так давно) на попытку Системы пригласить абонентика в конференцию ответила некая дама преклонных лет и понесла на всё предприятие какие-то свои эмоции. "Mute" конечно погасит эти эмоции, но дама-то будет всё слышать ... Вот от чего бы уберечься !
Понятно, что и это не панацея. Следующим номером программы буду продумывать запрашивать код подтверждения у конкретного этого абонента, чтобы почистить слушателей от всякой нечисти ... Не знаю, может это слишком ...
А "Kick"-то бы очень не помешал. Нарушил конвенцию - долой !

Re: Как кикнуть назойливого абонента из конференции ?

Добавлено: 03 апр 2015, 11:31
zzuz
И что мешает выполнять ?

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

[features-supervisor]
exten => _XX*XXXX,1,Noop()
exten => _XX*XXXX,n,MeetMeAdmin(${CUT(EXTEN,*,1)},k,${CUT(EXTEN,*,2)})
где первая часть до * это номер конференции , а вторая нужный номер

Re: Как кикнуть назойливого абонента из конференции ?

Добавлено: 03 апр 2015, 12:00
Repz
Прикольный костылинг задумали. ;)
Пробрасывайте своим call-file не сразу в конференцию, а в контекст где просите абонента нажать пару кнопок, если нажал - молодец, иди в конференцию и молчи там себе потихоньку)

Re: Как кикнуть назойливого абонента из конференции ?

Добавлено: 03 апр 2015, 12:01
Reader
to Zzuz:
Т.е. Вы предлагаете шарахнуть автопробегом по бездорожью и разгильдяйству:
[features-supervisor]
exten => _78/1999,1,Noop()
exten => _78/1999,n,MeetMeAdmin(78,k,1999)
Кстати, правильно ли я указал формат команд ?
А то мне показалось, что А-номер "1999" в параметрах команды указывать бесполезно - ибо наверное нужно указывать № пользователя в конференции, а не А-номер. А А-номер может быть непредсказуем ... "Confno" кажется он называется ...
Просто мне в Вашем контексте непонятно - зачем набираемый номер записывать через _XX*XXXX ?
В моём конкретном случае речь идёт просто об 1м и том же из месяца в месяц абоненте ...
Но не стоит его сходу выгонять из конференции просто за то что у него А-номер "1999". Суть задачи в том, чтобы запустить его в конф. и наблюдать за его состоянием (и только за его). Если он в состоянии "not talking" - вобщем-то нехай слушает коль ему по должности положено. А вот ежели как только он "talking" - сразу "kick" ему со всего размаху ...
... Со всего размаху - это жеж как-то в Cron необходимо периодическую проверку учинять ! А я вот даже близко не представляю себе алгоритма прописки в Сron'e такого запроса на проверку "talking" - "not talking" ... Вот бы чего подсказать ... Что вообще за переменная отвечает за характеристику абонента в конференции "talking" ?

Re: Как кикнуть назойливого абонента из конференции ?

Добавлено: 03 апр 2015, 12:09
ded
Костылинг! Модификатор спикинг/талкинг/ноталкинг! :)
Кайф!

Re: Как кикнуть назойливого абонента из конференции ?

Добавлено: 03 апр 2015, 12:22
zzuz
Блин , автор - слепой философ . Какая прелесть .

Re: Как кикнуть назойливого абонента из конференции ?

Добавлено: 03 апр 2015, 12:23
zzuz
Кстати, правильно ли я указал формат команд ?
Я указал пример и разжевал его . Если хотите делать по своему - делайте , не нужно тогда спамить .

Re: Как кикнуть назойливого абонента из конференции ?

Добавлено: 03 апр 2015, 12:24
Reader
Чего-т. я запутался. Хорошо было бы отысать - как вообще называется параметр абонента в конференции "talking" - "not talking". Ибо здесь это - ключевое в проверке ... Есть конечно и неудобства. Допустим если Cron'ом шарашить проверку каждые 10 сек. - проверка может показать, что аб-т "not talking", хотя он просто прервался, а на самом деле он через секунду продолжает диктовать что "Абонент возможно находится вне зоны действия сети". Но это мелочи. Вот что бы почитать, чтобы отыскать название упомянутого параметра ? Ибо
core show help MeetMe оказался через чур краток:
meetme kick Kick a conference or a user in a conference.
meetme list List all conferences or a specific conference.
meetme {lock|unlock} Lock or unlock a conference to new users.
meetme {mute|unmute} Mute or unmute a conference or a user in a conference.