Страница 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!