покинуть очередь по условию

Основной форум.
Для опытных

Модераторы: Admins, Модераторы

Ответить
Yur4ek
Сообщения: 128
Зарегистрирован: 25 май 2010, 11:06

покинуть очередь по условию

Сообщение Yur4ek » 01 фев 2017, 11:24

На астериске имеется некоторое количество очередей, но сами агенты зарегистрированы не на нем, а на камалио, с которым астер связан транком. Этот транк у меня настроен как единственный агент во всех очередях.
Камалио настроен отдавать разные SIP коды на абонент занят и абонент не зарегистрирован. Так вот, получив в ответ, что абонент не зарегистрирован, мне надо покинуть очередь до завершения таймаута в команде Queue и перейти к следующему шагу в диалплане.
Сейчас у меня очередь завернута через локальный канал в контекст queue. Я получаю 404 прыгаю на s-leave а что делать дальше?

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

[queue]
exten => s,1,Noop()
   same => n,Set(__MASTER_STR=${CHANNEL(name)})
   same => n,Dial(SIP/ts-lb-1/${PEER},${DIALTIMEOUT},gb(set-handler^s^1))
   same => n,GotoIF(${REGEX("^SIP 404.*$" ${SHARED(SIPcause)})}?s-leave,1)
   same => n,Hangup()
exten => s-leave,1,Noop()

[set-handler]
exten => s,1,Set(CHANNEL(hangup_handler_push)=t-handler,s,1)
exten => s,n,Return()

[t-handler]
exten => s,1,Set(SHARED(SIPcause,${MASTER_STR})=${HANGUPCAUSE(${CHANNEL(name)},tech)})
exten => s,n,Return()

virus_net
Сообщения: 442
Зарегистрирован: 05 окт 2014, 06:10
Откуда: Москва
Контактная информация:

Сообщение virus_net » 02 фев 2017, 07:15

А где же в вашем диалплане вызов application queue ? Его вообще не наблюдается. Есть Dial куда-то.

Как мысли на попробовать: Покинуть можно через редирект канала куда либо ещё или попытаться использовать leavewhenempty=yes, а перед этим самому менять статус агента на Unavailable через DEVICE_STATE.
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)
- whois сервис: whois.bitname.ru или whois.bitname.bit
- dns сервис: dns1.bitname.ru dns2.bitname.ru
- статистика по доменам
ENUMER - звони бесплатно и напрямую.

Yur4ek
Сообщения: 128
Зарегистрирован: 25 май 2010, 11:06

Сообщение Yur4ek » 02 фев 2017, 10:05

Отклеился кусочек диалплана, но там просто цепочка команд queue с таймаутами, правда они оформлены в виде AGI скрипта, который эту цепочку и выстраивает в зависимости от логики из БД. Входящий вызов должен их посетить не задерживаясь в очередях без агентов, пока на него не ответят.

Проблема с камалио в том, что статус агента я узнаю только после того, как отправлю INVITE с астериска и получу SIP 404. А с трансфером идея хорошая. Я могу выставить переменные, чтобы скрипт отличил повторный вызов и перевести канал еще раз на него, но agi-скрипт тоже вызывается из очереди, иначе астериск выключает MOH между командами queue, хотя если в диалплане идет серия команд Queue, то музыка между ними не прерывается, то ли в AGI баг, то ли в диалплане фича. получается что мне надо как-то сделать трансфер на свое место в очереди, но вроде это легче, чем отказаться от queue, ставить все входящие на холд, и как-то скриптом еще и очередность поддерживать.

virus_net
Сообщения: 442
Зарегистрирован: 05 окт 2014, 06:10
Откуда: Москва
Контактная информация:

Сообщение virus_net » 02 фев 2017, 15:32

Ну не видя полной картины, дебага и пр. мне сложно сказать что либо ещё.
Какие там у вас цепочки с AGI мне представить сложно.

Added after 3 hours 38 minutes:

P.S.
Мне самому интересна эта тема. Тема убрать asterisk за kamailio и создать кластер из asterisk`ов. Все руки только никак не доходят, чтобы начать пробовать... :(
Да и схем, по которым это могло бы работать, может быть несколько, а чтобы выбрать какую то, нужно пробовать все схемы... понять плюсы и минусы каждой.
А по состоянию на сейчас, у меня больше вопросов к такой схеме работы, чем ответов на них.

Added after 2 minutes:

Кстати:
Yur4ek писал(а):Этот транк у меня настроен как единственный агент во всех очередях.
а почему не chan Local ? Мне кажется с ним проще будет с агентами.
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)
- whois сервис: whois.bitname.ru или whois.bitname.bit
- dns сервис: dns1.bitname.ru dns2.bitname.ru
- статистика по доменам
ENUMER - звони бесплатно и напрямую.

Yur4ek
Сообщения: 128
Зарегистрирован: 25 май 2010, 11:06

Сообщение Yur4ek » 07 фев 2017, 10:14

Камаилио по своему интересен, он такой из себя фаерволл и роутер sip пакетов, а астериски за ним можно горизонтально масштабировать. Единственное конечно очень мало информации окромя официального сайта. Во вногие вещи приходится врубаться самостоятельно, на нашем форуме одно сообщение в год.

Я тут обнаружил что у астериска уже много лет есть интерфейс ARI, и через него я могу ставить скриптом каналы на MOH, а как подойдет очередь создать бридж и в первом приближении это выглядит проще на порядок, а то с этими очередями смотрящими в локальные каналы разработка такая запутанная становиться, просто превращается в ад.

virus_net
Сообщения: 442
Зарегистрирован: 05 окт 2014, 06:10
Откуда: Москва
Контактная информация:

Сообщение virus_net » 08 фев 2017, 07:14

Согласен, что инфы мало. По какой то причине люди не охотно делятся своими знаниями по этой теме. Хотя можно наверно понять почему - сложно, долго. Те кто в силах разобраться не сидят на форумах и в блогах.

Да, ARI есть. Я даже писал статью о нем. Не думаю, что это будет проще.
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)
- whois сервис: whois.bitname.ru или whois.bitname.bit
- dns сервис: dns1.bitname.ru dns2.bitname.ru
- статистика по доменам
ENUMER - звони бесплатно и напрямую.

Ответить