Диалпланы Asterisk — различия между версиями

Материал из megapuper
Перейти к: навигация, поиск
 
(не показаны 4 промежуточные версии этого же участника)
Строка 1: Строка 1:
Все диалпланы будем испытывать на тестовом стенде в котором два Asterisk_11 на первом абоненты 12xx, на втором 13xx.
+
Исходящие звонки в ёмкости 74951690XXX в коротком  формате
 +
exten => _1690XXX,1,NoOp(Outgoing call inside network in short format)
 +
exten => _1690XXX,n,Set(CALLERID(ALL)=${CALLERID(num)})
 +
exten => _1690XXX,n,Dial(SIP/peer/7495${EXTEN})
 +
exten => _1690XXX,n,Hangup()
  
 +
Исходящие звонки в ёмкости 7495XXXXXXX/7499XXXXXXX в коротком формате внутри префикса
 +
exten => _XXXXXXX,1,NoOp(Outgoing call of short number by ${CALLERID(num)})
 +
exten => _XXXXXXX,n,Set(first_three=${CALLERID(num):1:3})
 +
exten => _XXXXXXX,n,NoOp(---first_three digits are ${first_three})
 +
exten => _XXXXXXX,n,Set(CALLERID(ALL)=${CALLERID(num)})
 +
exten => _XXXXXXX,n,Dial(SIP/peer/7${first_three}${EXTEN})
 +
exten => _XXXXXXX,n,Hangup()
  
Контекст для абонентов
+
Исходящие звонки в ёмкости 74951690XXX в длинном формате со сменой 8 на 7
  [phones]
+
  exten => _84951690XXX,1,NoOp(Outgoing call inside network in long format)
  include = internal
+
  exten => _84951690XXX,n,Set(CALLERID(ALL)=${CALLERID(num)})
  include = outgoing
+
  exten => _84951690XXX,n,Dial(SIP/peer/7${EXTEN:1})
  include = incoming
+
  exten => _84951690XXX,n,Hangup()
  
 +
Исходящие на межгород
 +
exten => _8XXXXXXXXXX,1,NoOp(Outgoing call)
 +
exten => _8XXXXXXXXXX,n,Set(CALLERID(ALL)=${CALLERID(num)})
 +
exten => _8XXXXXXXXXX,n,Dial(SIP/peer/7${EXTEN:1})
 +
exten => _8XXXXXXXXXX,n,Hangup()
  
Звонки по внутренней сети
+
  exten => _7XXXXXXXXXX,1,NoOp(Outgoing call)
[internal]
+
  exten => _7XXXXXXXXXX,n,Set(CALLERID(ALL)=${CALLERID(num)})
  exten => _12X.,1,NoOp(Local call)
+
exten => _7XXXXXXXXXX,n,Dial(SIP/peer/${EXTEN})
  exten => _12X.,n,Dial(SIP/${EXTEN})
+
  exten => _7XXXXXXXXXX,n,Hangup()
  exten => _12X.,n,Hangup()
 
  
 +
exten => _+7XXXXXXXXXX,1,NoOp(Outgoing call)
 +
exten => _+7XXXXXXXXXX,n,Set(CALLERID(ALL)=${CALLERID(num)})
 +
exten => _+7XXXXXXXXXX,n,Dial(SIP/peer/${EXTEN:1})
 +
exten => _+7XXXXXXXXXX,n,Hangup()
  
Исходящие звонки
+
Исходящие на международку
[outgoing]
+
  exten => _810X.,1,NoOp(Outgoing call ABROAD from ${CALLERID(num)})
  exten => _7X.,1,NoOp(Outgoing call)
+
  exten => _810X.,n,Set(abroad_allowed=${SHELL(php /srv/abroad_allowed.php ${CALLERID(num)})})
  exten => _7X.,n,Dial(SIP/sipnet/${EXTEN})
+
  exten => _810X.,n,GotoIf($[${abroad_allowed}!=1]?hangup)
  exten => _7X.,n,Hangup()
+
  exten => _810X.,n,Set(CALLERID(ALL)=${CALLERID(num))
 
+
  exten => _810X.,n,Dial(SIP/peer/${EXTEN:3})
 
+
  exten => _810X.,n(hangup),Hangup
Входящие звонки
 
[incoming]
 
  exten => _X.,1,NoOp(Incoming call)
 
  exten => _X.,n,Dial(SIP/${EXTEN})
 
  exten => _X.,n,Hangup()
 
  
 +
Входящие
 +
exten => _74951690001,1,NoOp(Incoming call, SIP device SIP/7${EXTEN} state is ${DEVICE_STATE(SIP/7${EXTEN}))
 +
exten => _74951690001,n,ExecIf($[ ${DEVICE_STATE(SIP/7${EXTEN})} = INUSE ]:Busy) ;нужно  для корректного ответа  Busy, чтобы не было  звонка "по второй  линии"  при входящем (еще вариант - в место  Busy юзать Set(DIALSTATUS=BUSY))
 +
exten => _74951690001,n,Set(CALLERID(ALL)=7${CALLERID(num)})
 +
exten => _74951690001,n,Dial(SIP/7${EXTEN},90,rR)
 +
exten => _74951690001,n,Hangup()
 +
 +
этот  фрагмент нужен, чтобы говорить при  звонке на непрописанный номер в сторону оператора "Unassigned Number"
 +
exten => _74951690XXX,1,NoOp(Incoming call to UNASSIGNED number)
 +
exten => _74951690XXX,n,Hangup(1)
  
 
Входящий звонок и ivr
 
Входящий звонок и ivr

Текущая версия на 14:13, 10 сентября 2019

Исходящие звонки в ёмкости 74951690XXX в коротком формате

exten => _1690XXX,1,NoOp(Outgoing call inside network in short format)
exten => _1690XXX,n,Set(CALLERID(ALL)=${CALLERID(num)})
exten => _1690XXX,n,Dial(SIP/peer/7495${EXTEN})
exten => _1690XXX,n,Hangup()

Исходящие звонки в ёмкости 7495XXXXXXX/7499XXXXXXX в коротком формате внутри префикса

exten => _XXXXXXX,1,NoOp(Outgoing call of short number by ${CALLERID(num)})
exten => _XXXXXXX,n,Set(first_three=${CALLERID(num):1:3})
exten => _XXXXXXX,n,NoOp(---first_three digits are ${first_three})
exten => _XXXXXXX,n,Set(CALLERID(ALL)=${CALLERID(num)})
exten => _XXXXXXX,n,Dial(SIP/peer/7${first_three}${EXTEN})
exten => _XXXXXXX,n,Hangup()

Исходящие звонки в ёмкости 74951690XXX в длинном формате со сменой 8 на 7

exten => _84951690XXX,1,NoOp(Outgoing call inside network in long format)
exten => _84951690XXX,n,Set(CALLERID(ALL)=${CALLERID(num)})
exten => _84951690XXX,n,Dial(SIP/peer/7${EXTEN:1})
exten => _84951690XXX,n,Hangup()

Исходящие на межгород

exten => _8XXXXXXXXXX,1,NoOp(Outgoing call)
exten => _8XXXXXXXXXX,n,Set(CALLERID(ALL)=${CALLERID(num)})
exten => _8XXXXXXXXXX,n,Dial(SIP/peer/7${EXTEN:1})
exten => _8XXXXXXXXXX,n,Hangup()
exten => _7XXXXXXXXXX,1,NoOp(Outgoing call)
exten => _7XXXXXXXXXX,n,Set(CALLERID(ALL)=${CALLERID(num)})
exten => _7XXXXXXXXXX,n,Dial(SIP/peer/${EXTEN})
exten => _7XXXXXXXXXX,n,Hangup()
exten => _+7XXXXXXXXXX,1,NoOp(Outgoing call)
exten => _+7XXXXXXXXXX,n,Set(CALLERID(ALL)=${CALLERID(num)})
exten => _+7XXXXXXXXXX,n,Dial(SIP/peer/${EXTEN:1})
exten => _+7XXXXXXXXXX,n,Hangup()

Исходящие на международку

exten => _810X.,1,NoOp(Outgoing call ABROAD from ${CALLERID(num)})
exten => _810X.,n,Set(abroad_allowed=${SHELL(php /srv/abroad_allowed.php ${CALLERID(num)})})
exten => _810X.,n,GotoIf($[${abroad_allowed}!=1]?hangup)
exten => _810X.,n,Set(CALLERID(ALL)=${CALLERID(num))
exten => _810X.,n,Dial(SIP/peer/${EXTEN:3})
exten => _810X.,n(hangup),Hangup

Входящие

exten => _74951690001,1,NoOp(Incoming call, SIP device SIP/7${EXTEN} state is ${DEVICE_STATE(SIP/7${EXTEN}))
exten => _74951690001,n,ExecIf($[ ${DEVICE_STATE(SIP/7${EXTEN})} = INUSE ]:Busy) ;нужно  для корректного ответа  Busy, чтобы не было  звонка "по второй  линии"  при входящем (еще вариант - в место  Busy юзать Set(DIALSTATUS=BUSY))
exten => _74951690001,n,Set(CALLERID(ALL)=7${CALLERID(num)})
exten => _74951690001,n,Dial(SIP/7${EXTEN},90,rR)
exten => _74951690001,n,Hangup()

этот  фрагмент нужен, чтобы говорить при  звонке на непрописанный номер в сторону оператора "Unassigned Number"
exten => _74951690XXX,1,NoOp(Incoming call to UNASSIGNED number)
exten => _74951690XXX,n,Hangup(1)

Входящий звонок и ivr

[incoming]
exten => _X.,1,NoOp(Incoming call)
exten => _X.,n,Goto(ivr,s,1)

[ivr]
exten => s,1,Answer()
exten => s,n,Background(ivr)
exten => s,n,WaitExten(3)
exten => s,n,Dial(SIP/1200,10)
exten => s,n,Hangup()
exten => 1,1,Dial(SIP/1201)
exten => 1,n,Hangup()
exten => 2,1,Playback(filename)
exten => 2,n,Hangup()
exten => i,1,Playback(pbx-invalid)
exten => i,n,Goto(ivr,s,1)