aboutsummaryrefslogtreecommitdiffstats
path: root/inventory-example/group_vars/all/asterisk.yml
blob: 0f4f1b25e5b53a4b2c880c2df6a430d40edd2ae9 (plain)
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()