Переключение между активными звонками. Много линий.

обсуждение вопросов по IP-PBX Asterisk

Переключение между активными звонками. Много линий.

Сообщение AndyBack » Ср авг 29, 2018 1:44 am

Есть 3 абонента А,Б,С
1) А и Б сейчас разговаривают.
2) С звонит А.
Как теперь:
- А разговаривает с С, Б на холде
- А разговаривает с Б, С на холде
- А разговаривает с С, Б на холде
...
- А вешает трубку и все дропаются.

Средствами диалплана, АМИ, что-то еще? Мне нужна идея через что такое делать и по какому принципу. Звонков может быть до 10 и между всеми нужно уметь переключаться, никаких разрывов связи быть не должно.
Последний раз редактировалось AndyBack Чт авг 30, 2018 9:17 am, всего редактировалось 1 раз.
AndyBack
Новичок
 
Сообщения: 13
Зарегистрирован: Вт июл 04, 2017 5:53 pm
Карма: + 0 -

Re: Переключение между активными звонками.

Сообщение ded » Ср авг 29, 2018 12:18 pm

Делать через кнопки аппаратного ИП-телефона, разумеется.

Несколько непонятно: теперь уже так есть -
AndyBack писал(а):Как теперь:
- А разговаривает с С, Б на холде
- А разговаривает с Б, С на холде
- А разговаривает с С, Б на холде

и эту мысль можно продолжать до бесконечности -
- А разговаривает с Б, С на холде
- А разговаривает с С, Б на холде
- А разговаривает с Б, С на холде
- А разговаривает с С, Б на холде
- А разговаривает с Б, С на холде
- А разговаривает с С, Б на холде
- А разговаривает с Б, С на холде
- А разговаривает с С, Б на холде
..... и сколько бы мы не переключались, в конце, если А кладёт трубку, никто на холде не останется.
И вопрос - если всё так уже есть, то что же требуется то?
ded
Специалист
 
Сообщения: 4041
Зарегистрирован: Сб май 03, 2008 2:47 am

Re: Переключение между активными звонками.

Сообщение AndyBack » Ср авг 29, 2018 12:33 pm

ded писал(а):Делать через кнопки аппаратного ИП-телефона, разумеется.

Аппаратного ИП-телефона нет. Точнее он может быть любым, например, с дисковым номеронабирателем и недоступен для модификаций/настроек.

Нужно уметь переключаться с разговора А-Б на разговор А-С и обратно. Третья сторона должна висеть на холде в ожидании. Одновременно надо совершить 4 действия:
1) разорвать бридж А-Б
2) Б поставить на холд
3) снять с холда С
4) сбриджить разговор А-С

Команду на такое переключение дает сторонее приложение. Эту логику переключений и надо реализовать мне в своем приложении. Некий аналог многоканального телефона с переключением между множеством линий....
AndyBack
Новичок
 
Сообщения: 13
Зарегистрирован: Вт июл 04, 2017 5:53 pm
Карма: + 0 -

Re: Переключение между активными звонками.

Сообщение ded » Ср авг 29, 2018 12:51 pm

AndyBack писал(а):Эту логику переключений и надо реализовать мне в своем приложении.
Может с этого и надо было и начинать? Как можно было понять ваш первый посыл - "Как теперь:"? И - дисковй телефон? А чего же не военно-полевой?
Хочется нагрубить, но - постараюсь сдержаться.

Исходите из предположения, что всё программное в мире уже написано, надо только найти и приспособить.
Исходя из этого - посмотрите на Flash Operator Panel - FOP2, она уже делает всё, что вы описали, и даже больше.
ded
Специалист
 
Сообщения: 4041
Зарегистрирован: Сб май 03, 2008 2:47 am

Re: Переключение между активными звонками.

Сообщение AndyBack » Ср авг 29, 2018 3:00 pm

ded писал(а):Исходите из предположения, что всё программное в мире уже написано, надо только найти и приспособить.
Исходя из этого - посмотрите на Flash Operator Panel - FOP2, она уже делает всё, что вы описали, и даже больше.

К сожалению, мне не подходит закрытое решение без исходняков... Но спасибо, идею попробую уловить. Пока вопрос остается актуальным.
AndyBack
Новичок
 
Сообщения: 13
Зарегистрирован: Вт июл 04, 2017 5:53 pm
Карма: + 0 -

Re: Переключение между активными звонками.

Сообщение ded » Ср авг 29, 2018 7:45 pm

Эмпирический подход:

1) Установите FOP2 бесплатно.
2) Посмотрите интерфейс (надо сначала создать юзера через админку), и когда увидите в реальном времени работу FOP2 визуально, сделайте
tcpdump -s0 localhost -w /tmp.fop2.pcap
и начинайте там действия - пикап, постановка на холд, прослушка, вклинивание в разговор и гашение активного разговора. Можно будет анализировать файл /tmp.fop2.pcap через Wireshark.
Всё что при этом делает FOP2 будет видно в виде эвентов - соединения по AMI.

Вам останется написать что-то подобное, но на более примитивном уровне.

Теоретический подход:

Изучайте
https://wiki.asterisk.org/wiki/pages/vi ... Id=4817239
ded
Специалист
 
Сообщения: 4041
Зарегистрирован: Сб май 03, 2008 2:47 am

Re: Переключение между активными звонками. Много линий.

Сообщение AndyBack » Чт авг 30, 2018 12:53 pm

Посмотрел FOP2. Ничего он не умеет. Сигнализирует о наличии звонка на второй линии и только. Переключаться на вторую линию не дает или я не нашел где и как это делается. Подскажите кто знает?
AndyBack
Новичок
 
Сообщения: 13
Зарегистрирован: Вт июл 04, 2017 5:53 pm
Карма: + 0 -

Re: Переключение между активными звонками. Много линий.

Сообщение ded » Чт авг 30, 2018 1:33 pm

Видимо в бесплатной версии так.
В платной есть все функции, они реализованы в виде софт-кнопок (черные) вверху экрана. Они у вас есть?

Изображение
ded
Специалист
 
Сообщения: 4041
Зарегистрирован: Сб май 03, 2008 2:47 am

Re: Переключение между активными звонками. Много линий.

Сообщение AndyBack » Чт авг 30, 2018 1:50 pm

Они (кнопки) теперь серые. Вот состояние с двумя входящими, одна линяя отвечена у 1000. У 1000 вторая линия мигает как входящий. Все. Никаких действий со второй линией предпринять из FOP2 невозможно... Версия конечно бесплатная для ознакомления.
Изображение

UPD: Через парковку вызова решить проблему не получилось. Когда звонок Б паркуется, у А случается хангап. Логично. Ведь это предусмотрено для того чтобы А сам мог позвонить С. А мне надо ответить на уже имеющийся входящий от С, А не роняя...
Вложения
Захват.jpg
(40.36 КБ) Скачиваний: 0
Последний раз редактировалось AndyBack Чт авг 30, 2018 5:47 pm, всего редактировалось 1 раз.
AndyBack
Новичок
 
Сообщения: 13
Зарегистрирован: Вт июл 04, 2017 5:53 pm
Карма: + 0 -

Re: Переключение между активными звонками. Много линий.

Сообщение ded » Чт авг 30, 2018 4:48 pm

AndyBack, парковка - механизм для старинного Call center с аналоговыми телефонами.

Картинки вставляются тегом img (вверху)
Изображение

Принимать второй звонок (если работают кнопки сверху) кликая на оператора (или входящий вызов в ринг группе, очереди, транке) в рамку и нажимая кнопку pick-up сверху.
ded
Специалист
 
Сообщения: 4041
Зарегистрирован: Сб май 03, 2008 2:47 am

Re: Переключение между активными звонками. Много линий.

Сообщение AndyBack » Чт авг 30, 2018 6:18 pm

ded писал(а):Принимать второй звонок (если работают кнопки сверху) кликая на оператора (или входящий вызов в ринг группе, очереди, транке) в рамку и нажимая кнопку pick-up сверху.

Call-puckup вообще не работает. Кнопка вверху Call-puckup активна, после клика на абонента клик на этой кнопке ничего не дает совсем. Сервисные коды (из features.conf) работают.

Вообще FOP2 странное приложение. Может это связано с демо-версией, но ИМХО, не работает ничего кроме простого наблюдения за статусами абонентов и хангапа...

У Вас на платной версии это действительно работает? Т.е. при 2 входящих на один и тот же номер можно ткнуть на одного из звонящих и система ответит на звонок? Я как не старался без участия сип-клиента(ответа на нем) ничего не выходит.

У меня при 2 звонках на x-lite у него активируются 2 линии. x-lite прекрасно между ними переключается, бросая не соединенный лег на холд. Но это он делает сам. К тому же у него всего 6 свободных линий. Мне надо сделать тоже самое, но не используя возможности сип-клиента, причем линий должно быть не меньше 10. Единственный вариант - заставить это делать астериск. Думал задача тривиальная, просто я не понимаю с чего начать...
AndyBack
Новичок
 
Сообщения: 13
Зарегистрирован: Вт июл 04, 2017 5:53 pm
Карма: + 0 -

Re: Переключение между активными звонками. Много линий.

Сообщение ded » Пт авг 31, 2018 2:49 am

AndyBack писал(а):при 2 входящих на один и тот же номер можно ткнуть на одного из звонящих и система ответит на звонок?
Какая система?
Это инструменты для супервизора калл центра, и для продвинутых операторов. И у него и у них - свои внутренние номера, на которые и поступит перехватываемый звонок.
Супервизор может прослушивать незаметно, или вклиниваться в разговор с клиентом для подсказок оператору (клиент этого не слышит), перехватывать звонок (call pickup), терминировать его (cancel), трансферить любому оператору или на любой внешний номер, и делать любые наборы вообще. Всё это делается командами AMI, которые транслирует в Астериск Flash приложение fop2-server.

задача у вас не тривиальная.
AndyBack писал(а):x-lite у него активируются 2 линии. x-lite прекрасно между ними переключается
Ну так и в аппаратных ИП-телефонах всё это прекрасно переключается. Это функционал конечных клиентов, а вы пытаетесь навязать его выполнение станции. Поэтому у вас остался
ded писал(а):Теоретический подход:

Изучайте
https://wiki.asterisk.org/wiki/pages/vi ... Id=4817239
Изучать интерфейс AMI, команды, синтаксис, и пр.
ded
Специалист
 
Сообщения: 4041
Зарегистрирован: Сб май 03, 2008 2:47 am

Re: Переключение между активными звонками. Много линий.

Сообщение AndyBack » Пт авг 31, 2018 4:28 pm

Как направить обе стороны в конференцию? А и Б разговаривают. Если я делаю Redirect на А, то Б отваливается. Если я делаю Redirect с ExtraChannel = Б, то А отваливается, но свой кусок диалплана выполняет и потом отваливается...

Я подумал, что задачу можно решить через ConfBrodge. ConfBrodge позволяет сидеть там одному А. Остается только присоединять туда Б и кикать С, если он там был. Ну и обратное, присоединить С, кикнуть Б. Опять же не ясно как выкинуть из конференции, чтобы не отвалился, а встал на холд?
AndyBack
Новичок
 
Сообщения: 13
Зарегистрирован: Вт июл 04, 2017 5:53 pm
Карма: + 0 -

Re: Переключение между активными звонками. Много линий.

Сообщение ded » Пт авг 31, 2018 5:12 pm

Вы полагаете, что можно вот так пообщавшись на форуме про ConfBridge сесть и написать код?

Изучайте
https://wiki.asterisk.org/wiki/pages/vi ... Id=4817239
ded
Специалист
 
Сообщения: 4041
Зарегистрирован: Сб май 03, 2008 2:47 am

Re: Переключение между активными звонками. Много линий.

Сообщение AndyBack » Пт авг 31, 2018 5:28 pm

ded писал(а):Вы полагаете, что можно вот так пообщавшись на форуме про ConfBridge сесть и написать код?

Полагаю. Те, кто решал подобную задачу, обычно отвечают "я делал так то, вот через это".
AndyBack
Новичок
 
Сообщения: 13
Зарегистрирован: Вт июл 04, 2017 5:53 pm
Карма: + 0 -

Re: Переключение между активными звонками. Много линий.

Сообщение ded » Пт авг 31, 2018 6:20 pm

Что там стесняться, тут все, кто на форуме, решали эту задачу. Вот только молчат почему-то... Странно, верно?
Можете хоть приблизительно оценить а) примерное количество посетителей этого раздела, б) общуюю активность раздела, и процент тех, кто решал подобную задачу?
Очень приблизительно? Ассимптота, стремящаяся к нулю.
ded
Специалист
 
Сообщения: 4041
Зарегистрирован: Сб май 03, 2008 2:47 am

Re: Переключение между активными звонками. Много линий.

Сообщение whoim » Ср сен 05, 2018 1:54 am

На хабре есть решение для динамической трёхсторонней конференции. Думаю, можно изучить и развить.
skype:whoim2
whoim
Специалист
 
Сообщения: 879
Зарегистрирован: Пн фев 03, 2014 9:43 am
Карма: + 23 -

Re: Переключение между активными звонками. Много линий.

Сообщение AndyBack » Чт сен 06, 2018 2:16 pm

whoim писал(а):На хабре есть решение для динамической трёхсторонней конференции. Думаю, можно изучить и развить.

Данное решение изобилует ДТМФ-ами и ДИАЛ-ами, что мне не совсем подходит. Но все равно спасибо, посмотрю и подумаю еще раз. Если найду решение своей задачи - опубликую тут.
AndyBack
Новичок
 
Сообщения: 13
Зарегистрирован: Вт июл 04, 2017 5:53 pm
Карма: + 0 -

Re: Переключение между активными звонками. [Решено]

Сообщение AndyBack » Чт сен 13, 2018 10:38 pm

Решил задачу через конференцию. Не уверен, что решение единственное, правильное и оптимальное...

И так, нам понадобится AMI и Redirect с дополнительным ExtraChannel, то есть двойной редирект. Смысл в том чтобы одновременно разорвать бридж и перебросить одного в конференцию, а второго на холд. Третьего средиректить в ту же конференцию после второй командой. Т.е:

А разговаривает с Б, С на холде. Надо: А разговаривает с С, Б на холде.

1. Разрываем бридж
"Action": "Redirect",
"Channel": А.channelId,
"ExtraChannel": Б.channelId,
"Exten": "to-conf",
"ExtraExten": "to-hold",
"Context": "call-services",
"ExtraContext": "call-services",
"Priority": "1",
"ExtraPriority": "1",

2. Редиректим с холда в конференцию.
"Action": "Redirect",
"Channel": С.channelId,
"Exten": "to-conf",
"Context": "call-services",
"Priority": "1",

Конференция потому что в конференции можно сидеть одному, звонок не теряется. Чтобы в конференции не крякали "вы один в конференции" итп, следует завести отдельные профили selector_profile,selector_user,selector_menu. Есть и негатив: когда все уже дропнулись, А продолжает сидеть в конференции один...
Диалплан:
[call-services]
...
exten => to-conf,1,NoOp(to-conf...)
same => n, Answer()
same => n, ConfBridge(${CONFNO},selector_profile,selector_user,selector_menu)

exten => to-hold,1,NoOp(to-hold...)
same => n, Answer()
same => n, MusicOnHold(default)

Answer() не мешает, но позволяет ответить а потом редиректить. Тут сразу возникает вопрос а в какую конференцию редиректить? А сформировать свое имя и установить его в ${CONFNO} через Varset:

"Action": "Setvar",
"Channel": канал,
"Variable": CONFNO,
"Value": confName, ; например, номер А + "-tmp-conf"

Чтобы не разбираться, можно вначале установить данную переменную всем трем каналам. Для "Ring", "Ringing", "Up" каналы есть и их можно узнать и получить. Сие прекрасно, можно редиректить входящие и исходящие, делая им Answer().

Команда на переключение должна подаваться извне. Я смог таким образом переключаться между 20 звонками совершенно спокойно и никого не теряя. Ничего больше в диалплане менять не пришлось, но если несколько линий не поддерживается (не будет состояния "Ring", а будет сразу "Busy"), то надо сразу кидать второго входящего на холд еще в диаплане.

Какие трудности:
1. Слежение за правильным состоянием каналов из AMI. Их на самом деле 4 в случае входящего:
A - "Up"
Б - "Up"
C - "Ring"
А2 - "Ringing"
2. Разрывая бридж, всегда приходит событие MusicOnHold на А. Так же надо правильно обрабатывать хангап.

Если кому не понятно - расскажу подробнее. Критика и комментарии приветствуются.
AndyBack
Новичок
 
Сообщения: 13
Зарегистрирован: Вт июл 04, 2017 5:53 pm
Карма: + 0 -


Вернуться в Asterisk (*)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron