Asterisk app: Originate

Команда Asterisk Originate создает вызов. Проще говоря, вы можете набрать номер, а Asterisk вызовет и соединит два других екстеншена или приложения.

Описание

Приложение создает исходящий вызов и соединяет его с указанными екстеншенами или приложениями. Выполнение диалплана блокируется, пока приложение не вернет статус вызова, неудачный или отвеченный, а затем выполнение диалплана продолжается. Приложение возвращает переменную канала ${ORIGINATE_STATUS}: следующие значения возможны.

  • FAILED
  • SUCCESS
  • BUSY
  • CONGESTION
  • HANGUP
  • RINGING
синтаксис

Originate(tech_data,type,arg1[,arg2[,arg3[,timeout]]])

Аргументы
  • tech_data - технология вызываемого первоначально канала и его данные, например SIP/1234.
  • type - это может быть либо 'app', либо 'exten', зависит от того, что вы хотите вызвать затем - екстеншен (номер из диалплана) или приложение (например ConfBridge или Queue), чтобы соединить с каналом из tech_data.
  • arg1 - если тип 'app' это будет имя приложения (например ConfBridge или Queue), если екстеншен, то контекст в котором он определен.
  • arg2 - если тип 'app', то это данные приложения (например имя_очереди для приложения Queue), если 'exten', то расширение которое должно быть вызвано.
  • arg3 - если тип 'exten', то здесь назначается приоритет в для вызываемого расширения в контексте. если 'app', то данный параметр игнорируется.
  • timeout - Таймаут. По умолчанию 30 сек.
примеры

Автоматический сбор конференции из БД, средствами диалплана, при помощи команд While() и Originate().

Добавим номера во внутреннюю бд asterisk в формате <FAMILY> <NUMBER> <VALUE(любое)>

cli> database put WCONFBRIDGE 2666 1
cli> database put WCONFBRIDGE 2667 1

exten => _4886,1,noop(conf autodial)
 same => n,set(list=${DB_KEYS(WCONFBRIDGE)})
 same => n,While($[${list}]) ; пока есть что-то.
 same => n,set(num=${POP(list)})
 same => n,originate(Local/${num}@from-internal,app,confbridge,test)
 same => n,EndWhile	 

Нажмите, чтобы отобразить

Нажмите, чтобы скрыть

exten => _4883,1,Answer
 same => n,Set(i=1) ;включим счетчик с 1
 same => n,set(list=${DB_KEYS(WCONFBRIDGE)}) ; получим список ID номеров разделенный запятой.
 same => n,set(count=${POP(list)}) ; отрежем последнее значение из списка list=1,2
                                    ; таким образом получим нужное кол-во циклов
 same => n,While($[${i} <= ${count}]) ; используем ID для завершения цикла.
 same => n,originate(PJSIP/${DB(WCONFBRIDGE/${i}}@fs_pjsip,app,confbridge,test)
 
 same => n,Set(i=$[${i} + 1])
 same => n,EndWhile	
exten => _4885,1,Set(i=1)
 same => n,set(list=${DB_KEYS(WCONFBRIDGE)})
 same => n,set(_count=${POP(list)})
 same => n,While($[${i} <= ${count}])
 same => n,set(PUSH(nums,,)=${DB(WCONFBRIDGE/${i})})
 same => n,Set(i=$[${i} + 1])
 same => n,EndWhile	
 same => n,set(_nums=${nums})
 same => n,goto(autodial,1)  
exten => autodial,1,Set(i=1)
 same => n,While($[${i} <= ${count}]) ; макс кол-во участников.
 same => n,set(num=${POP(nums)})
 same => n,originate(PJSIP/${num}@fs_pjsip,app,confbridge,test)
 same => n,Set(i=$[${i} + 1])
 same => n,EndWhile	
  • asterisk/app/originate.txt
  • Последние изменения: 2017/09/27