Страница 1 из 2
У asterisk есть альтернативная реализация очередей?
Добавлено: 12 дек 2016, 17:53
Kucherow
Казалось бы все просто, создаем в queues.conf очередь, в dialplan использует queue() при записи в самобытную cdr выдираем параметры специфичные для queue и все работает. Но вот приходит руководство и говорит, что если у пользователя включен автоматический перевод звонка(который тоже сделан средствами dialplan, т.к. руководство отказывается давать пользователям права рулить такими делами на аппаратах), то звонки приходящие пользователю из очередей должны подчиняться этим правилам. По сути если звонок пришел в очередь, то надо определить какие в ней есть участники и отправить в кусок dialplan где обрабатываются переадресации данных номеров. И тут все вроде просто, берем Member=>Local/ и кидаем куда нам надо, НО в таком случае появляется еще один канал и самаписная cdr рассыпается(ну как рассыпается появляется две записи вместо одной, причем нельзя просто забить на одну т.к. они друг друга дополняют). Да вероятно проблема в дизайне и что то нужно с этим делать, но вот что? Использовать встроенную cdr не вариант, она абсолютно нечитаемая, коробочные решения тоже - все прекрасно работает без них, не читая дубликатов записей. Может есть способ у Local/ оставлять id канала из которого они были вызваны? Или есть альтернатива app_queue?
Re: У asterisk есть альтернативная реализация очередей?
Добавлено: 12 дек 2016, 17:57
Samael28
Kucherow писал(а):Может есть способ у Local/ оставлять id канала из которого они были вызваны?
http://www.voip-info.org/wiki/view/Asterisk+variables
Inheritance of Channel Variables
Prepending a single _ character to a variables name in Set will cause that variable to be inherited by channels created by the main channel. eg. when using Dial(Local/...); once inherited these variables will not be further inherited. Prepending two _ characters will cause them to be inherited indefinitely.
Note that for retrieval purposes these variable names do not include the underscores.
[TestInherit]
exten => 100,1,Set(__FOO=5)
exten => 100,2,Dial(Local/test@TestInherit)
exten => test,1,NoOp(${FOO})
will result in FOO being inherited. Without the underscores, the new local channel would start with a clean slate.
Re: У asterisk есть альтернативная реализация очередей?
Добавлено: 12 дек 2016, 19:00
ded
Kucherow писал(а): По сути если звонок пришел в очередь, то надо определить какие в ней есть участники и отправить в кусок dialplan где обрабатываются переадресации данных номеров.
Используйте только динамических агентов (Members), и тогда если звонок пришел в очередь, то в ней будут только те, кто зарегистрировался как агент динамически. Без переадресации.
Re: У asterisk есть альтернативная реализация очередей?
Добавлено: 12 дек 2016, 23:44
1g0r
Я стесняюсь спросить...
А нельзя ли в том куске диалплана, где ставится переадресация, во время ее установки ставить на паузу агента и добавлять нового агента в очередь с новым номером.
Так конечно придется учесть это в статистике, но это не проблема...
Re: У asterisk есть альтернативная реализация очередей?
Добавлено: 13 дек 2016, 08:52
Kucherow
Samael28 писал(а):Kucherow писал(а):Может есть способ у Local/ оставлять id канала из которого они были вызваны?
http://www.voip-info.org/wiki/view/Asterisk+variables
Inheritance of Channel Variables
Prepending a single _ character to a variables name in Set will cause that variable to be inherited by channels created by the main channel. eg. when using Dial(Local/...); once inherited these variables will not be further inherited. Prepending two _ characters will cause them to be inherited indefinitely.
Note that for retrieval purposes these variable names do not include the underscores.
[TestInherit]
exten => 100,1,Set(__FOO=5)
exten => 100,2,Dial(Local/test@TestInherit)
exten => test,1,NoOp(${FOO})
will result in FOO being inherited. Without the underscores, the new local channel would start with a clean slate.
У меня сейчас сделано через наследование, но это такой костыль на самом деле...
Re: У asterisk есть альтернативная реализация очередей?
Добавлено: 13 дек 2016, 08:54
Kucherow
ded писал(а):Kucherow писал(а): По сути если звонок пришел в очередь, то надо определить какие в ней есть участники и отправить в кусок dialplan где обрабатываются переадресации данных номеров.
Используйте только динамических агентов (Members), и тогда если звонок пришел в очередь, то в ней будут только те, кто зарегистрировался как агент динамически. Без переадресации.
Это конечно интересно(не пробовал так), но получается что людям придется заводить/выводить себя из мемберов руками?
Re: У asterisk есть альтернативная реализация очередей?
Добавлено: 13 дек 2016, 08:54
Kucherow
1g0r писал(а):Я стесняюсь спросить...
А нельзя ли в том куске диалплана, где ставится переадресация, во время ее установки ставить на паузу агента и добавлять нового агента в очередь с новым номером.
Так конечно придется учесть это в статистике, но это не проблема...
Я ищу способ упростить, а это еще больше запутает, но не пробовал так буду иметь в виду)
Re: У asterisk есть альтернативная реализация очередей?
Добавлено: 13 дек 2016, 10:22
tol_iwan
Kucherow писал(а):Может есть способ у Local/ оставлять id канала из которого они были вызваны?
Использование "/n" не то?
Re: У asterisk есть альтернативная реализация очередей?
Добавлено: 13 дек 2016, 11:01
Kucherow
Я так до конца не понял зачем нужен этот /n, но пробовал с ним и без него - результат одинаковый.
Re: У asterisk есть альтернативная реализация очередей?
Добавлено: 13 дек 2016, 11:23
ded
/n - конец строки (перевод каретки)