Страница 1 из 2
.call-файл и очереди
Добавлено: 16 окт 2014, 11:05
strong
Добрый день.
Шел второй день, как я пытаюсь заставить астериск звонить мне на очередь(
Собственно есть файл test.call
Код: Выделить всё
Channel: Local/test@callq
Callerid: TestCaller
MaxRetries: 2
RetryTime: 300
WaitTime: 45
Context: from-internal
Extension: 222
extension_custom:
Так же в системе есть два сип-екстеншна: 111 и 222
Есть одна очередь 333
В очередь добавлен екстеншн 111.
если с телефона 222 звоню на 333, то очередь отлично отрабатывает. Так же прямой звонок между номерами проходит как нужно.
Но стоит мне закинуть test.call в /var/spool/asterisk/outgoing мой контейнер с астериском просто падает. Сначала цп 100%, потом отъедается вся память, весь своп и все начинает рушиться.
Система ставилась из исошника (AsteriskNOW), uname -a: 2.6.32-431.e16.i686, FreePBX 2.11.0.38, asterisk 11.13.0
Подскажите пожалуйста, что не так делаю, буду рад любым советам...
UPD:
Задача у меня такая: необходимо сначала звонить на очередь, и если кто-то из номеров очереди взял трубку - звонить на номер, указанный в call-файле в поле Extension и соединял абонентов. Если же никто из очереди не смог ответить, то номер 222 (в моем случае) набираться не должен. Суть в том, что абонент 222 должен получить гарантированное соединение с оператором, в противном случае не соединен вообще (никакой музыки или ожидания).
Номер в call-файле в будущем будет произвольный и внешний, так что прописывать маршруты сейчас к 222 не имеет смысла. (номеров будет много, их будут вводить случайные люди с веб-панели, чтобы им перезвонили).
Re: .call-файл и очереди
Добавлено: 16 окт 2014, 11:17
Vlad1983
Код: Выделить всё
[callq]
exten => test,1,Answer(1)
same => n,Queue(333)
same => n,Hangup
Re: .call-файл и очереди
Добавлено: 16 окт 2014, 11:28
strong
Спасибо за ответ! Но проблема осталась(
Теперь он звонит сразу на 222, там играет музыка, но контейнер медленно умирает, под музыку из трубки...
Задача у меня такая: необходимо сначала звонить на очередь, и если кто-то из номеров очереди взял трубку - звонить на номер, указанный в call-файле в поле Extension и соединял абонентов. Если же никто из очереди не смог ответить, то номер 222 (в моем случае) набираться не должен. Суть в том, что абонент 222 должен получить гарантированное соединение с оператором, в противном случае не соединен вообще (никакой музыки или ожидания).
Номер в call-файле в будущем будет произвольный и внешний, так что прописывать маршруты сейчас к 222 не имеет смысла. (номеров будет много, их будут вводить случайные люди с веб-панели, чтобы им перезвонили).
Пробовал делать через оператор Dial, вместо Queue, но на продакшне тогда некоторые вещи не попадают в лог или, например, записи разговоров...
Число номеров операторов ограничено и я их могу указать их хоть в конфиге, хоть в панели..
Re: .call-файл и очереди
Добавлено: 16 окт 2014, 11:45
zzuz
Сразу на 222 звонит , потому что Answer стоит , что перед очередью правильное поведение.
Отслеживайте ответ оператора в очереди и направляйте вызов куда нужно. Но этот вопрос уже будет не уровня Новичков . Расшаривайте признак ответа на канал оператором для очереди , чтобы выполнять определенные действия. Смотрите аргументы очереди и команды Dial . также пригодится просмотреть функции IMPORT() и SHARED() .
Re: .call-файл и очереди
Добавлено: 16 окт 2014, 12:37
strong
zzuz писал(а):Сразу на 222 звонит , потому что Answer стоит , что перед очередью правильное поведение.
Отслеживайте ответ оператора в очереди и направляйте вызов куда нужно. Но этот вопрос уже будет не уровня Новичков . Расшаривайте признак ответа на канал оператором для очереди , чтобы выполнять определенные действия. Смотрите аргументы очереди и команды Dial . также пригодится просмотреть функции IMPORT() и SHARED() .
Спасибо за информацию! На данный момент я почти ничего не понял из вашего сообщения) Буду разбираться... Если бы вы набросали в меня ссылок, чтобы почитать по данной теме, то я был бы вам оооочень признателен)
Re: .call-файл и очереди
Добавлено: 16 окт 2014, 12:51
ded
Оверквоттинг детектед!
Re: .call-файл и очереди
Добавлено: 16 окт 2014, 16:51
strong
Есть некий результат)
Файл test.call
Код: Выделить всё
Channel: Local/test@callq
Callerid: TestCaller
MaxRetries: 2
RetryTime: 300
WaitTime: 45
Context: from-internal
Extension: 222
extension:
Код: Выделить всё
[callq]
exten => test,1,Dial(Local/333@ext-queues)
либо без екстеншна вообще:
test.call
Код: Выделить всё
Channel: Local/333@ext-queues
Callerid: TestCaller
MaxRetries: 2
RetryTime: 300
WaitTime: 45
Context: from-internal
Extension: 222
Но осталась одна проблема...
Оба абонента вызываются одновременно, а необходимо, чтобы астериск ждал, пока кто-то в очереди ответит, только потом звонил по номеру 222
Насколько я понимаю, оно уходит в очередь и идет выполнение дальше, параллельно, вот и выходит такая канитель...
Re: .call-файл и очереди
Добавлено: 16 окт 2014, 23:50
virus_net
Это не является проблемой, т.к. на мой взгляд это вполне ожидаемый результат применения очереди в данном случае.
В чем панацея применения очередей ? Воспользуйтесь call группой и вы вполне достингете реализации своей задачи.
Сначала набираете группу, если кто-то в группе поднял трубку, то набирайте свой "222" и он точно получит гарантированное соединение, ну ессно если тока астер не рухнет, например по причине падения питания, или оператор отвалится из-за сетевой проблемы, в этот момент.
Re: .call-файл и очереди
Добавлено: 17 окт 2014, 14:01
strong
Спасибо! Через ring groups заработало почти как нужно))
Настроил timeconditions ко всему, через него попадаю на группу и все работает как нужно)) Прям уже обрадовался... Но звонки не записывает...
Вернее саму группу мы писать можем и это уже хорошо, но у меня получается вызов идет от ".call-файла", но это полбеды, назначением значится номер оператора (111), а не номер абонента (222), что логично, с таймкондишн мы перенаправляемся на ринггруп, с ринггруп на внетренний номер, а с него на внешний номер абонента.
Так вот, репортах я вижу, что некто "TestCaller" позвонил на 7771 (это номер ring_group) и запись разговора. А строкой выше то что нужно, абонент 111 позвонил на 222, но записи, соответственно нет, ибо группа вызова уже записала то, что нужно.
Весь вопрос в последующей сортировке.. Когда ком мне придут и скажут, нужно послушать все звонки на такой-то номер (например на номер 222), а по фильтру репортов я не увижу эти записи. Делать фильтр по группе вызова тоже неверно, тк в этой группе будет порядка 7 номеров, которые ежедневно делают 300 звонков. Я потом не разгребу этот хаос...
Вычитал на одном форуме, что нужно поставить решетку после номера экстеншна в группе вызовов, но эта решетка работает не так, как нужно, она наоборот добавляет запись таймкондишна (которая по умолчанию не пишется и в лог в том числе)
Любопытно то, что если отключить телефон 222, то звонки, которые обрабатывались не App=Dial, а App=Congestion записываются. Так же прямые звонки с номера на номер так же пишутся, в настройках экстеншна запись настроена...
В общем, как-то так((
Re: .call-файл и очереди
Добавлено: 18 окт 2014, 09:35
virus_net
в момент создания call файла можно в нем сетнуть переменную, в значение которой подставить все что вам надо и потом подставить в dialplan туда куда вам надо
Asterisk Call Files
Using Variables in Asterisk Dialplans