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
|
asterisk_external_ip: 203.0.113.62 # changeme
asterisk_fqdn: pbx.example.com # changeme
asterisk_local_nets:
- '{{ vlans.voip.cidr }}'
asterisk_password_salt: '{{ vault_asterisk_password_salt }}'
asterisk_voicemail_contexts: # changeme
default:
- address: 6000
password: 1234
name: Doe Family
email: doefamily@example.com
asterisk_sip_trunks: '{{ vault_asterisk_sip_trunks }}'
asterisk_sip_extensions: '{{ vault_asterisk_sip_extensions }}'
asterisk_ari_users: '{{ vault_asterisk_ari_users }}'
asterisk_queues: # changeme
- name: house-phones
strategy: ringall
retry: 1
timeout: 30
members:
- 6001
- 6002
- 6003
# changeme - dump your asterisk dialplan into this variable
asterisk_dialplan: |
[globals]
AREA_CODE = 555
; voicemail
VOICEMAIL_NUMBER = *99
VOICEMAIL_CONTEXT = default
VOICEMAIL_RING_TIMEOUT = 25
; extension patterns
INTERCOM = 6000
HOUSE = _6XXX
; Queue for all local home phones
HOME_QUEUE = house-phones
; All home phones use the same voicemail box.
HOME_MAILBOX = 6000
; Caller ID for outgoing PSTN calls from the home phone line.
HOME_CID = John Doe <+15555555555>
[gosub-voicemail]
; Dial the given channel, if no answer send to voicemail.
; ${ARG1} - channel to dial
; ${ARG2} - voicemail box
exten => s,1,Dial(${ARG1},${VOICEMAIL_RING_TIMEOUT})
same => n,Answer(500)
same => n,Voicemail(${ARG2},su)
same => n,Hangup()
[gosub-intercom]
exten => s,1,Set(PJSIP_HEADER(add,Alert-Info)=auto answer)
same => n,Return()
[subscribe]
exten => _XXXX,hint,PJSIP/${EXTEN}
[internal]
; For INTERCOM, page all participants into 2-way conference
exten => ${INTERCOM},1,Set(CALLERID(all)=Intercom <${EXTEN}>
same => n,Page(${STRREPLACE(QUEUE_MEMBER_LIST(${HOME_QUEUE}),",","&")},db(gosub-intercom^s^1),10)
; For HOME extensions, ring indefinitely.
exten => ${HOME},1,Dial(PJSIP/${EXTEN})
same => n,Hangup()
[from-upstream-provider]
; Ring all house phones for incoming PSTN calls, if no answer send to voicemail.
exten => _X.,1,Queue(${HOME_QUEUE},nr,,,${VOICEMAIL_RING_TIMEOUT})
same => n,Answer(500)
same => n,Voicemail(${HOME_MAILBOX}@${VOICEMAIL_CONTEXT},su)
same => n,Hangup()
[from-house-phones]
include => internal
; local voicemail access
exten => ${VOICEMAIL_NUMBER},1,Answer(500)
same => n,VoiceMailMain(${HOME_MAILBOX}@${VOICEMAIL_CONTEXT},s)
same => n,Hangup()
; pstn - normalize all outgoing numbers to +1XXXXXXXXXX
exten => _+1NXXNXXXXXX,1,Set(CALLERID(all)=${HOME_CID})
same => n,Dial(PJSIP/${EXTEN}@upstream-provider)
same => n,Hangup()
exten => _1NXXNXXXXXX,1,Set(CALLERID(all)=${HOME_CID})
same => n,Dial(PJSIP/+${EXTEN}@upstream-provider)
same => n,Hangup()
exten => _NXXNXXXXXX,1,Set(CALLERID(all)=${HOME_CID})
same => n,Dial(PJSIP/+1${EXTEN}@upstream-provider)
same => n,Hangup()
exten => _NXXXXXX,1,Set(CALLERID(all)=${HOME_CID})
same => n,Dial(PJSIP/+1${AREA_CODE}${EXTEN}@upstream-provider)
same => n,Hangup()
exten => _N11,1,Set(CALLERID(all)=${HOME_CID})
same => n,Dial(PJSIP/${EXTEN}@upstream-provider)
same => n,Hangup()
|