Страница 1 из 1
Оператор очереди ответивший на звонок
Добавлено: 20 сен 2018, 11:00
tyua
FreePBX 14, Asterisk 13. Нужно получить номер оператора поднявшего трубку.
Следующая конструкция чего-то не работает, хотя на другом сервере с Asterisk 1.8 аналогичный диалплан работает.
Код: Выделить всё
[macro-answer-event-test]
exten => s,1,NoOp()
same => n,NoOp(${CDR(dstchannel)) ; Пусто
[test-queue]
exten => h,1,NoOp()
same => n,NoOp(${CDR(dstchannel)) ; присутствует номер оператора
exten => _X.,1,NoOp()
same => n,Answer()
same => n,ResetCDR(w)
same => n,Queue(1000,tT,,,20,,answer-event-test)
same => n,Hangup()
Спасибо!
Re: Оператор очереди ответивший на звонок
Добавлено: 20 сен 2018, 11:51
Kroteg
А может всё же
${CDR(channel)}
И, кстати, проверь все закрывающие скобки
Re: Оператор очереди ответивший на звонок
Добавлено: 20 сен 2018, 12:13
ded
Вот что характерно:
берётся модерновая FreePBX 14, Asterisk 13, и тут же ломается об колено конструкциями типа
Код: Выделить всё
exten => _X.,1,NoOp()
same => n,Answer()
same => n,ResetCDR(w)
same => n,Queue(1000,tT,,,20,,answer-event-test)
same => n,Hangup()
Типа, мы сами знам что нам надо,, а вот этой круговерти макросов диалплана нам не нужно?
Вы потом будете удивляться - почему там-сям не работает?
Ущербно.
Сложность FreePBX и Asterisk только нарастает от версии к версии.
Обработка очередей принципиально сложнее, чем соединение входящих вызовов с экстенами. Поэтому и был придуман CEL, он точнее отражает все тонкости переключений операторов в очередях, и там видно кто взял трубку, кто не взял, и почему.
Вы же пытаетесь осмыслить сложность более высокого порядка исходя из своего уровня понимания процессов, это приведёт к внутреннему конфликту.
Re: Оператор очереди ответивший на звонок
Добавлено: 20 сен 2018, 12:29
tyua
Kroteg писал(а):А может всё же ${CDR(channel)}
Да, похоже в ${CDR(channel)} то что мне нужно. Спасибо.
ded писал(а):берётся модерновая FreePBX 14, Asterisk 13, и тут же ломается об колено
Обработка очередей принципиально сложнее, чем соединение входящих вызовов с экстенами. Поэтому и был придуман CEL
Из вашего ответа понял что нужно смотреть в сторону CEL. Буду изучать.
Но не совсем понял насчет ломания об колено.
Вы имеете ввиду что раз FreePBX, то и задачу нужно решать с его помощью?
Буду благодарен, если вы подскажете как мне выполнить AGI при ответе оператора в очереди.
Re: Оператор очереди ответивший на звонок
Добавлено: 20 сен 2018, 15:57
ded
tyua писал(а):Вы имеете ввиду что раз FreePBX, то и задачу нужно решать с его помощью?
Да.
tyua писал(а):Буду благодарен, если вы подскажете как мне выполнить AGI при ответе оператора в очереди.
Вы не поверите, но вам не нужно выполнять AGI-скрипты при ответе оператора в очереди. Повторюсь, что Вы пытаетесь осмыслить сложность более высокого порядка исходя из своего уровня понимания процессов.
Вот подробный ответ - почему:
http://asterisk.ru/news/188
Re: Оператор очереди ответивший на звонок
Добавлено: 20 сен 2018, 16:49
tyua
ded писал(а):tyua писал(а):Вы имеете ввиду что раз FreePBX, то и задачу нужно решать с его помощью?
Да.
Я правильно понимаю, что в FreePBX подобное делается с использованием существующих макросов, т.е. вклинивание в них?
Есть ли где почитать (кроме конфига FreePBX) об этих макросах?
ded писал(а):
Вы не поверите, но вам не нужно выполнять AGI-скрипты при ответе оператора в очереди. Повторюсь, что Вы пытаетесь осмыслить сложность более высокого порядка исходя из своего уровня понимания процессов.
Да, но задачу мне нужно решить сейчас, с моим уровнем понимания процессов.
Re: Оператор очереди ответивший на звонок
Добавлено: 20 сен 2018, 17:58
ded
tyua писал(а):Я правильно понимаю, что в FreePBX подобное делается с использованием существующих макросов, т.е. вклинивание в них?
Да. Но!
Очередь оперирует эвентами, которые специално то и пишутся не в CDR, а в CEL. А эвенты можно наблюдать и обрабатывать из ARI через web socket & stasis. Вашей целью вклинивания в макросы является выполнение AGI-скрипта по отсылке данных на какой-нить CRM, верно? Но звонок очереди путешествует не по правилам диал-плана, где вам хотелось бы вставить строку
same => n,AGI(mysuperscript.php{ARG1})
поэтому не надо пытаться вставлять AGI.
tyua писал(а):Есть ли где почитать (кроме конфига FreePBX) об этих макросах?
FreePBX 2.10 Руководство администратора (на русском языке, в формате PDF)
http://asterisk.ru/knowledgebase/books
tyua писал(а):Да, но задачу мне нужно решить сейчас, с моим уровнем понимания процессов.
Лучше всё же повысить уровень понимания.
Re: Оператор очереди ответивший на звонок
Добавлено: 21 сен 2018, 09:46
tyua
ded писал(а):
Очередь оперирует эвентами, которые специално то и пишутся не в CDR, а в CEL. А эвенты можно наблюдать и обрабатывать из ARI через web socket & stasis. Вашей целью вклинивания в макросы является выполнение AGI-скрипта по отсылке данных на какой-нить CRM, верно? Но звонок очереди путешествует не по правилам диал-плана, где вам хотелось бы вставить строку
same => n,AGI(mysuperscript.php{ARG1})
поэтому не надо пытаться вставлять AGI.
Да, Вы правы, нужно всего лишь скриптом отправить данные по ссылке.
И сейчас мне кажется гораздо проще вставить в трех местах AGI.
Как я понял, с помощью ARI я не смогу выполнять что-то в определенный момент времени, нужно чем-то внешним отслеживать события и выполнять действие. Выглядит сложно.
Книгу почитаю, но кажется там только о web интерфейсе.
Re: Оператор очереди ответивший на звонок
Добавлено: 21 сен 2018, 10:14
ded
1. Берёте любой макрос, полностью копируете из extensions_additional.conf в extensions_override_freepbx.conf
2. Вставляете нужные, по вашему разумению, строки,
3. PROFIT!