AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Ast 1.4: Не определяет использование телефона в очереди

Asterisk IP PBX 24 сообщений -
#1

Дано:

Очередь с одним (это ведь возможно, да?) оператором-обработчиком, регистрируемым по AddQueueMember

Входящий в очередь звонок приходит на него, оператор беседует.

При этом астериск выдает в лог фразу

Код:
[Apr 9 20:20:57] WARNING[4014] app_queue.c: The device state of this queue member, Local/1112@****, is still 'Not in Use' when it probably should not be! Please check UPGRADE.txt for correct configuration settings.


В файлике есть упоминание о параметре call-limit, выставляемом для юзера-оператора, однако его использование неинтересно, т.к. тогда теряется возможность перевода вызова оператором.

При еще одном входящем звонке в эту очередь звонок поступает по второй линии, и, в случае включения auto-pause оператор через какое-то время теряется для обработки (не разорваться же ему). Опять же в конфиге выставлена опция "не звонить на inuse телефон", но, похоже, астериск не может определить занятость телефона оператора.

Где-то в форумах нашел упоминание, что астериск не умеет определять использование канала SIP (странно, не правда ли?) и посоветовали использовать Local/*. Да, при этом пару раз все правильно определилось, но потом само собой перестало Sad.

С этим что-нибудь можно поделать? Или самому обработчика очереди писать? Smile

PS А еще при включении опции об информировании оператора о времени, сколько провисел звонящий на линии, информация выдается на английском, хоть везде прописан русский, и все приглашения по-русски звучат Sad

PPS Нашел патч для 1.2.х http://bugs.digium.com/view.php?id=8580
#2

1. Даже если стоит call-limit астерисковский трансфер должен работать
2. В 1.4 в sip.conf есть опция, которая позволяет действовать call-limit только на входящие звонки
3. Насчет языка, да есть такое, как исправлять так сразу сказать сложно Sad

_________________
SuSE 10.1 / Asterisk-trunk / Celeron 1000 / chan_misdn (HFC)
Linksys PAP2T / SPA941 / SPA3102 / SPA2102
#3

IgorG писал(а):
3. Насчет языка, да есть такое, как исправлять так сразу сказать сложно Sad

на ум приходит метод "быстрого и грубого хака" тоесть найти нужные файлы на EN и подменить их своими RU. если английский язык не используется то осложнений не должно быть.

_________________
Успехов!
#4

Не совсем подойдет наверное, так как там проговаривается время и английский вариант не прокатит.
_________________
SuSE 10.1 / Asterisk-trunk / Celeron 1000 / chan_misdn (HFC)
Linksys PAP2T / SPA941 / SPA3102 / SPA2102
#5

IgorG писал(а):
1. Даже если стоит call-limit астерисковский трансфер должен работать

Наверное, у меня трансфер не астерисковский Sad А линксисовский
Код:
[general]
context=default ; Default context for incoming calls
allowguest=no ; Allow or reject guest calls (default is yes)
allowoverlap=no ; Disable overlap dialing support. (Default is yes)
language=ru ; Default language setting for all users/peers
limitonpeers = yes ; Apply call limits on peers only. This will improve

[1112]
username=1112
secret=*****
call-limit=1
type=friend
host=dynamic
canreinvite=no
rfc2833compensate=yes ; Compensate for pre-1.4 DTMF transmission from another Asterisk machine.


При этом при переводе в логе

Код:
[Apr 10 11:50:46] ERROR[4064]: chan_sip.c:3059 update_call_counter: Call from peer '1112' rejected due to usage limit of 1
[Apr 10 11:50:46] NOTICE[4064]: chan_sip.c:13404 handle_request_invite: Failed to place call for user 1112, too many calls


Звонок не переводится

А как настроить линксис чтобы он использовал астерисковский трансфер?

Цитата:
2. В 1.4 в sip.conf есть опция, которая позволяет действовать call-limit только на входящие звонки

limitonpeers = yes ? Не работает Sad
Цитата:
3. Насчет языка, да есть такое, как исправлять так сразу сказать сложно Sad

Вот это самое не принципиальное Wink

PS Наверное, все эти измышления были бы не нужны, если б астериск умел правильно определять занятость телефона. А он это уммет через раз Sad
#6

Самое элементарное решение: отключите CallWaiting в линксисе, он будет принимать только один вызов, на второй отправлять Busy.
_________________
SuSE 10.1 / Asterisk-trunk / Celeron 1000 / chan_misdn (HFC)
Linksys PAP2T / SPA941 / SPA3102 / SPA2102
#7

IgorG писал(а):
Самое элементарное решение: отключите CallWaiting в линксисе, он будет принимать только один вызов, на второй отправлять Busy.
Очевидное решение, однако я б хотел оставить возможность дозвона по второй линии до оператора, например, для внутренних разговоров (типа "срочно к начальству") Smile
#8

Ну тогда пути, кроме как применения патча, приведённого выше, нет.
_________________
SuSE 10.1 / Asterisk-trunk / Celeron 1000 / chan_misdn (HFC)
Linksys PAP2T / SPA941 / SPA3102 / SPA2102
#9

Покопавшись в сырцах, выяснил, что для корректного определения занятости SIP абонента надо поставить limitonpeer=no и у клиента прописать call-limit=2 (главное, чтобы не 0, иначе почему-то астериск ваще не проверяет статус при call-limit=0, а при call-limit=1 дает только один звонок)
#10

Поразбирался с очередями (тоже возникла такая необходимость). Возник вопрос, а как это вообще заработало при call-limit=2? Ведь по идее из очередей должно приходить 2 звонка? Плюс в очередной раз взглянул на патч, там разработчик не хочет переписывать его под транк, дескать нет у него для этого времени, стоит ли данная функция того чтобы занятся доводкой патча?
_________________
SuSE 10.1 / Asterisk-trunk / Celeron 1000 / chan_misdn (HFC)
Linksys PAP2T / SPA941 / SPA3102 / SPA2102
#11

IgorG писал(а):
Возник вопрос, а как это вообще заработало при call-limit=2?
Там идеология такая: астериск считает количество используемых линий у СИП канала только тогда, когда для этого канала прописан хоть какой-то call-limit. Естественно он не должен быть равен одному для работы Call waiting. А очередь просматривает массив занятости СИП каналов для выбора свободного оператора, и естественно, если call-limit не прописан, оператор считается свободным по любому, даже если он уже разговаривает с кем-то из очереди. А с включенным call-llimit все считается правильно: на оператора не больше одного звонка из любой очереди...
#12

Очень интересно, спасибо за пояснение. Razz
_________________
SuSE 10.1 / Asterisk-trunk / Celeron 1000 / chan_misdn (HFC)
Linksys PAP2T / SPA941 / SPA3102 / SPA2102
#13

Для упоминавшегося здесь патча нашелся разработчик, который переписал патч для транка, если есть желание чтобы в дальнейшем данная фича вошла в астериск - протестируйте патч:
http://bugs.digium.com/view.php?id=8580

_________________
SuSE 10.1 / Asterisk-trunk / Celeron 1000 / chan_misdn (HFC)
Linksys PAP2T / SPA941 / SPA3102 / SPA2102