Вход | Регистрация
Вы здесь: Главная / Форум / Главный форум по Asterisk / TrixBox, Elastix, FreePbx / Очередь без Answer

Очередь без Answer

Проблема с потоком E1 при большом кол-ве входящих
Откуда: Тольятти
Сообщений: 31

Очередь без Answer

TrixBox 2.8.0.1 на CentOS release 5.3 (Final)

Входящие звонки поступают по потоку E1 на внутренние софтофоны
телефонистов, задача состоит в том, чтобы последовательно перебирать
внутренние номера пока кто-нибудь не ответит на входящий звонок.

Стандартные очереди не подходят, так как в этом случае "поднимается
трубка", и клиент вынужден платить за свой звонок, хотя слушает
имитацию гудков или "Ваш звонок очень важен для нас".

Стандатные "Ring Group" тоже не подходят, так как нет нужного
алгоритма последовательного перебора.

Пришлось написать вот такой Dialplan Injection:

Set(MyDialCnt=1)
Set(MyDisp=${MY_QUEUE_NEXT()})
NoOp(My MyDisp = {${MyDisp})
Dial(${MyDisp}, 2)
(get_next), Set(MyDisp=${MY_QUEUE_NEXT()})
GotoIf($["${MyDisp}" = ""]?loop_end:try_dial)
(try_dial), Dial(${MyDisp}, 5)
Set(MyDialCnt=$[${MyDialCnt} + 1])
NoOp(My Test Exp ${MyDialCnt})
Goto(get_next)
(loop_end), NoOp(My disp loop end)

где MY_QUEUE_NEXT - это odbc-функция, которая выдает "SIP/101", "SIP/102"
и т.д.

Когда входящих звонков мало - все нормально, а когда входящих становится
много происходят разные неприятности вроде "аллеканий" телефонистов (клиенты
не сразу начинют их слышать) и отказа потока E1 (по видимому превышается
какой-нибудь таймаут на ответ).

Что можно сделать? Выдавать сразу "занято" не хочется, так как обработка
одного звонка телефонистом обычно происходит довольно быстро.

Как удержать входящий звонок и не "ронять" E1?

Может это odbc стопорит? В res_odbc.conf у меня так:

[fb]
enabled => yes
dsn => mydsn
username => queue
password => 123456
limit => 5
pre-connect => no
2010-01-12 00:39

Сообщений: 6521

Re: Очередь без Answer

ponch:

Стандатные "Ring Group" тоже не подходят, так как нет нужного
алгоритма последовательного перебора.
Are you sure?
Все-все пробовали, и хорошо понимаете разницу между ними?
2010-01-12 00:58

Откуда: Тольятти
Сообщений: 31

Re: Очередь без Answer

ded:

ponch:

Стандатные "Ring Group" тоже не подходят, так как нет нужного
алгоритма последовательного перебора.
Are you sure?
Все-все пробовали, и хорошо понимаете разницу между ними?
Да, пробовал все подходящие. На самом деле алгоритм у меня посложней, чем простой
последовательный перебор, но это неважно, факт в том, что они не подходят точно.
Кстати, "аллеканье" было и когда я поначалу заруливал звонки на Ring Group (правда,
у меня тогда было включено Call Waiting для внутренних номеров)

Вопрос остается: Почему возникают проблемы с E1, когда в цикле крутяться "безуспешные"
Dial'ы и звонок некому отдать?

Может есть какое приложение типа Sleep() или Pause() которое дает астериску
"очухаться" и правильно обрабатывать входящий звонок?

Пока идея такая: Хочу оставить некоторое кол-во не обработанных входящих, например,
если работает 1 телефонист, то "держать" на длинных гудках 1 звонок, на 2 - 2 и т.д.,
а остальных сбрасывать в "занято". Пока не знаю, как определить, что sip телефон
находиться в режиме разговора.



2010-01-12 12:06

Сообщений: 6521

Re: Очередь без Answer

ponch:

ded:

ponch:

Стандатные "Ring Group" тоже не подходят, так как нет нужного
алгоритма последовательного перебора.
Are you sure?
Все-все пробовали, и хорошо понимаете разницу между ними?
Да, пробовал все подходящие. На самом деле алгоритм у меня посложней, чем простой
последовательный перебор, но это неважно, факт в том, что они не подходят точно.
Кстати, "аллеканье" было и когда я поначалу заруливал звонки на Ring Group (правда,
у меня тогда было включено Call Waiting для внутренних номеров)

Вопрос остается: Почему возникают проблемы с E1, когда в цикле крутяться "безуспешные"
Dial'ы и звонок некому отдать?

Может есть какое приложение типа Sleep() или Pause() которое дает астериску
"очухаться" и правильно обрабатывать входящий звонок?

Пока идея такая: Хочу оставить некоторое кол-во не обработанных входящих, например,
если работает 1 телефонист, то "держать" на длинных гудках 1 звонок, на 2 - 2 и т.д.,
а остальных сбрасывать в "занято". Пока не знаю, как определить, что sip телефон
находиться в режиме разговора.
Не надо цитировать цитируемое.
Признак неадекватности детектед.
2010-01-12 12:20

Откуда: Тольятти
Сообщений: 31

Re: Очередь без Answer

ded:

Не надо цитировать цитируемое.
Привычка почтой пользоваться. В форумы мало пишу. Постараюсь исправиться.

ded:

Признак неадекватности детектед.


Спасибо, но лучше бы вы сказали, как детектед sip телефон ин юзе. :)

Так как думаю, что Dial() тормозит цикл поиска свободного телефониста и
из-за него при шквале входящих звонков стопориться астериск, а потом
и канал E1.
2010-01-13 13:17

Сообщений: 6521

Re: Очередь без Answer

ponch:

Спасибо, но лучше бы вы сказали, как детектед sip телефон ин юзе. :)
Вам сюда - http://asterisk.ru/news/113

ponch:

Так как думаю, что Dial() тормозит цикл поиска свободного телефониста и
из-за него при шквале входящих звонков стопориться астериск, а потом
и канал E1.
Это навряд ли. Шквал, это например 10 000 одновременных вызовов - http://asterisk.ru/news/102
2010-01-13 14:55

Сообщений: 866

Re: Очередь без Answer

любопытно мне, а откуда берется утверждение что очередь снимает трубку? Ничего оно не снимает имхо - идет session progress и early media.
2010-01-14 12:43

Добавить страницу в закладки:  Delicious Google Slashdot Yahoo Yandex.ru Reddit Digg Technorati Bobrdobr.ru Newsland.ru Smi2.ru Rumarkz.ru Vaau.ru Memori.ru Rucity.com Moemesto.ru News2.ru Mister-Wong.ru Myscoop.ru 100zakladok.ru