-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexetensions_template.conf.1
113 lines (87 loc) · 4.03 KB
/
exetensions_template.conf.1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
[client-incoming]
exten => _X.,1,GotoIfTime()
[client-incoming-day]
exten => _X.,1,NoOp(${CALLERID(num)})
; Следующий блок вставляется при наличии приветствия
;+++ ---------------------------------------
exten => _X.,n,PlayBack(welcome)
;--- ---------------------------------------
exten => _X.,n,Set(ring_count=1)
exten => _X.,n,Set(CDR(clientfield)=client)
;Если необходима запись разговоров вставляем
;+++ ---------------------------------------
exten => _X.,n,Set(fname=${STRFTIME(${EPOCH},,%Y%m%d%H%M)}-client-${CALLERID(num)}-${MACRO_EXTEN})
exten => _X.,n,MixMonitor(/var/spool/asterisk/monitor/${fname}.wav)
;--- ---------------------------------------
;IVR
;+++ ---------------------------------------
exten => _X.,n,Goto(client-ivr,s,1)
;--- ---------------------------------------
exten => _X.,n(checknum),Noop(Start number available check...)
;Блок проверки номеров принимающих вызов
;+++ ---------------------------------------
exten => _X.,n,GotoIf($["${DEVICE_STATE(SIP/number1)}" = "NOT_INUSE"]?ring)
exten => _X.,n,GotoIf($["${DEVICE_STATE(SIP/number2)}" = "NOT_INUSE"]?ring)
exten => _X.,n,GotoIf($["${DEVICE_STATE(SIP/numberN)}" = "NOT_INUSE"]?ring)
exten => _X.,n,Goto(noanswer)
;--- ---------------------------------------
exten => _X.,n(ring),Dial(${DIALSTRING},90,mt)
exten => _X.,n,GotoIf($["${DIALSTATUS}" = "ANSWER"]?hang)
exten => _X.,n(noanswer),Set(ring_count=${MATH(${ring_count}+1,int)})
;Действия при неотвеченном звонке
;+++ ---------------------------------------
exten => _X.,n,GotoIf($[${ring_count} > count]?hang)
exten => _X.,n,Goto(checknum)
;*** ---------------------------------------
exten => _X.,n,Goto(client-vm,${EXTEN},1)
;--- ---------------------------------------
exten => _X.,n(hang),Hangup
[client-ivr]
;+++ ---------------------------------------
include => client-internal
;--- ---------------------------------------
exten => s,1,Background(IVRmenu)
exten => s,n,WaitExten()
exten => 1,1,Dial(${DIALSTRING},90,mt)
exten => 1,n,Hangup
exten => 2,1,Dial(${DIALSTRING},90,mt)
exten => 2,n,Hangup
exten => 3,1,Dial(${DIALSTRING},90,mt)
exten => 3,n,Hangup
exten => t,1,Playback(invalid_choice)
exten => t,n,Goto(s,1)
exten => i,1,Playback(invalid_choice)
exten => i,n,Goto(s,1)
[client-incoming-night]
[client-internal]
exten => client-101,1,Macro(client-internal,client-101,60,rTt,0637679232,30,vm)
exten => client-102,1,Macro(client-internal,client-102,60,rTt,0637674435,60,novm)
exten => client-103,1,Macro(client-internal,client-103,60,rTt,nofm,,vm)
exten => client-104,1,Macro(client-internal,client-104,60,rTt,nofm,,novm)
[macro-client-internal]
;; Аргументы:
;; 1 - номер пира
;; 2 - длительность вызова
;; 3 - параметры вызова пира - музыка, звонок, трансфер
;; 4 - наличие FollowMe: значение nofm или номер (напр. моб.)
;; 5 - сколько звонить на внешний номер по FM (можно использовать для Hangup или перехода на VM, если есть)
;; 6 - наличие VoiceMail: значение novm или vm (или конкретный параметр ящика?)
;; 7 - запись разговоров - yes/no
;; 8 - также записывать внутриофисные разговоры - yes/no
exten => s,1,Dial(SIP/${ARG1},${ARG2},${ARG3})
same => n,GotoIf($["${DIALSTATUS}" != "ANSWER"] & $["${ARG4}"!="nofm"]?FM)
same => n,GotoIf($["${DIALSTATUS}" != "ANSWER"] & $["${ARG6}"!="novm"]?VM)
same => n,Hangup()
same => n(VM),VoiceMail(${ARG1}@client)
same => n,Hangup()
same => n(FM),Playback(personfm)
same => n,Macro(client-outgoing,${ARG4},${ARG5})
same => n,Hangup()
[client-vm]
exten => _X.,1,PlayBack(noanswer)
exten => _X.,n,Voicemail(number@client,s)
exten => _X.,n,Hangup
[client-user-vm]
exten => _X.,1,PlayBack(noanswer)
exten => _X.,n,Voicemail(number@client,s)
exten => _X.,n,Hangup