initial commit
This commit is contained in:
80
acl.conf
Normal file
80
acl.conf
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
;
|
||||||
|
; Named Access Control Lists (ACLs)
|
||||||
|
;
|
||||||
|
; A convenient way to share acl definitions
|
||||||
|
;
|
||||||
|
; This configuration file is read on startup
|
||||||
|
;
|
||||||
|
; CLI Commands
|
||||||
|
; -----------------------------------------------------------
|
||||||
|
; acl show Show all named ACLs configured
|
||||||
|
; acl show <name> Show contents of a particular named ACL
|
||||||
|
; reload acl Reload configuration file
|
||||||
|
;
|
||||||
|
; Any configuration that uses ACLs which has been made to be able to use named
|
||||||
|
; ACLs will specify a named ACL with the 'acl' option in its configuration in
|
||||||
|
; a similar fashion to the usual 'permit' and 'deny' options. Example:
|
||||||
|
; acl=my_named_acl
|
||||||
|
;
|
||||||
|
; Multiple named ACLs can be applied by either comma separating the arguments or
|
||||||
|
; just by adding additional ACL lines. Example:
|
||||||
|
; acl=my_named_acl
|
||||||
|
; acl=my_named_acl2
|
||||||
|
;
|
||||||
|
; or
|
||||||
|
;
|
||||||
|
; acl=my_named_acl,my_named_acl2
|
||||||
|
;
|
||||||
|
; ACLs specified by name are evaluated independently from the ACL specified via
|
||||||
|
; permit/deny. In order for an address to pass a given ACL, it must pass both
|
||||||
|
; the ACL specified by permit/deny for a given item as well as any named ACLs
|
||||||
|
; that were specified.
|
||||||
|
;
|
||||||
|
;[example_named_acl1]
|
||||||
|
;deny=0.0.0.0/0.0.0.0
|
||||||
|
;permit=209.16.236.0
|
||||||
|
;permit=209.16.236.1
|
||||||
|
;
|
||||||
|
;[example_named_acl2]
|
||||||
|
;permit=0.0.0.0/0.0.0.0
|
||||||
|
;deny=10.24.20.171
|
||||||
|
;deny=10.24.20.103
|
||||||
|
;deny=209.16.236.1
|
||||||
|
;
|
||||||
|
; example_named_acl1 above shows an example of whitelisting. When whitelisting, the
|
||||||
|
; named ACLs should follow a deny that blocks everything (like deny=0.0.0.0/0.0.0.0)
|
||||||
|
; The following example explains how combining the ACLs works:
|
||||||
|
; <in another configuration>
|
||||||
|
; [example_item_with_acl]
|
||||||
|
; acl=example_named_acl1
|
||||||
|
; acl=example_named_acl2
|
||||||
|
;
|
||||||
|
; Suppose 209.16.236.0 tries to communicate and the ACL for that example is applied to it...
|
||||||
|
; First, example_named_acl1 is evaluated. The address is allowed by that ACL.
|
||||||
|
; Next, example_named_acl2 is evaluated. The address isn't blocked by example_named_acl2
|
||||||
|
; either, so it passes.
|
||||||
|
;
|
||||||
|
; Suppose instead 209.16.236.1 tries to communicate and the same ACL is applied.
|
||||||
|
; First, example_named_acl1 is evaluated and the address is allowed.
|
||||||
|
; However, it is blocked by example_named_acl2, so the address is blocked from the combined
|
||||||
|
; ACL.
|
||||||
|
;
|
||||||
|
; Similarly, the permits/denies in specific configurations that make up an ACL definition
|
||||||
|
; are also treated as a separate ACL for evaluation. So if we change the example above to:
|
||||||
|
; <in another configuration>
|
||||||
|
; [example_item_with_acl]
|
||||||
|
; acl=example_named_acl1
|
||||||
|
; acl=example_named_acl2
|
||||||
|
; deny=209.16.236.0
|
||||||
|
;
|
||||||
|
; Then 209.16.236.0 will be rejected by the non-named component of the combined ACL even
|
||||||
|
; though it passes the two named components.
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; Named ACLs can use ipv6 addresses just like normal ACLs.
|
||||||
|
;[ipv6_example_1]
|
||||||
|
;deny = ::
|
||||||
|
;permit = ::1/128
|
||||||
|
;
|
||||||
|
;[ipv6_example_2]
|
||||||
|
;permit = fe80::21d:bad:fad:2323
|
||||||
8
adsi.conf
Normal file
8
adsi.conf
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
;
|
||||||
|
; Sample ADSI Configuration file
|
||||||
|
;
|
||||||
|
[intro]
|
||||||
|
alignment = center
|
||||||
|
greeting => Welcome to the
|
||||||
|
greeting => Asterisk
|
||||||
|
greeting => Open Source PBX
|
||||||
70
agents.conf
Normal file
70
agents.conf
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
;
|
||||||
|
; Agent pool configuration
|
||||||
|
;
|
||||||
|
|
||||||
|
[general]
|
||||||
|
; The general section of this config is not currently used, but reserved
|
||||||
|
; for future use.
|
||||||
|
|
||||||
|
;[agent-id]
|
||||||
|
; Define ackcall to require the agent to give a DTMF acknowledgement
|
||||||
|
; when the agent receives a call.
|
||||||
|
; The channel variable AGENTACKCALL overrides on agent login.
|
||||||
|
; Default is "no".
|
||||||
|
;ackcall=no
|
||||||
|
;
|
||||||
|
; Set what DTMF key sequence the agent should use to acknowledge a call.
|
||||||
|
; The channel variable AGENTACCEPTDTMF overrides on agent login.
|
||||||
|
; This option is ignored unless ackcall is enabled.
|
||||||
|
; Default is "#".
|
||||||
|
;acceptdtmf=##
|
||||||
|
;
|
||||||
|
; Set how many seconds a call for the agent has to wait for the agent to
|
||||||
|
; acknowledge the call before the agent is automatically logged off. If
|
||||||
|
; set to zero then the call will wait forever for the agent to acknowledge.
|
||||||
|
; The channel variable AGENTAUTOLOGOFF overrides on agent login.
|
||||||
|
; This option is ignored unless ackcall is enabled.
|
||||||
|
; Default is 0.
|
||||||
|
;autologoff=15
|
||||||
|
;
|
||||||
|
; Set the minimum amount of time after disconnecting a call before
|
||||||
|
; the agent can receive a new call in milliseconds.
|
||||||
|
; The channel variable AGENTWRAPUPTIME overrides on agent login.
|
||||||
|
; Default is 0.
|
||||||
|
;wrapuptime=5000
|
||||||
|
;
|
||||||
|
; Set the musiconhold class for the agent.
|
||||||
|
; Default is "default".
|
||||||
|
;musiconhold=default
|
||||||
|
;
|
||||||
|
; Enable recording calls the agent takes automatically by invoking the
|
||||||
|
; DTMF automixmon feature when the agent connects to a caller.
|
||||||
|
; See features.conf.sample for information about the automixmon feature.
|
||||||
|
; Default is "no".
|
||||||
|
;recordagentcalls=yes
|
||||||
|
;
|
||||||
|
; The sound file played to alert the agent when a call is present.
|
||||||
|
; Default is "beep".
|
||||||
|
;custom_beep=beep
|
||||||
|
;
|
||||||
|
; A friendly name for the agent used in log messages.
|
||||||
|
; Default is "".
|
||||||
|
;fullname=Mark Spencer
|
||||||
|
;
|
||||||
|
; --------------------------------------------------
|
||||||
|
;
|
||||||
|
; This section contains example agent definitions:
|
||||||
|
;
|
||||||
|
; Define a template called my-agents:
|
||||||
|
;[my-agents](!)
|
||||||
|
;autologoff=15
|
||||||
|
;ackcall=yes
|
||||||
|
;acceptdtmf=##
|
||||||
|
;
|
||||||
|
; Define agent 1001 using the my-agents template:
|
||||||
|
;[1001](my-agents)
|
||||||
|
;fullname=Mark Spencer
|
||||||
|
;
|
||||||
|
; Define agent 1002 using the my-agents template:
|
||||||
|
;[1002](my-agents)
|
||||||
|
;fullname=Will Meadows
|
||||||
27
amd.conf
Normal file
27
amd.conf
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
;
|
||||||
|
; Answering Machine Detection Configuration
|
||||||
|
;
|
||||||
|
|
||||||
|
[general]
|
||||||
|
total_analysis_time = 5000 ; Maximum time allowed for the algorithm to decide
|
||||||
|
; on whether the audio represents a HUMAN, or a MACHINE
|
||||||
|
silence_threshold = 256 ; If the average level of noise in a sample does not reach
|
||||||
|
; this value, from a scale of 0 to 32767, then we will consider
|
||||||
|
; it to be silence.
|
||||||
|
|
||||||
|
; Greeting ;
|
||||||
|
initial_silence = 2500 ; Maximum silence duration before the greeting.
|
||||||
|
; If exceeded, then the result is detection as a MACHINE.
|
||||||
|
after_greeting_silence = 800 ; Silence after detecting a greeting.
|
||||||
|
; If exceeded, then the result is detection as a HUMAN
|
||||||
|
greeting = 1500 ; Maximum length of a greeting. If exceeded, then the
|
||||||
|
; result is detection as a MACHINE.
|
||||||
|
|
||||||
|
; Word detection ;
|
||||||
|
min_word_length = 100 ; Minimum duration of Voice to considered as a word
|
||||||
|
maximum_word_length = 5000 ; Maximum duration of a single Voice utterance allowed.
|
||||||
|
between_words_silence = 50 ; Minimum duration of silence after a word to consider
|
||||||
|
; the audio what follows as a new word
|
||||||
|
|
||||||
|
maximum_number_of_words = 2 ; Maximum number of words in the greeting
|
||||||
|
; If exceeded, then the result is detection as a MACHINE
|
||||||
27
app_skel.conf
Normal file
27
app_skel.conf
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
[general]
|
||||||
|
games=3
|
||||||
|
cheat=no
|
||||||
|
|
||||||
|
[sounds]
|
||||||
|
prompt=please-enter-your,number,queue-less-than
|
||||||
|
wrong_guess=vm-pls-try-again
|
||||||
|
right_guess=auth-thankyou
|
||||||
|
too_high=high
|
||||||
|
too_low=low
|
||||||
|
lose=vm-goodbye
|
||||||
|
|
||||||
|
[easy]
|
||||||
|
max_number=10
|
||||||
|
max_guesses=4
|
||||||
|
|
||||||
|
[medium]
|
||||||
|
max_number=100
|
||||||
|
max_guesses=6
|
||||||
|
|
||||||
|
[hard]
|
||||||
|
max_number=1000
|
||||||
|
max_guesses=7
|
||||||
|
|
||||||
|
[nightmare]
|
||||||
|
max_number=1000
|
||||||
|
max_guesses=1
|
||||||
35
ari.conf
Normal file
35
ari.conf
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
[general]
|
||||||
|
enabled = yes ; When set to no, ARI support is disabled.
|
||||||
|
;pretty = no ; When set to yes, responses from ARI are
|
||||||
|
; ; formatted to be human readable.
|
||||||
|
;allowed_origins = ; Comma separated list of allowed origins, for
|
||||||
|
; ; Cross-Origin Resource Sharing. May be set to * to
|
||||||
|
; ; allow all origins.
|
||||||
|
;auth_realm = ; Realm to use for authentication. Defaults to Asterisk
|
||||||
|
; ; REST Interface.
|
||||||
|
;
|
||||||
|
; Default write timeout to set on websockets. This value may need to be adjusted
|
||||||
|
; for connections where Asterisk must write a substantial amount of data and the
|
||||||
|
; receiving clients are slow to process the received information. Value is in
|
||||||
|
; milliseconds; default is 100 ms.
|
||||||
|
;websocket_write_timeout = 100
|
||||||
|
;
|
||||||
|
; Display certain channel variables every time a channel-oriented
|
||||||
|
; event is emitted:
|
||||||
|
;
|
||||||
|
;channelvars = var1,var2,var3
|
||||||
|
|
||||||
|
;[username]
|
||||||
|
;type = user ; Specifies user configuration
|
||||||
|
;read_only = no ; When set to yes, user is only authorized for
|
||||||
|
; ; read-only requests.
|
||||||
|
;
|
||||||
|
;password = ; Crypted or plaintext password (see password_format).
|
||||||
|
;
|
||||||
|
; password_format may be set to plain (the default) or crypt. When set to crypt,
|
||||||
|
; crypt(3) is used to validate the password. A crypted password can be generated
|
||||||
|
; using mkpasswd -m sha-512.
|
||||||
|
;
|
||||||
|
; When set to plain, the password is in plaintext.
|
||||||
|
;
|
||||||
|
;password_format = plain
|
||||||
158
asterisk.adsi
Normal file
158
asterisk.adsi
Normal file
@@ -0,0 +1,158 @@
|
|||||||
|
;
|
||||||
|
; Asterisk default ADSI script
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; Begin with the preamble requirements
|
||||||
|
;
|
||||||
|
DESCRIPTION "Asterisk PBX" ; Name of vendor
|
||||||
|
VERSION 0x00 ; Version of stuff
|
||||||
|
;SECURITY "_AST" ; Security code
|
||||||
|
SECURITY 0X9BDBF7AC ; Security code
|
||||||
|
FDN 0x0000000F ; Descriptor number
|
||||||
|
|
||||||
|
;
|
||||||
|
; Flags
|
||||||
|
;
|
||||||
|
FLAG "nocallwaiting"
|
||||||
|
|
||||||
|
;
|
||||||
|
; Predefined strings
|
||||||
|
;
|
||||||
|
DISPLAY "titles" IS "** Asterisk PBX **"
|
||||||
|
DISPLAY "talkingto" IS "Call active." JUSTIFY LEFT
|
||||||
|
DISPLAY "callname" IS "$Call1p" JUSTIFY LEFT
|
||||||
|
DISPLAY "callnum" IS "$Call1s" JUSTIFY LEFT
|
||||||
|
DISPLAY "incoming" IS "Incoming call!" JUSTIFY LEFT
|
||||||
|
DISPLAY "ringing" IS "Calling... " JUSTIFY LEFT
|
||||||
|
DISPLAY "callended" IS "Call ended." JUSTIFY LEFT
|
||||||
|
DISPLAY "missedcall" IS "Missed call." JUSTIFY LEFT
|
||||||
|
DISPLAY "busy" IS "Busy." JUSTIFY LEFT
|
||||||
|
DISPLAY "reorder" IS "Reorder." JUSTIFY LEFT
|
||||||
|
DISPLAY "cwdisabled" IS "Callwait disabled"
|
||||||
|
DISPLAY "empty" IS "asdf"
|
||||||
|
|
||||||
|
;
|
||||||
|
; Begin soft key definitions
|
||||||
|
;
|
||||||
|
KEY "callfwd" IS "CallFwd" OR "Call Forward"
|
||||||
|
OFFHOOK
|
||||||
|
VOICEMODE
|
||||||
|
WAITDIALTONE
|
||||||
|
SENDDTMF "*60"
|
||||||
|
GOTO "offHook"
|
||||||
|
ENDKEY
|
||||||
|
|
||||||
|
KEY "vmail_OH" IS "VMail" OR "Voicemail"
|
||||||
|
OFFHOOK
|
||||||
|
VOICEMODE
|
||||||
|
WAITDIALTONE
|
||||||
|
SENDDTMF "8500"
|
||||||
|
ENDKEY
|
||||||
|
|
||||||
|
KEY "vmail" IS "VMail" OR "Voicemail"
|
||||||
|
SENDDTMF "8500"
|
||||||
|
ENDKEY
|
||||||
|
|
||||||
|
KEY "backspace" IS "BackSpc" OR "Backspace"
|
||||||
|
BACKSPACE
|
||||||
|
ENDKEY
|
||||||
|
|
||||||
|
KEY "cwdisable" IS "CWDsble" OR "Disable Call Wait"
|
||||||
|
SENDDTMF "*70"
|
||||||
|
SETFLAG "nocallwaiting"
|
||||||
|
SHOWDISPLAY "cwdisabled" AT 4
|
||||||
|
TIMERCLEAR
|
||||||
|
TIMERSTART 1
|
||||||
|
ENDKEY
|
||||||
|
|
||||||
|
KEY "cidblock" IS "CIDBlk" OR "Block Callerid"
|
||||||
|
SENDDTMF "*67"
|
||||||
|
SETFLAG "nocallwaiting"
|
||||||
|
ENDKEY
|
||||||
|
|
||||||
|
;
|
||||||
|
; Begin main subroutine
|
||||||
|
;
|
||||||
|
|
||||||
|
SUB "main" IS
|
||||||
|
IFEVENT NEARANSWER THEN
|
||||||
|
CLEAR
|
||||||
|
SHOWDISPLAY "titles" AT 1 NOUPDATE
|
||||||
|
SHOWDISPLAY "talkingto" AT 2 NOUPDATE
|
||||||
|
SHOWDISPLAY "callname" AT 3
|
||||||
|
SHOWDISPLAY "callnum" AT 4
|
||||||
|
GOTO "stableCall"
|
||||||
|
ENDIF
|
||||||
|
IFEVENT OFFHOOK THEN
|
||||||
|
CLEAR
|
||||||
|
CLEARFLAG "nocallwaiting"
|
||||||
|
CLEARDISPLAY
|
||||||
|
SHOWDISPLAY "titles" AT 1
|
||||||
|
SHOWKEYS "vmail"
|
||||||
|
SHOWKEYS "cidblock"
|
||||||
|
SHOWKEYS "cwdisable" UNLESS "nocallwaiting"
|
||||||
|
GOTO "offHook"
|
||||||
|
ENDIF
|
||||||
|
IFEVENT IDLE THEN
|
||||||
|
CLEAR
|
||||||
|
SHOWDISPLAY "titles" AT 1
|
||||||
|
SHOWKEYS "vmail_OH"
|
||||||
|
ENDIF
|
||||||
|
IFEVENT CALLERID THEN
|
||||||
|
CLEAR
|
||||||
|
; SHOWDISPLAY "titles" AT 1 NOUPDATE
|
||||||
|
; SHOWDISPLAY "incoming" AT 2 NOUPDATE
|
||||||
|
SHOWDISPLAY "callname" AT 3 NOUPDATE
|
||||||
|
SHOWDISPLAY "callnum" AT 4
|
||||||
|
ENDIF
|
||||||
|
IFEVENT RING THEN
|
||||||
|
CLEAR
|
||||||
|
SHOWDISPLAY "titles" AT 1 NOUPDATE
|
||||||
|
SHOWDISPLAY "incoming" AT 2
|
||||||
|
ENDIF
|
||||||
|
IFEVENT ENDOFRING THEN
|
||||||
|
SHOWDISPLAY "missedcall" AT 2
|
||||||
|
CLEAR
|
||||||
|
SHOWDISPLAY "titles" AT 1
|
||||||
|
SHOWKEYS "vmail_OH"
|
||||||
|
ENDIF
|
||||||
|
IFEVENT TIMER THEN
|
||||||
|
CLEAR
|
||||||
|
SHOWDISPLAY "empty" AT 4
|
||||||
|
ENDIF
|
||||||
|
ENDSUB
|
||||||
|
|
||||||
|
SUB "offHook" IS
|
||||||
|
IFEVENT FARRING THEN
|
||||||
|
CLEAR
|
||||||
|
SHOWDISPLAY "titles" AT 1 NOUPDATE
|
||||||
|
SHOWDISPLAY "ringing" AT 2 NOUPDATE
|
||||||
|
SHOWDISPLAY "callname" at 3 NOUPDATE
|
||||||
|
SHOWDISPLAY "callnum" at 4
|
||||||
|
ENDIF
|
||||||
|
IFEVENT FARANSWER THEN
|
||||||
|
CLEAR
|
||||||
|
SHOWDISPLAY "talkingto" AT 2
|
||||||
|
GOTO "stableCall"
|
||||||
|
ENDIF
|
||||||
|
IFEVENT BUSY THEN
|
||||||
|
CLEAR
|
||||||
|
SHOWDISPLAY "titles" AT 1 NOUPDATE
|
||||||
|
SHOWDISPLAY "busy" AT 2 NOUPDATE
|
||||||
|
SHOWDISPLAY "callname" at 3 NOUPDATE
|
||||||
|
SHOWDISPLAY "callnum" at 4
|
||||||
|
ENDIF
|
||||||
|
IFEVENT REORDER THEN
|
||||||
|
CLEAR
|
||||||
|
SHOWDISPLAY "titles" AT 1 NOUPDATE
|
||||||
|
SHOWDISPLAY "reorder" AT 2 NOUPDATE
|
||||||
|
SHOWDISPLAY "callname" at 3 NOUPDATE
|
||||||
|
SHOWDISPLAY "callnum" at 4
|
||||||
|
ENDIF
|
||||||
|
ENDSUB
|
||||||
|
|
||||||
|
SUB "stableCall" IS
|
||||||
|
IFEVENT REORDER THEN
|
||||||
|
SHOWDISPLAY "callended" AT 2
|
||||||
|
ENDIF
|
||||||
|
ENDSUB
|
||||||
127
asterisk.conf
Normal file
127
asterisk.conf
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
[directories](!)
|
||||||
|
astetcdir => /etc/asterisk
|
||||||
|
astmoddir => /usr/lib/asterisk/modules
|
||||||
|
astvarlibdir => /var/lib/asterisk
|
||||||
|
astdbdir => /var/lib/asterisk
|
||||||
|
astkeydir => /var/lib/asterisk
|
||||||
|
astdatadir => /usr/share/asterisk
|
||||||
|
astagidir => /usr/share/asterisk/agi-bin
|
||||||
|
astspooldir => /var/spool/asterisk
|
||||||
|
astrundir => /var/run/asterisk
|
||||||
|
astlogdir => /var/log/asterisk
|
||||||
|
astsbindir => /usr/sbin
|
||||||
|
|
||||||
|
[options]
|
||||||
|
;verbose = 3
|
||||||
|
;debug = 3
|
||||||
|
;refdebug = yes ; Enable reference count debug logging.
|
||||||
|
;alwaysfork = yes ; Same as -F at startup.
|
||||||
|
;nofork = yes ; Same as -f at startup.
|
||||||
|
;quiet = yes ; Same as -q at startup.
|
||||||
|
;timestamp = yes ; Same as -T at startup.
|
||||||
|
;execincludes = yes ; Support #exec in config files.
|
||||||
|
;console = yes ; Run as console (same as -c at startup).
|
||||||
|
;highpriority = yes ; Run realtime priority (same as -p at
|
||||||
|
; startup).
|
||||||
|
;initcrypto = yes ; Initialize crypto keys (same as -i at
|
||||||
|
; startup).
|
||||||
|
;nocolor = yes ; Disable console colors.
|
||||||
|
;dontwarn = yes ; Disable some warnings.
|
||||||
|
;dumpcore = yes ; Dump core on crash (same as -g at startup).
|
||||||
|
;languageprefix = yes ; Use the new sound prefix path syntax.
|
||||||
|
;systemname = my_system_name ; Prefix uniqueid with a system name for
|
||||||
|
; Global uniqueness issues.
|
||||||
|
;autosystemname = yes ; Automatically set systemname to hostname,
|
||||||
|
; uses 'localhost' on failure, or systemname if
|
||||||
|
; set.
|
||||||
|
;mindtmfduration = 80 ; Set minimum DTMF duration in ms (default 80 ms)
|
||||||
|
; If we get shorter DTMF messages, these will be
|
||||||
|
; changed to the minimum duration
|
||||||
|
;maxcalls = 10 ; Maximum amount of calls allowed.
|
||||||
|
;maxload = 0.9 ; Asterisk stops accepting new calls if the
|
||||||
|
; load average exceed this limit.
|
||||||
|
;maxfiles = 1000 ; Maximum amount of openfiles.
|
||||||
|
;minmemfree = 1 ; In MBs, Asterisk stops accepting new calls if
|
||||||
|
; the amount of free memory falls below this
|
||||||
|
; watermark.
|
||||||
|
;cache_media_frames = yes ; Cache media frames for performance
|
||||||
|
; Disable this option to help track down media frame
|
||||||
|
; mismanagement when using valgrind or MALLOC_DEBUG.
|
||||||
|
; The cache gets in the way of determining if the
|
||||||
|
; frame is used after being freed and who freed it.
|
||||||
|
; NOTE: This option has no effect when Asterisk is
|
||||||
|
; compiled with the LOW_MEMORY compile time option
|
||||||
|
; enabled because the cache code does not exist.
|
||||||
|
; Default yes
|
||||||
|
;cache_record_files = yes ; Cache recorded sound files to another
|
||||||
|
; directory during recording.
|
||||||
|
;record_cache_dir = /tmp ; Specify cache directory (used in conjunction
|
||||||
|
; with cache_record_files).
|
||||||
|
;transmit_silence = yes ; Transmit silence while a channel is in a
|
||||||
|
; waiting state, a recording only state, or
|
||||||
|
; when DTMF is being generated. Note that the
|
||||||
|
; silence internally is generated in raw signed
|
||||||
|
; linear format. This means that it must be
|
||||||
|
; transcoded into the native format of the
|
||||||
|
; channel before it can be sent to the device.
|
||||||
|
; It is for this reason that this is optional,
|
||||||
|
; as it may result in requiring a temporary
|
||||||
|
; codec translation path for a channel that may
|
||||||
|
; not otherwise require one.
|
||||||
|
;transcode_via_sln = yes ; Build transcode paths via SLINEAR, instead of
|
||||||
|
; directly.
|
||||||
|
;runuser = asterisk ; The user to run as.
|
||||||
|
;rungroup = asterisk ; The group to run as.
|
||||||
|
;lightbackground = yes ; If your terminal is set for a light-colored
|
||||||
|
; background.
|
||||||
|
;forceblackbackground = yes ; Force the background of the terminal to be
|
||||||
|
; black, in order for terminal colors to show
|
||||||
|
; up properly.
|
||||||
|
;defaultlanguage = en ; Default language
|
||||||
|
documentation_language = en_US ; Set the language you want documentation
|
||||||
|
; displayed in. Value is in the same format as
|
||||||
|
; locale names.
|
||||||
|
;hideconnect = yes ; Hide messages displayed when a remote console
|
||||||
|
; connects and disconnects.
|
||||||
|
;lockconfdir = no ; Protect the directory containing the
|
||||||
|
; configuration files (/etc/asterisk) with a
|
||||||
|
; lock.
|
||||||
|
;stdexten = gosub ; How to invoke the extensions.conf stdexten.
|
||||||
|
; macro - Invoke the stdexten using a macro as
|
||||||
|
; done by legacy Asterisk versions.
|
||||||
|
; gosub - Invoke the stdexten using a gosub as
|
||||||
|
; documented in extensions.conf.sample.
|
||||||
|
; Default gosub.
|
||||||
|
;live_dangerously = no ; Enable the execution of 'dangerous' dialplan
|
||||||
|
; functions from external sources (AMI,
|
||||||
|
; etc.) These functions (such as SHELL) are
|
||||||
|
; considered dangerous because they can allow
|
||||||
|
; privilege escalation.
|
||||||
|
; Default no
|
||||||
|
;entityid=00:11:22:33:44:55 ; Entity ID.
|
||||||
|
; This is in the form of a MAC address.
|
||||||
|
; It should be universally unique.
|
||||||
|
; It must be unique between servers communicating
|
||||||
|
; with a protocol that uses this value.
|
||||||
|
; This is currently is used by DUNDi and
|
||||||
|
; Exchanging Device and Mailbox State
|
||||||
|
; using protocols: XMPP, Corosync and PJSIP.
|
||||||
|
;rtp_use_dynamic = yes ; When set to "yes" RTP dynamic payload types
|
||||||
|
; are assigned dynamically per RTP instance vs.
|
||||||
|
; allowing Asterisk to globally initialize them
|
||||||
|
; to pre-designated numbers (defaults to "yes").
|
||||||
|
;rtp_pt_dynamic = 35 ; Normally the Dynamic RTP Payload Type numbers
|
||||||
|
; are 96-127, which allow just 32 formats. The
|
||||||
|
; starting point 35 enables the range 35-63 and
|
||||||
|
; allows 29 additional formats. When you use
|
||||||
|
; more than 32 formats in the dynamic range and
|
||||||
|
; calls are not accepted by a remote
|
||||||
|
; implementation, please report this and go
|
||||||
|
; back to value 96.
|
||||||
|
|
||||||
|
; Changing the following lines may compromise your security.
|
||||||
|
;[files]
|
||||||
|
;astctlpermissions = 0660
|
||||||
|
;astctlowner = root
|
||||||
|
;astctlgroup = apache
|
||||||
|
;astctl = asterisk.ctl
|
||||||
111
calendar.conf
Normal file
111
calendar.conf
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
;[calendar1]
|
||||||
|
;type = ical ; type of calendar--currently supported: ical, caldav, exchange, or ews
|
||||||
|
;url = https://example.com/home/jdoe/Calendar/ ; URL to shared calendar (Zimbra example)
|
||||||
|
;user = jdoe ; web username
|
||||||
|
;secret = supersecret ; web password
|
||||||
|
;refresh = 15 ; refresh calendar every n minutes
|
||||||
|
;timeframe = 60 ; number of minutes of calendar data to pull for each refresh period
|
||||||
|
; ; should always be >= refresh
|
||||||
|
;fetch_again_at_reload = no ; to reload the calendar content when the module is reloaded
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; You can set up res_calendar to execute a call upon an upcoming busy status
|
||||||
|
; The following fields are available from the ${CALENDAR_EVENT(<field>)} dialplan function:
|
||||||
|
;
|
||||||
|
; summary : The VEVENT Summary property or Exchange subject
|
||||||
|
; description : The text description of the vent
|
||||||
|
; organizer : The organizer of the event
|
||||||
|
; location : The location field of the event
|
||||||
|
; calendar : The name of the calendar tied to the event
|
||||||
|
; uid : The unique ID for this event
|
||||||
|
; start : Start time of the event
|
||||||
|
; end : The end time of the event
|
||||||
|
; busystate : 0=FREE, 1=TENTATIVE, 2=BUSY
|
||||||
|
;
|
||||||
|
;autoreminder = 10 ; Override event-defined reminder before each busy status (in mins)
|
||||||
|
;
|
||||||
|
;channel = SIP/60001 ; Channel to dial
|
||||||
|
;context = default ; Context to connect to on answer
|
||||||
|
;extension = 123 ; Extension to connect to on answer
|
||||||
|
;
|
||||||
|
; or
|
||||||
|
;
|
||||||
|
;app = Playback ; Application to execute on answer (instead of context/extension)
|
||||||
|
;appdata = tt-weasels ; Data part of application to execute on answer
|
||||||
|
;
|
||||||
|
;waittime = 30 ; How long to wait for an answer, defaults to 30 seconds
|
||||||
|
;
|
||||||
|
; Channel variables can be set on the notification channel. The format is
|
||||||
|
; setvar=name=value. Variable subsitution is done on the value to allow the use of dialplan
|
||||||
|
; functions like CALENDAR_EVENT. The variables are set in order, so one can use the value
|
||||||
|
; of earlier variables in the definition of later ones.
|
||||||
|
;
|
||||||
|
;setvar = CALLERID(name)=${CALENDAR_EVENT(summary)}
|
||||||
|
|
||||||
|
;[calendar2]
|
||||||
|
; Note: Support for Exchange Server 2003
|
||||||
|
;
|
||||||
|
;type = exchange ; type of calendar--currently supported: ical, caldav, exchange, or ews
|
||||||
|
;url = https://example.com/exchange/jdoe ; URL to MS Exchange OWA for user (usually includes exchange/user)
|
||||||
|
;user = jdoe ; Exchange username
|
||||||
|
;secret = mysecret ; Exchange password
|
||||||
|
;refresh = 15 ; refresh calendar every n minutes
|
||||||
|
;timeframe = 60 ; number of minutes of calendar data to pull for each refresh period
|
||||||
|
; ; should always be >= refresh
|
||||||
|
;
|
||||||
|
; You can set up res_calendar to execute a call upon an upcoming busy status
|
||||||
|
;autoreminder = 10 ; Override event-defined reminder before each busy status (in mins)
|
||||||
|
;
|
||||||
|
;channel = SIP/1234 ; Channel to dial
|
||||||
|
;context = default ; Context to connect to on answer
|
||||||
|
;extension = 1234 ; Extension to connect to on answer
|
||||||
|
;
|
||||||
|
; or
|
||||||
|
;
|
||||||
|
;[calendar3]
|
||||||
|
; Note: Support for Exchange Server 2007+
|
||||||
|
;
|
||||||
|
;type = ews ; type of calendar--currently supported: ical, caldav, exchange, or ews
|
||||||
|
;url = https://example.com/ews/Exchange.asmx ; URL to MS Exchange EWS
|
||||||
|
;user = jdoe ; Exchange username
|
||||||
|
;secret = mysecret ; Exchange password
|
||||||
|
;refresh = 15 ; refresh calendar every n minutes
|
||||||
|
;timeframe = 60 ; number of minutes of calendar data to pull for each refresh period
|
||||||
|
; ; should always be >= refresh
|
||||||
|
;
|
||||||
|
; You can set up res_calendar to execute a call upon an upcoming busy status
|
||||||
|
;autoreminder = 10 ; Override event-defined reminder before each busy status (in mins)
|
||||||
|
;
|
||||||
|
;channel = SIP/1234 ; Channel to dial
|
||||||
|
;context = default ; Context to connect to on answer
|
||||||
|
;extension = 1234 ; Extension to connect to on answer
|
||||||
|
;
|
||||||
|
; or
|
||||||
|
;
|
||||||
|
;app = Playback ; Application to execute on answer (instead of context/extension)
|
||||||
|
;appdata = tt-weasels ; Data part of application to execute on answer
|
||||||
|
;
|
||||||
|
;waittime = 30 ; How long to wait for an answer, defaults to 30 seconds
|
||||||
|
|
||||||
|
;[calendar4]
|
||||||
|
;type = caldav ; type of calendar--currently supported: ical, caldav, exchange, or ews
|
||||||
|
;url = https://www.google.com/calendar/dav/username@gmail.com/events/ ; Main GMail calendar (the trailing slash is significant!)
|
||||||
|
;user = jdoe@gmail.com ; username
|
||||||
|
;secret = mysecret ; password
|
||||||
|
;refresh = 15 ; refresh calendar every n minutes
|
||||||
|
;timeframe = 60 ; number of minutes of calendar data to pull for each refresh period
|
||||||
|
; ; should always be >= refresh
|
||||||
|
;
|
||||||
|
; You can set up res_calendar to execute a call upon an upcoming busy status
|
||||||
|
;autoreminder = 10 ; Override event-defined reminder before each busy status (in mins)
|
||||||
|
;
|
||||||
|
;channel = SIP/1234 ; Channel to dial
|
||||||
|
;context = default ; Context to connect to on answer
|
||||||
|
;extension = 1234 ; Extension to connect to on answer
|
||||||
|
;
|
||||||
|
; or
|
||||||
|
;
|
||||||
|
;app = Playback ; Application to execute on answer (instead of context/extension)
|
||||||
|
;appdata = tt-weasels ; Data part of application to execute on answer
|
||||||
|
;
|
||||||
|
;waittime = 30 ; How long to wait for an answer, defaults to 30 seconds
|
||||||
205
ccss.conf
Normal file
205
ccss.conf
Normal file
@@ -0,0 +1,205 @@
|
|||||||
|
;
|
||||||
|
; --- Call Completion Supplementary Services ---
|
||||||
|
;
|
||||||
|
; For more information about CCSS, see the CCSS user documentation
|
||||||
|
; https://wiki.asterisk.org/wiki/display/AST/Call+Completion+Supplementary+Services+(CCSS)
|
||||||
|
;
|
||||||
|
|
||||||
|
[general]
|
||||||
|
; The cc_max_requests option is a global limit on the number of
|
||||||
|
; CC requests that may be in the Asterisk system at any time.
|
||||||
|
;
|
||||||
|
;cc_max_requests = 20
|
||||||
|
;
|
||||||
|
; The cc_STATE_devstate variables listed below can be used to change the
|
||||||
|
; default mapping of the internal state machine tracking the state of
|
||||||
|
; call completion to an Asterisk Device State value. The acceptable values
|
||||||
|
; that can be provided are as follows, with a description of what the
|
||||||
|
; equivalent device BLF that this maps to:
|
||||||
|
;
|
||||||
|
; UNKNOWN ; Device is valid but channel didn't know state
|
||||||
|
; NOT_INUSE ; Device is not used
|
||||||
|
; INUSE ; Device is in use
|
||||||
|
; BUSY ; Device is busy
|
||||||
|
; INVALID ; Device is invalid
|
||||||
|
; UNAVAILABLE ; Device is unavailable
|
||||||
|
; RINGING ; Device is ringing
|
||||||
|
; RINGINUSE ; Device is ringing *and* in use
|
||||||
|
; ONHOLD ; Device is on hold
|
||||||
|
;
|
||||||
|
; These states are used to generate DEVICE_STATE information that can be
|
||||||
|
; included with Asterisk hints for phones to subscribe to the state information
|
||||||
|
; or dialplan to check the state using the EXTENSION_STATE() function or
|
||||||
|
; the DEVICE_STATE() function.
|
||||||
|
;
|
||||||
|
; The states are in the format of: "ccss:TECH/ID" so an example of device
|
||||||
|
; SIP/3000 making a CallCompletionRequest() could be checked by looking at
|
||||||
|
; DEVICE_STATE(ccss:SIP/3000) or an Asterisk Hint could be generated such as
|
||||||
|
;
|
||||||
|
; [hint-context]
|
||||||
|
; exten => *843000,hint,ccss:SIP/3000
|
||||||
|
;
|
||||||
|
; and then accessed with EXTENSION_STATE(*843000@hint-context)
|
||||||
|
; or subscribed to with a BLF button on a phone.
|
||||||
|
;
|
||||||
|
; The available state mapping and default values are:
|
||||||
|
;
|
||||||
|
; cc_available_devstate = NOT_INUSE
|
||||||
|
; cc_offered_devstate = NOT_INUSE
|
||||||
|
; cc_caller_requested_devstate = NOT_INUSE
|
||||||
|
; cc_active_devstate = INUSE
|
||||||
|
; cc_callee_ready_devstate = INUSE
|
||||||
|
; cc_caller_busy_devstate = ONHOLD
|
||||||
|
; cc_recalling_devstate = RINGING
|
||||||
|
; cc_complete_devstate = NOT_INUSE
|
||||||
|
; cc_failed_devstate = NOT_INUSE
|
||||||
|
|
||||||
|
;
|
||||||
|
;============================================
|
||||||
|
; PLEASE READ THIS!!!
|
||||||
|
; The options described below should NOT be
|
||||||
|
; set in this file. Rather, they should be
|
||||||
|
; set per-device in a channel driver
|
||||||
|
; configuration file.
|
||||||
|
; PLEASE READ THIS!!!
|
||||||
|
;===========================================
|
||||||
|
;
|
||||||
|
; --------------------------------------------------------------------
|
||||||
|
; Timers
|
||||||
|
; --------------------------------------------------------------------
|
||||||
|
;There are three configurable timers for all types of CC: the
|
||||||
|
;cc_offer_timer, the ccbs_available_timer, and the ccnr_available_timer.
|
||||||
|
;In addition, when using a generic agent, there is a fourth timer,
|
||||||
|
;the cc_recall_timer. All timers are configured in seconds, and the
|
||||||
|
;values shown below are the defaults.
|
||||||
|
;
|
||||||
|
;When a caller is offered CCBS or CCNR, the cc_offer_timer will
|
||||||
|
;be started. If the caller does not request CC before the
|
||||||
|
;cc_offer_timer expires, then the caller will be unable to request
|
||||||
|
;CC for this call.
|
||||||
|
;
|
||||||
|
;cc_offer_timer = 20
|
||||||
|
;
|
||||||
|
;Once a caller has requested CC, then either the ccbs_available_timer
|
||||||
|
;or the ccnr_available_timer will run, depending on the service
|
||||||
|
;requested. The reason why there are two separate timers for CCBS
|
||||||
|
;and CCNR is that it is reasonable to want to have a shorter timeout
|
||||||
|
;configured for CCBS than for CCNR. If the available timer expires
|
||||||
|
;before the called party becomes available, then the CC attempt
|
||||||
|
;will have failed and monitoring of the called party will stop.
|
||||||
|
;
|
||||||
|
;ccbs_available_timer = 4800
|
||||||
|
;ccnr_available_timer = 7200
|
||||||
|
;
|
||||||
|
; When using a generic agent, the original caller is called back
|
||||||
|
; when one of the original called parties becomes available. The
|
||||||
|
; cc_recall_timer tells Asterisk how long it should let the original
|
||||||
|
; caller's phone ring before giving up. Please note that this parameter
|
||||||
|
; only affects operation when using a generic agent.
|
||||||
|
;
|
||||||
|
;cc_recall_timer = 20
|
||||||
|
; --------------------------------------------------------------------
|
||||||
|
; Policies
|
||||||
|
; --------------------------------------------------------------------
|
||||||
|
; Policy settings tell Asterisk how to behave and what sort of
|
||||||
|
; resources to allocate in order to facilitate CC. There are two
|
||||||
|
; settings to control the actions Asterisk will take.
|
||||||
|
;
|
||||||
|
; The cc_agent_policy describes the behavior that Asterisk will
|
||||||
|
; take when communicating with the caller during CC. There are
|
||||||
|
; three possible options.
|
||||||
|
;
|
||||||
|
;never: Never offer CC to the caller. Setting the cc_agent_policy
|
||||||
|
; to this value is the way to disable CC for a call.
|
||||||
|
;
|
||||||
|
;generic: A generic CC agent is one which uses no protocol-specific
|
||||||
|
; mechanisms to offer CC to the caller. Instead, the caller
|
||||||
|
; requests CC using a dialplan function. Due to internal
|
||||||
|
; restrictions, you should only use a generic CC agent on
|
||||||
|
; phones (i.e. not "trunks"). If you are using phones which
|
||||||
|
; do not support a protocol-specific method of using CC, then
|
||||||
|
; generic CC agents are what you should use.
|
||||||
|
;
|
||||||
|
;native: A native CC agent is one which uses protocol-specific
|
||||||
|
; signaling to offer CC to the caller and accept CC requests
|
||||||
|
; from the caller. The supported protocols for native CC
|
||||||
|
; agents are SIP, ISDN ETSI PTP, ISDN ETSI PTMP, and Q.SIG
|
||||||
|
;cc_agent_policy=never
|
||||||
|
;
|
||||||
|
; The cc_monitor_policy describes the behavior that Asterisk will
|
||||||
|
; take when communicating with the called party during CC. There
|
||||||
|
; are four possible options.
|
||||||
|
;
|
||||||
|
;never: Analogous to the cc_agent_policy setting. We will never
|
||||||
|
; attempt to request CC services on this interface.
|
||||||
|
;
|
||||||
|
;generic: Analogous to the cc_agent_policy setting. We will monitor
|
||||||
|
; the called party's progress using protocol-agnostic
|
||||||
|
; capabilities. Like with generic CC agents, generic CC
|
||||||
|
; monitors should only be used for phones.
|
||||||
|
;
|
||||||
|
;native: Analogous to the cc_agent_policy setting. We will use
|
||||||
|
; protocol-specific methods to request CC from this interface
|
||||||
|
; and to monitor the interface for availability.
|
||||||
|
;
|
||||||
|
;always: If an interface is set to "always," then we will accept
|
||||||
|
; protocol-specific CC offers from the caller and use
|
||||||
|
; a native CC monitor for the remainder of the CC transaction.
|
||||||
|
; However, if the interface does not offer protocol-specific
|
||||||
|
; CC, then we will fall back to using a generic CC monitor
|
||||||
|
; instead. This is a good setting to use for phones for which
|
||||||
|
; you do not know if they support protocol-specific CC
|
||||||
|
; methodologies.
|
||||||
|
;cc_monitor_policy=never
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; --------------------------------------------------------------------
|
||||||
|
; Limits
|
||||||
|
; --------------------------------------------------------------------
|
||||||
|
;
|
||||||
|
; The use of CC requires Asterisk to potentially use more memory than
|
||||||
|
; some administrators would like. As such, it is a good idea to limit
|
||||||
|
; the number of CC requests that can be in the system at a given time.
|
||||||
|
; The values shown below are the defaults.
|
||||||
|
;
|
||||||
|
; The cc_max_agents setting limits the number of outstanding CC
|
||||||
|
; requests a caller may have at any given time. Please note that due
|
||||||
|
; to implementation restrictions, this setting is ignored when using
|
||||||
|
; generic CC agents. Generic CC agents may only have one outstanding
|
||||||
|
; CC request.
|
||||||
|
;
|
||||||
|
;cc_max_agents = 5
|
||||||
|
;
|
||||||
|
; The cc_max_monitors setting limits the number of outstanding CC
|
||||||
|
; requests can be made to a specific interface at a given time.
|
||||||
|
;
|
||||||
|
;cc_max_monitors = 5
|
||||||
|
;
|
||||||
|
; --------------------------------------------------------------------
|
||||||
|
; Other
|
||||||
|
; --------------------------------------------------------------------
|
||||||
|
;
|
||||||
|
; When using a generic CC agent, the caller who requested CC will be
|
||||||
|
; called back when a called party becomes available. When the caller
|
||||||
|
; answers his phone, the administrator may opt to have a macro run.
|
||||||
|
; What this macro does is up to the administrator. By default there
|
||||||
|
; is no callback macro configured.
|
||||||
|
;
|
||||||
|
;cc_callback_macro=
|
||||||
|
;
|
||||||
|
; Alternatively, the administrator may run a subroutine. By default
|
||||||
|
; there is no callback subroutine configured. The subroutine should
|
||||||
|
; be specified in the format: [[context,]exten,]priority
|
||||||
|
;
|
||||||
|
;cc_callback_sub=
|
||||||
|
;
|
||||||
|
; When using an ISDN phone and a generic CC agent, Asterisk is unable
|
||||||
|
; to determine the dialstring that should be used when calling back
|
||||||
|
; the original caller. Furthermore, if you desire to use any dialstring-
|
||||||
|
; specific options, such as distinctive ring, you must set this
|
||||||
|
; configuration option. For non-ISDN phones, it is not necessary to
|
||||||
|
; set this, since Asterisk can determine the dialstring to use since
|
||||||
|
; it is identical to the name of the calling device. By default, there
|
||||||
|
; is no cc_agent_dialstring set.
|
||||||
|
;
|
||||||
|
;cc_agent_dialstring=
|
||||||
116
cel.conf
Normal file
116
cel.conf
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
;
|
||||||
|
; Asterisk Channel Event Logging (CEL)
|
||||||
|
;
|
||||||
|
|
||||||
|
; Channel Event Logging is a mechanism to provide fine-grained event information
|
||||||
|
; that can be used to generate billing information. Such event information can
|
||||||
|
; be recorded to various backend modules.
|
||||||
|
;
|
||||||
|
|
||||||
|
[general]
|
||||||
|
|
||||||
|
; CEL Activation
|
||||||
|
;
|
||||||
|
; Use the 'enable' keyword to turn CEL on or off.
|
||||||
|
;
|
||||||
|
; Accepted values: yes and no
|
||||||
|
; Default value: no
|
||||||
|
|
||||||
|
;enable=yes
|
||||||
|
|
||||||
|
; Application Tracking
|
||||||
|
;
|
||||||
|
; Use the 'apps' keyword to specify the list of applications for which you want
|
||||||
|
; to receive CEL events. This is a comma separated list of Asterisk dialplan
|
||||||
|
; applications, such as Dial, Queue, and Park.
|
||||||
|
;
|
||||||
|
; Accepted values: A comma separated list of Asterisk dialplan applications
|
||||||
|
; Default value: none
|
||||||
|
;
|
||||||
|
; Note: You may also use 'all' which will result in CEL events being reported
|
||||||
|
; for all Asterisk applications. This may affect Asterisk's performance
|
||||||
|
; significantly.
|
||||||
|
|
||||||
|
apps=dial,park
|
||||||
|
|
||||||
|
; Event Tracking
|
||||||
|
;
|
||||||
|
; Use the 'events' keyword to specify the list of events which you want to be
|
||||||
|
; raised when they occur. This is a comma separated list of the values in the
|
||||||
|
; table below.
|
||||||
|
;
|
||||||
|
; Accepted values: A comma separated list of one or more of the following:
|
||||||
|
; ALL -- Generate entries on all events
|
||||||
|
; CHAN_START -- The time a channel was created
|
||||||
|
; CHAN_END -- The time a channel was terminated
|
||||||
|
; ANSWER -- The time a channel was answered (ie, phone taken off-hook)
|
||||||
|
; HANGUP -- The time at which a hangup occurred
|
||||||
|
; BRIDGE_ENTER -- The time a channel was connected into a conference room
|
||||||
|
; BRIDGE_EXIT -- The time a channel was removed from a conference room
|
||||||
|
; APP_START -- The time a tracked application was started
|
||||||
|
; APP_END -- the time a tracked application ended
|
||||||
|
; PARK_START -- The time a call was parked
|
||||||
|
; PARK_END -- Unpark event
|
||||||
|
; BLINDTRANSFER -- When a blind transfer is initiated
|
||||||
|
; ATTENDEDTRANSFER -- When an attended transfer is initiated
|
||||||
|
; PICKUP -- This channel picked up the specified channel
|
||||||
|
; FORWARD -- This channel is being forwarded somewhere else
|
||||||
|
; LINKEDID_END -- The last channel with the given linkedid is retired
|
||||||
|
; USER_DEFINED -- Triggered from the dialplan, and has a name given by the
|
||||||
|
; user
|
||||||
|
; LOCAL_OPTIMIZE -- A local channel pair is optimizing away.
|
||||||
|
;
|
||||||
|
; Default value: none
|
||||||
|
; (Track no events)
|
||||||
|
|
||||||
|
events=APP_START,CHAN_START,CHAN_END,ANSWER,HANGUP,BRIDGE_ENTER,BRIDGE_EXIT
|
||||||
|
|
||||||
|
; Date Format
|
||||||
|
;
|
||||||
|
; Use the 'dateformat' keyword to specify the date format used when CEL events
|
||||||
|
; are raised.
|
||||||
|
;
|
||||||
|
; Accepted values: A strftime format string (see man strftime)
|
||||||
|
;
|
||||||
|
; Example: "%F %T"
|
||||||
|
; -> This gives the date and time in the format "2009-06-23 17:02:35"
|
||||||
|
;
|
||||||
|
; If this option is not specified, the default format is "<seconds>.<microseconds>"
|
||||||
|
; since epoch. The microseconds field will always be 6 digits in length, meaning it
|
||||||
|
; may have leading zeros.
|
||||||
|
;
|
||||||
|
;dateformat = %F %T
|
||||||
|
|
||||||
|
;
|
||||||
|
; Asterisk Manager Interface (AMI) CEL Backend
|
||||||
|
;
|
||||||
|
[manager]
|
||||||
|
|
||||||
|
; AMI Backend Activation
|
||||||
|
;
|
||||||
|
; Use the 'enable' keyword to turn CEL logging to the Asterisk Manager Interface
|
||||||
|
; on or off.
|
||||||
|
;
|
||||||
|
; Accepted values: yes and no
|
||||||
|
; Default value: no
|
||||||
|
;enabled=yes
|
||||||
|
|
||||||
|
; Use 'show_user_defined' to put "USER_DEFINED" in the EventName header,
|
||||||
|
; instead of (by default) just putting the user defined event name there.
|
||||||
|
; When enabled the UserDefType header is added for user defined events to
|
||||||
|
; provide the user defined event name.
|
||||||
|
;
|
||||||
|
;show_user_defined=yes
|
||||||
|
|
||||||
|
;
|
||||||
|
; RADIUS CEL Backend
|
||||||
|
;
|
||||||
|
[radius]
|
||||||
|
;
|
||||||
|
; Log date/time in GMT
|
||||||
|
;usegmtime=yes
|
||||||
|
;
|
||||||
|
; Set this to the location of the radiusclient-ng configuration file
|
||||||
|
; The default is /etc/radiusclient-ng/radiusclient.conf
|
||||||
|
;radiuscfg => /usr/local/etc/radiusclient-ng/radiusclient.conf
|
||||||
|
;
|
||||||
1717
chan_dahdi.conf
Normal file
1717
chan_dahdi.conf
Normal file
File diff suppressed because it is too large
Load Diff
12
cli.conf
Normal file
12
cli.conf
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
;
|
||||||
|
; Asterisk CLI configuration
|
||||||
|
;
|
||||||
|
|
||||||
|
[startup_commands]
|
||||||
|
;
|
||||||
|
; Any commands listed in this section will get automatically executed
|
||||||
|
; when Asterisk starts as a daemon or foreground process (-c).
|
||||||
|
;
|
||||||
|
;sip set debug on = yes
|
||||||
|
;core set verbose 3 = yes
|
||||||
|
;core set debug 1 = yes
|
||||||
203
cli_aliases.conf
Normal file
203
cli_aliases.conf
Normal file
@@ -0,0 +1,203 @@
|
|||||||
|
;
|
||||||
|
; CLI Aliases configuration
|
||||||
|
;
|
||||||
|
; This module also registers a "cli show aliases" CLI command to list
|
||||||
|
; configured CLI aliases.
|
||||||
|
|
||||||
|
[general]
|
||||||
|
; Here you define what alias templates you want to use. You can also define
|
||||||
|
; multiple templates to use as well. If you do, and there is a conflict, then
|
||||||
|
; the first alias defined will win.
|
||||||
|
;
|
||||||
|
template = friendly ; By default, include friendly aliases
|
||||||
|
;template = asterisk_1dot2 ; Asterisk 1.2 style syntax
|
||||||
|
;template = asterisk_1dot4 ; Asterisk 1.4 style syntax
|
||||||
|
;template = individual_custom ; see [individual_custom] example below which
|
||||||
|
; includes a list of aliases from an external
|
||||||
|
; file
|
||||||
|
|
||||||
|
|
||||||
|
; Because the Asterisk CLI syntax follows a "module verb argument" syntax,
|
||||||
|
; sometimes we run into an issue between being consistant with this format
|
||||||
|
; in the core system, and maintaining system friendliness. In order to get
|
||||||
|
; around this we're providing some useful aliases by default.
|
||||||
|
;
|
||||||
|
[friendly]
|
||||||
|
hangup request=channel request hangup
|
||||||
|
originate=channel originate
|
||||||
|
help=core show help
|
||||||
|
pri intense debug span=pri set debug intense span
|
||||||
|
reload=module reload
|
||||||
|
pjsip reload=module reload res_pjsip.so res_pjsip_authenticator_digest.so res_pjsip_endpoint_identifier_ip.so res_pjsip_mwi.so res_pjsip_notify.so res_pjsip_outbound_publish.so res_pjsip_publish_asterisk.so res_pjsip_outbound_registration.so
|
||||||
|
|
||||||
|
; CLI Alias Templates
|
||||||
|
; -------------------
|
||||||
|
;
|
||||||
|
; You can define several alias templates.
|
||||||
|
; It works with context templates like all other configuration files
|
||||||
|
;
|
||||||
|
;[asterisk](!)
|
||||||
|
; To create an alias you simply set the variable name as the alias and variable
|
||||||
|
; value as the real CLI command you want executed
|
||||||
|
;
|
||||||
|
;die die die=stop now
|
||||||
|
|
||||||
|
;[asterisk_1dot6](asterisk)
|
||||||
|
; Alias for making voicemail reload actually do module reload app_voicemail.so
|
||||||
|
;voicemail reload=module reload app_voicemail.so
|
||||||
|
; This will make the CLI command "mr" behave as though it is "module reload".
|
||||||
|
;mr=module reload
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; In addition, you could also include a flat file of aliases which is loaded by
|
||||||
|
; the [individual_custom] template in the [general] section.
|
||||||
|
;
|
||||||
|
;[individual_custom]
|
||||||
|
;#include "/etc/asterisk/aliases"
|
||||||
|
|
||||||
|
; Implemented CLI Alias Templates
|
||||||
|
; -------------------------------
|
||||||
|
;
|
||||||
|
; Below here we have provided you with some templates, easily allowing you to
|
||||||
|
; utilize previous Asterisk CLI commands with any version of Asterisk. In this
|
||||||
|
; way you will be able to use Asterisk 1.2 and 1.4 style CLI syntax with any
|
||||||
|
; version Asterisk going forward into the future.
|
||||||
|
;
|
||||||
|
; We have also separated out the vanilla syntax into a context template which
|
||||||
|
; allows you to keep your custom changes separate of the standard templates
|
||||||
|
; we have provided you. In this way you can clearly see your custom changes,
|
||||||
|
; and also allowing you to combine various templates as you see fit.
|
||||||
|
;
|
||||||
|
; The naming scheme we have used is recommended, but certainly is not enforced
|
||||||
|
; by Asterisk. If you wish to use the provided templates, simply define the
|
||||||
|
; context name which does not utilize the '_tpl' at the end. For example,
|
||||||
|
; if you would like to use the Asterisk 1.2 style syntax, define in the
|
||||||
|
; [general] section
|
||||||
|
|
||||||
|
[asterisk_1dot2_tpl](!)
|
||||||
|
show channeltypes=core show channeltypes
|
||||||
|
show channeltype=core show channeltype
|
||||||
|
show manager command=manager show command
|
||||||
|
show manager commands=manager show commands
|
||||||
|
show manager connected=manager show connected
|
||||||
|
show manager eventq=manager show eventq
|
||||||
|
rtp no debug=rtp set debug off
|
||||||
|
rtp rtcp debug ip=rtcp debug ip
|
||||||
|
rtp rtcp debug=rtcp debug
|
||||||
|
rtp rtcp no debug=rtcp debug off
|
||||||
|
rtp rtcp stats=rtcp stats
|
||||||
|
rtp rtcp no stats=rtcp stats off
|
||||||
|
stun no debug=stun debug off
|
||||||
|
udptl no debug=udptl debug off
|
||||||
|
show image formats=core show image formats
|
||||||
|
show file formats=core show file formats
|
||||||
|
show applications=core show applications
|
||||||
|
show functions=core show functions
|
||||||
|
show switches=core show switches
|
||||||
|
show hints=core show hints
|
||||||
|
show globals=core show globals
|
||||||
|
show function=core show function
|
||||||
|
show application=core show application
|
||||||
|
set global=core set global
|
||||||
|
show dialplan=dialplan show
|
||||||
|
show codecs=core show codecs
|
||||||
|
show audio codecs=core show audio codecs
|
||||||
|
show video codecs=core show video codecs
|
||||||
|
show image codecs=core show image codecs
|
||||||
|
show codec=core show codec
|
||||||
|
moh classes show=moh show classes
|
||||||
|
moh files show=moh show files
|
||||||
|
agi no debug=agi debug off
|
||||||
|
show agi=agi show
|
||||||
|
dump agihtml=agi dumphtml
|
||||||
|
show features=feature show
|
||||||
|
show indications=indication show
|
||||||
|
answer=console answer
|
||||||
|
hangup=console hangup
|
||||||
|
flash=console flash
|
||||||
|
dial=console dial
|
||||||
|
mute=console mute
|
||||||
|
unmute=console unmute
|
||||||
|
transfer=console transfer
|
||||||
|
send text=console send text
|
||||||
|
autoanswer=console autoanswer
|
||||||
|
oss boost=console boost
|
||||||
|
console=console active
|
||||||
|
save dialplan=dialplan save
|
||||||
|
add extension=dialplan add extension
|
||||||
|
remove extension=dialplan remove extension
|
||||||
|
add ignorepat=dialplan add ignorepat
|
||||||
|
remove ignorepat=dialplan remove ignorepat
|
||||||
|
include context=dialplan add include
|
||||||
|
dont include=dialplan remove include
|
||||||
|
extensions reload=dialplan reload
|
||||||
|
show translation=core show translation
|
||||||
|
convert=file convert
|
||||||
|
show queue=queue show
|
||||||
|
add queue member=queue add member
|
||||||
|
remove queue member=queue remove member
|
||||||
|
ael no debug=ael nodebug
|
||||||
|
sip debug=sip set debug
|
||||||
|
sip no debug=sip set debug off
|
||||||
|
show voicemail users=voicemail show users
|
||||||
|
show voicemail zones=voicemail show zones
|
||||||
|
iax2 trunk debug=iax2 set debug trunk
|
||||||
|
iax2 jb debug=iax2 set debug jb
|
||||||
|
iax2 no debug=iax2 set debug off
|
||||||
|
iax2 no trunk debug=iax2 set debug trunk off
|
||||||
|
iax2 no jb debug=iax2 set debug jb off
|
||||||
|
show agents=agent show
|
||||||
|
show agents online=agent show online
|
||||||
|
show memory allocations=memory show allocations
|
||||||
|
show memory summary=memory show summary
|
||||||
|
show version=core show version
|
||||||
|
show version files=core show file version
|
||||||
|
show profile=core show profile
|
||||||
|
clear profile=core clear profile
|
||||||
|
soft hangup=channel request hangup
|
||||||
|
|
||||||
|
[asterisk_1dot2](asterisk_1dot2_tpl)
|
||||||
|
; add any additional custom commands you want below here, for example:
|
||||||
|
;die quickly=stop now
|
||||||
|
|
||||||
|
[asterisk_1dot4_tpl](!)
|
||||||
|
cdr status=cdr show status
|
||||||
|
rtp debug=rtp set debug on
|
||||||
|
rtcp debug=rtcp set debug on
|
||||||
|
rtcp stats=rtcp set stats on
|
||||||
|
stun debug=stun set debug on
|
||||||
|
udptl debug=udptl set debug on
|
||||||
|
core show globals=dialplan show globals
|
||||||
|
core set global=dialplan set global
|
||||||
|
core set chanvar=dialplan set chanvar
|
||||||
|
agi dumphtml=agi dump html
|
||||||
|
ael debug=ael set debug
|
||||||
|
funcdevstate list=devstate list
|
||||||
|
sip history=sip set history on
|
||||||
|
skinny debug=skinny set debug on
|
||||||
|
mgcp set debug=mgcp set debug on
|
||||||
|
abort shutdown=core abort shutdown
|
||||||
|
stop now=core stop now
|
||||||
|
stop gracefully=core stop gracefully
|
||||||
|
stop when convenient=core stop when convenient
|
||||||
|
restart now=core restart now
|
||||||
|
restart gracefully=core restart gracefully
|
||||||
|
restart when convenient=core restart when convenient
|
||||||
|
soft hangup=channel request hangup
|
||||||
|
|
||||||
|
[asterisk_1dot4](asterisk_1dot4_tpl)
|
||||||
|
; add any additional custom commands you want below here.
|
||||||
|
|
||||||
|
[asterisk_11_tpl](!)
|
||||||
|
jabber list nodes=xmpp list nodes
|
||||||
|
jabber purge nodes=xmpp purge nodes
|
||||||
|
jabber delete node=xmpp delete node
|
||||||
|
jabber create collection=xmpp create collection
|
||||||
|
jabber create leaf=xmpp create leaf
|
||||||
|
jabber set debug=xmpp set debug
|
||||||
|
jabber show connections=xmpp show connections
|
||||||
|
jabber show buddies=xmpp show buddies
|
||||||
|
features reload=module reload features
|
||||||
|
|
||||||
|
[asterisk_11](asterisk_11_tpl)
|
||||||
|
; add any additional custom commands you want below here.
|
||||||
82
cli_permissions.conf
Normal file
82
cli_permissions.conf
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
;
|
||||||
|
; CLI permissions configuration example for Asterisk
|
||||||
|
;
|
||||||
|
; All the users that you want to connect with asterisk using
|
||||||
|
; rasterisk, should have write/read access to the
|
||||||
|
; asterisk socket (asterisk.ctl). You could change the permissions
|
||||||
|
; of this file in 'asterisk.conf' config parameter: 'astctlpermissions' (0666)
|
||||||
|
; found on the [files] section.
|
||||||
|
;
|
||||||
|
; general options:
|
||||||
|
;
|
||||||
|
; default_perm = permit | deny
|
||||||
|
; This is the default permissions to apply for a user that
|
||||||
|
; does not has a permissions definided.
|
||||||
|
;
|
||||||
|
; user options:
|
||||||
|
; permit = <command name> | all ; allow the user to run 'command' |
|
||||||
|
; ; allow the user to run 'all' the commands
|
||||||
|
; deny = <command name> | all ; disallow the user to run 'command' |
|
||||||
|
; ; disallow the user to run 'all' commands.
|
||||||
|
;
|
||||||
|
|
||||||
|
[general]
|
||||||
|
|
||||||
|
default_perm=permit ; To leave asterisk working as normal
|
||||||
|
; we should set this parameter to 'permit'
|
||||||
|
;
|
||||||
|
; Follows the per-users permissions configs.
|
||||||
|
;
|
||||||
|
; This list is read in the sequence that is being written, so
|
||||||
|
; In this example the user 'eliel' is allow to run only the following
|
||||||
|
; commands:
|
||||||
|
; sip show peer
|
||||||
|
; core set debug
|
||||||
|
; core set verbose
|
||||||
|
; If the user is not specified, the default_perm option will be apply to
|
||||||
|
; every command.
|
||||||
|
;
|
||||||
|
; Notice that you can also use regular expressions to allow or deny access to a
|
||||||
|
; certain command like: 'core show application D*'. In this example the user will be
|
||||||
|
; allowed to view the documentation for all the applications starting with 'D'.
|
||||||
|
; Another regular expression could be: 'channel originate SIP/[0-9]* extension *'
|
||||||
|
; allowing the user to use 'channel originate' on a sip channel and with the 'extension'
|
||||||
|
; parameter and avoiding the use of the 'application' parameter.
|
||||||
|
;
|
||||||
|
; We can also use the templates syntax:
|
||||||
|
; [supportTemplate](!)
|
||||||
|
; deny=all
|
||||||
|
; permit=sip show ; all commands starting with 'sip show' will be allowed
|
||||||
|
; permit=core show
|
||||||
|
;
|
||||||
|
; You can specify permissions for a local group instead of a user,
|
||||||
|
; just put a '@' and we will know that is a group.
|
||||||
|
; IMPORTANT NOTE: Users permissions overwrite group permissions.
|
||||||
|
;
|
||||||
|
;[@adm]
|
||||||
|
;deny=all
|
||||||
|
;permit=sip
|
||||||
|
;permit=core
|
||||||
|
;
|
||||||
|
;
|
||||||
|
;[eliel]
|
||||||
|
;deny=all
|
||||||
|
;permit=sip show peer
|
||||||
|
;deny=sip show peers
|
||||||
|
;permit=core set
|
||||||
|
;
|
||||||
|
;
|
||||||
|
;User 'tommy' inherits from template 'supportTemplate':
|
||||||
|
; deny=all
|
||||||
|
; permit=sip show
|
||||||
|
; permit=core show
|
||||||
|
;[tommy](supportTemplate)
|
||||||
|
;permit=core set debug
|
||||||
|
;permit=dialplan show
|
||||||
|
;
|
||||||
|
;
|
||||||
|
;[mark]
|
||||||
|
;deny=all
|
||||||
|
;permit=all
|
||||||
|
;
|
||||||
|
;
|
||||||
214
codecs.conf
Normal file
214
codecs.conf
Normal file
@@ -0,0 +1,214 @@
|
|||||||
|
[speex]
|
||||||
|
; CBR encoding quality [0..10]
|
||||||
|
; used only when vbr = false
|
||||||
|
quality => 3
|
||||||
|
|
||||||
|
; codec complexity [0..10]
|
||||||
|
; tradeoff between cpu/quality
|
||||||
|
complexity => 2
|
||||||
|
|
||||||
|
; perceptual enhancement [true / false]
|
||||||
|
; improves clarity of decoded speech
|
||||||
|
enhancement => true
|
||||||
|
|
||||||
|
; voice activity detection [true / false]
|
||||||
|
; reduces bitrate when no voice detected, used only for CBR
|
||||||
|
; (implicit in VBR/ABR)
|
||||||
|
vad => true
|
||||||
|
|
||||||
|
; variable bit rate [true / false]
|
||||||
|
; uses bit rate proportionate to voice complexity
|
||||||
|
vbr => true
|
||||||
|
|
||||||
|
; available bit rate [bps, 0 = off]
|
||||||
|
; encoding quality modulated to match this target bit rate
|
||||||
|
; not recommended with dtx or pp_vad - may cause bandwidth spikes
|
||||||
|
abr => 0
|
||||||
|
|
||||||
|
; VBR encoding quality [0-10]
|
||||||
|
; floating-point values allowed
|
||||||
|
vbr_quality => 4
|
||||||
|
|
||||||
|
; discontinuous transmission [true / false]
|
||||||
|
; stops transmitting completely when silence is detected
|
||||||
|
; pp_vad is far more effective but more CPU intensive
|
||||||
|
dtx => false
|
||||||
|
|
||||||
|
; preprocessor configuration
|
||||||
|
; these options only affect Speex v1.1.8 or newer
|
||||||
|
|
||||||
|
; enable preprocessor [true / false]
|
||||||
|
; allows dsp functionality below but incurs CPU overhead
|
||||||
|
preprocess => false
|
||||||
|
|
||||||
|
; preproc voice activity detection [true / false]
|
||||||
|
; more advanced equivalent of DTX, based on voice frequencies
|
||||||
|
pp_vad => false
|
||||||
|
|
||||||
|
; preproc automatic gain control [true / false]
|
||||||
|
pp_agc => false
|
||||||
|
pp_agc_level => 8000
|
||||||
|
|
||||||
|
; preproc denoiser [true / false]
|
||||||
|
pp_denoise => false
|
||||||
|
|
||||||
|
; preproc dereverb [true / false]
|
||||||
|
pp_dereverb => false
|
||||||
|
pp_dereverb_decay => 0.4
|
||||||
|
pp_dereverb_level => 0.3
|
||||||
|
|
||||||
|
; experimental bitrate changes depending on RTCP feedback [true / false]
|
||||||
|
experimental_rtcp_feedback => false
|
||||||
|
|
||||||
|
|
||||||
|
[plc]
|
||||||
|
; for all codecs which do not support native PLC
|
||||||
|
; this determines whether to perform generic PLC
|
||||||
|
; there is a minor performance penalty for this.
|
||||||
|
; By default plc is applied only when the 2 codecs
|
||||||
|
; in a channel are different.
|
||||||
|
genericplc => true
|
||||||
|
; Apply generic plc to channels even if the 2 codecs
|
||||||
|
; are the same. This forces transcoding via slin so
|
||||||
|
; the performance impact should be considered.
|
||||||
|
; Ignored if genericplc is not also enabled.
|
||||||
|
genericplc_on_equal_codecs => false
|
||||||
|
|
||||||
|
; Generate custom formats for formats requiring attributes.
|
||||||
|
; After defining the custom format, the name used in defining
|
||||||
|
; the format can be used throughout Asterisk in the format 'allow'
|
||||||
|
; and 'disallow' options.
|
||||||
|
;
|
||||||
|
; Example: silk8 is a predefined custom format in this config file.
|
||||||
|
; Once this config file is loaded, silk8 can be used anywhere a
|
||||||
|
; peer's codec capabilities are defined.
|
||||||
|
;
|
||||||
|
; In sip.conf 'silk8' can be defined as a capability for a peer.
|
||||||
|
; [peer1]
|
||||||
|
; type=peer
|
||||||
|
; host=dynamic
|
||||||
|
; disallow=all
|
||||||
|
; allow=silk8 ;custom codec defined in codecs.conf
|
||||||
|
;
|
||||||
|
; LIMITATIONS
|
||||||
|
; Custom formats can only be defined at startup. Any changes to this
|
||||||
|
; file made after startup will not take into effect until after Asterisk
|
||||||
|
; is restarted.
|
||||||
|
;
|
||||||
|
|
||||||
|
; Default Custom SILK format definitions, only one custom SILK format per
|
||||||
|
; sample rate is allowed.
|
||||||
|
[silk8]
|
||||||
|
type=silk
|
||||||
|
samprate=8000
|
||||||
|
fec=true ; turn on or off encoding with forward error correction.
|
||||||
|
; On recommended, off by default.
|
||||||
|
packetloss_percentage=10 ; Estimated packet loss percentage in uplink direction. This
|
||||||
|
; affects how much redundancy is built in when using fec.
|
||||||
|
; The higher the percentage, the larger amount of bandwidth is
|
||||||
|
; used. Default is 0%, 10% is recommended when fec is in use.
|
||||||
|
|
||||||
|
maxbitrate=10000 ; Use the table below to make sure a useful bitrate is choosen
|
||||||
|
; for maxbitrate. If not set or value is not within the bounds
|
||||||
|
; of the encoder, a default value is chosen.
|
||||||
|
;
|
||||||
|
; sample rate | bitrate range
|
||||||
|
; 8khz | 5000 - 20000 bps
|
||||||
|
; 12khz | 7000 - 25000 bps
|
||||||
|
; 16khz | 8000 - 30000 bps
|
||||||
|
; 24khz | 20000- 40000 bps
|
||||||
|
;
|
||||||
|
;dtx=true ; Encode using discontinuous transmission mode or not. Turning this
|
||||||
|
; on will save bandwidth during periods of silence at the cost of
|
||||||
|
; increased computational complexity. Off by default.
|
||||||
|
|
||||||
|
[silk12]
|
||||||
|
type=silk
|
||||||
|
samprate=12000
|
||||||
|
maxbitrate=12000
|
||||||
|
fec=true
|
||||||
|
packetloss_percentage=10;
|
||||||
|
|
||||||
|
[silk16]
|
||||||
|
type=silk
|
||||||
|
samprate=16000
|
||||||
|
maxbitrate=20000
|
||||||
|
fec=true
|
||||||
|
packetloss_percentage=10;
|
||||||
|
|
||||||
|
[silk24]
|
||||||
|
type=silk
|
||||||
|
samprate=24000
|
||||||
|
maxbitrate=30000
|
||||||
|
fec=true
|
||||||
|
packetloss_percentage=10;
|
||||||
|
|
||||||
|
|
||||||
|
; Default custom CELT codec definitions. Only one custom CELT definition is allowed
|
||||||
|
; per a sample rate.
|
||||||
|
;[celt44]
|
||||||
|
;type=celt
|
||||||
|
;samprate=44100 ; The samplerate in hz. This option is required.
|
||||||
|
;framesize=480 ; The framesize option represents the duration of each frame in samples.
|
||||||
|
; This must be a factor of 2. This option is only advertised in an SDP
|
||||||
|
; when it is set. Otherwise a default of framesize of 480 is assumed
|
||||||
|
; internally
|
||||||
|
|
||||||
|
;[celt48]
|
||||||
|
;type=celt
|
||||||
|
;samprate=48000
|
||||||
|
|
||||||
|
;[celt32]
|
||||||
|
;type=celt
|
||||||
|
;samprate=32000
|
||||||
|
|
||||||
|
;============================ OPUS Section Options ============================
|
||||||
|
;
|
||||||
|
; NOTE: Accurate documentation corresponding to your downloaded version of
|
||||||
|
; codec_opus is available from Asterisk's CLI:
|
||||||
|
;
|
||||||
|
; *CLI> config show help codec_opus opus
|
||||||
|
;
|
||||||
|
;[opus]
|
||||||
|
;type= ; Must be of type "opus" (default: "")
|
||||||
|
;packet_loss= ; Encoder's packet loss percentage. Can be any number between 0
|
||||||
|
; and 100, inclusive. A higher value results in more loss
|
||||||
|
; resistance. (default: 0)
|
||||||
|
;complexity= ; Encoder's computational complexity. Can be any number between 0
|
||||||
|
; and 10, inclusive. Note, 10 equals the highest complexity.
|
||||||
|
; (default: 10)
|
||||||
|
;max_bandwidth= ; Encoder's maximum bandwidth allowed. Sets an upper bandwidth
|
||||||
|
; bound on the encoder. Can be any of the following: narrow,
|
||||||
|
; medium, wide, super_wide, full. (default: full)
|
||||||
|
;signal= ; Encoder's signal type. Aids in mode selection on the encoder: Can
|
||||||
|
; be any of the following: auto, voice, music. (default: auto)
|
||||||
|
;application= ; Encoder's application type. Can be any of the following: voip,
|
||||||
|
; audio, low_delay. (default: voip)
|
||||||
|
;max_playback_rate= ; Override the maximum playback rate in the offer's SDP.
|
||||||
|
; Any value between 8000 and 48000 (inclusive) is valid,
|
||||||
|
; however typically it should match one of the usual opus
|
||||||
|
; bandwidths. (default: 48000)
|
||||||
|
;bitrate= ; Override the maximum average bitrate in the offer's SDP. Any value
|
||||||
|
; between 500 and 512000 is valid. The following values are also
|
||||||
|
; allowed: auto, max. (default: auto)
|
||||||
|
;cbr= ; Override the constant bit rate parameter in the offer's SDP. A value of
|
||||||
|
; 0/false/no represents a variable bit rate whereas 1/true/yes represents
|
||||||
|
; a constant bit rate. (default: no)
|
||||||
|
;fec= ; Override the use inband fec parameter in the offer's SDP. A value of
|
||||||
|
; 0/false/no represents disabled whereas 1/true/yes represents enabled.
|
||||||
|
; (default: yes)
|
||||||
|
;dtx= ; Override the use dtx parameter in the offer's SDP. A value of 0/false/no
|
||||||
|
; represents disabled whereas 1/true/yes represents enabled. (default: no)
|
||||||
|
|
||||||
|
;=============================== OPUS Examples ================================
|
||||||
|
;
|
||||||
|
;[opus]
|
||||||
|
;type=opus
|
||||||
|
;max_playback_rate=8000 ; Limit the maximum playback rate on the encoder
|
||||||
|
;fec=no ; No inband fec
|
||||||
|
|
||||||
|
;[myopus]
|
||||||
|
;type=opus
|
||||||
|
;max_bandwidth=wide ; Maximum encoded bandwidth set to wide band (0-8000 Hz
|
||||||
|
; ; audio bandwidth at 16Khz sample rate)
|
||||||
|
;cbr=yes ; Negotiate a constant bit rate
|
||||||
436
confbridge.conf
Normal file
436
confbridge.conf
Normal file
@@ -0,0 +1,436 @@
|
|||||||
|
[general]
|
||||||
|
; The general section of this config
|
||||||
|
; is not currently used, but reserved
|
||||||
|
; for future use.
|
||||||
|
|
||||||
|
;
|
||||||
|
; --- Default Information ---
|
||||||
|
; The default_user and default_bridge sections are applied
|
||||||
|
; automatically to all ConfBridge instances invoked without
|
||||||
|
; a user, or bridge argument. No menu is applied by default.
|
||||||
|
;
|
||||||
|
; Note that while properties of the default_user or default_bridge
|
||||||
|
; profile can be overridden, if removed, they will be automatically
|
||||||
|
; added and made available to the dialplan upon module load.
|
||||||
|
;
|
||||||
|
|
||||||
|
; --- ConfBridge User Profile Options ---
|
||||||
|
[default_user]
|
||||||
|
type=user
|
||||||
|
;admin=yes ; Sets if the user is an admin or not. Off by default.
|
||||||
|
|
||||||
|
;send_events=no ; If events are enabled for this bridge and this option is
|
||||||
|
; set, users will receive events like join, leave, talking,
|
||||||
|
; etc. via text messages. For users accessing the bridge
|
||||||
|
; via chan_pjsip, this means in-dialog MESSAGE messages.
|
||||||
|
; This is most useful for WebRTC participants where the
|
||||||
|
; browser application can use the messages to alter the user
|
||||||
|
; interface.
|
||||||
|
;echo_events=yes ; If events are enabled for this user and this option is set,
|
||||||
|
; the user will receive events they trigger, talking, mute, etc.
|
||||||
|
; If not set, they will not receive their own events.
|
||||||
|
|
||||||
|
;marked=yes ; Sets if this is a marked user or not. Off by default.
|
||||||
|
;startmuted=yes; Sets if all users should start out muted. Off by default
|
||||||
|
;music_on_hold_when_empty=yes ; Sets whether MOH should be played when only
|
||||||
|
; one person is in the conference or when the
|
||||||
|
; the user is waiting on a marked user to enter
|
||||||
|
; the conference. Off by default.
|
||||||
|
;music_on_hold_class=default ; The MOH class to use for this user.
|
||||||
|
;quiet=yes ; When enabled enter/leave prompts and user intros are not played.
|
||||||
|
; There are some prompts, such as the prompt to enter a PIN number,
|
||||||
|
; that must be played regardless of what this option is set to.
|
||||||
|
; Off by default
|
||||||
|
;announce_user_count=yes ; Sets if the number of users should be announced to the
|
||||||
|
; caller. Off by default.
|
||||||
|
;announce_user_count_all=yes ; Sets if the number of users should be announced to
|
||||||
|
; all the other users in the conference when someone joins.
|
||||||
|
; This option can be either set to 'yes' or a number.
|
||||||
|
; When set to a number, the announcement will only occur
|
||||||
|
; once the user count is above the specified number.
|
||||||
|
;announce_only_user=yes ; Sets if the only user announcement should be played
|
||||||
|
; when a channel enters a empty conference. On by default.
|
||||||
|
;wait_marked=yes ; Sets if the user must wait for a marked user to enter before
|
||||||
|
; joining the conference. Off by default.
|
||||||
|
;end_marked=yes ; This option will kick every user with this option set in their
|
||||||
|
; user profile after the last Marked user exists the conference.
|
||||||
|
|
||||||
|
;dsp_drop_silence=yes ; This option drops what Asterisk detects as silence from
|
||||||
|
; entering into the bridge. Enabling this option will drastically
|
||||||
|
; improve performance and help remove the buildup of background
|
||||||
|
; noise from the conference. Highly recommended for large conferences
|
||||||
|
; due to its performance enhancements.
|
||||||
|
|
||||||
|
;dsp_talking_threshold=128 ; Average magnitude threshold to determine talking.
|
||||||
|
;
|
||||||
|
; The minimum average magnitude per sample in a frame for the
|
||||||
|
; DSP to consider talking/noise present. A value below this
|
||||||
|
; level is considered silence. This value affects several
|
||||||
|
; operations and should not be changed unless the impact on
|
||||||
|
; call quality is fully understood.
|
||||||
|
;
|
||||||
|
; What this value affects internally:
|
||||||
|
;
|
||||||
|
; 1. Audio is only mixed out of a user's incoming audio
|
||||||
|
; stream if talking is detected. If this value is set too
|
||||||
|
; high the user will hear himself talking.
|
||||||
|
;
|
||||||
|
; 2. When talk detection AMI events are enabled, this value
|
||||||
|
; determines when talking has begun which results in an
|
||||||
|
; AMI event to fire. If this value is set too low AMI
|
||||||
|
; events may be falsely triggered by variants in room
|
||||||
|
; noise.
|
||||||
|
;
|
||||||
|
; 3. The 'drop_silence' option depends on this value to
|
||||||
|
; determine when the user's audio should be mixed into the
|
||||||
|
; bridge after periods of silence. If this value is too
|
||||||
|
; high the user's speech will get discarded as they will
|
||||||
|
; be considered silent.
|
||||||
|
;
|
||||||
|
; Valid values are 1 through 2^15.
|
||||||
|
; By default this value is 160.
|
||||||
|
|
||||||
|
;dsp_silence_threshold=2000 ; The number of milliseconds of silence necessary to declare
|
||||||
|
; talking stopped.
|
||||||
|
;
|
||||||
|
; The time in milliseconds of sound falling below the
|
||||||
|
; 'dsp_talking_threshold' option when a user is considered to
|
||||||
|
; stop talking. This value affects several operations and
|
||||||
|
; should not be changed unless the impact on call quality is
|
||||||
|
; fully understood.
|
||||||
|
;
|
||||||
|
; What this value affects internally:
|
||||||
|
;
|
||||||
|
; 1. When talk detection AMI events are enabled, this value
|
||||||
|
; determines when the user has stopped talking after a
|
||||||
|
; period of talking. If this value is set too low AMI
|
||||||
|
; events indicating the user has stopped talking may get
|
||||||
|
; falsely sent out when the user briefly pauses during mid
|
||||||
|
; sentence.
|
||||||
|
;
|
||||||
|
; 2. The 'drop_silence' option depends on this value to
|
||||||
|
; determine when the user's audio should begin to be
|
||||||
|
; dropped from the conference bridge after the user stops
|
||||||
|
; talking. If this value is set too low the user's audio
|
||||||
|
; stream may sound choppy to the other participants. This
|
||||||
|
; is caused by the user transitioning constantly from
|
||||||
|
; silence to talking during mid sentence.
|
||||||
|
;
|
||||||
|
; The best way to approach this option is to set it slightly
|
||||||
|
; above the maximum amount of milliseconds of silence a user
|
||||||
|
; may generate during natural speech.
|
||||||
|
;
|
||||||
|
; Valid values are 1 through 2^31.
|
||||||
|
; By default this value is 2500ms.
|
||||||
|
|
||||||
|
;talk_detection_events=yes ; This option sets whether or not notifications of when a user
|
||||||
|
; begins and ends talking should be sent out as events over AMI.
|
||||||
|
; By default this option is off.
|
||||||
|
|
||||||
|
;denoise=yes ; Sets whether or not a denoise filter should be applied
|
||||||
|
; to the audio before mixing or not. Off by default. Requires
|
||||||
|
; func_speex to be built and installed. Do not confuse this option
|
||||||
|
; with drop_silence. Denoise is useful if there is a lot of background
|
||||||
|
; noise for a user as it attempts to remove the noise while preserving
|
||||||
|
; the speech. This option does NOT remove silence from being mixed into
|
||||||
|
; the conference and does come at the cost of a slight performance hit.
|
||||||
|
|
||||||
|
;jitterbuffer=yes ; Enabling this option places a jitterbuffer on the user's audio stream
|
||||||
|
; before audio mixing is performed. This is highly recommended but will
|
||||||
|
; add a slight delay to the audio. This option is using the JITTERBUFFER
|
||||||
|
; dialplan function's default adaptive jitterbuffer. For a more fine tuned
|
||||||
|
; jitterbuffer, disable this option and use the JITTERBUFFER dialplan function
|
||||||
|
; on the user before entering the ConfBridge application.
|
||||||
|
|
||||||
|
;pin=1234 ; Sets if this user must enter a PIN number before entering
|
||||||
|
; the conference. The PIN will be prompted for.
|
||||||
|
;announce_join_leave=yes ; When enabled, this option will prompt the user for a
|
||||||
|
; name when entering the conference. After the name is
|
||||||
|
; recorded, it will be played as the user enters and exists
|
||||||
|
; the conference. This option is off by default.
|
||||||
|
;announce_join_leave_review=yes ; When enabled, implies announce_join_leave, but the user
|
||||||
|
; will be prompted to review their recording before
|
||||||
|
; entering the conference. During this phase, the recording
|
||||||
|
; may be listened to, re-recorded, or accepted as is. This
|
||||||
|
; option is off by default.
|
||||||
|
;dtmf_passthrough=yes ; Sets whether or not DTMF should pass through the conference.
|
||||||
|
; This option is off by default.
|
||||||
|
;announcement=</path/to/file> ; Play a sound file to the user when they join the conference.
|
||||||
|
|
||||||
|
;timeout=3600 ; When set non-zero, this specifies the number of seconds that the participant
|
||||||
|
; may stay in the conference before being automatically ejected. When the user
|
||||||
|
; is ejected from the conference, the user's channel will have the CONFBRIDGE_RESULT
|
||||||
|
; variable set to "TIMEOUT". A value of 0 indicates that there is no timeout.
|
||||||
|
; Default: 0
|
||||||
|
|
||||||
|
; --- ConfBridge Bridge Profile Options ---
|
||||||
|
[default_bridge]
|
||||||
|
type=bridge
|
||||||
|
;max_members=50 ; This option limits the number of participants for a single
|
||||||
|
; conference to a specific number. By default conferences
|
||||||
|
; have no participant limit. After the limit is reached, the
|
||||||
|
; conference will be locked until someone leaves. Note however
|
||||||
|
; that an Admin user will always be alowed to join the conference
|
||||||
|
; regardless if this limit is reached or not.
|
||||||
|
|
||||||
|
;record_conference=yes ; Records the conference call starting when the first user
|
||||||
|
; enters the room, and ending when the last user exits the room.
|
||||||
|
; The default recorded filename is
|
||||||
|
; 'confbridge-<name of conference bridge>-<start time>.wav
|
||||||
|
; and the default format is 8khz slinear. This file will be
|
||||||
|
; located in the configured monitoring directory in asterisk.conf.
|
||||||
|
|
||||||
|
;record_file=</path/to/file> ; When record_conference is set to yes, the specific name of the
|
||||||
|
; record file can be set using this option. Note that since multiple
|
||||||
|
; conferences may use the same bridge profile, this may cause issues
|
||||||
|
; depending on the configuration. It is recommended to only use this
|
||||||
|
; option dynamically with the CONFBRIDGE() dialplan function. This
|
||||||
|
; allows the record name to be specified and a unique name to be chosen.
|
||||||
|
; By default, the record_file is stored in Asterisk's spool/monitor directory
|
||||||
|
; with a unique filename starting with the 'confbridge' prefix.
|
||||||
|
|
||||||
|
;record_file_append=yes ; Append record file when starting/stopping on same conference recording.
|
||||||
|
;record_file_timestamp=yes ; Append the start time to the record file name.
|
||||||
|
|
||||||
|
;record_options= ; Pass additional options to MixMonitor.
|
||||||
|
;record_command=</path/to/command> ; Command to execute when recording finishes.
|
||||||
|
|
||||||
|
;internal_sample_rate=auto ; Sets the internal native sample rate the
|
||||||
|
; conference is mixed at. This is set to automatically
|
||||||
|
; adjust the sample rate to the best quality by default.
|
||||||
|
; Other values can be anything from 8000-192000. If a
|
||||||
|
; sample rate is set that Asterisk does not support, the
|
||||||
|
; closest sample rate Asterisk does support to the one requested
|
||||||
|
; will be used.
|
||||||
|
|
||||||
|
;mixing_interval=40 ; Sets the internal mixing interval in milliseconds for the bridge. This
|
||||||
|
; number reflects how tight or loose the mixing will be for the conference.
|
||||||
|
; In order to improve performance a larger mixing interval such as 40ms may
|
||||||
|
; be chosen. Using a larger mixing interval comes at the cost of introducing
|
||||||
|
; larger amounts of delay into the bridge. Valid values here are 10, 20, 40,
|
||||||
|
; or 80. By default 20ms is used.
|
||||||
|
|
||||||
|
;video_mode = follow_talker; Sets how confbridge handles video distribution to the conference participants.
|
||||||
|
; Note that participants wanting to view and be the source of a video feed
|
||||||
|
; _MUST_ be sharing the same video codec. Also, using video in conjunction with
|
||||||
|
; with the jitterbuffer currently results in the audio being slightly out of sync
|
||||||
|
; with the video. This is a result of the jitterbuffer only working on the audio
|
||||||
|
; stream. It is recommended to disable the jitterbuffer when video is used.
|
||||||
|
;
|
||||||
|
; --- MODES ---
|
||||||
|
; none: No video sources are set by default in the conference. It is still
|
||||||
|
; possible for a user to be set as a video source via AMI or DTMF action
|
||||||
|
; at any time.
|
||||||
|
;
|
||||||
|
; follow_talker: The video feed will follow whoever is talking and providing video.
|
||||||
|
;
|
||||||
|
; last_marked: The last marked user to join the conference with video capabilities
|
||||||
|
; will be the single source of video distributed to all participants.
|
||||||
|
; If multiple marked users are capable of video, the last one to join
|
||||||
|
; is always the source, when that user leaves it goes to the one who
|
||||||
|
; joined before them.
|
||||||
|
;
|
||||||
|
; first_marked: The first marked user to join the conference with video capabilities
|
||||||
|
; is the single source of video distribution among all participants. If
|
||||||
|
; that user leaves, the marked user to join after them becomes the source.
|
||||||
|
;
|
||||||
|
; sfu: Selective Forwarding Unit - Sets multi-stream operation
|
||||||
|
; for a multi-party video conference.
|
||||||
|
|
||||||
|
;language=en ; Set the language used for announcements to the conference.
|
||||||
|
; Default is en (English).
|
||||||
|
|
||||||
|
;regcontext=conferences ; The name of the context into which to register conference names as extensions.
|
||||||
|
;video_update_discard=2000 ; Amount of time (in milliseconds) to discard video update requests after sending a video
|
||||||
|
; update request. Default is 2000. A video update request is a request for a full video
|
||||||
|
; intra-frame. Clients can request this if they require a full frame in order to decode
|
||||||
|
; the video stream. Since a full frame can be large limiting how often they occur can
|
||||||
|
; reduce bandwidth usage at the cost of increasing how long it may take a newly joined
|
||||||
|
; channel to receive the video stream.
|
||||||
|
;remb_send_interval=1000 ; Interval (in milliseconds) at which a combined REMB frame will be sent to sources of video.
|
||||||
|
; A REMB frame contains receiver estimated maximum bitrate information. By creating a combined
|
||||||
|
; frame and sending it to the sources of video the sender can be influenced on what bitrate
|
||||||
|
; they choose allowing a better experience for the receivers. This defaults to 0, or disabled.
|
||||||
|
;remb_behavior=average ; How the combined REMB report for an SFU video bridge is constructed. If set to "average" then
|
||||||
|
; the estimated maximum bitrate of each receiver is used to construct an average bitrate. If
|
||||||
|
; set to "lowest" the lowest maximum bitrate is forwarded to the sender. If set to "highest"
|
||||||
|
; the highest maximum bitrate is forwarded to the sender. This defaults to "average".
|
||||||
|
|
||||||
|
;enable_events=no ; If enabled, recipients who joined the bridge via a channel driver
|
||||||
|
; that supports Enhanced Messaging (currently only chan_pjsip) will
|
||||||
|
; receive in-dialog messages containing a JSON body describing the
|
||||||
|
; event. The Content-Type header will be
|
||||||
|
; "text/x-ast-confbridge-event".
|
||||||
|
; This feature must also be enabled in user profiles.
|
||||||
|
|
||||||
|
; All sounds in the conference are customizable using the bridge profile options below.
|
||||||
|
; Simply state the option followed by the filename or full path of the filename after
|
||||||
|
; the option. Example: sound_had_joined=conf-hasjoin This will play the conf-hasjoin
|
||||||
|
; sound file found in the sounds directory when announcing someone's name is joining the
|
||||||
|
; conference.
|
||||||
|
|
||||||
|
;sound_join ; The sound played to everyone when someone enters the conference.
|
||||||
|
;sound_leave ; The sound played to everyone when someone leaves the conference.
|
||||||
|
;sound_has_joined ; The sound played before announcing someone's name has
|
||||||
|
; joined the conference. This is used for user intros.
|
||||||
|
; Example "_____ has joined the conference"
|
||||||
|
;sound_has_left ; The sound played when announcing someone's name has
|
||||||
|
; left the conference. This is used for user intros.
|
||||||
|
; Example "_____ has left the conference"
|
||||||
|
;sound_kicked ; The sound played to a user who has been kicked from the conference.
|
||||||
|
;sound_muted ; The sound played when the mute option is toggled on using DTMF menu.
|
||||||
|
;sound_unmuted ; The sound played when the mute option is toggled off using DTMF menu.
|
||||||
|
;sound_only_person ; The sound played when the user is the only person in the conference.
|
||||||
|
;sound_only_one ; The sound played to a user when there is only one other
|
||||||
|
; person is in the conference.
|
||||||
|
;sound_there_are ; The sound played when announcing how many users there
|
||||||
|
; are in a conference.
|
||||||
|
;sound_other_in_party; ; This file is used in conjunction with 'sound_there_are"
|
||||||
|
; when announcing how many users there are in the conference.
|
||||||
|
; The sounds are stringed together like this.
|
||||||
|
; "sound_there_are" <number of participants> "sound_other_in_party"
|
||||||
|
;sound_place_into_conference ; The sound played when someone is placed into the conference
|
||||||
|
; after waiting for a marked user. This sound is now deprecated
|
||||||
|
; since it was only ever used improperly and correcting that bug
|
||||||
|
; made it completely unused.
|
||||||
|
;sound_wait_for_leader ; The sound played when a user is placed into a conference that
|
||||||
|
; can not start until a marked user enters.
|
||||||
|
;sound_leader_has_left ; The sound played when the last marked user leaves the conference.
|
||||||
|
;sound_get_pin ; The sound played when prompting for a conference pin number.
|
||||||
|
;sound_invalid_pin ; The sound played when an invalid pin is entered too many times.
|
||||||
|
;sound_locked ; The sound played to a user trying to join a locked conference.
|
||||||
|
;sound_locked_now ; The sound played to an admin after toggling the conference to locked mode.
|
||||||
|
;sound_unlocked_now; The sound played to an admin after toggling the conference to unlocked mode.
|
||||||
|
;sound_error_menu ; The sound played when an invalid menu option is entered.
|
||||||
|
;sound_begin ; The sound played to the conference when the first marked user enters the conference.
|
||||||
|
;sound_binaural_on ; The sound played when binaural audio is turned on
|
||||||
|
;sound_binaural_off ; The sound played when binaural audio is turned off
|
||||||
|
|
||||||
|
; --- ConfBridge Menu Options ---
|
||||||
|
; The ConfBridge application also has the ability to
|
||||||
|
; apply custom DTMF menus to each channel using the
|
||||||
|
; application. Like the User and Bridge profiles
|
||||||
|
; a menu is passed in to ConfBridge as an argument in
|
||||||
|
; the dialplan.
|
||||||
|
;
|
||||||
|
; Below is a list of menu actions that can be assigned
|
||||||
|
; to a DTMF sequence.
|
||||||
|
;
|
||||||
|
; To have the first DTMF digit in a sequence be the '#' character, you need to
|
||||||
|
; escape it. If it is not escaped then normal config file processing will
|
||||||
|
; think it is a directive like #include. For example:
|
||||||
|
; \#1=toggle_mute ; Pressing #1 will toggle the mute setting.
|
||||||
|
;
|
||||||
|
; A single DTMF sequence can have multiple actions associated with it. This is
|
||||||
|
; accomplished by stringing the actions together and using a ',' as the delimiter.
|
||||||
|
; Example: Both listening and talking volume is reset when '5' is pressed.
|
||||||
|
; 5=reset_talking_volume, reset_listening_volume
|
||||||
|
;
|
||||||
|
; playback(<name of audio file>&<name of audio file>)
|
||||||
|
; Playback will play back an audio file to a channel
|
||||||
|
; and then immediately return to the conference.
|
||||||
|
; This file can not be interupted by DTMF.
|
||||||
|
; Mutliple files can be chained together using the
|
||||||
|
; '&' character.
|
||||||
|
; playback_and_continue(<name of playback prompt>&<name of playback prompt>)
|
||||||
|
; playback_and_continue will
|
||||||
|
; play back a prompt while continuing to
|
||||||
|
; collect the dtmf sequence. This is useful
|
||||||
|
; when using a menu prompt that describes all
|
||||||
|
; the menu options. Note however that any DTMF
|
||||||
|
; during this action will terminate the prompts
|
||||||
|
; playback. Prompt files can be chained together
|
||||||
|
; using the '&' character as a delimiter.
|
||||||
|
; toggle_mute ; Toggle turning on and off mute. Mute will make the user silent
|
||||||
|
; to everyone else, but the user will still be able to listen in.
|
||||||
|
; toggle_binaural ; Toggle on or off binaural audio processing.
|
||||||
|
|
||||||
|
; no_op ; This action does nothing (No Operation). Its only real purpose exists for
|
||||||
|
; being able to reserve a sequence in the config as a menu exit sequence.
|
||||||
|
; decrease_listening_volume ; Decreases the channel's listening volume.
|
||||||
|
; increase_listening_volume ; Increases the channel's listening volume.
|
||||||
|
; reset_listening_volume ; Reset channel's listening volume to default level.
|
||||||
|
|
||||||
|
; decrease_talking_volume ; Decreases the channel's talking volume.
|
||||||
|
; increase_talking_volume ; Icreases the channel's talking volume.
|
||||||
|
; reset_talking_volume ; Reset channel's talking volume to default level.
|
||||||
|
;
|
||||||
|
; dialplan_exec(context,exten,priority) ; The dialplan_exec action allows a user
|
||||||
|
; to escape from the conference and execute
|
||||||
|
; commands in the dialplan. Once the dialplan
|
||||||
|
; exits the user will be put back into the
|
||||||
|
; conference. The possibilities are endless!
|
||||||
|
; leave_conference ; This action allows a user to exit the conference and continue
|
||||||
|
; execution in the dialplan.
|
||||||
|
;
|
||||||
|
; admin_kick_last ; This action allows an Admin to kick the last participant from the
|
||||||
|
; conference. This action will only work for admins which allows
|
||||||
|
; a single menu to be used for both users and admins.
|
||||||
|
;
|
||||||
|
; admin_toggle_conference_lock ; This action allows an Admin to toggle locking and
|
||||||
|
; unlocking the conference. Non admins can not use
|
||||||
|
; this action even if it is in their menu.
|
||||||
|
|
||||||
|
; set_as_single_video_src ; This action allows any user to set themselves as the
|
||||||
|
; single video source distributed to all participants.
|
||||||
|
; This will make the video feed stick to them regardless
|
||||||
|
; of what the video_mode is set to.
|
||||||
|
|
||||||
|
; release_as_single_video_src ; This action allows a user to release themselves as
|
||||||
|
; the video source. If video_mode is not set to "none"
|
||||||
|
; this action will result in the conference returning to
|
||||||
|
; whatever video mode the bridge profile is using.
|
||||||
|
;
|
||||||
|
; Note that this action will have no effect if the user
|
||||||
|
; is not currently the video source. Also, the user is
|
||||||
|
; not guaranteed by using this action that they will not
|
||||||
|
; become the video source again. The bridge will return
|
||||||
|
; to whatever operation the video_mode option is set to
|
||||||
|
; upon release of the video src.
|
||||||
|
|
||||||
|
; admin_toggle_mute_participants ; This action allows an administrator to toggle the mute
|
||||||
|
; state for all non-admins within a conference.
|
||||||
|
; Subsequent non-admins joining a muted conference will
|
||||||
|
; start muted. All admin users are unaffected by this
|
||||||
|
; option. Note that all users, regardless of their admin
|
||||||
|
; status, are notified that the conference is muted when
|
||||||
|
; the state is toggled.
|
||||||
|
|
||||||
|
; participant_count ; This action plays back the number of participants currently
|
||||||
|
; in a conference
|
||||||
|
|
||||||
|
[sample_user_menu]
|
||||||
|
type=menu
|
||||||
|
*=playback_and_continue(conf-usermenu)
|
||||||
|
*1=toggle_mute
|
||||||
|
1=toggle_mute
|
||||||
|
*4=decrease_listening_volume
|
||||||
|
4=decrease_listening_volume
|
||||||
|
*6=increase_listening_volume
|
||||||
|
6=increase_listening_volume
|
||||||
|
*7=decrease_talking_volume
|
||||||
|
7=decrease_talking_volume
|
||||||
|
*8=leave_conference
|
||||||
|
8=leave_conference
|
||||||
|
*9=increase_talking_volume
|
||||||
|
9=increase_talking_volume
|
||||||
|
|
||||||
|
[sample_admin_menu]
|
||||||
|
type=menu
|
||||||
|
*=playback_and_continue(conf-adminmenu)
|
||||||
|
*1=toggle_mute
|
||||||
|
1=toggle_mute
|
||||||
|
*2=admin_toggle_conference_lock ; only applied to admin users
|
||||||
|
2=admin_toggle_conference_lock ; only applied to admin users
|
||||||
|
*3=admin_kick_last ; only applied to admin users
|
||||||
|
3=admin_kick_last ; only applied to admin users
|
||||||
|
*4=decrease_listening_volume
|
||||||
|
4=decrease_listening_volume
|
||||||
|
*6=increase_listening_volume
|
||||||
|
6=increase_listening_volume
|
||||||
|
*7=decrease_talking_volume
|
||||||
|
7=decrease_talking_volume
|
||||||
|
*8=no_op
|
||||||
|
8=no_op
|
||||||
|
*9=increase_talking_volume
|
||||||
|
9=increase_talking_volume
|
||||||
5
dnsmgr.conf
Normal file
5
dnsmgr.conf
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
[general]
|
||||||
|
;enable=yes ; enable creation of managed DNS lookups
|
||||||
|
; default is 'no'
|
||||||
|
;refreshinterval=1200 ; refresh managed DNS lookups every <n> seconds
|
||||||
|
; default is 300 (5 minutes)
|
||||||
42
dsp.conf
Normal file
42
dsp.conf
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
[default]
|
||||||
|
;
|
||||||
|
; Length of sound (in milliseconds) before a period of silence is considered
|
||||||
|
; to be a change from talking to silence or a period of noise converts silence
|
||||||
|
; to talking. [default=256]
|
||||||
|
;
|
||||||
|
;silencethreshold=256
|
||||||
|
|
||||||
|
; DTMF Reverse Twist and Normal Twist is the difference in power between the row and column energies.
|
||||||
|
;
|
||||||
|
; Normal Twist is where the row energy is greater than the column energy.
|
||||||
|
; Reverse Twist is where the column energy is greater.
|
||||||
|
;
|
||||||
|
; Power level difference between frequencies for different Administrations/RPOAs
|
||||||
|
; Power Gain equiv
|
||||||
|
; normal reverse dB's
|
||||||
|
; AT&T(default) 6.31 2.51 8dB(normal), 4dB(reverse)
|
||||||
|
; NTT 3.16 3.16 Max. 5dB
|
||||||
|
; Danish 3.98 3.98 Max. 6dB
|
||||||
|
; Australian 10.0 10.0 Max. 10dB
|
||||||
|
; Brazilian 7.94 7.94 Max. 9dB
|
||||||
|
; ETSI 3.98 3.98 Max. 6dB
|
||||||
|
|
||||||
|
;previous version compatible AT&T values
|
||||||
|
; RADIO_RELAX disabled, and relaxdtmf=no
|
||||||
|
; 6.30 2.50 7.99dB(normal), 3.98dB(reverse)
|
||||||
|
; RADIO_RELAX disabled, and relaxdtmf=yes
|
||||||
|
; 6.30 4.00 7.99dB(normal), 6.02dB(reverse)
|
||||||
|
; RADIO_RELAX enabled, and relaxdtmf=no
|
||||||
|
; 6.30 2.50 7.99dB(normal), 3.984dB(reverse)
|
||||||
|
; RADIO_RELAX enabled, and relaxdtmf=yes
|
||||||
|
; 6.30 6.50 7.99dB(normal), 8.13dB(reverse)
|
||||||
|
|
||||||
|
;If you don't know what these mean, don't change them.
|
||||||
|
;dtmf_normal_twist=6.31
|
||||||
|
;dtmf_reverse_twist=2.51
|
||||||
|
;relax_dtmf_normal_twist=6.31
|
||||||
|
;relax_dtmf_reverse_twist=3.98
|
||||||
|
|
||||||
|
;successive number hits/misses of 12.75ms before a digit/nodigit is considered valid
|
||||||
|
;dtmf_hits_to_begin=2
|
||||||
|
;dtmf_misses_to_end=3
|
||||||
22
enum.conf
Normal file
22
enum.conf
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
;
|
||||||
|
; ENUM Configuration for resolving phone numbers over DNS
|
||||||
|
;
|
||||||
|
; Sample config for Asterisk
|
||||||
|
; This file is reloaded at "module reload enum" in the CLI
|
||||||
|
;
|
||||||
|
[general]
|
||||||
|
;
|
||||||
|
; The search list for domains may be customized. Domains are searched
|
||||||
|
; in the order they are listed here.
|
||||||
|
;
|
||||||
|
search => e164.arpa
|
||||||
|
;
|
||||||
|
; If you'd like to use the E.164.org public ENUM registry in addition
|
||||||
|
; to the official e164.arpa one, uncomment the following line
|
||||||
|
;
|
||||||
|
;search => e164.org
|
||||||
|
;
|
||||||
|
; As there are more H323 drivers available you have to select to which
|
||||||
|
; drive a H323 URI will map. Default is "H323".
|
||||||
|
;
|
||||||
|
h323driver => H323
|
||||||
111
extconfig.conf
Normal file
111
extconfig.conf
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
;
|
||||||
|
; Static and realtime external configuration
|
||||||
|
; engine configuration
|
||||||
|
;
|
||||||
|
; See https://wiki.asterisk.org/wiki/display/AST/Realtime+Database+Configuration
|
||||||
|
; for basic table formatting information.
|
||||||
|
;
|
||||||
|
[settings]
|
||||||
|
;
|
||||||
|
; Static configuration files:
|
||||||
|
;
|
||||||
|
; file.conf => driver,database[,table[,priority]]
|
||||||
|
;
|
||||||
|
; maps a particular configuration file to the given
|
||||||
|
; database driver, database and table (or uses the
|
||||||
|
; name of the file as the table if not specified)
|
||||||
|
;
|
||||||
|
; Uncomment to load queues.conf via the odbc engine.
|
||||||
|
;
|
||||||
|
;queues.conf => odbc,asterisk,ast_config
|
||||||
|
;extensions.conf => sqlite,asterisk,ast_config
|
||||||
|
;
|
||||||
|
; The following files CANNOT be loaded from Realtime storage:
|
||||||
|
; asterisk.conf
|
||||||
|
; extconfig.conf (this file)
|
||||||
|
; logger.conf
|
||||||
|
;
|
||||||
|
; Additionally, the following files cannot be loaded from
|
||||||
|
; Realtime storage unless the storage driver is loaded
|
||||||
|
; early using 'preload' statements in modules.conf:
|
||||||
|
; manager.conf
|
||||||
|
; cdr.conf
|
||||||
|
; rtp.conf
|
||||||
|
;
|
||||||
|
; Named ACLs specified in realtime also can not be used
|
||||||
|
; from manager.conf unless the storage driver is preloaded.
|
||||||
|
; Attempting to use a realtime stored named ACL before the
|
||||||
|
; driver is loaded will result in an invalid ACL which
|
||||||
|
; rejects all addresses.
|
||||||
|
;
|
||||||
|
; Realtime configuration engine
|
||||||
|
;
|
||||||
|
; maps a particular family of realtime
|
||||||
|
; configuration to a given database driver,
|
||||||
|
; database and table (or uses the name of
|
||||||
|
; the family if the table is not specified
|
||||||
|
;
|
||||||
|
;example => odbc,asterisk,alttable,1
|
||||||
|
;example => mysql,asterisk,alttable,2
|
||||||
|
;example2 => ldap,"dc=oxymium,dc=net",example2
|
||||||
|
;
|
||||||
|
; Additionally, priorities are now supported for use as failover methods
|
||||||
|
; for retrieving realtime data. If one connection fails to retrieve any
|
||||||
|
; information, the next sequential priority will be tried next. This
|
||||||
|
; especially works well with ODBC connections, since res_odbc now caches
|
||||||
|
; when connection failures occur and prevents immediately retrying those
|
||||||
|
; connections until after a specified timeout. Note: priorities must
|
||||||
|
; start at 1 and be sequential (i.e. if you have only priorities 1, 2,
|
||||||
|
; and 4, then 4 will be ignored, because there is no 3).
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; Possible driver backends:
|
||||||
|
;
|
||||||
|
; "odbc" is shown in the examples below, but is not the only valid realtime
|
||||||
|
; engine. Here are several of the possible options:
|
||||||
|
; odbc ... res_config_odbc
|
||||||
|
; sqlite ... res_config_sqlite
|
||||||
|
; sqlite3 ... res_config_sqlite3
|
||||||
|
; pgsql ... res_config_pgsql
|
||||||
|
; curl ... res_config_curl
|
||||||
|
; ldap ... res_config_ldap
|
||||||
|
; mysql ... res_config_mysql (available via add-ons in menuselect)
|
||||||
|
;
|
||||||
|
; Note: The res_config_pgsql and res_config_sqlite backends configure the
|
||||||
|
; database used in their respective configuration files and ignore the
|
||||||
|
; database name configured in this file.
|
||||||
|
;
|
||||||
|
;iaxusers => odbc,asterisk
|
||||||
|
;iaxpeers => odbc,asterisk
|
||||||
|
;sippeers => odbc,asterisk
|
||||||
|
;sipregs => odbc,asterisk ; (avoid sipregs if possible, e.g. by using a view)
|
||||||
|
;ps_endpoints => odbc,asterisk
|
||||||
|
;ps_auths => odbc,asterisk
|
||||||
|
;ps_aors => odbc,asterisk
|
||||||
|
;ps_domain_aliases => odbc,asterisk
|
||||||
|
;ps_endpoint_id_ips => odbc,asterisk
|
||||||
|
;ps_outbound_publishes => odbc,asterisk
|
||||||
|
;ps_inbound_publications = odbc,asterisk
|
||||||
|
;ps_asterisk_publications = odbc,asterisk
|
||||||
|
;voicemail => odbc,asterisk
|
||||||
|
;extensions => odbc,asterisk
|
||||||
|
;meetme => mysql,general
|
||||||
|
;queues => odbc,asterisk
|
||||||
|
;queue_members => odbc,asterisk
|
||||||
|
;queue_rules => odbc,asterisk
|
||||||
|
;acls => odbc,asterisk
|
||||||
|
;musiconhold => mysql,general
|
||||||
|
;queue_log => mysql,general
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; While most dynamic realtime engines are automatically used when defined in
|
||||||
|
; this file, 'extensions', distinctively, is not. To activate dynamic realtime
|
||||||
|
; extensions, you must turn them on in each respective context within
|
||||||
|
; extensions.conf with a switch statement. The syntax is:
|
||||||
|
; switch => Realtime/[[db_context@]tablename]/<opts>
|
||||||
|
; The only option available currently is the 'p' option, which disallows
|
||||||
|
; extension pattern queries to the database. If you have no patterns defined
|
||||||
|
; in a particular context, this will save quite a bit of CPU time. However,
|
||||||
|
; note that using dynamic realtime extensions is not recommended anymore as a
|
||||||
|
; best practice; instead, you should consider writing a static dialplan with
|
||||||
|
; proper data abstraction via a tool like func_odbc.
|
||||||
456
extensions.ael
Normal file
456
extensions.ael
Normal file
@@ -0,0 +1,456 @@
|
|||||||
|
//
|
||||||
|
// Example AEL config file
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Static extension configuration file, used by
|
||||||
|
// the pbx_ael module. This is where you configure all your
|
||||||
|
// inbound and outbound calls in Asterisk.
|
||||||
|
//
|
||||||
|
// This configuration file is reloaded
|
||||||
|
// - With the "ael reload" command in the CLI
|
||||||
|
// - With the "reload" command (that reloads everything) in the CLI
|
||||||
|
|
||||||
|
// The "Globals" category contains global variables that can be referenced
|
||||||
|
// in the dialplan by using the GLOBAL dialplan function:
|
||||||
|
// ${GLOBAL(VARIABLE)}
|
||||||
|
// ${${GLOBAL(VARIABLE)}} or ${text${GLOBAL(VARIABLE)}} or any hybrid
|
||||||
|
// Unix/Linux environmental variables are reached with the ENV dialplan
|
||||||
|
// function: ${ENV(VARIABLE)}
|
||||||
|
//
|
||||||
|
|
||||||
|
// NOTE! NOTE! NOTE!
|
||||||
|
// Asterisk by default will load both extensions.conf and extensions.ael files.
|
||||||
|
// Upon loading these files the dialplans generated from both with be merged,
|
||||||
|
// so you must make sure that you don't have any overlapping contexts or global
|
||||||
|
// variables. If you do, then unexpected behavior may result when the data is
|
||||||
|
// merged.
|
||||||
|
// NOTE! NOTE! NOTE!
|
||||||
|
|
||||||
|
globals {
|
||||||
|
CONSOLE-AEL="Console/dsp"; // Console interface for demo
|
||||||
|
//CONSOLE-AEL=Zap/1;
|
||||||
|
//CONSOLE-AEL=Phone/phone0;
|
||||||
|
IAXINFO-AEL=guest; // IAXtel username/password
|
||||||
|
//IAXINFO-AEL="myuser:mypass";
|
||||||
|
OUTBOUND-TRUNK="Zap/g2"; // Trunk interface
|
||||||
|
//
|
||||||
|
// Note the 'g2' in the OUTBOUND-TRUNK variable above. It specifies which group (defined
|
||||||
|
// in chan_dahdi.conf) to dial, i.e. group 2, and how to choose a channel to use in
|
||||||
|
// the specified group. The four possible options are:
|
||||||
|
//
|
||||||
|
// g: select the lowest-numbered non-busy DAHDI channel
|
||||||
|
// (aka. ascending sequential hunt group).
|
||||||
|
// G: select the highest-numbered non-busy DAHDI channel
|
||||||
|
// (aka. descending sequential hunt group).
|
||||||
|
// r: use a round-robin search, starting at the next highest channel than last
|
||||||
|
// time (aka. ascending rotary hunt group).
|
||||||
|
// R: use a round-robin search, starting at the next lowest channel than last
|
||||||
|
// time (aka. descending rotary hunt group).
|
||||||
|
//
|
||||||
|
OUTBOUND-TRUNKMSD=1; // MSD digits to strip (usually 1 or 0)
|
||||||
|
//OUTBOUND-TRUNK2=IAX2/user:pass@provider;
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
// Any category other than "General" and "Globals" represent
|
||||||
|
// extension contexts, which are collections of extensions.
|
||||||
|
//
|
||||||
|
// Extension names may be numbers, letters, or combinations
|
||||||
|
// thereof. If an extension name is prefixed by a '_'
|
||||||
|
// character, it is interpreted as a pattern rather than a
|
||||||
|
// literal. In patterns, some characters have special meanings:
|
||||||
|
//
|
||||||
|
// X - any digit from 0-9
|
||||||
|
// Z - any digit from 1-9
|
||||||
|
// N - any digit from 2-9
|
||||||
|
// [1235-9] - any digit in the brackets (in this example, 1,2,3,5,6,7,8,9)
|
||||||
|
// . - wildcard, matches anything remaining (e.g. _9011. matches
|
||||||
|
// anything starting with 9011 excluding 9011 itself)
|
||||||
|
// ! - wildcard, causes the matching process to complete as soon as
|
||||||
|
// it can unambiguously determine that no other matches are possible
|
||||||
|
//
|
||||||
|
// For example the extension _NXXXXXX would match normal 7 digit dialings,
|
||||||
|
// while _1NXXNXXXXXX would represent an area code plus phone number
|
||||||
|
// preceded by a one.
|
||||||
|
//
|
||||||
|
// Each step of an extension is ordered by priority, which must
|
||||||
|
// always start with 1 to be considered a valid extension. The priority
|
||||||
|
// "next" or "n" means the previous priority plus one, regardless of whether
|
||||||
|
// the previous priority was associated with the current extension or not.
|
||||||
|
// The priority "same" or "s" means the same as the previously specified
|
||||||
|
// priority, again regardless of whether the previous entry was for the
|
||||||
|
// same extension. Priorities may be immediately followed by a plus sign
|
||||||
|
// and another integer to add that amount (most useful with 's' or 'n').
|
||||||
|
// Priorities may then also have an alias, or label, in
|
||||||
|
// parenthesis after their name which can be used in goto situations
|
||||||
|
//
|
||||||
|
// Contexts contain several lines, one for each step of each
|
||||||
|
// extension, which can take one of two forms as listed below,
|
||||||
|
// with the first form being preferred. One may include another
|
||||||
|
// context in the current one as well, optionally with a
|
||||||
|
// date and time. Included contexts are included in the order
|
||||||
|
// they are listed.
|
||||||
|
//
|
||||||
|
//context name {
|
||||||
|
// exten-name => {
|
||||||
|
// application(arg1,arg2,...);
|
||||||
|
//
|
||||||
|
// Timing list for includes is
|
||||||
|
//
|
||||||
|
// <time range>|<days of week>|<days of month>|<months>
|
||||||
|
//
|
||||||
|
// includes {
|
||||||
|
// daytime|9:00-17:00|mon-fri|*|*;
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// ignorepat can be used to instruct drivers to not cancel dialtone upon
|
||||||
|
// receipt of a particular pattern. The most commonly used example is
|
||||||
|
// of course '9' like this:
|
||||||
|
//
|
||||||
|
// ignorepat => 9;
|
||||||
|
//
|
||||||
|
// so that dialtone remains even after dialing a 9.
|
||||||
|
//};
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Sample entries for extensions.conf
|
||||||
|
//
|
||||||
|
//
|
||||||
|
context ael-dundi-e164-canonical {
|
||||||
|
//
|
||||||
|
// List canonical entries here
|
||||||
|
//
|
||||||
|
// 12564286000 => &ael-std-exten(6000,IAX2/foo);
|
||||||
|
// _125642860XX => Dial(IAX2/otherbox/${EXTEN:7});
|
||||||
|
};
|
||||||
|
|
||||||
|
context ael-dundi-e164-customers {
|
||||||
|
//
|
||||||
|
// If you are an ITSP or Reseller, list your customers here.
|
||||||
|
//
|
||||||
|
//_12564286000 => Dial(SIP/customer1);
|
||||||
|
//_12564286001 => Dial(IAX2/customer2);
|
||||||
|
};
|
||||||
|
|
||||||
|
context ael-dundi-e164-via-pstn {
|
||||||
|
//
|
||||||
|
// If you are freely delivering calls to the PSTN, list them here
|
||||||
|
//
|
||||||
|
//_1256428XXXX => Dial(DAHDI/G2/${EXTEN:7}); // Expose all of 256-428
|
||||||
|
//_1256325XXXX => Dial(DAHDI/G2/${EXTEN:7}); // Ditto for 256-325
|
||||||
|
};
|
||||||
|
|
||||||
|
context ael-dundi-e164-local {
|
||||||
|
//
|
||||||
|
// Context to put your dundi IAX2 or SIP user in for
|
||||||
|
// full access
|
||||||
|
//
|
||||||
|
includes {
|
||||||
|
ael-dundi-e164-canonical;
|
||||||
|
ael-dundi-e164-customers;
|
||||||
|
ael-dundi-e164-via-pstn;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
context ael-dundi-e164-switch {
|
||||||
|
//
|
||||||
|
// Just a wrapper for the switch
|
||||||
|
//
|
||||||
|
|
||||||
|
switches {
|
||||||
|
DUNDi/e164;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
context ael-dundi-e164-lookup {
|
||||||
|
//
|
||||||
|
// Locally to lookup, try looking for a local E.164 solution
|
||||||
|
// then try DUNDi if we don't have one.
|
||||||
|
//
|
||||||
|
includes {
|
||||||
|
ael-dundi-e164-local;
|
||||||
|
ael-dundi-e164-switch;
|
||||||
|
};
|
||||||
|
//
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
// DUNDi can also be implemented as a Macro instead of using
|
||||||
|
// the Local channel driver.
|
||||||
|
//
|
||||||
|
macro ael-dundi-e164(exten) {
|
||||||
|
//
|
||||||
|
// ARG1 is the extension to Dial
|
||||||
|
//
|
||||||
|
goto ${exten}|1;
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
// Here are the entries you need to participate in the IAXTEL
|
||||||
|
// call routing system. Most IAXTEL numbers begin with 1-700, but
|
||||||
|
// there are exceptions. For more information, and to sign
|
||||||
|
// up, please go to www.gnophone.com or www.iaxtel.com
|
||||||
|
//
|
||||||
|
context ael-iaxtel700 {
|
||||||
|
_91700XXXXXXX => Dial(IAX2/${IAXINFO-AEL}@iaxtel.com/${EXTEN:1}@iaxtel);
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
// The SWITCH statement permits a server to share the dialplan with
|
||||||
|
// another server. Use with care: Reciprocal switch statements are not
|
||||||
|
// allowed (e.g. both A -> B and B -> A), and the switched server needs
|
||||||
|
// to be on-line or else dialing can be severly delayed.
|
||||||
|
//
|
||||||
|
context ael-iaxprovider {
|
||||||
|
switches {
|
||||||
|
// IAX2/user:[key]@myserver/mycontext;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
context ael-trunkint {
|
||||||
|
//
|
||||||
|
// International long distance through trunk
|
||||||
|
//
|
||||||
|
includes {
|
||||||
|
ael-dundi-e164-lookup;
|
||||||
|
};
|
||||||
|
_9011. => {
|
||||||
|
&ael-dundi-e164(${EXTEN:4});
|
||||||
|
Dial(${OUTBOUND-TRUNK}/${EXTEN:${OUTBOUND-TRUNKMSD}});
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
context ael-trunkld {
|
||||||
|
//
|
||||||
|
// Long distance context accessed through trunk
|
||||||
|
//
|
||||||
|
includes {
|
||||||
|
ael-dundi-e164-lookup;
|
||||||
|
};
|
||||||
|
_91NXXNXXXXXX => {
|
||||||
|
&ael-dundi-e164(${EXTEN:1});
|
||||||
|
Dial(${OUTBOUND-TRUNK}/${EXTEN:${OUTBOUND-TRUNKMSD}});
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
context ael-trunklocal {
|
||||||
|
//
|
||||||
|
// Local seven-digit dialing accessed through trunk interface
|
||||||
|
//
|
||||||
|
_9NXXXXXX => {
|
||||||
|
Dial(${OUTBOUND-TRUNK}/${EXTEN:${OUTBOUND-TRUNKMSD}});
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
context ael-trunktollfree {
|
||||||
|
//
|
||||||
|
// Long distance context accessed through trunk interface
|
||||||
|
//
|
||||||
|
|
||||||
|
_91800NXXXXXX => Dial(${OUTBOUND-TRUNK}/${EXTEN:${OUTBOUND-TRUNKMSD}});
|
||||||
|
_91888NXXXXXX => Dial(${OUTBOUND-TRUNK}/${EXTEN:${OUTBOUND-TRUNKMSD}});
|
||||||
|
_91877NXXXXXX => Dial(${OUTBOUND-TRUNK}/${EXTEN:${OUTBOUND-TRUNKMSD}});
|
||||||
|
_91866NXXXXXX => Dial(${OUTBOUND-TRUNK}/${EXTEN:${OUTBOUND-TRUNKMSD}});
|
||||||
|
};
|
||||||
|
|
||||||
|
context ael-international {
|
||||||
|
//
|
||||||
|
// Master context for international long distance
|
||||||
|
//
|
||||||
|
ignorepat => 9;
|
||||||
|
includes {
|
||||||
|
ael-longdistance;
|
||||||
|
ael-trunkint;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
context ael-longdistance {
|
||||||
|
//
|
||||||
|
// Master context for long distance
|
||||||
|
//
|
||||||
|
ignorepat => 9;
|
||||||
|
includes {
|
||||||
|
ael-local;
|
||||||
|
ael-trunkld;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
context ael-local {
|
||||||
|
//
|
||||||
|
// Master context for local, toll-free, and iaxtel calls only
|
||||||
|
//
|
||||||
|
ignorepat => 9;
|
||||||
|
includes {
|
||||||
|
ael-default;
|
||||||
|
ael-trunklocal;
|
||||||
|
ael-iaxtel700;
|
||||||
|
ael-trunktollfree;
|
||||||
|
ael-iaxprovider;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
// You can use an alternative switch type as well, to resolve
|
||||||
|
// extensions that are not known here, for example with remote
|
||||||
|
// IAX switching you transparently get access to the remote
|
||||||
|
// Asterisk PBX
|
||||||
|
//
|
||||||
|
// switch => IAX2/user:password@bigserver/local
|
||||||
|
//
|
||||||
|
// An "lswitch" is like a switch but is literal, in that
|
||||||
|
// variable substitution is not performed at load time
|
||||||
|
// but is passed to the switch directly (presumably to
|
||||||
|
// be substituted in the switch routine itself)
|
||||||
|
//
|
||||||
|
// lswitch => Loopback/12${EXTEN}@othercontext
|
||||||
|
//
|
||||||
|
// An "eswitch" is like a switch but the evaluation of
|
||||||
|
// variable substitution is performed at runtime before
|
||||||
|
// being passed to the switch routine.
|
||||||
|
//
|
||||||
|
// eswitch => IAX2/context@${CURSERVER}
|
||||||
|
|
||||||
|
|
||||||
|
macro ael-std-exten-ael( ext , dev ) {
|
||||||
|
Dial(${dev}/${ext},20);
|
||||||
|
switch(${DIALSTATUS}) {
|
||||||
|
case BUSY:
|
||||||
|
Voicemail(${ext},b);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Voicemail(${ext},u);
|
||||||
|
};
|
||||||
|
catch a {
|
||||||
|
VoiceMailMain(${ext});
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
context ael-demo {
|
||||||
|
s => {
|
||||||
|
Wait(1);
|
||||||
|
Answer();
|
||||||
|
Set(TIMEOUT(digit)=5);
|
||||||
|
Set(TIMEOUT(response)=10);
|
||||||
|
restart:
|
||||||
|
Background(demo-congrats);
|
||||||
|
instructions:
|
||||||
|
for (x=0; ${x} < 3; x=${x} + 1) {
|
||||||
|
Background(demo-instruct);
|
||||||
|
WaitExten();
|
||||||
|
};
|
||||||
|
};
|
||||||
|
2 => {
|
||||||
|
Background(demo-moreinfo);
|
||||||
|
goto s|instructions;
|
||||||
|
};
|
||||||
|
3 => {
|
||||||
|
Set(LANGUAGE()=fr);
|
||||||
|
goto s|restart;
|
||||||
|
};
|
||||||
|
1000 => {
|
||||||
|
goto ael-default|s|1;
|
||||||
|
};
|
||||||
|
500 => {
|
||||||
|
Playback(demo-abouttotry);
|
||||||
|
Dial(IAX2/guest@misery.digium.com/s@default);
|
||||||
|
Playback(demo-nogo);
|
||||||
|
goto s|instructions;
|
||||||
|
};
|
||||||
|
600 => {
|
||||||
|
Playback(demo-echotest);
|
||||||
|
Echo();
|
||||||
|
Playback(demo-echodone);
|
||||||
|
goto s|instructions;
|
||||||
|
};
|
||||||
|
_1234 => &ael-std-exten-ael(${EXTEN}, "IAX2");
|
||||||
|
8500 => {
|
||||||
|
VoicemailMain();
|
||||||
|
goto s|instructions;
|
||||||
|
};
|
||||||
|
# => {
|
||||||
|
Playback(demo-thanks);
|
||||||
|
Hangup();
|
||||||
|
};
|
||||||
|
t => goto #|1;
|
||||||
|
i => Playback(invalid);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// If you wish to use AEL for your default context, remove it
|
||||||
|
// from extensions.conf (or change its name or comment it out)
|
||||||
|
// and then uncomment the one here.
|
||||||
|
//
|
||||||
|
|
||||||
|
context ael-default {
|
||||||
|
|
||||||
|
// By default we include the demo. In a production system, you
|
||||||
|
// probably don't want to have the demo there.
|
||||||
|
|
||||||
|
includes {
|
||||||
|
ael-demo;
|
||||||
|
};
|
||||||
|
//
|
||||||
|
// Extensions like the two below can be used for FWD, Nikotel, sipgate etc.
|
||||||
|
// Note that you must have a [sipprovider] section in sip.conf whereas
|
||||||
|
// the otherprovider.net example does not require such a peer definition
|
||||||
|
//
|
||||||
|
//_41X. => Dial(SIP/${EXTEN:2}@sipprovider,,r);
|
||||||
|
//_42X. => Dial(SIP/user:passwd@${EXTEN:2}@otherprovider.net,30,rT);
|
||||||
|
|
||||||
|
// Real extensions would go here. Generally you want real extensions to be
|
||||||
|
// 4 or 5 digits long (although there is no such requirement) and start with a
|
||||||
|
// single digit that is fairly large (like 6 or 7) so that you have plenty of
|
||||||
|
// room to overlap extensions and menu options without conflict. You can alias
|
||||||
|
// them with names, too, and use global variables
|
||||||
|
|
||||||
|
// 6245 => {
|
||||||
|
// hint(SIP/Grandstream1&SIP/Xlite1,Joe Schmoe); // Channel hints for presence
|
||||||
|
// Dial(SIP/Grandstream1,20,rt); // permit transfer
|
||||||
|
// Dial(${HINT}/5245},20,rtT); // Use hint as listed
|
||||||
|
// switch(${DIALSTATUS}) {
|
||||||
|
// case BUSY:
|
||||||
|
// Voicemail(6245,b);
|
||||||
|
// return;
|
||||||
|
// default:
|
||||||
|
// Voicemail(6245,u);
|
||||||
|
// return;
|
||||||
|
// };
|
||||||
|
// };
|
||||||
|
|
||||||
|
// 6361 => Dial(IAX2/JaneDoe,,rm); // ring without time limit
|
||||||
|
// 6389 => Dial(MGCP/aaln/1@192.168.0.14);
|
||||||
|
// 6394 => Dial(Local/6275/n); // this will dial ${MARK}
|
||||||
|
|
||||||
|
// 6275 => &ael-stdexten(6275,${MARK}); // assuming ${MARK} is something like DAHDI/2
|
||||||
|
// mark => goto 6275|1; // alias mark to 6275
|
||||||
|
// 6536 => &ael-stdexten(6236,${WIL}); // Ditto for wil
|
||||||
|
// wil => goto 6236|1;
|
||||||
|
//
|
||||||
|
// Some other handy things are an extension for checking voicemail via
|
||||||
|
// voicemailmain
|
||||||
|
//
|
||||||
|
// 8500 => {
|
||||||
|
// VoicemailMain();
|
||||||
|
// Hangup();
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// Or a conference room (you'll need to edit meetme.conf to enable this room)
|
||||||
|
//
|
||||||
|
// 8600 => Meetme(1234);
|
||||||
|
//
|
||||||
|
// Or playing an announcement to the called party, as soon it answers
|
||||||
|
//
|
||||||
|
// 8700 => Dial(${MARK},30,A(/path/to/my/announcemsg))
|
||||||
|
//
|
||||||
|
// For more information on applications, just type "show applications" at your
|
||||||
|
// friendly Asterisk CLI prompt.
|
||||||
|
//
|
||||||
|
// 'show application <command>' will show details of how you
|
||||||
|
// use that particular application in this file, the dial plan.
|
||||||
|
//
|
||||||
|
}
|
||||||
862
extensions.conf
Normal file
862
extensions.conf
Normal file
@@ -0,0 +1,862 @@
|
|||||||
|
; extensions.conf - the Asterisk dial plan
|
||||||
|
;
|
||||||
|
; Static extension configuration file, used by
|
||||||
|
; the pbx_config module. This is where you configure all your
|
||||||
|
; inbound and outbound calls in Asterisk.
|
||||||
|
;
|
||||||
|
; This configuration file is reloaded
|
||||||
|
; - With the "dialplan reload" command in the CLI
|
||||||
|
; - With the "reload" command (that reloads everything) in the CLI
|
||||||
|
|
||||||
|
;
|
||||||
|
; The "General" category is for certain variables.
|
||||||
|
;
|
||||||
|
[general]
|
||||||
|
;
|
||||||
|
; If static is set to no, or omitted, then the pbx_config will rewrite
|
||||||
|
; this file when extensions are modified. Remember that all comments
|
||||||
|
; made in the file will be lost when that happens.
|
||||||
|
;
|
||||||
|
; XXX Not yet implemented XXX
|
||||||
|
;
|
||||||
|
static=yes
|
||||||
|
;
|
||||||
|
; if static=yes and writeprotect=no, you can save dialplan by
|
||||||
|
; CLI command "dialplan save" too
|
||||||
|
;
|
||||||
|
writeprotect=no
|
||||||
|
;
|
||||||
|
; If autofallthrough is set, then if an extension runs out of
|
||||||
|
; things to do, it will terminate the call with BUSY, CONGESTION
|
||||||
|
; or HANGUP depending on Asterisk's best guess. This is the default.
|
||||||
|
;
|
||||||
|
; If autofallthrough is not set, then if an extension runs out of
|
||||||
|
; things to do, Asterisk will wait for a new extension to be dialed
|
||||||
|
; (this is the original behavior of Asterisk 1.0 and earlier).
|
||||||
|
;
|
||||||
|
;autofallthrough=no
|
||||||
|
;
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; If extenpatternmatchnew is set (true, yes, etc), then a new algorithm that uses
|
||||||
|
; a Trie to find the best matching pattern is used. In dialplans
|
||||||
|
; with more than about 20-40 extensions in a single context, this
|
||||||
|
; new algorithm can provide a noticeable speedup.
|
||||||
|
; With 50 extensions, the speedup is 1.32x
|
||||||
|
; with 88 extensions, the speedup is 2.23x
|
||||||
|
; with 138 extensions, the speedup is 3.44x
|
||||||
|
; with 238 extensions, the speedup is 5.8x
|
||||||
|
; with 438 extensions, the speedup is 10.4x
|
||||||
|
; With 1000 extensions, the speedup is ~25x
|
||||||
|
; with 10,000 extensions, the speedup is 374x
|
||||||
|
; Basically, the new algorithm provides a flat response
|
||||||
|
; time, no matter the number of extensions.
|
||||||
|
;
|
||||||
|
; By default, the old pattern matcher is used.
|
||||||
|
;
|
||||||
|
; ****This is a new feature! *********************
|
||||||
|
; The new pattern matcher is for the brave, the bold, and
|
||||||
|
; the desperate. If you have large dialplans (more than about 50 extensions
|
||||||
|
; in a context), and/or high call volume, you might consider setting
|
||||||
|
; this value to "yes" !!
|
||||||
|
; Please, if you try this out, and are forced to return to the
|
||||||
|
; old pattern matcher, please report your reasons in a bug report
|
||||||
|
; on https://issues.asterisk.org. We have made good progress in providing
|
||||||
|
; something compatible with the old matcher; help us finish the job!
|
||||||
|
;
|
||||||
|
; This value can be switched at runtime using the cli command "dialplan set extenpatternmatchnew true"
|
||||||
|
; or "dialplan set extenpatternmatchnew false", so you can experiment to your hearts content.
|
||||||
|
;
|
||||||
|
;extenpatternmatchnew=no
|
||||||
|
;
|
||||||
|
; If clearglobalvars is set, global variables will be cleared
|
||||||
|
; and reparsed on a dialplan reload, or Asterisk reload.
|
||||||
|
;
|
||||||
|
; If clearglobalvars is not set, then global variables will persist
|
||||||
|
; through reloads, and even if deleted from the extensions.conf or
|
||||||
|
; one of its included files, will remain set to the previous value.
|
||||||
|
;
|
||||||
|
; NOTE: A complication sets in, if you put your global variables into
|
||||||
|
; the AEL file, instead of the extensions.conf file. With clearglobalvars
|
||||||
|
; set, a "reload" will often leave the globals vars cleared, because it
|
||||||
|
; is not unusual to have extensions.conf (which will have no globals)
|
||||||
|
; load after the extensions.ael file (where the global vars are stored).
|
||||||
|
; So, with "reload" in this particular situation, first the AEL file will
|
||||||
|
; clear and then set all the global vars, then, later, when the extensions.conf
|
||||||
|
; file is loaded, the global vars are all cleared, and then not set, because
|
||||||
|
; they are not stored in the extensions.conf file.
|
||||||
|
;
|
||||||
|
clearglobalvars=no
|
||||||
|
;
|
||||||
|
; User context is where entries from users.conf are registered. The
|
||||||
|
; default value is 'default'
|
||||||
|
;
|
||||||
|
;userscontext=default
|
||||||
|
;
|
||||||
|
; You can include other config files, use the #include command
|
||||||
|
; (without the ';'). Note that this is different from the "include" command
|
||||||
|
; that includes contexts within other contexts. The #include command works
|
||||||
|
; in all asterisk configuration files.
|
||||||
|
;#include "filename.conf"
|
||||||
|
;#include <filename.conf>
|
||||||
|
;#include filename.conf
|
||||||
|
;
|
||||||
|
; You can execute a program or script that produces config files, and they
|
||||||
|
; will be inserted where you insert the #exec command. The #exec command
|
||||||
|
; works on all asterisk configuration files. However, you will need to
|
||||||
|
; activate them within asterisk.conf with the "execincludes" option. They
|
||||||
|
; are otherwise considered a security risk.
|
||||||
|
;#exec /opt/bin/build-extra-contexts.sh
|
||||||
|
;#exec /opt/bin/build-extra-contexts.sh --foo="bar"
|
||||||
|
;#exec </opt/bin/build-extra-contexts.sh --foo="bar">
|
||||||
|
;#exec "/opt/bin/build-extra-contexts.sh --foo=\"bar\""
|
||||||
|
;
|
||||||
|
|
||||||
|
; The "Globals" category contains global variables that can be referenced
|
||||||
|
; in the dialplan with the GLOBAL dialplan function:
|
||||||
|
; ${GLOBAL(VARIABLE)}
|
||||||
|
; ${${GLOBAL(VARIABLE)}} or ${text${GLOBAL(VARIABLE)}} or any hybrid
|
||||||
|
; Unix/Linux environmental variables can be reached with the ENV dialplan
|
||||||
|
; function: ${ENV(VARIABLE)}
|
||||||
|
;
|
||||||
|
[globals]
|
||||||
|
CONSOLE=Console/dsp ; Console interface for demo
|
||||||
|
;CONSOLE=DAHDI/1
|
||||||
|
;CONSOLE=Phone/phone0
|
||||||
|
IAXINFO=guest ; IAXtel username/password
|
||||||
|
;IAXINFO=myuser:mypass
|
||||||
|
TRUNK=DAHDI/G2 ; Trunk interface
|
||||||
|
;
|
||||||
|
; Note the 'G2' in the TRUNK variable above. It specifies which group (defined
|
||||||
|
; in chan_dahdi.conf) to dial, i.e. group 2, and how to choose a channel to use
|
||||||
|
; in the specified group. The four possible options are:
|
||||||
|
;
|
||||||
|
; g: select the lowest-numbered non-busy DAHDI channel
|
||||||
|
; (aka. ascending sequential hunt group).
|
||||||
|
; G: select the highest-numbered non-busy DAHDI channel
|
||||||
|
; (aka. descending sequential hunt group).
|
||||||
|
; r: use a round-robin search, starting at the next highest channel than last
|
||||||
|
; time (aka. ascending rotary hunt group).
|
||||||
|
; R: use a round-robin search, starting at the next lowest channel than last
|
||||||
|
; time (aka. descending rotary hunt group).
|
||||||
|
;
|
||||||
|
TRUNKMSD=1 ; MSD digits to strip (usually 1 or 0)
|
||||||
|
;TRUNK=IAX2/user:pass@provider
|
||||||
|
|
||||||
|
;FREENUMDOMAIN=mydomain.com ; domain to send on outbound
|
||||||
|
; freenum calls (uses outbound-freenum
|
||||||
|
; context)
|
||||||
|
|
||||||
|
;
|
||||||
|
; WARNING WARNING WARNING WARNING
|
||||||
|
; If you load any other extension configuration engine, such as pbx_ael.so,
|
||||||
|
; your global variables may be overridden by that file. Please take care to
|
||||||
|
; use only one location to set global variables, and you will likely save
|
||||||
|
; yourself a ton of grief.
|
||||||
|
; WARNING WARNING WARNING WARNING
|
||||||
|
;
|
||||||
|
; Any category other than "General" and "Globals" represent
|
||||||
|
; extension contexts, which are collections of extensions.
|
||||||
|
;
|
||||||
|
; Extension names may be numbers, letters, or combinations
|
||||||
|
; thereof. If an extension name is prefixed by a '_'
|
||||||
|
; character, it is interpreted as a pattern rather than a
|
||||||
|
; literal. In patterns, some characters have special meanings:
|
||||||
|
;
|
||||||
|
; X - any digit from 0-9
|
||||||
|
; Z - any digit from 1-9
|
||||||
|
; N - any digit from 2-9
|
||||||
|
; [1235-9] - any digit in the brackets (in this example, 1,2,3,5,6,7,8,9)
|
||||||
|
; . - wildcard, matches anything remaining (e.g. _9011. matches
|
||||||
|
; anything starting with 9011 excluding 9011 itself)
|
||||||
|
; ! - wildcard, causes the matching process to complete as soon as
|
||||||
|
; it can unambiguously determine that no other matches are possible
|
||||||
|
;
|
||||||
|
; For example, the extension _NXXXXXX would match normal 7 digit dialings,
|
||||||
|
; while _1NXXNXXXXXX would represent an area code plus phone number
|
||||||
|
; preceded by a one.
|
||||||
|
;
|
||||||
|
; Each step of an extension is ordered by priority, which must always start
|
||||||
|
; with 1 to be considered a valid extension. The priority "next" or "n" means
|
||||||
|
; the previous priority plus one, regardless of whether the previous priority
|
||||||
|
; was associated with the current extension or not. The priority "same" or "s"
|
||||||
|
; means the same as the previously specified priority, again regardless of
|
||||||
|
; whether the previous entry was for the same extension. Priorities may be
|
||||||
|
; immediately followed by a plus sign and another integer to add that amount
|
||||||
|
; (most useful with 's' or 'n'). Priorities may then also have an alias, or
|
||||||
|
; label, in parentheses after their name which can be used in goto situations.
|
||||||
|
;
|
||||||
|
; Contexts contain several lines, one for each step of each extension. One may
|
||||||
|
; include another context in the current one as well, optionally with a date
|
||||||
|
; and time. Included contexts are included in the order they are listed.
|
||||||
|
; Switches may also be included within a context. The order of matching within
|
||||||
|
; a context is always exact extensions, pattern match extensions, includes, and
|
||||||
|
; switches. Includes are always processed depth-first. So for example, if you
|
||||||
|
; would like a switch "A" to match before context "B", simply put switch "A" in
|
||||||
|
; an included context "C", where "C" is included in your original context
|
||||||
|
; before "B".
|
||||||
|
;
|
||||||
|
;[context]
|
||||||
|
;
|
||||||
|
;autohints = yes
|
||||||
|
; If enabled for a context, a device state hint will be automatically created in
|
||||||
|
; the context with the name of the device and updated with device state changes.
|
||||||
|
;
|
||||||
|
;exten => someexten,{priority|label{+|-}offset}[(alias)],application(arg1,arg2,...)
|
||||||
|
;
|
||||||
|
; Timing list for includes is
|
||||||
|
;
|
||||||
|
; <time range>,<days of week>,<days of month>,<months>[,<timezone>]
|
||||||
|
;
|
||||||
|
; Note that ranges may be specified to wrap around the ends. Also, minutes are
|
||||||
|
; fine-grained only down to the closest even minute.
|
||||||
|
;
|
||||||
|
;include => daytime,9:00-17:00,mon-fri,*,*
|
||||||
|
;include => weekend,*,sat-sun,*,*
|
||||||
|
;include => weeknights,17:02-8:58,mon-fri,*,*
|
||||||
|
;
|
||||||
|
; ignorepat can be used to instruct drivers to not cancel dialtone upon receipt
|
||||||
|
; of a particular pattern. The most commonly used example is of course '9'
|
||||||
|
; like this:
|
||||||
|
;
|
||||||
|
;ignorepat => 9
|
||||||
|
;
|
||||||
|
; so that dialtone remains even after dialing a 9. Please note that ignorepat
|
||||||
|
; only works with channels which receive dialtone from the PBX, such as DAHDI,
|
||||||
|
; Phone, and VPB. Other channels, such as SIP and MGCP, which generate their
|
||||||
|
; own dialtone and converse with the PBX only after a number is complete, are
|
||||||
|
; generally unaffected by ignorepat (unless DISA or another method is used to
|
||||||
|
; generate a dialtone after answering the channel).
|
||||||
|
;
|
||||||
|
|
||||||
|
;
|
||||||
|
; Sample entries for extensions.conf
|
||||||
|
;
|
||||||
|
;
|
||||||
|
[dundi-e164-canonical]
|
||||||
|
;include => stdexten
|
||||||
|
;
|
||||||
|
; List canonical entries here
|
||||||
|
;
|
||||||
|
;exten => 12564286000,1,Gosub(6000,stdexten(IAX2/foo))
|
||||||
|
;exten => 12564286000,n,Goto(default,s,1) ; exited Voicemail
|
||||||
|
;exten => _125642860XX,1,Dial(IAX2/otherbox/${EXTEN:7})
|
||||||
|
|
||||||
|
[dundi-e164-customers]
|
||||||
|
;
|
||||||
|
; If you are an ITSP or Reseller, list your customers here.
|
||||||
|
;
|
||||||
|
;exten => _12564286000,1,Dial(SIP/customer1)
|
||||||
|
;exten => _12564286001,1,Dial(IAX2/customer2)
|
||||||
|
|
||||||
|
[dundi-e164-via-pstn]
|
||||||
|
;
|
||||||
|
; If you are freely delivering calls to the PSTN, list them here
|
||||||
|
;
|
||||||
|
;exten => _1256428XXXX,1,Dial(DAHDI/G2/${EXTEN:7}) ; Expose all of 256-428
|
||||||
|
;exten => _1256325XXXX,1,Dial(DAHDI/G2/${EXTEN:7}) ; Ditto for 256-325
|
||||||
|
|
||||||
|
[dundi-e164-local]
|
||||||
|
;
|
||||||
|
; Context to put your dundi IAX2 or SIP user in for
|
||||||
|
; full access
|
||||||
|
;
|
||||||
|
include => dundi-e164-canonical
|
||||||
|
include => dundi-e164-customers
|
||||||
|
include => dundi-e164-via-pstn
|
||||||
|
|
||||||
|
[dundi-e164-switch]
|
||||||
|
;
|
||||||
|
; Just a wrapper for the switch
|
||||||
|
;
|
||||||
|
switch => DUNDi/e164
|
||||||
|
|
||||||
|
[dundi-e164-lookup]
|
||||||
|
;
|
||||||
|
; Locally to lookup, try looking for a local E.164 solution
|
||||||
|
; then try DUNDi if we don't have one.
|
||||||
|
;
|
||||||
|
include => dundi-e164-local
|
||||||
|
include => dundi-e164-switch
|
||||||
|
;
|
||||||
|
; DUNDi can also be implemented as a Macro instead of using
|
||||||
|
; the Local channel driver.
|
||||||
|
;
|
||||||
|
[macro-dundi-e164]
|
||||||
|
;
|
||||||
|
; ARG1 is the extension to Dial
|
||||||
|
;
|
||||||
|
; Extension "s" is not a wildcard extension that matches "anything".
|
||||||
|
; In macros, it is the start extension. In most other cases,
|
||||||
|
; you have to goto "s" to execute that extension.
|
||||||
|
;
|
||||||
|
; Note: In old versions of Asterisk the PBX in some cases defaulted to
|
||||||
|
; extension "s" when a given extension was wrong (like in AMI originate).
|
||||||
|
; This is no longer the case.
|
||||||
|
;
|
||||||
|
; For wildcard matches, see above - all pattern matches start with
|
||||||
|
; an underscore.
|
||||||
|
exten => s,1,Goto(${ARG1},1)
|
||||||
|
include => dundi-e164-lookup
|
||||||
|
|
||||||
|
;
|
||||||
|
; Here are the entries you need to participate in the IAXTEL
|
||||||
|
; call routing system. Most IAXTEL numbers begin with 1-700, but
|
||||||
|
; there are exceptions. For more information, and to sign
|
||||||
|
; up, please go to www.gnophone.com or www.iaxtel.com
|
||||||
|
;
|
||||||
|
[iaxtel700]
|
||||||
|
exten => _91700XXXXXXX,1,Dial(IAX2/${GLOBAL(IAXINFO)}@iaxtel.com/${EXTEN:1}@iaxtel)
|
||||||
|
|
||||||
|
;
|
||||||
|
; The SWITCH statement permits a server to share the dialplan with
|
||||||
|
; another server. Use with care: Reciprocal switch statements are not
|
||||||
|
; allowed (e.g. both A -> B and B -> A), and the switched server needs
|
||||||
|
; to be on-line or else dialing can be severly delayed.
|
||||||
|
;
|
||||||
|
[iaxprovider]
|
||||||
|
;switch => IAX2/user:[key]@myserver/mycontext
|
||||||
|
|
||||||
|
[trunkint]
|
||||||
|
;
|
||||||
|
; International long distance through trunk
|
||||||
|
;
|
||||||
|
exten => _9011.,1,Macro(dundi-e164,${EXTEN:4})
|
||||||
|
exten => _9011.,n,Dial(${GLOBAL(TRUNK)}/${FILTER(0-9,${EXTEN:${GLOBAL(TRUNKMSD)}})})
|
||||||
|
|
||||||
|
[trunkld]
|
||||||
|
;
|
||||||
|
; Long distance context accessed through trunk
|
||||||
|
;
|
||||||
|
exten => _91NXXNXXXXXX,1,Macro(dundi-e164,${EXTEN:1})
|
||||||
|
exten => _91NXXNXXXXXX,n,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})
|
||||||
|
|
||||||
|
[trunklocal]
|
||||||
|
;
|
||||||
|
; Local seven-digit dialing accessed through trunk interface
|
||||||
|
;
|
||||||
|
exten => _9NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})
|
||||||
|
|
||||||
|
[trunktollfree]
|
||||||
|
;
|
||||||
|
; Long distance context accessed through trunk interface
|
||||||
|
;
|
||||||
|
exten => _91800NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})
|
||||||
|
exten => _91888NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})
|
||||||
|
exten => _91877NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})
|
||||||
|
exten => _91866NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})
|
||||||
|
|
||||||
|
[international]
|
||||||
|
;
|
||||||
|
; Master context for international long distance
|
||||||
|
;
|
||||||
|
ignorepat => 9
|
||||||
|
include => longdistance
|
||||||
|
include => trunkint
|
||||||
|
|
||||||
|
[longdistance]
|
||||||
|
;
|
||||||
|
; Master context for long distance
|
||||||
|
;
|
||||||
|
ignorepat => 9
|
||||||
|
include => local
|
||||||
|
include => trunkld
|
||||||
|
|
||||||
|
[local]
|
||||||
|
;
|
||||||
|
; Master context for local, toll-free, and iaxtel calls only
|
||||||
|
;
|
||||||
|
ignorepat => 9
|
||||||
|
include => default
|
||||||
|
include => trunklocal
|
||||||
|
include => iaxtel700
|
||||||
|
include => trunktollfree
|
||||||
|
include => iaxprovider
|
||||||
|
|
||||||
|
;Include parkedcalls (or the context you define in features conf)
|
||||||
|
;to enable call parking.
|
||||||
|
include => parkedcalls
|
||||||
|
;
|
||||||
|
; You can use an alternative switch type as well, to resolve
|
||||||
|
; extensions that are not known here, for example with remote
|
||||||
|
; IAX switching you transparently get access to the remote
|
||||||
|
; Asterisk PBX
|
||||||
|
;
|
||||||
|
; switch => IAX2/user:password@bigserver/local
|
||||||
|
;
|
||||||
|
; An "lswitch" is like a switch but is literal, in that
|
||||||
|
; variable substitution is not performed at load time
|
||||||
|
; but is passed to the switch directly (presumably to
|
||||||
|
; be substituted in the switch routine itself)
|
||||||
|
;
|
||||||
|
; lswitch => Loopback/12${EXTEN}@othercontext
|
||||||
|
;
|
||||||
|
; An "eswitch" is like a switch but the evaluation of
|
||||||
|
; variable substitution is performed at runtime before
|
||||||
|
; being passed to the switch routine.
|
||||||
|
;
|
||||||
|
; eswitch => IAX2/context@${CURSERVER}
|
||||||
|
|
||||||
|
; The following two contexts are a template to enable the ability to dial
|
||||||
|
; ISN numbers. For more information about what an ISN number is, please see
|
||||||
|
; http://www.freenum.org.
|
||||||
|
;
|
||||||
|
; This is the dialing hook. use:
|
||||||
|
; include => outbound-freenum
|
||||||
|
|
||||||
|
[outbound-freenum]
|
||||||
|
; We'll add more digits as needed. The purpose is to dial things
|
||||||
|
; like extension numbers at domains (ITAD number) so we're matching
|
||||||
|
; on lengths of 1 through 6 prior to the separator (the asterisk [*])
|
||||||
|
;
|
||||||
|
exten => _X*X!,1,Goto(outbound-freenum2,${EXTEN},1)
|
||||||
|
exten => _XX*X!,1,Goto(outbound-freenum2,${EXTEN},1)
|
||||||
|
exten => _XXX*X!,1,Goto(outbound-freenum2,${EXTEN},1)
|
||||||
|
exten => _XXXX*X!,1,Goto(outbound-freenum2,${EXTEN},1)
|
||||||
|
exten => _XXXXX*X!,1,Goto(outbound-freenum2,${EXTEN},1)
|
||||||
|
exten => _XXXXXX*X!,1,Goto(outbound-freenum2,${EXTEN},1)
|
||||||
|
|
||||||
|
[outbound-freenum2]
|
||||||
|
; This is the handler which performs the dialing logic. It is called
|
||||||
|
; from the [outbound-freenum] context
|
||||||
|
;
|
||||||
|
exten => _X!,1,Verbose(2,Performing ISN lookup for ${EXTEN})
|
||||||
|
same => n,Set(SUFFIX=${CUT(EXTEN,*,2-)}) ; make sure the suffix is all digits as well
|
||||||
|
same => n,GotoIf($["${FILTER(0-9,${SUFFIX})}" != "${SUFFIX}"]?fn-CONGESTION,1)
|
||||||
|
; filter out bad characters per the README-SERIOUSLY.best-practices.txt document
|
||||||
|
same => n,Set(TIMEOUT(absolute)=10800)
|
||||||
|
same => n,Set(isnresult=${ENUMLOOKUP(${EXTEN},sip,,1,freenum.org)}) ; perform our lookup with freenum.org
|
||||||
|
same => n,GotoIf($["${isnresult}" != ""]?from)
|
||||||
|
same => n,Set(DIALSTATUS=CONGESTION)
|
||||||
|
same => n,Goto(fn-CONGESTION,1)
|
||||||
|
same => n(from),Set(__SIPFROMUSER=${CALLERID(num)})
|
||||||
|
same => n,GotoIf($["${GLOBAL(FREENUMDOMAIN)}" = ""]?dial) ; check if we set the FREENUMDOMAIN global variable in [global]
|
||||||
|
same => n,Set(__SIPFROMDOMAIN=${GLOBAL(FREENUMDOMAIN)}) ; if we did set it, then we'll use it for our outbound dialing domain
|
||||||
|
same => n(dial),Dial(SIP/${isnresult},40)
|
||||||
|
same => n,Goto(fn-${DIALSTATUS},1)
|
||||||
|
|
||||||
|
exten => fn-BUSY,1,Busy()
|
||||||
|
|
||||||
|
exten => _f[n]-.,1,NoOp(ISN: ${DIALSTATUS})
|
||||||
|
same => n,Congestion()
|
||||||
|
|
||||||
|
[macro-trunkdial]
|
||||||
|
;
|
||||||
|
; Standard trunk dial macro (hangs up on a dialstatus that should
|
||||||
|
; terminate call)
|
||||||
|
; ${ARG1} - What to dial
|
||||||
|
;
|
||||||
|
exten => s,1,Dial(${ARG1})
|
||||||
|
exten => s,n,Goto(s-${DIALSTATUS},1)
|
||||||
|
exten => s-NOANSWER,1,Hangup()
|
||||||
|
exten => s-BUSY,1,Hangup()
|
||||||
|
exten => _s-.,1,NoOp
|
||||||
|
|
||||||
|
[stdexten]
|
||||||
|
;
|
||||||
|
; Standard extension subroutine:
|
||||||
|
; ${EXTEN} - Extension
|
||||||
|
; ${ARG1} - Device(s) to ring
|
||||||
|
; ${ARG2} - Optional context in Voicemail
|
||||||
|
;
|
||||||
|
; Note that the current version will drop through to the next priority in the
|
||||||
|
; case of their pressing '#'. This gives more flexibility in what do to next:
|
||||||
|
; you can prompt for a new extension, or drop the call, or send them to a
|
||||||
|
; general delivery mailbox, or...
|
||||||
|
;
|
||||||
|
; The use of the LOCAL() function is purely for convenience. Any variable
|
||||||
|
; initially declared as LOCAL() will disappear when the innermost Gosub context
|
||||||
|
; in which it was declared returns. Note also that you can declare a LOCAL()
|
||||||
|
; variable on top of an existing variable, and its value will revert to its
|
||||||
|
; previous value (before being declared as LOCAL()) upon Return.
|
||||||
|
;
|
||||||
|
exten => _X.,50000(stdexten),NoOp(Start stdexten)
|
||||||
|
exten => _X.,n,Set(LOCAL(ext)=${EXTEN})
|
||||||
|
exten => _X.,n,Set(LOCAL(dev)=${ARG1})
|
||||||
|
exten => _X.,n,Set(LOCAL(cntx)=${ARG2})
|
||||||
|
exten => _X.,n,Set(LOCAL(mbx)=${ext}${IF($[!${ISNULL(${cntx})}]?@${cntx})})
|
||||||
|
exten => _X.,n,Dial(${dev},20) ; Ring the interface, 20 seconds maximum
|
||||||
|
exten => _X.,n,Goto(stdexten-${DIALSTATUS},1) ; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER)
|
||||||
|
|
||||||
|
exten => stdexten-NOANSWER,1,VoiceMail(${mbx},u) ; If unavailable, send to voicemail w/ unavail announce
|
||||||
|
exten => stdexten-NOANSWER,n,Return() ; If they press #, return to start
|
||||||
|
|
||||||
|
exten => stdexten-BUSY,1,VoiceMail(${mbx},b) ; If busy, send to voicemail w/ busy announce
|
||||||
|
exten => stdexten-BUSY,n,Return() ; If they press #, return to start
|
||||||
|
|
||||||
|
exten => _stde[x]te[n]-.,1,Goto(stdexten-NOANSWER,1) ; Treat anything else as no answer
|
||||||
|
|
||||||
|
exten => a,1,VoiceMailMain(${mbx}) ; If they press *, send the user into VoicemailMain
|
||||||
|
exten => a,n,Return()
|
||||||
|
|
||||||
|
[stdPrivacyexten]
|
||||||
|
;
|
||||||
|
; Standard extension subroutine:
|
||||||
|
; ${ARG1} - Extension
|
||||||
|
; ${ARG2} - Device(s) to ring
|
||||||
|
; ${ARG3} - Optional DONTCALL context name to jump to (assumes the s,1 extension-priority)
|
||||||
|
; ${ARG4} - Optional TORTURE context name to jump to (assumes the s,1 extension-priority)`
|
||||||
|
; ${ARG5} - Context in voicemail (if empty, then "default")
|
||||||
|
;
|
||||||
|
; See above note in stdexten about priority handling on exit.
|
||||||
|
;
|
||||||
|
exten => _X.,60000(stdPrivacyexten),NoOp(Start stdPrivacyexten)
|
||||||
|
exten => _X.,n,Set(LOCAL(ext)=${ARG1})
|
||||||
|
exten => _X.,n,Set(LOCAL(dev)=${ARG2})
|
||||||
|
exten => _X.,n,Set(LOCAL(dontcntx)=${ARG3})
|
||||||
|
exten => _X.,n,Set(LOCAL(tortcntx)=${ARG4})
|
||||||
|
exten => _X.,n,Set(LOCAL(cntx)=${ARG5})
|
||||||
|
|
||||||
|
exten => _X.,n,Set(LOCAL(mbx)="${ext}"$["${cntx}" ? "@${cntx}" :: ""])
|
||||||
|
exten => _X.,n,Dial(${dev},20,p) ; Ring the interface, 20 seconds maximum, call screening
|
||||||
|
; option (or use P for databased call _X.creening)
|
||||||
|
exten => _X.,n,Goto(stdexten-${DIALSTATUS},1) ; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER)
|
||||||
|
|
||||||
|
exten => stdexten-NOANSWER,1,VoiceMail(${mbx},u) ; If unavailable, send to voicemail w/ unavail announce
|
||||||
|
exten => stdexten-NOANSWER,n,NoOp(Finish stdPrivacyexten NOANSWER)
|
||||||
|
exten => stdexten-NOANSWER,n,Return() ; If they press #, return to start
|
||||||
|
|
||||||
|
exten => stdexten-BUSY,1,VoiceMail(${mbx},b) ; If busy, send to voicemail w/ busy announce
|
||||||
|
exten => stdexten-BUSY,n,NoOp(Finish stdPrivacyexten BUSY)
|
||||||
|
exten => stdexten-BUSY,n,Return() ; If they press #, return to start
|
||||||
|
|
||||||
|
exten => stdexten-DONTCALL,1,Goto(${dontcntx},s,1) ; Callee chose to send this call to a polite "Don't call again" script.
|
||||||
|
|
||||||
|
exten => stdexten-TORTURE,1,Goto(${tortcntx},s,1) ; Callee chose to send this call to a telemarketer torture script.
|
||||||
|
|
||||||
|
exten => _stde[x]te[n]-.,1,Goto(stdexten-NOANSWER,1) ; Treat anything else as no answer
|
||||||
|
|
||||||
|
exten => a,1,VoiceMailMain(${mbx}) ; If they press *, send the user into VoicemailMain
|
||||||
|
exten => a,n,Return()
|
||||||
|
|
||||||
|
[macro-page]
|
||||||
|
;
|
||||||
|
; Paging macro:
|
||||||
|
;
|
||||||
|
; Check to see if SIP device is in use and DO NOT PAGE if they are
|
||||||
|
;
|
||||||
|
; ${ARG1} - Device to page
|
||||||
|
|
||||||
|
exten => s,1,ChanIsAvail(${ARG1},s) ; s is for ANY call
|
||||||
|
exten => s,n,GotoIf($[${AVAILSTATUS} = "1"]?autoanswer:fail)
|
||||||
|
exten => s,n(autoanswer),Set(_ALERT_INFO="RA") ; This is for the PolyComs
|
||||||
|
exten => s,n,SIPAddHeader(Call-Info: Answer-After=0) ; This is for the Grandstream, Snoms, and Others
|
||||||
|
exten => s,n,NoOp() ; Add others here and Post on the Wiki!!!!
|
||||||
|
exten => s,n,Dial(${ARG1})
|
||||||
|
exten => s,n(fail),Hangup()
|
||||||
|
|
||||||
|
|
||||||
|
[demo]
|
||||||
|
include => stdexten
|
||||||
|
;
|
||||||
|
; We start with what to do when a call first comes in.
|
||||||
|
;
|
||||||
|
exten => s,1,Wait(1) ; Wait a second, just for fun
|
||||||
|
exten => s,n,Answer() ; Answer the line
|
||||||
|
exten => s,n,Set(TIMEOUT(digit)=5) ; Set Digit Timeout to 5 seconds
|
||||||
|
exten => s,n,Set(TIMEOUT(response)=10) ; Set Response Timeout to 10 seconds
|
||||||
|
exten => s,n(restart),BackGround(demo-congrats) ; Play a congratulatory message
|
||||||
|
exten => s,n(instruct),BackGround(demo-instruct) ; Play some instructions
|
||||||
|
exten => s,n,WaitExten() ; Wait for an extension to be dialed.
|
||||||
|
|
||||||
|
exten => 2,1,BackGround(demo-moreinfo) ; Give some more information.
|
||||||
|
exten => 2,n,Goto(s,instruct)
|
||||||
|
|
||||||
|
exten => 3,1,Set(CHANNEL(language)=fr) ; Set language to french
|
||||||
|
exten => 3,n,Goto(s,restart) ; Start with the congratulations
|
||||||
|
|
||||||
|
exten => 1000,1,Goto(default,s,1)
|
||||||
|
;
|
||||||
|
; We also create an example user, 1234, who is on the console and has
|
||||||
|
; voicemail, etc.
|
||||||
|
;
|
||||||
|
exten => 1234,1,Playback(transfer,skip) ; "Please hold while..."
|
||||||
|
; (but skip if channel is not up)
|
||||||
|
exten => 1234,n,Gosub(${EXTEN},stdexten(${GLOBAL(CONSOLE)}))
|
||||||
|
exten => 1234,n,Goto(default,s,1) ; exited Voicemail
|
||||||
|
|
||||||
|
exten => 1235,1,VoiceMail(1234,u) ; Right to voicemail
|
||||||
|
|
||||||
|
exten => 1236,1,Dial(Console/dsp) ; Ring forever
|
||||||
|
exten => 1236,n,VoiceMail(1234,b) ; Unless busy
|
||||||
|
|
||||||
|
;
|
||||||
|
; # for when they're done with the demo
|
||||||
|
;
|
||||||
|
exten => #,1,Playback(demo-thanks) ; "Thanks for trying the demo"
|
||||||
|
exten => #,n,Hangup() ; Hang them up.
|
||||||
|
|
||||||
|
;
|
||||||
|
; A timeout and "invalid extension rule"
|
||||||
|
;
|
||||||
|
exten => t,1,Goto(#,1) ; If they take too long, give up
|
||||||
|
exten => i,1,Playback(invalid) ; "That's not valid, try again"
|
||||||
|
|
||||||
|
;
|
||||||
|
; Create an extension, 500, for dialing the
|
||||||
|
; Asterisk demo.
|
||||||
|
;
|
||||||
|
exten => 500,1,Playback(demo-abouttotry) ; Let them know what's going on
|
||||||
|
exten => 500,n,Dial(IAX2/guest@pbx.digium.com/s@default) ; Call the Asterisk demo
|
||||||
|
exten => 500,n,Playback(demo-nogo) ; Couldn't connect to the demo site
|
||||||
|
exten => 500,n,Goto(s,6) ; Return to the start over message.
|
||||||
|
|
||||||
|
;
|
||||||
|
; Create an extension, 600, for evaluating echo latency.
|
||||||
|
;
|
||||||
|
exten => 600,1,Playback(demo-echotest) ; Let them know what's going on
|
||||||
|
exten => 600,n,Echo() ; Do the echo test
|
||||||
|
exten => 600,n,Playback(demo-echodone) ; Let them know it's over
|
||||||
|
exten => 600,n,Goto(s,6) ; Start over
|
||||||
|
|
||||||
|
;
|
||||||
|
; You can use the Macro Page to intercom a individual user
|
||||||
|
exten => 76245,1,Macro(page,SIP/Grandstream1)
|
||||||
|
; or if your peernames are the same as extensions
|
||||||
|
exten => _7XXX,1,Macro(page,SIP/${EXTEN})
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; System Wide Page at extension 7999
|
||||||
|
;
|
||||||
|
exten => 7999,1,Set(TIMEOUT(absolute)=60)
|
||||||
|
exten => 7999,2,Page(Local/Grandstream1@page&Local/Xlite1@page&Local/1234@page/n,d)
|
||||||
|
|
||||||
|
; Give voicemail at extension 8500
|
||||||
|
;
|
||||||
|
exten => 8500,1,VoiceMailMain()
|
||||||
|
exten => 8500,n,Goto(s,6)
|
||||||
|
;
|
||||||
|
; Here's what a phone entry would look like (IXJ for example)
|
||||||
|
;
|
||||||
|
;exten => 1265,1,Dial(Phone/phone0,15)
|
||||||
|
;exten => 1265,n,Goto(s,5)
|
||||||
|
|
||||||
|
;
|
||||||
|
; The page context calls up the page macro that sets variables needed for auto-answer
|
||||||
|
; It is in is own context to make calling it from the Page() application as simple as
|
||||||
|
; Local/{peername}@page
|
||||||
|
;
|
||||||
|
[page]
|
||||||
|
exten => _X.,1,Macro(page,SIP/${EXTEN})
|
||||||
|
|
||||||
|
;[mainmenu]
|
||||||
|
;
|
||||||
|
; Example "main menu" context with submenu
|
||||||
|
;
|
||||||
|
;exten => s,1,Answer
|
||||||
|
;exten => s,n,Background(thanks) ; "Thanks for calling press 1 for sales, 2 for support, ..."
|
||||||
|
;exten => s,n,WaitExten
|
||||||
|
;exten => 1,1,Goto(submenu,s,1)
|
||||||
|
;exten => 2,1,Hangup
|
||||||
|
;include => default
|
||||||
|
;
|
||||||
|
;[submenu]
|
||||||
|
;exten => s,1,Ringing ; Make them comfortable with 2 seconds of ringback
|
||||||
|
;exten => s,n,Wait,2
|
||||||
|
;exten => s,n,Background(submenuopts) ; "Thanks for calling the sales department. Press 1 for steve, 2 for..."
|
||||||
|
;exten => s,n,WaitExten
|
||||||
|
;exten => 1,1,Goto(default,steve,1)
|
||||||
|
;exten => 2,1,Goto(default,mark,2)
|
||||||
|
|
||||||
|
[public]
|
||||||
|
;
|
||||||
|
; ATTENTION: If your Asterisk is connected to the internet and you do
|
||||||
|
; not have allowguest=no in sip.conf, everybody out there may use your
|
||||||
|
; public context without authentication. In that case you want to
|
||||||
|
; double check which services you offer to the world.
|
||||||
|
;
|
||||||
|
include => demo
|
||||||
|
|
||||||
|
[default]
|
||||||
|
;
|
||||||
|
; By default we include the demo. In a production system, you
|
||||||
|
; probably don't want to have the demo there.
|
||||||
|
;
|
||||||
|
include => demo
|
||||||
|
|
||||||
|
;
|
||||||
|
; An extension like the one below can be used for FWD, Nikotel, sipgate etc.
|
||||||
|
; Note that you must have a [sipprovider] section in sip.conf
|
||||||
|
;
|
||||||
|
;exten => _41X.,1,Dial(SIP/${FILTER(0-9,${EXTEN:2})}@sipprovider,,r)
|
||||||
|
|
||||||
|
; Real extensions would go here. Generally you want real extensions to be
|
||||||
|
; 4 or 5 digits long (although there is no such requirement) and start with a
|
||||||
|
; single digit that is fairly large (like 6 or 7) so that you have plenty of
|
||||||
|
; room to overlap extensions and menu options without conflict. You can alias
|
||||||
|
; them with names, too, and use global variables
|
||||||
|
|
||||||
|
;exten => 6245,hint,SIP/Grandstream1&SIP/Xlite1(Joe Schmoe) ; Channel hints for presence
|
||||||
|
;exten => 6245,1,Dial(SIP/Grandstream1,20,rt) ; permit transfer
|
||||||
|
;exten => 6245,n(dial),Dial(${HINT},20,rtT) ; Use hint as listed
|
||||||
|
;exten => 6245,n,VoiceMail(6245,u) ; Voicemail (unavailable)
|
||||||
|
;exten => 6245,s+1,Hangup ; s+1, same as n
|
||||||
|
;exten => 6245,dial+101,VoiceMail(6245,b) ; Voicemail (busy)
|
||||||
|
;exten => 6361,1,Dial(IAX2/JaneDoe,,rm) ; ring without time limit
|
||||||
|
;exten => 6389,1,Dial(MGCP/aaln/1@192.168.0.14)
|
||||||
|
;exten => 6390,1,Dial(JINGLE/caller/callee) ; Dial via jingle using labels
|
||||||
|
;exten => 6391,1,Dial(JINGLE/asterisk@digium.com/mogorman@astjab.org) ;Dial via jingle using asterisk as the transport and calling mogorman.
|
||||||
|
;exten => 6394,1,Dial(Local/6275/n) ; this will dial ${MARK}
|
||||||
|
|
||||||
|
;exten => 6275,1,Gosub(${EXTEN},stdexten(${MARK}))
|
||||||
|
; assuming ${MARK} is something like DAHDI/2
|
||||||
|
;exten => 6275,n,Goto(default,s,1) ; exited Voicemail
|
||||||
|
;exten => mark,1,Goto(6275,1) ; alias mark to 6275
|
||||||
|
;exten => 6536,1,Gosub(${EXTEN},stdexten(${WIL}))
|
||||||
|
; Ditto for wil
|
||||||
|
;exten => 6536,n,Goto(default,s,1) ; exited Voicemail
|
||||||
|
;exten => wil,1,Goto(6236,1)
|
||||||
|
|
||||||
|
;If you want to subscribe to the status of a parking space, this is
|
||||||
|
;how you do it. Subscribe to extension 6600 in sip, and you will see
|
||||||
|
;the status of the first parking lot with this extensions' help
|
||||||
|
;exten => 6600,hint,park:701@parkedcalls
|
||||||
|
;exten => 6600,1,noop
|
||||||
|
;
|
||||||
|
;To subscribe to the availability of a free member in the 'markq' queue.
|
||||||
|
;Note: '_avail' is added to the QueueName
|
||||||
|
;exten => 8501,hint,Queue:markq_avail
|
||||||
|
;exten => 8501,1,Queue(markq)
|
||||||
|
;
|
||||||
|
; You can also monitor the status of a queue by providing a hint for a
|
||||||
|
; particular queue name.
|
||||||
|
;exten => 8502,hint,Queue:markq
|
||||||
|
;exten => 8502,1,Queue(markq)
|
||||||
|
;
|
||||||
|
; Some other handy things are an extension for checking voicemail via
|
||||||
|
; voicemailmain
|
||||||
|
;
|
||||||
|
;exten => 8500,1,VoicemailMain
|
||||||
|
;exten => 8500,n,Hangup
|
||||||
|
;
|
||||||
|
; Or a conference room (you'll need to edit meetme.conf to enable this room)
|
||||||
|
;
|
||||||
|
;exten => 8600,1,Meetme(1234)
|
||||||
|
;
|
||||||
|
; Or playing an announcement to the called party, as soon it answers
|
||||||
|
;
|
||||||
|
;exten = 8700,1,Dial(${MARK},30,A(/path/to/my/announcemsg))
|
||||||
|
;
|
||||||
|
|
||||||
|
; example of a compartmentalized company called "acme"
|
||||||
|
;
|
||||||
|
; this is the context that your incoming IAX/SIP trunk dumps you in...
|
||||||
|
;[acme-incoming]
|
||||||
|
;exten => s,1,Wait(1)
|
||||||
|
;exten => s,n,Answer()
|
||||||
|
;exten => s,n(menu),Playback(acme/vm-brief-menu)
|
||||||
|
;exten => s,n(exten),Background(vm-enter-num-to-call)
|
||||||
|
;exten => s,n,WaitExten(5)
|
||||||
|
;exten => s,n(goodbye),Playback(vm-goodbye)
|
||||||
|
;exten => s,n(end),Hangup()
|
||||||
|
;
|
||||||
|
;include => acme-extens
|
||||||
|
;
|
||||||
|
;exten => i,1,Playback(vm-invalid)
|
||||||
|
;exten => i,n,Goto(s,exten) ; optionally, transfer to operator
|
||||||
|
;
|
||||||
|
;exten => t,1,Goto(s,goodbye)
|
||||||
|
;
|
||||||
|
; this is the context our internal SIP hardphones use (see sip.conf)
|
||||||
|
;
|
||||||
|
;[acme-internal]
|
||||||
|
;exten => s,1,Answer()
|
||||||
|
;exten => s,n(exten),Background(vm-enter-num-to-call)
|
||||||
|
;exten => s,n,WaitExten(5)
|
||||||
|
;exten => s,n(goodbye),Playback(vm-goodbye)
|
||||||
|
;exten => s,n(end),Hangup()
|
||||||
|
;
|
||||||
|
;include => trunkint
|
||||||
|
;include => trunkld
|
||||||
|
;include => trunklocal
|
||||||
|
;
|
||||||
|
;include => acme-extens
|
||||||
|
;
|
||||||
|
; you can test what your system sounds like to outside callers by dialing this
|
||||||
|
;exten => 777,1,DISA(no-password,acme-incoming)
|
||||||
|
;
|
||||||
|
; grouping of acme's extensions... never used directly, always included.
|
||||||
|
;
|
||||||
|
;[acme-extens]
|
||||||
|
;include => stdexten
|
||||||
|
;exten => 111,1,Gosub(111,stdexten(SIP/pete_1,acme))
|
||||||
|
;exten => 111,n,Goto(s,exten)
|
||||||
|
;
|
||||||
|
;exten => 112,1,Gosub(112,stdexten(SIP/nancy_1,acme))
|
||||||
|
;exten => 112,n,Goto(s,end)
|
||||||
|
;
|
||||||
|
; end of acme example
|
||||||
|
|
||||||
|
;
|
||||||
|
; Time context: you can patch this in via the following.
|
||||||
|
;
|
||||||
|
; [acme-internal]
|
||||||
|
; ...
|
||||||
|
; exten => 777,1,Gosub(time)
|
||||||
|
; exten => 777,n,Hangup()
|
||||||
|
;
|
||||||
|
; ...
|
||||||
|
; include => time
|
||||||
|
;
|
||||||
|
; Note: if you're geographically spread out, you can have SIP extensions
|
||||||
|
; specify their own local timezone in sip.conf as:
|
||||||
|
;
|
||||||
|
; [boi]
|
||||||
|
; type=friend
|
||||||
|
; context=acme-internal
|
||||||
|
; callerid="Boise Ofc. <2083451111>"
|
||||||
|
; ...
|
||||||
|
; ; use system-wide default timezone of MST7MDT
|
||||||
|
;
|
||||||
|
; [lws]
|
||||||
|
; type=friend
|
||||||
|
; context=acme-internal
|
||||||
|
; callerid="Lewiston Ofc. <2087431111>"
|
||||||
|
; ...
|
||||||
|
; setvar=timezone=PST8PDT
|
||||||
|
;
|
||||||
|
; "timezone" isn't a 'reserved' name in any way, and other places where
|
||||||
|
; the timezone is significant (e.g. calls to "SayUnixTime()", etc) will
|
||||||
|
; require modification as well. Note that voicemail.conf already has
|
||||||
|
; a mechanism for timezones.
|
||||||
|
;
|
||||||
|
|
||||||
|
[time]
|
||||||
|
exten => _X.,30000(time),NoOp(Time: ${EXTEN} ${timezone})
|
||||||
|
exten => _X.,n,Wait(0.25)
|
||||||
|
exten => _X.,n,Answer()
|
||||||
|
; the amount of delay is set for English; you may need to adjust this time
|
||||||
|
; for other languages if there's no pause before the synchronizing beep.
|
||||||
|
exten => _X.,n,Set(FUTURETIME=$[${EPOCH} + 12])
|
||||||
|
exten => _X.,n,SayUnixTime(${FUTURETIME},Zulu,HNS)
|
||||||
|
exten => _X.,n,SayPhonetic(z)
|
||||||
|
; use the timezone associated with the extension (sip only), or system-wide
|
||||||
|
; default if one hasn't been set.
|
||||||
|
exten => _X.,n,SayUnixTime(${FUTURETIME},${timezone},HNS)
|
||||||
|
exten => _X.,n,Playback(spy-local)
|
||||||
|
exten => _X.,n,WaitUntil(${FUTURETIME})
|
||||||
|
exten => _X.,n,Playback(beep)
|
||||||
|
exten => _X.,n,Return()
|
||||||
|
|
||||||
|
;
|
||||||
|
; ANI context: use in the same way as "time" above
|
||||||
|
;
|
||||||
|
|
||||||
|
[ani]
|
||||||
|
exten => _X.,40000(ani),NoOp(ANI: ${EXTEN})
|
||||||
|
exten => _X.,n,Wait(0.25)
|
||||||
|
exten => _X.,n,Answer()
|
||||||
|
exten => _X.,n,Playback(vm-from)
|
||||||
|
exten => _X.,n,SayDigits(${CALLERID(ani)})
|
||||||
|
exten => _X.,n,Wait(1.25)
|
||||||
|
exten => _X.,n,SayDigits(${CALLERID(ani)}) ; playback again in case of missed digit
|
||||||
|
exten => _X.,n,Return()
|
||||||
|
|
||||||
|
; For more information on applications, just type "core show applications" at your
|
||||||
|
; friendly Asterisk CLI prompt.
|
||||||
|
;
|
||||||
|
; "core show application <command>" will show details of how you
|
||||||
|
; use that particular application in this file, the dial plan.
|
||||||
|
; "core show functions" will list all dialplan functions
|
||||||
|
; "core show function <COMMAND>" will show you more information about
|
||||||
|
; one function. Remember that function names are UPPER CASE.
|
||||||
156
extensions_minivm.conf
Normal file
156
extensions_minivm.conf
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
; MINI-VOICEMAIL dialplan example
|
||||||
|
; ---------------------------------------------------------------------------------------
|
||||||
|
;
|
||||||
|
; This is an example on how to use the Mini-Voicemail system to build
|
||||||
|
; voicemail systems.
|
||||||
|
;
|
||||||
|
;.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
|
||||||
|
; A macro to test the MINIVMACCOUNT dialplan function
|
||||||
|
; Currently, accountcode and pincode is not used in the application
|
||||||
|
; They where added to be used in dialplan scripting
|
||||||
|
;
|
||||||
|
;
|
||||||
|
[macro-minivmfunctest]
|
||||||
|
exten => s,1,set(account=${ARGV1})
|
||||||
|
exten => minivm,n,verbose(1,-------------------- Minivm Function test - Accoutn ${account} -------------)
|
||||||
|
exten => s,n,verbose(1,---- Has account: ${MINIVMACCOUNT(${account}:hasaccount)})
|
||||||
|
exten => s,n,verbose(1,---- Fullname: ${MINIVMACCOUNT(${account}:fullname)})
|
||||||
|
exten => s,n,verbose(1,---- Email: ${MINIVMACCOUNT(${account}:email)})
|
||||||
|
exten => s,n,verbose(1,---- Pager: ${MINIVMACCOUNT(${account}:pager)})
|
||||||
|
exten => s,n,verbose(1,---- E-mail template: ${MINIVMACCOUNT(${account}:etemplate)})
|
||||||
|
exten => s,n,verbose(1,---- Pager template: ${MINIVMACCOUNT(${account}:ptemplate)})
|
||||||
|
exten => s,n,verbose(1,---- Account code: ${MINIVMACCOUNT(${account}:accountcode)})
|
||||||
|
exten => s,n,verbose(1,---- Path: ${MINIVMACCOUNT(${account}:path)})
|
||||||
|
exten => s,n,verbose(1,---- Pincode: ${MINIVMACCOUNT(${account}:pincode)})
|
||||||
|
exten => s,n,verbose(1,---- Time zone: ${MINIVMACCOUNT(${account}:timezone)})
|
||||||
|
exten => s,n,verbose(1,---- Language: ${MINIVMACCOUNT(${account}:language)})
|
||||||
|
; This requires setvar=customerclass=gold in the account configuration
|
||||||
|
exten => s,n,verbose(1,---- Var:customerclass: ${MINIVMACCOUNT(${account}:customerclass)})
|
||||||
|
|
||||||
|
[minivm-scenario1]
|
||||||
|
; minivmtest tests the dialplan function MINIVMACCOUNT
|
||||||
|
; Check the output in the console with verbose set
|
||||||
|
exten => minivmtest,1,answer
|
||||||
|
exten => minivmtest,n,wait(0.5)
|
||||||
|
exten => minivmtest,n,set(ACCOUNT=do-not-spam-me@example.com)
|
||||||
|
exten => minivmtest,n,macro(minivmfunctest, ${ACCOUNT})
|
||||||
|
exten => minivmtest,n,playback(beep)
|
||||||
|
exten => minivmtest,n,hangup
|
||||||
|
|
||||||
|
;.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
|
||||||
|
; "minivm" tests a full scenario
|
||||||
|
; Remember that users may hangup
|
||||||
|
; This works both for users with accounts in minivm.conf and by just giving an e-mail address
|
||||||
|
; without configuring an account
|
||||||
|
exten => minivm,1,answer
|
||||||
|
exten => minivm,n,wait(0.5) ; Wait for Voip channels to settle
|
||||||
|
exten => minivm,n,set(account=oej@example.com)
|
||||||
|
exten => minivm,n,noop(------------------------------------------- Minivm Greet -------------)
|
||||||
|
exten => minivm,n,minivmgreet(${account})
|
||||||
|
exten => minivm,n,verbose(1,-- MINIVM_GREET_STATUS = ${MINIVM_GREET_STATUS} )
|
||||||
|
exten => minivm,n,noop(------------------------------------------- Minivm Record -------------)
|
||||||
|
exten => minivm,n,minivmRecord(${account},b)
|
||||||
|
exten => minivm,n,goto(minivmcleanup,1)
|
||||||
|
|
||||||
|
; Cleanup after recording or hangup
|
||||||
|
exten => minivmcleanup,1,noop(------------------------------------------- Minivm Notify -------------)
|
||||||
|
;Increment voicemail counter with 1. The counter will be used in the e-mail message
|
||||||
|
;and in the filename
|
||||||
|
exten => minivmcleanup,n,gotoif($[${MINIVM_RECORD_STATUS} != SUCCESS]?minivmrecordfailure,1)
|
||||||
|
exten => minivmcleanup,n,set(MINIVMCOUNTER(${account}:voicemailcounter:inc)=1)
|
||||||
|
exten => minivmcleanup,n,set(MVM_COUNTER = ${MINIVMCOUNTER(${account}:voicemailcounter)})
|
||||||
|
exten => minivmcleanup,n,minivmNotify(${account})
|
||||||
|
exten => minivmcleanup,n,verbose(1,-- MINIVM_NOTIFY_STATUS = ${MINIVM_NOTIFY_STATUS} )
|
||||||
|
; Now, clean up after sending voicemail
|
||||||
|
exten => minivmcleanup,n,noop(------------------------------------------- Minivm Delete -------------)
|
||||||
|
exten => minivmcleanup,n,minivmdelete()
|
||||||
|
exten => minivmcleanup,n,verbose(1,-- MINIVM_DELETE_STATUS = ${MINIVM_DELETE_STATUS} )
|
||||||
|
|
||||||
|
;Recording failed
|
||||||
|
exten => minivmrecordfailure,1,playback(vm-sorry)
|
||||||
|
exten => minivmrecordfailure,n,wait(1)
|
||||||
|
exten => minivmrecordfailure,n,hangup
|
||||||
|
|
||||||
|
; If the user hangs up during the recording, we need to clean up
|
||||||
|
; And send notifications
|
||||||
|
exten => h,1,gotoif($[x${MINIVM_DELETE_STATUS} != x] ?h,stop)
|
||||||
|
exten => h,n,noop(------------------------------------------- HANGUP during voicemail recording -------------)
|
||||||
|
exten => h,n,goto(minivmcleanup,1)
|
||||||
|
exten => h,n(stop),noop(---Minivm DONE----)
|
||||||
|
|
||||||
|
;.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
|
||||||
|
; Extension to record a greeting message
|
||||||
|
; Call this like:
|
||||||
|
; macro(recordgreetings,alice@atlanta.example.com)
|
||||||
|
;
|
||||||
|
[macro-recordgreetings]
|
||||||
|
exten => s,1,answer
|
||||||
|
exten => s,n,wait(0.5)
|
||||||
|
exten => s,n,set(account=${ARGV1])
|
||||||
|
; This file give extra options not available here, needs to be edited
|
||||||
|
; Change of password does not work
|
||||||
|
exten => s,n(menu),background(vm-options)
|
||||||
|
exten => 1,1,setvar(option=u)
|
||||||
|
exten => 1,n,macro(minivmrec,${account},${option})
|
||||||
|
exten => 1,n,goto(menu)
|
||||||
|
exten => 2,1,setvar(option=b)
|
||||||
|
exten => 2,n,macro(minivmrec,${account},${option})
|
||||||
|
exten => 2,n,goto(menu)
|
||||||
|
exten => 3,1,setvar(option=n)
|
||||||
|
exten => 3,n,macro(minivmrec,${account},${option})
|
||||||
|
exten => 3,n,goto(menu)
|
||||||
|
exten => 4,1,setvar(option=t)
|
||||||
|
exten => 4,n,macro(minivmrec,${account},${option})
|
||||||
|
exten => 4,n,goto(menu)
|
||||||
|
exten => *,1,playback(vm-thankyou)
|
||||||
|
exten => *,n,wait(1)
|
||||||
|
exten => *,n,hangup
|
||||||
|
|
||||||
|
exten => i,1,playback(invalid)
|
||||||
|
exten => i,n,goto(menu)
|
||||||
|
|
||||||
|
[macro-minivmrec]
|
||||||
|
exten => s,1,gotoif(${MINIVMACCOUNT(${account}:hasaccount)}?record)
|
||||||
|
; Account is not configured in minivm.conf or realtime
|
||||||
|
; Phony message, add something useful here
|
||||||
|
exten => s,n,playback(privacy-incorrect)
|
||||||
|
exten => s,n,macroreturn
|
||||||
|
exten => record,1,minivmappmess(${ARGV1},${ARGV2})
|
||||||
|
exten => record,n,noop(Recording status: ${MINIVM_APPMESS_STATUS})
|
||||||
|
exten => record,n,macroreturn
|
||||||
|
|
||||||
|
;.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
|
||||||
|
; To set a counter and use a template for voicemail to users without acounts
|
||||||
|
; use something like this
|
||||||
|
;
|
||||||
|
; email address is in the "account" channel variable. Set from ast_db or a script
|
||||||
|
; based on called ID
|
||||||
|
|
||||||
|
exten => sendvoicemail,1,answer
|
||||||
|
exten => sendvoicemail,n,wait(0.5)
|
||||||
|
exten => sendvoicemail,n,set(domain=${CUT(account,@,2)})
|
||||||
|
exten => sendvoicemail,n,set(country=${CUT(domain,.,2)})
|
||||||
|
exten => sendvoicemail,n,minivmgreet(${account})
|
||||||
|
exten => sendvoicemail,n,minivmRecord(${account},b)
|
||||||
|
exten => sendvoicemail,n,goto(sendvmcleanup)
|
||||||
|
|
||||||
|
exten => sendvmcleanup,1,gotoif($[${MINIVM_RECORD_STATUS} != SUCCESS]?done)
|
||||||
|
; The counter is set in the domain directory, so we don't create one directory per user
|
||||||
|
; The counter has the email in the name of the counter, increase it
|
||||||
|
; Set the MVM_COUNTER variable that we use in the template
|
||||||
|
exten => sendvmcleanup,n,set(MINIVMCOUNTER(${account}:voicemailcounter:inc)=1)
|
||||||
|
exten => sendvmcleanup,n,set(MVM_COUNTER = ${MINIVMCOUNTER(${account}:voicemailcounter)})
|
||||||
|
; Increase a domain counter too, to see how many voicemails are sent to this domain
|
||||||
|
; This is just for statistics
|
||||||
|
exten => sendvmcleanup,n,set(MINIVMCOUNTER(${domain}:${domain}-all:inc) = 1)
|
||||||
|
|
||||||
|
; Send voicemail in e-mail with country-specific template
|
||||||
|
; The template need to be defined in minivm.conf
|
||||||
|
;
|
||||||
|
exten => sendvmcleanup,n,minivmNotify(${account}, ${country}_email)
|
||||||
|
exten => sendvmcleanup,n,minivmDelete()
|
||||||
|
|
||||||
|
exten => sendvmcleanup,n(done),wait(0.5)
|
||||||
|
exten => sendvmcleanup,n,hangup
|
||||||
|
|
||||||
|
exten => h,1,gotoif($[${MINIVM_RECORD_STATUS} = SUCCESS]?sendvmcleanup,1))
|
||||||
122
features.conf
Normal file
122
features.conf
Normal file
@@ -0,0 +1,122 @@
|
|||||||
|
;
|
||||||
|
; Sample Call Features (transfer, monitor/mixmonitor, etc) configuration
|
||||||
|
;
|
||||||
|
|
||||||
|
; Note: From Asterisk 12 - All parking lot configuration is now done in res_parking.conf
|
||||||
|
|
||||||
|
[general]
|
||||||
|
;transferdigittimeout => 3 ; Number of seconds to wait between digits when transferring a call
|
||||||
|
; (default is 3 seconds)
|
||||||
|
;xfersound = beep ; to indicate an attended transfer is complete
|
||||||
|
;xferfailsound = beeperr ; to indicate a failed transfer
|
||||||
|
;pickupexten = *8 ; Configure the pickup extension. (default is *8)
|
||||||
|
;pickupsound = beep ; to indicate a successful pickup (default: no sound)
|
||||||
|
;pickupfailsound = beeperr ; to indicate that the pickup failed (default: no sound)
|
||||||
|
;featuredigittimeout = 1000 ; Max time (ms) between digits for
|
||||||
|
; feature activation (default is 1000 ms)
|
||||||
|
;recordingfailsound = beeperr ; indicates that a one-touch monitor or one-touch mixmonitor feature failed
|
||||||
|
; to be applied to the call. (default: no sound)
|
||||||
|
;atxfernoanswertimeout = 15 ; Timeout for answer on attended transfer default is 15 seconds.
|
||||||
|
;atxferdropcall = no ; If someone does an attended transfer, then hangs up before the transfer
|
||||||
|
; target answers, then by default, the system will try to call back the
|
||||||
|
; person that did the transfer. If this is set to "yes", the ringing
|
||||||
|
; transfer target is immediately transferred to the transferee.
|
||||||
|
;atxferloopdelay = 10 ; Number of seconds to sleep between retries (if atxferdropcall = no)
|
||||||
|
;atxfercallbackretries = 2 ; Number of times to attempt to send the call back to the transferer.
|
||||||
|
; By default, this is 2.
|
||||||
|
;transferdialattempts = 3 ; Number of times that a transferer may attempt to dial an extension before
|
||||||
|
; being kicked back to the original call.
|
||||||
|
;transferretrysound = "beep" ; Sound to play when a transferer fails to dial a valid extension.
|
||||||
|
;transferinvalidsound = "beeperr" ; Sound to play when a transferer fails to dial a valid extension and is out of retries.
|
||||||
|
;atxferabort = *1 ; cancel the attended transfer
|
||||||
|
;atxfercomplete = *2 ; complete the attended transfer, dropping out of the call
|
||||||
|
;atxferthreeway = *3 ; complete the attended transfer, but stay in the call. This will turn the call into a multi-party bridge
|
||||||
|
;atxferswap = *4 ; swap to the other party. Once an attended transfer has begun, this options may be used multiple times
|
||||||
|
|
||||||
|
; Note that the DTMF features listed below only work when two channels have answered and are bridged together.
|
||||||
|
; They can not be used while the remote party is ringing or in progress. If you require this feature you can use
|
||||||
|
; chan_local in combination with Answer to accomplish it.
|
||||||
|
|
||||||
|
[featuremap]
|
||||||
|
;blindxfer => #1 ; Blind transfer (default is #) -- Make sure to set the T and/or t option in the Dial() or Queue() app call!
|
||||||
|
;disconnect => *0 ; Disconnect (default is *) -- Make sure to set the H and/or h option in the Dial() or Queue() app call!
|
||||||
|
;automon => *1 ; One Touch Record a.k.a. Touch Monitor -- Make sure to set the W and/or w option in the Dial() or Queue() app call!
|
||||||
|
;atxfer => *2 ; Attended transfer -- Make sure to set the T and/or t option in the Dial() or Queue() app call!
|
||||||
|
;parkcall => #72 ; Park call (one step parking) -- Make sure to set the K and/or k option in the Dial() app call!
|
||||||
|
;automixmon => *3 ; One Touch Record a.k.a. Touch MixMonitor -- Make sure to set the X and/or x option in the Dial() or Queue() app call!
|
||||||
|
|
||||||
|
[applicationmap]
|
||||||
|
; Note that the DYNAMIC_FEATURES channel variable must be set to use the features
|
||||||
|
; defined here. The value of DYNAMIC_FEATURES should be the names of the features
|
||||||
|
; to allow the channel to use separated by '#'. For example:
|
||||||
|
;
|
||||||
|
; Set(__DYNAMIC_FEATURES=myfeature1#myfeature2#myfeature3)
|
||||||
|
;
|
||||||
|
; (Note: The two leading underscores allow these feature settings to be set
|
||||||
|
; on the outbound channels, as well. Otherwise, only the original channel
|
||||||
|
; will have access to these features.)
|
||||||
|
;
|
||||||
|
; The syntax for declaring a dynamic feature is any of the following:
|
||||||
|
;
|
||||||
|
;<FeatureName> => <DTMF_sequence>,<ActivateOn>[/<ActivatedBy>],<Application>[,<AppArguments>[,MOH_Class]]
|
||||||
|
;<FeatureName> => <DTMF_sequence>,<ActivateOn>[/<ActivatedBy>],<Application>[,"<AppArguments>"[,MOH_Class]]
|
||||||
|
;<FeatureName> => <DTMF_sequence>,<ActivateOn>[/<ActivatedBy>],<Application>([<AppArguments>])[,MOH_Class]
|
||||||
|
|
||||||
|
;
|
||||||
|
; FeatureName -> This is the name of the feature used when setting the
|
||||||
|
; DYNAMIC_FEATURES variable to enable usage of this feature.
|
||||||
|
; DTMF_sequence -> This is the key sequence used to activate this feature.
|
||||||
|
; ActivateOn -> This is the channel of the call that the application will be executed
|
||||||
|
; on. Valid values are "self" and "peer". "self" means run the
|
||||||
|
; application on the same channel that activated the feature. "peer"
|
||||||
|
; means run the application on the opposite channel from the one that
|
||||||
|
; has activated the feature.
|
||||||
|
; ActivatedBy -> ActivatedBy is no longer honored. The feature is activated by which
|
||||||
|
; channel DYNAMIC_FEATURES includes the feature is on. Use a pre-dial
|
||||||
|
; handler to set different values for DYNAMIC_FEATURES on the channels.
|
||||||
|
; Historic values are: "caller", "callee", and "both".
|
||||||
|
; Application -> This is the application to execute.
|
||||||
|
; AppArguments -> These are the arguments to be passed into the application. If you need
|
||||||
|
; commas in your arguments, you should use either the second or third
|
||||||
|
; syntax, above.
|
||||||
|
; MOH_Class -> This is the music on hold class to play while the idle
|
||||||
|
; channel waits for the feature to complete. If left blank,
|
||||||
|
; no music will be played.
|
||||||
|
;
|
||||||
|
|
||||||
|
;
|
||||||
|
; IMPORTANT NOTE: The applicationmap is not intended to be used for all Asterisk
|
||||||
|
; applications. When applications are used in extensions.conf, they are executed
|
||||||
|
; by the PBX core. In this case, these applications are executed outside of the
|
||||||
|
; PBX core, so it does *not* make sense to use any application which has any
|
||||||
|
; concept of dialplan flow. Examples of this would be things like Goto,
|
||||||
|
; Background, WaitExten, and many more. The exceptions to this are Gosub and
|
||||||
|
; Macro routines which must complete for the call to continue.
|
||||||
|
;
|
||||||
|
; Enabling these features means that the PBX needs to stay in the media flow and
|
||||||
|
; media will not be re-directed if DTMF is sent in the media stream.
|
||||||
|
;
|
||||||
|
; Example Usage:
|
||||||
|
;
|
||||||
|
;testfeature => #9,peer,Playback,tt-monkeys ;Allow both the caller and callee to play
|
||||||
|
; ;tt-monkeys to the opposite channel
|
||||||
|
;
|
||||||
|
; Set arbitrary channel variables, based upon CALLERID number (Note that the application
|
||||||
|
; argument contains commas)
|
||||||
|
;retrieveinfo => #8,peer,Set(ARRAY(CDR(mark),CDR(name))=${ODBC_FOO(${CALLERID(num)})})
|
||||||
|
;
|
||||||
|
;pauseMonitor => #1,self/callee,Pausemonitor ;Allow the callee to pause monitoring
|
||||||
|
; ;on their channel
|
||||||
|
;unpauseMonitor => #3,self/callee,UnPauseMonitor ;Allow the callee to unpause monitoring
|
||||||
|
; ;on their channel
|
||||||
|
|
||||||
|
; Dynamic Feature Groups:
|
||||||
|
; Dynamic feature groups are groupings of features defined in [applicationmap]
|
||||||
|
; that can have their own custom key mappings. To give a channel access to a dynamic
|
||||||
|
; feature group, add the group name to the value of the DYNAMIC_FEATURES variable.
|
||||||
|
;
|
||||||
|
; example:
|
||||||
|
; [myGroupName] ; defines the group named myGroupName
|
||||||
|
; testfeature => #9 ; associates testfeature with the group and the keycode '#9'.
|
||||||
|
; pauseMonitor => ; associates pauseMonitor with the group and uses the keycode specified
|
||||||
|
; ; in the [applicationmap].
|
||||||
34
festival.conf
Normal file
34
festival.conf
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
;
|
||||||
|
; Festival Configuration
|
||||||
|
;
|
||||||
|
[general]
|
||||||
|
;
|
||||||
|
; Host which runs the festival server (default : localhost);
|
||||||
|
;
|
||||||
|
;host=localhost
|
||||||
|
;
|
||||||
|
; Port on host where the festival server runs (default : 1314)
|
||||||
|
;
|
||||||
|
;port=1314
|
||||||
|
;
|
||||||
|
; Use cache (yes, no - defaults to no)
|
||||||
|
;
|
||||||
|
;usecache=yes
|
||||||
|
;
|
||||||
|
; If usecache=yes, a directory to store waveform cache files.
|
||||||
|
; The cache is never cleared (yet), so you must take care of cleaning it
|
||||||
|
; yourself (just delete any or all files from the cache).
|
||||||
|
; THIS DIRECTORY *MUST* EXIST and must be writable from the asterisk process.
|
||||||
|
; Defaults to /tmp/
|
||||||
|
;
|
||||||
|
;cachedir=/var/lib/asterisk/festivalcache/
|
||||||
|
;
|
||||||
|
; Festival command to send to the server.
|
||||||
|
; Defaults to: (tts_textasterisk "%s" 'file)(quit)\n
|
||||||
|
; %s is replaced by the desired text to say. The command MUST end with a
|
||||||
|
; (quit) directive, or the cache handling mechanism will hang. Do not
|
||||||
|
; forget the \n at the end.
|
||||||
|
;
|
||||||
|
;festivalcommand=(tts_textasterisk "%s" 'file)(quit)\n
|
||||||
|
;
|
||||||
|
;
|
||||||
107
followme.conf
Normal file
107
followme.conf
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
; Find-Me / Follow-Me Configuration File
|
||||||
|
[general]
|
||||||
|
;
|
||||||
|
featuredigittimeout=>5000
|
||||||
|
; The number of ms to wait for a digit input for the callee on whether to take the call or
|
||||||
|
; not before we consider them "done" entering digits.
|
||||||
|
;
|
||||||
|
enable_callee_prompt=>true
|
||||||
|
; Enable prompting a callee to either accept or reject the forwarded call.
|
||||||
|
; If disabled, the optional prompting for caller name (option 'a') is
|
||||||
|
; likewise disabled. Enabled by default.
|
||||||
|
;
|
||||||
|
takecall=>1
|
||||||
|
; The global default keypress for the callee to take taking the current call. This can be
|
||||||
|
; a single digit or multiple digits. Default is "1".
|
||||||
|
; Note this string must not be a substring of declinecall.
|
||||||
|
;
|
||||||
|
declinecall=>2
|
||||||
|
; The global default keypress for the callee to decline taking the current call. This can
|
||||||
|
; be a single digit or multiple digits. Default is "2".
|
||||||
|
; Note this string must not be a substring of takecall.
|
||||||
|
;
|
||||||
|
call_from_prompt=>followme/call-from
|
||||||
|
; The global default for the 'Incoming call from' message.
|
||||||
|
;
|
||||||
|
norecording_prompt=>followme/no-recording
|
||||||
|
; The global default for the 'You have an incoming call' message when the caller elects
|
||||||
|
; not to leave their name or the option isn't set for them to do so.
|
||||||
|
;
|
||||||
|
options_prompt=>followme/options
|
||||||
|
; The global default for the 'Press 1 to accept this call or press 2 to decline it' message.
|
||||||
|
;
|
||||||
|
pls_hold_prompt=>followme/pls-hold-while-try
|
||||||
|
; The global default for 'Please hold while we try and connect your call' message.
|
||||||
|
;
|
||||||
|
status_prompt=>followme/status
|
||||||
|
; The global default for 'The party you're calling isn't at their desk' message.
|
||||||
|
;
|
||||||
|
sorry_prompt=>followme/sorry
|
||||||
|
; The global default for 'I'm sorry, but we were unable to locate your party' message.
|
||||||
|
;
|
||||||
|
connecting_prompt=>
|
||||||
|
; The global default sound file name for 'Please say hello to the caller' message.
|
||||||
|
; Setting to an empty string skips playing the prompt. The default is no prompt
|
||||||
|
; file name.
|
||||||
|
|
||||||
|
[default]
|
||||||
|
musicclass=>default
|
||||||
|
; The moh class that should be used for the caller while they are waiting to be connected.
|
||||||
|
context=>default
|
||||||
|
; The context to dial the numbers from
|
||||||
|
number=>01233456,25
|
||||||
|
; The a follow-me number to call. The format is:
|
||||||
|
; number=> <number to call[&2nd #[&...]]>[,<timeout value in seconds>[,<order in follow-me>]]
|
||||||
|
; You can specify as many of these numbers as you like. They will be dialed in the
|
||||||
|
; order that you specify them in the config file OR as specified with the order field
|
||||||
|
; on the number prompt. As you can see from the example, forked dialing of multiple
|
||||||
|
; numbers in the same step is supported with this application if you'd like to dial
|
||||||
|
; multiple numbers in the same followme step.
|
||||||
|
;
|
||||||
|
; The timeout value is the amount of time allowed between the time the dialing step
|
||||||
|
; starts and the callee answers. The callee then has until the timeout of the last
|
||||||
|
; step to make a choice on whether to take the call or not. That being the case,
|
||||||
|
; you may want to make the timeout on the last step longer to give enough time to
|
||||||
|
; make the choice to accept or not.
|
||||||
|
enable_callee_prompt=>true
|
||||||
|
; Enable prompting the callee to accept the forwarded call. The default
|
||||||
|
; is the global value.
|
||||||
|
takecall=>1
|
||||||
|
; The keypress for the callee to take taking the current call. This can be
|
||||||
|
; a single digit or multiple digits. Default is the global default.
|
||||||
|
; Note this string must not be a substring of declinecall.
|
||||||
|
;
|
||||||
|
declinecall=>2
|
||||||
|
; The keypress for the callee to decline taking the current call. This can
|
||||||
|
; be a single digit or multiple digits. Default is the global default.
|
||||||
|
; Note this string must not be a substring of takecall.
|
||||||
|
;
|
||||||
|
call_from_prompt=>followme/call-from
|
||||||
|
; The 'Incoming call from' message prompt. Default is the global default.
|
||||||
|
;
|
||||||
|
norecording_prompt=>followme/no-recording
|
||||||
|
; The 'You have an incoming call' message prompt when the caller elects
|
||||||
|
; not to leave their name or the option isn't set for them to do so. Default
|
||||||
|
; is the global default.
|
||||||
|
;
|
||||||
|
options_prompt=>followme/options
|
||||||
|
; The 'Press 1 to accept this call or press 2 to decline it' message prompt.
|
||||||
|
; Default is the global default.
|
||||||
|
;
|
||||||
|
pls_hold_prompt=>followme/pls-hold-while-try
|
||||||
|
; The 'Please hold while we try and connect your call' message prompt.
|
||||||
|
; Default is the global default.
|
||||||
|
;
|
||||||
|
status_prompt=>followme/status
|
||||||
|
; The 'The party you're calling isn't at their desk' message prompt.
|
||||||
|
; Default is the global default.
|
||||||
|
;
|
||||||
|
sorry_prompt=>followme/sorry
|
||||||
|
; The 'I'm sorry, but we were unable to locate your party' message prompt. Default
|
||||||
|
; is the global default.
|
||||||
|
;
|
||||||
|
connecting_prompt=>
|
||||||
|
; The sound file name for 'Please say hello to the caller' message. Default is the
|
||||||
|
; global default.
|
||||||
|
;
|
||||||
|
|
||||||
32
hep.conf
Normal file
32
hep.conf
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
;
|
||||||
|
; res_hep Module configuration for Asterisk
|
||||||
|
;
|
||||||
|
|
||||||
|
;
|
||||||
|
; Note that this configuration file is consumed by res_hep, which is responsible
|
||||||
|
; for the HEPv3 protocol manipulation and managing the connection to the Homer
|
||||||
|
; capture server. Additional modules provide specific messages to be sent to
|
||||||
|
; the Homer server:
|
||||||
|
; - res_hep_pjsip: Send SIP messages transmitted/received by the PJSIP stack
|
||||||
|
; - res_hep_rtcp: Send RTCP information (all channels)
|
||||||
|
;
|
||||||
|
|
||||||
|
; All settings are currently set in the general section.
|
||||||
|
[general]
|
||||||
|
enabled = no ; Enable/disable forwarding of packets to a
|
||||||
|
; HEP server. Default is "yes".
|
||||||
|
capture_address = 192.168.1.1:9061 ; The address of the HEP capture server.
|
||||||
|
capture_password = foo ; If specified, the authorization passsword
|
||||||
|
; for the HEP server. If not specified, no
|
||||||
|
; authorization password will be sent.
|
||||||
|
capture_id = 1234 ; A unique integer identifier for this
|
||||||
|
; server. This ID will be embedded sent
|
||||||
|
; with each packet from this server.
|
||||||
|
uuid_type = call-id ; Specify the preferred source for the Homer
|
||||||
|
; correlation UUID. Valid options are:
|
||||||
|
; - 'call-id' for the PJSIP or chan_sip SIP
|
||||||
|
; Call-ID
|
||||||
|
; - 'channel' for the Asterisk channel name
|
||||||
|
; Note: If 'call-id' is specified but the
|
||||||
|
; channel is not PJSIP or chan_sip then the
|
||||||
|
; Asterisk channel name will be used instead.
|
||||||
126
http.conf
Normal file
126
http.conf
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
;
|
||||||
|
; Asterisk Builtin mini-HTTP server
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; Note about Asterisk documentation:
|
||||||
|
; If Asterisk was installed from a tarball, then the HTML documentation should
|
||||||
|
; be installed in the static-http/docs directory which is
|
||||||
|
; (/var/lib/asterisk/static-http/docs) on linux by default. If the Asterisk
|
||||||
|
; HTTP server is enabled in this file by setting the "enabled", "bindaddr",
|
||||||
|
; and "bindport" options, then you should be able to view the documentation
|
||||||
|
; remotely by browsing to:
|
||||||
|
; http://<server_ip>:<bindport>/static/docs/index.html
|
||||||
|
;
|
||||||
|
[general]
|
||||||
|
;
|
||||||
|
; The name of the server, advertised in both the Server field in HTTP
|
||||||
|
; response message headers, as well as the <address /> element in certain HTTP
|
||||||
|
; response message bodies. If not furnished here, "Asterisk/{version}" will be
|
||||||
|
; used as a default value for the Server header field and the <address />
|
||||||
|
; element. Setting this property to a blank value will result in the omission
|
||||||
|
; of the Server header field from HTTP response message headers and the
|
||||||
|
; <address /> element from HTTP response message bodies.
|
||||||
|
;
|
||||||
|
servername=Asterisk
|
||||||
|
;
|
||||||
|
; Whether HTTP/HTTPS interface is enabled or not. Default is no.
|
||||||
|
; This also affects manager/rawman/mxml access (see manager.conf)
|
||||||
|
;
|
||||||
|
;enabled=yes
|
||||||
|
;
|
||||||
|
; Address to bind to, both for HTTP and HTTPS. You MUST specify
|
||||||
|
; a bindaddr in order for the HTTP server to run. There is no
|
||||||
|
; default value.
|
||||||
|
;
|
||||||
|
bindaddr=127.0.0.1
|
||||||
|
;
|
||||||
|
; Port to bind to for HTTP sessions (default is 8088)
|
||||||
|
;
|
||||||
|
;bindport=8088
|
||||||
|
;
|
||||||
|
; Prefix allows you to specify a prefix for all requests
|
||||||
|
; to the server. The default is blank. If uncommented
|
||||||
|
; all requests must begin with /asterisk
|
||||||
|
;
|
||||||
|
;prefix=asterisk
|
||||||
|
;
|
||||||
|
; sessionlimit specifies the maximum number of httpsessions that will be
|
||||||
|
; allowed to exist at any given time. (default: 100)
|
||||||
|
;
|
||||||
|
;sessionlimit=100
|
||||||
|
;
|
||||||
|
; session_inactivity specifies the number of milliseconds to wait for
|
||||||
|
; more data over the HTTP connection before closing it.
|
||||||
|
;
|
||||||
|
; Default: 30000
|
||||||
|
;session_inactivity=30000
|
||||||
|
;
|
||||||
|
; session_keep_alive specifies the number of milliseconds to wait for
|
||||||
|
; the next HTTP request over a persistent connection.
|
||||||
|
;
|
||||||
|
; Set to 0 to disable persistent HTTP connections.
|
||||||
|
; Default: 15000
|
||||||
|
;session_keep_alive=15000
|
||||||
|
;
|
||||||
|
; Whether Asterisk should serve static content from static-http
|
||||||
|
; Default is no.
|
||||||
|
;
|
||||||
|
;enablestatic=yes
|
||||||
|
;
|
||||||
|
; Redirect one URI to another. This is how you would set a
|
||||||
|
; default page.
|
||||||
|
; Syntax: redirect=<from here> <to there>
|
||||||
|
; For example, if you are using the Asterisk-gui,
|
||||||
|
; it is convenient to enable the following redirect:
|
||||||
|
;
|
||||||
|
;redirect = / /static/config/index.html
|
||||||
|
;
|
||||||
|
; HTTPS support. In addition to enabled=yes, you need to
|
||||||
|
; explicitly enable tls, define the port to use,
|
||||||
|
; and have a certificate somewhere.
|
||||||
|
;tlsenable=yes ; enable tls - default no.
|
||||||
|
;tlsbindaddr=0.0.0.0:8089 ; address and port to bind to - default is bindaddr and port 8089.
|
||||||
|
;
|
||||||
|
;tlscertfile=</path/to/certificate.pem> ; path to the certificate file (*.pem) only.
|
||||||
|
;tlsprivatekey=</path/to/private.pem> ; path to private key file (*.pem) only.
|
||||||
|
; If no path is given for tlscertfile or tlsprivatekey, default is to look in current
|
||||||
|
; directory. If no tlsprivatekey is given, default is to search tlscertfile for private key.
|
||||||
|
;
|
||||||
|
; To produce a certificate you can e.g. use openssl. This places both the cert and
|
||||||
|
; private in same .pem file.
|
||||||
|
; openssl req -new -x509 -days 365 -nodes -out /tmp/foo.pem -keyout /tmp/foo.pem
|
||||||
|
;
|
||||||
|
; tlscipher= ; The list of allowed ciphers
|
||||||
|
; ; if none are specified the following cipher
|
||||||
|
; ; list will be used instead:
|
||||||
|
; ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:
|
||||||
|
; ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:
|
||||||
|
; kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:
|
||||||
|
; ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:
|
||||||
|
; ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:
|
||||||
|
; DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:
|
||||||
|
; AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:
|
||||||
|
; AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:
|
||||||
|
; !EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
|
||||||
|
;
|
||||||
|
; tlsdisablev1=yes ; Disable TLSv1 support - if not set this defaults to "yes"
|
||||||
|
; tlsdisablev11=yes ; Disable TLSv1.1 support - if not set this defaults to "no"
|
||||||
|
; tlsdisablev12=yes ; Disable TLSv1.2 support - if not set this defaults to "no"
|
||||||
|
;
|
||||||
|
; tlsservercipherorder=yes ; Use the server preference order instead of the client order
|
||||||
|
; ; Defaults to "yes"
|
||||||
|
;
|
||||||
|
; The post_mappings section maps URLs to real paths on the filesystem. If a
|
||||||
|
; POST is done from within an authenticated manager session to one of the
|
||||||
|
; configured POST mappings, then any files in the POST will be placed in the
|
||||||
|
; configured directory.
|
||||||
|
;
|
||||||
|
;[post_mappings]
|
||||||
|
;
|
||||||
|
; NOTE: You need a valid HTTP AMI mansession_id cookie with the manager
|
||||||
|
; config permission to POST files.
|
||||||
|
;
|
||||||
|
; In this example, if the prefix option is set to "asterisk", then using the
|
||||||
|
; POST URL: /asterisk/uploads will put files in /var/lib/asterisk/uploads/.
|
||||||
|
;uploads = /var/lib/asterisk/uploads/
|
||||||
|
;
|
||||||
736
indications.conf
Normal file
736
indications.conf
Normal file
@@ -0,0 +1,736 @@
|
|||||||
|
;
|
||||||
|
; indications.conf
|
||||||
|
;
|
||||||
|
; Configuration file for location specific tone indications
|
||||||
|
;
|
||||||
|
|
||||||
|
;
|
||||||
|
; NOTE:
|
||||||
|
; When adding countries to this file, please keep them in alphabetical
|
||||||
|
; order according to the 2-character country codes!
|
||||||
|
;
|
||||||
|
; The [general] category is for certain global variables.
|
||||||
|
; All other categories are interpreted as location specific indications
|
||||||
|
;
|
||||||
|
|
||||||
|
[general]
|
||||||
|
country=us ; default location
|
||||||
|
|
||||||
|
|
||||||
|
; [example]
|
||||||
|
; description = string
|
||||||
|
; The full name of your country, in English.
|
||||||
|
; ringcadence = num[,num]*
|
||||||
|
; List of durations the physical bell rings.
|
||||||
|
; dial = tonelist
|
||||||
|
; Set of tones to be played when one picks up the hook.
|
||||||
|
; busy = tonelist
|
||||||
|
; Set of tones played when the receiving end is busy.
|
||||||
|
; congestion = tonelist
|
||||||
|
; Set of tones played when there is some congestion (on the network?)
|
||||||
|
; callwaiting = tonelist
|
||||||
|
; Set of tones played when there is a call waiting in the background.
|
||||||
|
; dialrecall = tonelist
|
||||||
|
; Not well defined; many phone systems play a recall dial tone after hook
|
||||||
|
; flash.
|
||||||
|
; record = tonelist
|
||||||
|
; Set of tones played when call recording is in progress.
|
||||||
|
; info = tonelist
|
||||||
|
; Set of tones played with special information messages (e.g., "number is
|
||||||
|
; out of service")
|
||||||
|
; 'name' = tonelist
|
||||||
|
; Every other variable will be available as a shortcut for the "PlayList" command
|
||||||
|
; but will not be used automatically by Asterisk.
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; The tonelist itself is defined by a comma-separated sequence of elements.
|
||||||
|
; Each element consist of a frequency (f) with an optional duration (in ms)
|
||||||
|
; attached to it (f/duration). The frequency component may be a mixture of two
|
||||||
|
; frequencies (f1+f2) or a frequency modulated by another frequency (f1*f2).
|
||||||
|
; The implicit modulation depth is fixed at 90%, though.
|
||||||
|
; If the list element starts with a !, that element is NOT repeated,
|
||||||
|
; therefore, only if all elements start with !, the tonelist is time-limited,
|
||||||
|
; all others will repeat indefinitely.
|
||||||
|
;
|
||||||
|
; concisely:
|
||||||
|
; element = [!]freq[+|*freq2][/duration]
|
||||||
|
; tonelist = element[,element]*
|
||||||
|
;
|
||||||
|
|
||||||
|
[at]
|
||||||
|
description = Austria
|
||||||
|
ringcadence = 1000,5000
|
||||||
|
; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
|
||||||
|
dial = 420
|
||||||
|
busy = 420/400,0/400
|
||||||
|
ring = 420/1000,0/5000
|
||||||
|
congestion = 420/200,0/200
|
||||||
|
callwaiting = 420/40,0/1960
|
||||||
|
dialrecall = 420
|
||||||
|
; RECORDTONE - not specified
|
||||||
|
record = 1400/80,0/14920
|
||||||
|
info = 950/330,1450/330,1850/330,0/1000
|
||||||
|
stutter = 380+420
|
||||||
|
|
||||||
|
[au]
|
||||||
|
description = Australia
|
||||||
|
; Reference http://www.acif.org.au/__data/page/3303/S002_2001.pdf
|
||||||
|
; Normal Ring
|
||||||
|
ringcadence = 400,200,400,2000
|
||||||
|
; Distinctive Ring 1 - Forwarded Calls
|
||||||
|
; 400,400,200,200,400,1400
|
||||||
|
; Distinctive Ring 2 - Selective Ring 2 + Operator + Recall
|
||||||
|
; 400,400,200,2000
|
||||||
|
; Distinctive Ring 3 - Multiple Subscriber Number 1
|
||||||
|
; 200,200,400,2200
|
||||||
|
; Distinctive Ring 4 - Selective Ring 1 + Centrex
|
||||||
|
; 400,2600
|
||||||
|
; Distinctive Ring 5 - Selective Ring 3
|
||||||
|
; 400,400,200,400,200,1400
|
||||||
|
; Distinctive Ring 6 - Multiple Subscriber Number 2
|
||||||
|
; 200,400,200,200,400,1600
|
||||||
|
; Distinctive Ring 7 - Multiple Subscriber Number 3 + Data Privacy
|
||||||
|
; 200,400,200,400,200,1600
|
||||||
|
; Tones
|
||||||
|
dial = 413+438
|
||||||
|
busy = 425/375,0/375
|
||||||
|
ring = 413+438/400,0/200,413+438/400,0/2000
|
||||||
|
; XXX Congestion: Should reduce by 10 db every other cadence XXX
|
||||||
|
congestion = 425/375,0/375,420/375,0/375
|
||||||
|
callwaiting = 425/200,0/200,425/200,0/4400
|
||||||
|
dialrecall = 413+438
|
||||||
|
; Record tone used for Call Intrusion/Recording or Conference
|
||||||
|
record = !425/1000,!0/15000,425/360,0/15000
|
||||||
|
info = 425/2500,0/500
|
||||||
|
; Other Australian Tones
|
||||||
|
; The STD "pips" indicate the call is not an untimed local call
|
||||||
|
std = !525/100,!0/100,!525/100,!0/100,!525/100,!0/100,!525/100,!0/100,!525/100
|
||||||
|
; Facility confirmation tone (eg. Call Forward Activated)
|
||||||
|
facility = 425
|
||||||
|
; Message Waiting "stutter" dialtone
|
||||||
|
stutter = 413+438/100,0/40
|
||||||
|
; Ringtone for calls to Telstra mobiles
|
||||||
|
ringmobile = 400+450/400,0/200,400+450/400,0/2000
|
||||||
|
|
||||||
|
[bg]
|
||||||
|
; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
|
||||||
|
description = Bulgaria
|
||||||
|
ringcadence = 1000,4000
|
||||||
|
;
|
||||||
|
dial = 425
|
||||||
|
busy = 425/500,0/500
|
||||||
|
ring = 425/1000,0/4000
|
||||||
|
congestion = 425/250,0/250
|
||||||
|
callwaiting = 425/150,0/150,425/150,0/4000
|
||||||
|
dialrecall = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
|
||||||
|
record = 1400/425,0/15000
|
||||||
|
info = 950/330,1400/330,1800/330,0/1000
|
||||||
|
stutter = 425/1500,0/100
|
||||||
|
|
||||||
|
[br]
|
||||||
|
description = Brazil
|
||||||
|
ringcadence = 1000,4000
|
||||||
|
dial = 425
|
||||||
|
busy = 425/250,0/250
|
||||||
|
ring = 425/1000,0/4000
|
||||||
|
congestion = 425/250,0/250,425/750,0/250
|
||||||
|
callwaiting = 425/50,0/1000
|
||||||
|
; Dialrecall not used in Brazil standard (using UK standard)
|
||||||
|
dialrecall = 350+440
|
||||||
|
; Record tone is not used in Brazil, use busy tone
|
||||||
|
record = 425/250,0/250
|
||||||
|
; Info not used in Brazil standard (using UK standard)
|
||||||
|
info = 950/330,1400/330,1800/330
|
||||||
|
stutter = 350+440
|
||||||
|
|
||||||
|
[be]
|
||||||
|
description = Belgium
|
||||||
|
; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
|
||||||
|
ringcadence = 1000,3000
|
||||||
|
dial = 425
|
||||||
|
busy = 425/500,0/500
|
||||||
|
ring = 425/1000,0/3000
|
||||||
|
congestion = 425/167,0/167
|
||||||
|
callwaiting = 1400/175,0/175,1400/175,0/3500
|
||||||
|
; DIALRECALL - not specified
|
||||||
|
dialrecall = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440
|
||||||
|
; RECORDTONE - not specified
|
||||||
|
record = 1400/500,0/15000
|
||||||
|
info = 900/330,1400/330,1800/330,0/1000
|
||||||
|
stutter = 425/1000,0/250
|
||||||
|
|
||||||
|
[ch]
|
||||||
|
description = Switzerland
|
||||||
|
; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
|
||||||
|
ringcadence = 1000,4000
|
||||||
|
dial = 425
|
||||||
|
busy = 425/500,0/500
|
||||||
|
ring = 425/1000,0/4000
|
||||||
|
congestion = 425/200,0/200
|
||||||
|
callwaiting = 425/200,0/200,425/200,0/4000
|
||||||
|
; DIALRECALL - not specified
|
||||||
|
dialrecall = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
|
||||||
|
; RECORDTONE - not specified
|
||||||
|
record = 1400/80,0/15000
|
||||||
|
info = 950/330,1400/330,1800/330,0/1000
|
||||||
|
stutter = 425+340/1100,0/1100
|
||||||
|
|
||||||
|
[cl]
|
||||||
|
description = Chile
|
||||||
|
; According to specs from Telefonica CTC Chile
|
||||||
|
ringcadence = 1000,3000
|
||||||
|
dial = 400
|
||||||
|
busy = 400/500,0/500
|
||||||
|
ring = 400/1000,0/3000
|
||||||
|
congestion = 400/200,0/200
|
||||||
|
callwaiting = 400/250,0/8750
|
||||||
|
dialrecall = !400/100,!0/100,!400/100,!0/100,!400/100,!0/100,400
|
||||||
|
record = 1400/500,0/15000
|
||||||
|
info = 950/333,1400/333,1800/333,0/1000
|
||||||
|
stutter = !400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,400
|
||||||
|
|
||||||
|
[cn]
|
||||||
|
description = China
|
||||||
|
; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
|
||||||
|
ringcadence = 1000,4000
|
||||||
|
dial = 450
|
||||||
|
busy = 450/350,0/350
|
||||||
|
ring = 450/1000,0/4000
|
||||||
|
congestion = 450/700,0/700
|
||||||
|
callwaiting = 450/400,0/4000
|
||||||
|
dialrecall = 450
|
||||||
|
record = 950/400,0/10000
|
||||||
|
info = 450/100,0/100,450/100,0/100,450/100,0/100,450/400,0/400
|
||||||
|
; STUTTER - not specified
|
||||||
|
stutter = 450+425
|
||||||
|
|
||||||
|
[cz]
|
||||||
|
description = Czech Republic
|
||||||
|
; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
|
||||||
|
ringcadence = 1000,4000
|
||||||
|
dial = 425/330,0/330,425/660,0/660
|
||||||
|
busy = 425/330,0/330
|
||||||
|
ring = 425/1000,0/4000
|
||||||
|
congestion = 425/165,0/165
|
||||||
|
callwaiting = 425/330,0/9000
|
||||||
|
; DIALRECALL - not specified
|
||||||
|
dialrecall = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425/330,0/330,425/660,0/660
|
||||||
|
; RECORDTONE - not specified
|
||||||
|
record = 1400/500,0/14000
|
||||||
|
info = 950/330,0/30,1400/330,0/30,1800/330,0/1000
|
||||||
|
; STUTTER - not specified
|
||||||
|
stutter = 425/450,0/50
|
||||||
|
|
||||||
|
[de]
|
||||||
|
description = Germany
|
||||||
|
; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
|
||||||
|
ringcadence = 1000,4000
|
||||||
|
dial = 425
|
||||||
|
busy = 425/480,0/480
|
||||||
|
ring = 425/1000,0/4000
|
||||||
|
congestion = 425/240,0/240
|
||||||
|
callwaiting = !425/200,!0/200,!425/200,!0/5000,!425/200,!0/200,!425/200,!0/5000,!425/200,!0/200,!425/200,!0/5000,!425/200,!0/200,!425/200,!0/5000,!425/200,!0/200,!425/200,0
|
||||||
|
; DIALRECALL - not specified
|
||||||
|
dialrecall = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
|
||||||
|
; RECORDTONE - not specified
|
||||||
|
record = 1400/80,0/15000
|
||||||
|
info = 950/330,1400/330,1800/330,0/1000
|
||||||
|
stutter = 425+400
|
||||||
|
|
||||||
|
[dk]
|
||||||
|
description = Denmark
|
||||||
|
; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
|
||||||
|
ringcadence = 1000,4000
|
||||||
|
dial = 425
|
||||||
|
busy = 425/500,0/500
|
||||||
|
ring = 425/1000,0/4000
|
||||||
|
congestion = 425/200,0/200
|
||||||
|
callwaiting = !425/200,!0/600,!425/200,!0/3000,!425/200,!0/200,!425/200,0
|
||||||
|
; DIALRECALL - not specified
|
||||||
|
dialrecall = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
|
||||||
|
; RECORDTONE - not specified
|
||||||
|
record = 1400/80,0/15000
|
||||||
|
info = 950/330,1400/330,1800/330,0/1000
|
||||||
|
; STUTTER - not specified
|
||||||
|
stutter = 425/450,0/50
|
||||||
|
|
||||||
|
[ee]
|
||||||
|
description = Estonia
|
||||||
|
; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
|
||||||
|
ringcadence = 1000,4000
|
||||||
|
dial = 425
|
||||||
|
busy = 425/300,0/300
|
||||||
|
ring = 425/1000,0/4000
|
||||||
|
congestion = 425/200,0/200
|
||||||
|
; CALLWAIT not in accordance to ITU
|
||||||
|
callwaiting = 950/650,0/325,950/325,0/30,1400/1300,0/2600
|
||||||
|
; DIALRECALL - not specified
|
||||||
|
dialrecall = 425/650,0/25
|
||||||
|
; RECORDTONE - not specified
|
||||||
|
record = 1400/500,0/15000
|
||||||
|
; INFO not in accordance to ITU
|
||||||
|
info = 950/650,0/325,950/325,0/30,1400/1300,0/2600
|
||||||
|
; STUTTER not specified
|
||||||
|
stutter = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
|
||||||
|
|
||||||
|
[es]
|
||||||
|
description = Spain
|
||||||
|
ringcadence = 1500,3000
|
||||||
|
dial = 425
|
||||||
|
busy = 425/200,0/200
|
||||||
|
ring = 425/1500,0/3000
|
||||||
|
congestion = 425/200,0/200,425/200,0/200,425/200,0/600
|
||||||
|
callwaiting = 425/175,0/175,425/175,0/3500
|
||||||
|
dialrecall = !425/200,!0/200,!425/200,!0/200,!425/200,!0/200,425
|
||||||
|
record = 1400/500,0/15000
|
||||||
|
info = 950/330,0/1000
|
||||||
|
dialout = 500
|
||||||
|
; STUTTER not specified
|
||||||
|
stutter = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
|
||||||
|
|
||||||
|
|
||||||
|
[fi]
|
||||||
|
description = Finland
|
||||||
|
ringcadence = 1000,4000
|
||||||
|
dial = 425
|
||||||
|
busy = 425/300,0/300
|
||||||
|
ring = 425/1000,0/4000
|
||||||
|
congestion = 425/200,0/200
|
||||||
|
callwaiting = 425/150,0/150,425/150,0/8000
|
||||||
|
dialrecall = 425/650,0/25
|
||||||
|
record = 1400/500,0/15000
|
||||||
|
info = 950/650,0/325,950/325,0/30,1400/1300,0/2600
|
||||||
|
stutter = 425/650,0/25
|
||||||
|
|
||||||
|
[fr]
|
||||||
|
description = France
|
||||||
|
; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
|
||||||
|
ringcadence = 1500,3500
|
||||||
|
; Dialtone can also be 440+330
|
||||||
|
dial = 440
|
||||||
|
busy = 440/500,0/500
|
||||||
|
ring = 440/1500,0/3500
|
||||||
|
; CONGESTION - not specified
|
||||||
|
congestion = 440/250,0/250
|
||||||
|
callwait = 440/300,0/10000
|
||||||
|
; DIALRECALL - not specified
|
||||||
|
dialrecall = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440
|
||||||
|
; RECORDTONE - not specified
|
||||||
|
record = 1400/500,0/15000
|
||||||
|
info = !950/330,!1400/330,!1800/330
|
||||||
|
stutter = !440/100,!0/100,!440/100,!0/100,!440/100,!0/100,!440/100,!0/100,!440/100,!0/100,!440/100,!0/100,440
|
||||||
|
|
||||||
|
[gr]
|
||||||
|
description = Greece
|
||||||
|
ringcadence = 1000,4000
|
||||||
|
dial = 425/200,0/300,425/700,0/800
|
||||||
|
busy = 425/300,0/300
|
||||||
|
ring = 425/1000,0/4000
|
||||||
|
congestion = 425/200,0/200
|
||||||
|
callwaiting = 425/150,0/150,425/150,0/8000
|
||||||
|
dialrecall = 425/650,0/25
|
||||||
|
record = 1400/400,0/15000
|
||||||
|
info = !950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,0
|
||||||
|
stutter = 425/650,0/25
|
||||||
|
|
||||||
|
[hu]
|
||||||
|
description = Hungary
|
||||||
|
; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
|
||||||
|
ringcadence = 1250,3750
|
||||||
|
dial = 425
|
||||||
|
busy = 425/300,0/300
|
||||||
|
ring = 425/1250,0/3750
|
||||||
|
congestion = 425/300,0/300
|
||||||
|
callwaiting = 425/40,0/1960
|
||||||
|
dialrecall = 425+450
|
||||||
|
; RECORDTONE - not specified
|
||||||
|
record = 1400/400,0/15000
|
||||||
|
info = !950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,0
|
||||||
|
stutter = 350+375+400
|
||||||
|
|
||||||
|
[il]
|
||||||
|
description = Israel
|
||||||
|
ringcadence = 1000,3000
|
||||||
|
dial = 414
|
||||||
|
busy = 414/500,0/500
|
||||||
|
ring = 414/1000,0/3000
|
||||||
|
congestion = 414/250,0/250
|
||||||
|
callwaiting = 414/100,0/100,414/100,0/100,414/600,0/3000
|
||||||
|
dialrecall = !414/100,!0/100,!414/100,!0/100,!414/100,!0/100,414
|
||||||
|
record = 1400/500,0/15000
|
||||||
|
info = 1000/330,1400/330,1800/330,0/1000
|
||||||
|
stutter = !414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,414
|
||||||
|
|
||||||
|
|
||||||
|
[in]
|
||||||
|
description = India
|
||||||
|
ringcadence = 400,200,400,2000
|
||||||
|
dial = 400*25
|
||||||
|
busy = 400/750,0/750
|
||||||
|
ring = 400*25/400,0/200,400*25/400,0/2000
|
||||||
|
congestion = 400/250,0/250
|
||||||
|
callwaiting = 400/200,0/100,400/200,0/7500
|
||||||
|
dialrecall = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440
|
||||||
|
record = 1400/500,0/15000
|
||||||
|
info = !950/330,!1400/330,!1800/330,0/1000
|
||||||
|
stutter = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,400*25
|
||||||
|
|
||||||
|
[it]
|
||||||
|
description = Italy
|
||||||
|
; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
|
||||||
|
ringcadence = 1000,4000
|
||||||
|
dial = 425/200,0/200,425/600,0/1000
|
||||||
|
busy = 425/500,0/500
|
||||||
|
ring = 425/1000,0/4000
|
||||||
|
congestion = 425/200,0/200
|
||||||
|
callwaiting = 425/400,0/100,425/250,0/100,425/150,0/14000
|
||||||
|
dialrecall = 470/400,425/400
|
||||||
|
record = 1400/400,0/15000
|
||||||
|
info = !950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,0
|
||||||
|
stutter = 470/400,425/400
|
||||||
|
|
||||||
|
[lt]
|
||||||
|
description = Lithuania
|
||||||
|
ringcadence = 1000,4000
|
||||||
|
dial = 425
|
||||||
|
busy = 425/350,0/350
|
||||||
|
ring = 425/1000,0/4000
|
||||||
|
congestion = 425/200,0/200
|
||||||
|
callwaiting = 425/150,0/150,425/150,0/4000
|
||||||
|
; DIALRECALL - not specified
|
||||||
|
dialrecall = 425/500,0/50
|
||||||
|
; RECORDTONE - not specified
|
||||||
|
record = 1400/500,0/15000
|
||||||
|
info = !950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,0
|
||||||
|
; STUTTER - not specified
|
||||||
|
stutter = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
|
||||||
|
|
||||||
|
[jp]
|
||||||
|
description = Japan
|
||||||
|
ringcadence = 1000,2000
|
||||||
|
dial = 400
|
||||||
|
busy = 400/500,0/500
|
||||||
|
ring = 400+15/1000,0/2000
|
||||||
|
congestion = 400/500,0/500
|
||||||
|
callwaiting = 400+16/500,0/8000
|
||||||
|
dialrecall = !400/200,!0/200,!400/200,!0/200,!400/200,!0/200,400
|
||||||
|
record = 1400/500,0/15000
|
||||||
|
info = !950/330,!1400/330,!1800/330,0
|
||||||
|
stutter = !400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,400
|
||||||
|
|
||||||
|
[mx]
|
||||||
|
description = Mexico
|
||||||
|
ringcadence = 2000,4000
|
||||||
|
dial = 425
|
||||||
|
busy = 425/250,0/250
|
||||||
|
ring = 425/1000,0/4000
|
||||||
|
congestion = 425/250,0/250
|
||||||
|
callwaiting = 425/200,0/600,425/200,0/10000
|
||||||
|
dialrecall = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440
|
||||||
|
record = 1400/500,0/15000
|
||||||
|
info = 950/330,0/30,1400/330,0/30,1800/330,0/1000
|
||||||
|
stutter = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,425
|
||||||
|
|
||||||
|
[my]
|
||||||
|
description = Malaysia
|
||||||
|
ringcadence = 2000,4000
|
||||||
|
dial = 425
|
||||||
|
busy = 425/500,0/500
|
||||||
|
ring = 425/400,0/200,425/400,0/2000
|
||||||
|
congestion = 425/500,0/500
|
||||||
|
; STUTTER - not specified
|
||||||
|
stutter = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
|
||||||
|
|
||||||
|
[nl]
|
||||||
|
description = Netherlands
|
||||||
|
; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
|
||||||
|
ringcadence = 1000,4000
|
||||||
|
; Most of these 425's can also be 450's
|
||||||
|
dial = 425
|
||||||
|
busy = 425/500,0/500
|
||||||
|
ring = 425/1000,0/4000
|
||||||
|
congestion = 425/250,0/250
|
||||||
|
callwaiting = 425/500,0/9500
|
||||||
|
; DIALRECALL - not specified
|
||||||
|
dialrecall = 425/500,0/50
|
||||||
|
; RECORDTONE - not specified
|
||||||
|
record = 1400/500,0/15000
|
||||||
|
info = 950/330,1400/330,1800/330,0/1000
|
||||||
|
stutter = 425/500,0/50
|
||||||
|
|
||||||
|
[no]
|
||||||
|
description = Norway
|
||||||
|
ringcadence = 1000,4000
|
||||||
|
dial = 425
|
||||||
|
busy = 425/500,0/500
|
||||||
|
ring = 425/1000,0/4000
|
||||||
|
congestion = 425/200,0/200
|
||||||
|
callwaiting = 425/200,0/600,425/200,0/10000
|
||||||
|
dialrecall = 470/400,425/400
|
||||||
|
record = 1400/400,0/15000
|
||||||
|
info = !950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,0
|
||||||
|
stutter = 470/400,425/400
|
||||||
|
|
||||||
|
[nz]
|
||||||
|
description = New Zealand
|
||||||
|
; Reference = http://www.telepermit.co.nz/TNA102.pdf
|
||||||
|
ringcadence = 400,200,400,2000
|
||||||
|
dial = 400
|
||||||
|
busy = 400/500,0/500
|
||||||
|
ring = 400+450/400,0/200,400+450/400,0/2000
|
||||||
|
congestion = 400/250,0/250
|
||||||
|
callwaiting = !400/200,!0/3000,!400/200,!0/3000,!400/200,!0/3000,!400/200
|
||||||
|
dialrecall = !400/100,!0/100,!400/100,!0/100,!400/100,!0/100,400
|
||||||
|
record = 1400/425,0/15000
|
||||||
|
info = 400/750,0/100,400/750,0/100,400/750,0/100,400/750,0/400
|
||||||
|
stutter = !400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,400
|
||||||
|
unobtainable = 400/75,0/100,400/75,0/100,400/75,0/100,400/75,0/400
|
||||||
|
|
||||||
|
[ph]
|
||||||
|
|
||||||
|
; reference http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
|
||||||
|
|
||||||
|
description = Philippines
|
||||||
|
ringcadence = 1000,4000
|
||||||
|
dial = 425
|
||||||
|
busy = 480+620/500,0/500
|
||||||
|
ring = 425+480/1000,0/4000
|
||||||
|
congestion = 480+620/250,0/250
|
||||||
|
callwaiting = 440/300,0/10000
|
||||||
|
; DIALRECALL - not specified
|
||||||
|
dialrecall = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440
|
||||||
|
; RECORDTONE - not specified
|
||||||
|
record = 1400/500,0/15000
|
||||||
|
; INFO - not specified
|
||||||
|
info = !950/330,!1400/330,!1800/330,0
|
||||||
|
; STUTTER - not specified
|
||||||
|
stutter = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,425
|
||||||
|
|
||||||
|
|
||||||
|
[pl]
|
||||||
|
description = Poland
|
||||||
|
ringcadence = 1000,4000
|
||||||
|
dial = 425
|
||||||
|
busy = 425/500,0/500
|
||||||
|
ring = 425/1000,0/4000
|
||||||
|
congestion = 425/500,0/500
|
||||||
|
callwaiting = 425/150,0/150,425/150,0/4000
|
||||||
|
; DIALRECALL - not specified
|
||||||
|
dialrecall = 425/500,0/50
|
||||||
|
; RECORDTONE - not specified
|
||||||
|
record = 1400/500,0/15000
|
||||||
|
; 950/1400/1800 3x0.33 on 1.0 off repeated 3 times
|
||||||
|
info = !950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000
|
||||||
|
; STUTTER - not specified
|
||||||
|
stutter = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
|
||||||
|
|
||||||
|
[pt]
|
||||||
|
description = Portugal
|
||||||
|
ringcadence = 1000,5000
|
||||||
|
dial = 425
|
||||||
|
busy = 425/500,0/500
|
||||||
|
ring = 425/1000,0/5000
|
||||||
|
congestion = 425/200,0/200
|
||||||
|
callwaiting = 440/300,0/10000
|
||||||
|
dialrecall = 425/1000,0/200
|
||||||
|
record = 1400/500,0/15000
|
||||||
|
info = 950/330,1400/330,1800/330,0/1000
|
||||||
|
stutter = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
|
||||||
|
|
||||||
|
[ru]
|
||||||
|
; References:
|
||||||
|
; http://www.minsvyaz.ru/site.shtml?id=1806
|
||||||
|
; http://www.aboutphone.info/lib/gost/45-223-2001.html
|
||||||
|
description = Russian Federation / ex Soviet Union
|
||||||
|
ringcadence = 1000,4000
|
||||||
|
dial = 425
|
||||||
|
busy = 425/350,0/350
|
||||||
|
ring = 425/1000,0/4000
|
||||||
|
congestion = 425/175,0/175
|
||||||
|
callwaiting = 425/200,0/5000
|
||||||
|
record = 1400/400,0/15000
|
||||||
|
info = 950/330,1400/330,1800/330,0/1000
|
||||||
|
dialrecall = 425/400,0/40
|
||||||
|
stutter = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
|
||||||
|
|
||||||
|
[se]
|
||||||
|
description = Sweden
|
||||||
|
ringcadence = 1000,5000
|
||||||
|
dial = 425
|
||||||
|
busy = 425/250,0/250
|
||||||
|
ring = 425/1000,0/5000
|
||||||
|
congestion = 425/250,0/750
|
||||||
|
callwaiting = 425/200,0/500,425/200,0/9100
|
||||||
|
dialrecall = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
|
||||||
|
record = 1400/500,0/15000
|
||||||
|
info = !950/332,!0/24,!1400/332,!0/24,!1800/332,!0/2024,!950/332,!0/24,!1400/332,!0/24,!1800/332,!0/2024,!950/332,!0/24,!1400/332,!0/24,!1800/332,!0/2024,!950/332,!0/24,!1400/332,!0/24,!1800/332,!0/2024,!950/332,!0/24,!1400/332,!0/24,!1800/332,0
|
||||||
|
stutter = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
|
||||||
|
; stutter = 425/320,0/20 ; Real swedish standard, not used for now
|
||||||
|
|
||||||
|
[sg]
|
||||||
|
description = Singapore
|
||||||
|
; Singapore
|
||||||
|
; Reference: http://www.ida.gov.sg/idaweb/doc/download/I397/ida_ts_pstn1_i4r2.pdf
|
||||||
|
; Frequency specs are: 425 Hz +/- 20Hz; 24 Hz +/- 2Hz; modulation depth 100%; SIT +/- 50Hz
|
||||||
|
ringcadence = 400,200,400,2000
|
||||||
|
dial = 425
|
||||||
|
ring = 425*24/400,0/200,425*24/400,0/2000 ; modulation should be 100%, not 90%
|
||||||
|
busy = 425/750,0/750
|
||||||
|
congestion = 425/250,0/250
|
||||||
|
callwaiting = 425*24/300,0/200,425*24/300,0/3200
|
||||||
|
stutter = !425/200,!0/200,!425/600,!0/200,!425/200,!0/200,!425/600,!0/200,!425/200,!0/200,!425/600,!0/200,!425/200,!0/200,!425/600,!0/200,425
|
||||||
|
info = 950/330,1400/330,1800/330,0/1000 ; not currently in use acc. to reference
|
||||||
|
dialrecall = 425*24/500,0/500,425/500,0/2500 ; unspecified in IDA reference, use repeating Holding Tone A,B
|
||||||
|
record = 1400/500,0/15000 ; unspecified in IDA reference, use 0.5s tone every 15s
|
||||||
|
; additionally defined in reference
|
||||||
|
nutone = 425/2500,0/500
|
||||||
|
intrusion = 425/250,0/2000
|
||||||
|
warning = 425/624,0/4376 ; end of period tone, warning
|
||||||
|
acceptance = 425/125,0/125
|
||||||
|
holdinga = !425*24/500,!0/500 ; followed by holdingb
|
||||||
|
holdingb = !425/500,!0/2500
|
||||||
|
|
||||||
|
[th]
|
||||||
|
description = Thailand
|
||||||
|
ringcadence = 1000,4000
|
||||||
|
; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
|
||||||
|
dial = 400*50
|
||||||
|
busy = 400/500,0/500
|
||||||
|
ring = 420/1000,0/5000
|
||||||
|
congestion = 400/300,0/300
|
||||||
|
callwaiting = 1000/400,10000/400,1000/400
|
||||||
|
; DIALRECALL - not specified - use special dial tone instead.
|
||||||
|
dialrecall = 400*50/400,0/100,400*50/400,0/100
|
||||||
|
; RECORDTONE - not specified
|
||||||
|
record = 1400/500,0/15000
|
||||||
|
; INFO - specified as an announcement - use special information tones instead
|
||||||
|
info = 950/330,1400/330,1800/330
|
||||||
|
; STUTTER - not specified
|
||||||
|
stutter = !400/200,!0/200,!400/600,!0/200,!400/200,!0/200,!400/600,!0/200,!400/200,!0/200,!400/600,!0/200,!400/200,!0/200,!400/600,!0/200,400
|
||||||
|
|
||||||
|
[uk]
|
||||||
|
description = United Kingdom
|
||||||
|
ringcadence = 400,200,400,2000
|
||||||
|
; These are the official tones taken from BT SIN350. The actual tones
|
||||||
|
; used by BT include some volume differences so sound slightly different
|
||||||
|
; from Asterisk-generated ones.
|
||||||
|
dial = 350+440
|
||||||
|
; Special dial is the intermittent dial tone heard when, for example,
|
||||||
|
; you have a divert active on the line
|
||||||
|
specialdial = 350+440/750,440/750
|
||||||
|
; Busy is also called "Engaged"
|
||||||
|
busy = 400/375,0/375
|
||||||
|
; "Congestion" is the Beep-bip engaged tone
|
||||||
|
congestion = 400/400,0/350,400/225,0/525
|
||||||
|
; "Special Congestion" is not used by BT very often if at all
|
||||||
|
specialcongestion = 400/200,1004/300
|
||||||
|
unobtainable = 400
|
||||||
|
ring = 400+450/400,0/200,400+450/400,0/2000
|
||||||
|
callwaiting = 400/100,0/4000
|
||||||
|
; BT seem to use "Special Call Waiting" rather than just "Call Waiting" tones
|
||||||
|
specialcallwaiting = 400/250,0/250,400/250,0/250,400/250,0/5000
|
||||||
|
; "Pips" used by BT on payphones. (Sounds wrong, but this is what BT claim it
|
||||||
|
; is and I've not used a payphone for years)
|
||||||
|
creditexpired = 400/125,0/125
|
||||||
|
; These two are used to confirm/reject service requests on exchanges that
|
||||||
|
; don't do voice announcements.
|
||||||
|
confirm = 1400
|
||||||
|
switching = 400/200,0/400,400/2000,0/400
|
||||||
|
; This is the three rising tones Doo-dah-dee "Special Information Tone",
|
||||||
|
; usually followed by the BT woman saying an appropriate message.
|
||||||
|
info = 950/330,0/15,1400/330,0/15,1800/330,0/1000
|
||||||
|
; Not listed in SIN350
|
||||||
|
record = 1400/500,0/60000
|
||||||
|
stutter = 350+440/750,440/750
|
||||||
|
|
||||||
|
[us]
|
||||||
|
description = United States / North America
|
||||||
|
ringcadence = 2000,4000
|
||||||
|
dial = 350+440
|
||||||
|
busy = 480+620/500,0/500
|
||||||
|
ring = 440+480/2000,0/4000
|
||||||
|
congestion = 480+620/250,0/250
|
||||||
|
callwaiting = 440/300,0/10000
|
||||||
|
dialrecall = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440
|
||||||
|
record = 1400/500,0/15000
|
||||||
|
info = !950/330,!1400/330,!1800/330,0
|
||||||
|
stutter = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440
|
||||||
|
|
||||||
|
[us-old]
|
||||||
|
description = United States Circa 1950/ North America
|
||||||
|
ringcadence = 2000,4000
|
||||||
|
dial = 600*120
|
||||||
|
busy = 500*100/500,0/500
|
||||||
|
ring = 420*40/2000,0/4000
|
||||||
|
congestion = 500*100/250,0/250
|
||||||
|
callwaiting = 440/300,0/10000
|
||||||
|
dialrecall = !600*120/100,!0/100,!600*120/100,!0/100,!600*120/100,!0/100,600*120
|
||||||
|
record = 1400/500,0/15000
|
||||||
|
info = !950/330,!1400/330,!1800/330,0
|
||||||
|
stutter = !600*120/100,!0/100,!600*120/100,!0/100,!600*120/100,!0/100,!600*120/100,!0/100,!600*120/100,!0/100,!600*120/100,!0/100,600*120
|
||||||
|
|
||||||
|
[tw]
|
||||||
|
description = Taiwan
|
||||||
|
; http://nemesis.lonestar.org/reference/telecom/signaling/dialtone.html
|
||||||
|
; http://nemesis.lonestar.org/reference/telecom/signaling/busy.html
|
||||||
|
; http://www.iproducts.com.tw/ee/kylink/06ky-1000a.htm
|
||||||
|
; http://www.pbx-manufacturer.com/ky120dx.htm
|
||||||
|
; http://www.nettwerked.net/tones.txt
|
||||||
|
; http://www.cisco.com/univercd/cc/td/doc/product/tel_pswt/vco_prod/taiw_sup/taiw2.htm
|
||||||
|
;
|
||||||
|
; busy tone 480+620Hz 0.5 sec. on ,0.5 sec. off
|
||||||
|
; reorder tone 480+620Hz 0.25 sec. on,0.25 sec. off
|
||||||
|
; ringing tone 440+480Hz 1 sec. on ,2 sec. off
|
||||||
|
;
|
||||||
|
ringcadence = 1000,4000
|
||||||
|
dial = 350+440
|
||||||
|
busy = 480+620/500,0/500
|
||||||
|
ring = 440+480/1000,0/2000
|
||||||
|
congestion = 480+620/250,0/250
|
||||||
|
callwaiting = 350+440/250,0/250,350+440/250,0/3250
|
||||||
|
dialrecall = 300/1500,0/500
|
||||||
|
record = 1400/500,0/15000
|
||||||
|
info = !950/330,!1400/330,!1800/330,0
|
||||||
|
stutter = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440
|
||||||
|
|
||||||
|
[ve]
|
||||||
|
; Tone definition source for ve found on
|
||||||
|
; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
|
||||||
|
description = Venezuela / South America
|
||||||
|
ringcadence = 1000,4000
|
||||||
|
dial = 425
|
||||||
|
busy = 425/500,0/500
|
||||||
|
ring = 425/1000,0/4000
|
||||||
|
congestion = 425/250,0/250
|
||||||
|
callwaiting = 400+450/300,0/6000
|
||||||
|
dialrecall = 425
|
||||||
|
record = 1400/500,0/15000
|
||||||
|
info = !950/330,!1440/330,!1800/330,0/1000
|
||||||
|
; STUTTER - not specified
|
||||||
|
stutter = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
|
||||||
|
|
||||||
|
|
||||||
|
[za]
|
||||||
|
description = South Africa
|
||||||
|
; http://www.cisco.com/univercd/cc/td/doc/product/tel_pswt/vco_prod/safr_sup/saf02.htm
|
||||||
|
; (definitions for other countries can also be found there)
|
||||||
|
; Note, though, that South Africa uses two switch types in their network --
|
||||||
|
; Alcatel switches -- mainly in the Western Cape, and Siemens elsewhere.
|
||||||
|
; The former use 383+417 in dial, ringback etc. The latter use 400*33
|
||||||
|
; I've provided both, uncomment the ones you prefer
|
||||||
|
ringcadence = 400,200,400,2000
|
||||||
|
; dial/ring/callwaiting for the Siemens switches:
|
||||||
|
dial = 400*33
|
||||||
|
ring = 400*33/400,0/200,400*33/400,0/2000
|
||||||
|
callwaiting = 400*33/250,0/250,400*33/250,0/250,400*33/250,0/250,400*33/250,0/250
|
||||||
|
; dial/ring/callwaiting for the Alcatel switches:
|
||||||
|
; dial = 383+417
|
||||||
|
; ring = 383+417/400,0/200,383+417/400,0/2000
|
||||||
|
; callwaiting = 383+417/250,0/250,383+417/250,0/250,383+417/250,0/250,383+417/250,0/250
|
||||||
|
congestion = 400/250,0/250
|
||||||
|
busy = 400/500,0/500
|
||||||
|
dialrecall = 350+440
|
||||||
|
; XXX Not sure about the RECORDTONE
|
||||||
|
record = 1400/500,0/10000
|
||||||
|
info = 950/330,1400/330,1800/330,0/330
|
||||||
|
stutter = !400*33/100,!0/100,!400*33/100,!0/100,!400*33/100,!0/100,!400*33/100,!0/100,!400*33/100,!0/100,!400*33/100,!0/100,400*33
|
||||||
166
logger.conf
Normal file
166
logger.conf
Normal file
@@ -0,0 +1,166 @@
|
|||||||
|
;
|
||||||
|
; Logging Configuration
|
||||||
|
;
|
||||||
|
; In this file, you configure logging to files or to
|
||||||
|
; the syslog system.
|
||||||
|
;
|
||||||
|
; "logger reload" at the CLI will reload configuration
|
||||||
|
; of the logging system.
|
||||||
|
|
||||||
|
[general]
|
||||||
|
;
|
||||||
|
; Customize the display of debug message time stamps
|
||||||
|
; this example is the ISO 8601 date format (yyyy-mm-dd HH:MM:SS)
|
||||||
|
;
|
||||||
|
; see strftime(3) Linux manual for format specifiers. Note that there is also
|
||||||
|
; a fractional second parameter which may be used in this field. Use %1q
|
||||||
|
; for tenths, %2q for hundredths, etc.
|
||||||
|
;
|
||||||
|
;dateformat=%F %T ; ISO 8601 date format
|
||||||
|
;dateformat=%F %T.%3q ; with milliseconds
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; This makes Asterisk write callids to log messages
|
||||||
|
; (defaults to yes)
|
||||||
|
;use_callids = no
|
||||||
|
;
|
||||||
|
; This appends the hostname to the name of the log files.
|
||||||
|
;appendhostname = yes
|
||||||
|
;
|
||||||
|
; This determines whether or not we log queue events to a file
|
||||||
|
; (defaults to yes).
|
||||||
|
;queue_log = no
|
||||||
|
;
|
||||||
|
; Determines whether the queue_log always goes to a file, even
|
||||||
|
; when a realtime backend is present (defaults to no).
|
||||||
|
;queue_log_to_file = yes
|
||||||
|
;
|
||||||
|
; Set the queue_log filename
|
||||||
|
; (defaults to queue_log)
|
||||||
|
;queue_log_name = queue_log
|
||||||
|
;
|
||||||
|
; When using realtime for the queue log, use GMT for the timestamp
|
||||||
|
; instead of localtime. The default of this option is 'no'.
|
||||||
|
;queue_log_realtime_use_gmt = yes
|
||||||
|
;
|
||||||
|
; Log rotation strategy:
|
||||||
|
; none: Do not perform any logrotation at all. You should make
|
||||||
|
; very sure to set up some external logrotate mechanism
|
||||||
|
; as the asterisk logs can get very large, very quickly.
|
||||||
|
; sequential: Rename archived logs in order, such that the newest
|
||||||
|
; has the highest sequence number [default]. When
|
||||||
|
; exec_after_rotate is set, ${filename} will specify
|
||||||
|
; the new archived logfile.
|
||||||
|
; rotate: Rotate all the old files, such that the oldest has the
|
||||||
|
; highest sequence number [this is the expected behavior
|
||||||
|
; for Unix administrators]. When exec_after_rotate is
|
||||||
|
; set, ${filename} will specify the original root filename.
|
||||||
|
; timestamp: Rename the logfiles using a timestamp instead of a
|
||||||
|
; sequence number when "logger rotate" is executed.
|
||||||
|
; When exec_after_rotate is set, ${filename} will
|
||||||
|
; specify the new archived logfile.
|
||||||
|
;rotatestrategy = rotate
|
||||||
|
;
|
||||||
|
; Run a system command after rotating the files. This is mainly
|
||||||
|
; useful for rotatestrategy=rotate. The example allows the last
|
||||||
|
; two archive files to remain uncompressed, but after that point,
|
||||||
|
; they are compressed on disk.
|
||||||
|
;
|
||||||
|
; exec_after_rotate=gzip -9 ${filename}.2
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; For each file, specify what to log.
|
||||||
|
;
|
||||||
|
; For console logging, you set options at start of
|
||||||
|
; Asterisk with -v for verbose and -d for debug
|
||||||
|
; See 'asterisk -h' for more information.
|
||||||
|
;
|
||||||
|
; Directory for log files is configures in asterisk.conf
|
||||||
|
; option astlogdir
|
||||||
|
;
|
||||||
|
; All log messages go to a queue serviced by a single thread
|
||||||
|
; which does all the IO. This setting controls how big that
|
||||||
|
; queue can get (and therefore how much memory is allocated)
|
||||||
|
; before new messages are discarded.
|
||||||
|
; The default is 1000
|
||||||
|
;logger_queue_limit = 250
|
||||||
|
;
|
||||||
|
;
|
||||||
|
[logfiles]
|
||||||
|
;
|
||||||
|
; Format is:
|
||||||
|
;
|
||||||
|
; logger_name => [formatter]levels
|
||||||
|
;
|
||||||
|
; The name of the logger dictates not only the name of the logging
|
||||||
|
; channel, but also its type. Valid types are:
|
||||||
|
; - 'console' - The root console of Asterisk
|
||||||
|
; - 'syslog' - Linux syslog, with facilities specified afterwards with
|
||||||
|
; a period delimiter, e.g., 'syslog.local0'
|
||||||
|
; - 'filename' - The name of the log file to create. This is the default
|
||||||
|
; for log channels.
|
||||||
|
;
|
||||||
|
; Filenames can either be relative to the standard Asterisk log directory
|
||||||
|
; (see 'astlogdir' in asterisk.conf), or absolute paths that begin with
|
||||||
|
; '/'.
|
||||||
|
;
|
||||||
|
; An optional formatter can be specified prior to the log levels sent
|
||||||
|
; to the log channel. The formatter is defined immediately preceeding the
|
||||||
|
; levels, and is enclosed in square brackets. Valid formatters are:
|
||||||
|
; - [default] - The default formatter, this outputs log messages using a
|
||||||
|
; human readable format.
|
||||||
|
; - [json] - Log the output in JSON. Note that JSON formatted log entries,
|
||||||
|
; if specified for a logger type of 'console', will be formatted
|
||||||
|
; per the 'default' formatter for log messages of type VERBOSE.
|
||||||
|
; This is due to the remote consoles intepreting verbosity
|
||||||
|
; outside of the logging subsystem.
|
||||||
|
;
|
||||||
|
; Log levels include the following, and are specified in a comma delineated
|
||||||
|
; list:
|
||||||
|
; debug
|
||||||
|
; notice
|
||||||
|
; warning
|
||||||
|
; error
|
||||||
|
; verbose(<level>)
|
||||||
|
; dtmf
|
||||||
|
; fax
|
||||||
|
; security
|
||||||
|
;
|
||||||
|
; Verbose takes an optional argument, in the form of an integer level.
|
||||||
|
; Verbose messages with higher levels will not be logged to the file. If
|
||||||
|
; the verbose level is not specified, it will log verbose messages following
|
||||||
|
; the current level of the root console.
|
||||||
|
;
|
||||||
|
; Special level name "*" means all levels, even dynamic levels registered
|
||||||
|
; by modules after the logger has been initialized (this means that loading
|
||||||
|
; and unloading modules that create/remove dynamic logger levels will result
|
||||||
|
; in these levels being included on filenames that have a level name of "*",
|
||||||
|
; without any need to perform a 'logger reload' or similar operation).
|
||||||
|
; Note that there is no value in specifying both "*" and specific level names
|
||||||
|
; for a filename; the "*" level means all levels. The only exception is if
|
||||||
|
; you need to specify a specific verbose level. e.g, "verbose(3),*".
|
||||||
|
;
|
||||||
|
; We highly recommend that you DO NOT turn on debug mode if you are simply
|
||||||
|
; running a production system. Debug mode turns on a LOT of extra messages,
|
||||||
|
; most of which you are unlikely to understand without an understanding of
|
||||||
|
; the underlying code. Do NOT report debug messages as code issues, unless
|
||||||
|
; you have a specific issue that you are attempting to debug. They are
|
||||||
|
; messages for just that -- debugging -- and do not rise to the level of
|
||||||
|
; something that merit your attention as an Asterisk administrator. Debug
|
||||||
|
; messages are also very verbose and can and do fill up logfiles quickly;
|
||||||
|
; this is another reason not to have debug mode on a production system unless
|
||||||
|
; you are in the process of debugging a specific issue.
|
||||||
|
;
|
||||||
|
;debug => debug
|
||||||
|
;security => security
|
||||||
|
console => notice,warning,error
|
||||||
|
;console => notice,warning,error,debug
|
||||||
|
messages => notice,warning,error
|
||||||
|
;full => notice,warning,error,debug,verbose,dtmf,fax
|
||||||
|
;
|
||||||
|
;full-json => [json]debug,verbose,notice,warning,error,dtmf,fax
|
||||||
|
;
|
||||||
|
;syslog keyword : This special keyword logs to syslog facility
|
||||||
|
;
|
||||||
|
;syslog.local0 => notice,warning,error
|
||||||
|
;
|
||||||
156
manager.conf
Normal file
156
manager.conf
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
;
|
||||||
|
; AMI - The Asterisk Manager Interface
|
||||||
|
;
|
||||||
|
; Third party application call management support and PBX event supervision
|
||||||
|
;
|
||||||
|
; Use the "manager show commands" at the CLI to list available manager commands
|
||||||
|
; and their authorization levels.
|
||||||
|
;
|
||||||
|
; "manager show command <command>" will show a help text.
|
||||||
|
;
|
||||||
|
; ---------------------------- SECURITY NOTE -------------------------------
|
||||||
|
; Note that you should not enable the AMI on a public IP address. If needed,
|
||||||
|
; block this TCP port with iptables (or another FW software) and reach it
|
||||||
|
; with IPsec, SSH, or SSL vpn tunnel. You can also make the manager
|
||||||
|
; interface available over http/https if Asterisk's http server is enabled in
|
||||||
|
; http.conf and if both "enabled" and "webenabled" are set to yes in
|
||||||
|
; this file. Both default to no. httptimeout provides the maximum
|
||||||
|
; timeout in seconds before a web based session is discarded. The
|
||||||
|
; default is 60 seconds.
|
||||||
|
;
|
||||||
|
[general]
|
||||||
|
enabled = no
|
||||||
|
;webenabled = yes
|
||||||
|
|
||||||
|
port = 5038
|
||||||
|
bindaddr = 0.0.0.0
|
||||||
|
|
||||||
|
; Parameters that control AMI over TLS. ("enabled" must be set too).
|
||||||
|
; You can open a connection to this socket with e.g.
|
||||||
|
;
|
||||||
|
; openssl s_client -connect my_host:5039
|
||||||
|
;
|
||||||
|
;tlsenable=no ; set to YES to enable it
|
||||||
|
;tlsbindaddr=0.0.0.0:5039 ; address and port to bind to, default to bindaddr and port 5039
|
||||||
|
;tlscertfile=/tmp/asterisk.pem ; path to the certificate.
|
||||||
|
;tlsprivatekey=/tmp/private.pem ; path to the private key, if no private given,
|
||||||
|
; if no tlsprivatekey is given, default is to search
|
||||||
|
; tlscertfile for private key.
|
||||||
|
;tlscipher=<cipher string> ; string specifying which SSL ciphers to use or not use
|
||||||
|
;
|
||||||
|
;allowmultiplelogin = yes ; IF set to no, rejects manager logins that are already in use.
|
||||||
|
; ; The default is yes.
|
||||||
|
;
|
||||||
|
;displayconnects = yes
|
||||||
|
;
|
||||||
|
; Add a Unix epoch timestamp to events (not action responses)
|
||||||
|
;
|
||||||
|
;timestampevents = yes
|
||||||
|
|
||||||
|
;brokeneventsaction = yes ; Restore previous behavior that caused the events
|
||||||
|
; action to not return a response in certain
|
||||||
|
; circumstances. Defaults to 'no'.
|
||||||
|
|
||||||
|
;
|
||||||
|
; Display certain channel variables every time a channel-oriented
|
||||||
|
; event is emitted:
|
||||||
|
;
|
||||||
|
;channelvars = var1,var2,var3
|
||||||
|
|
||||||
|
; debug = on ; enable some debugging info in AMI messages (default off).
|
||||||
|
; Also accessible through the "manager debug" CLI command.
|
||||||
|
|
||||||
|
; authtimeout specifies the maximum number of seconds a client has to
|
||||||
|
; authenticate. If the client does not authenticate beofre this timeout
|
||||||
|
; expires, the client will be disconnected. (default: 30 seconds)
|
||||||
|
|
||||||
|
;authtimeout = 30
|
||||||
|
|
||||||
|
; authlimit specifies the maximum number of unauthenticated sessions that will
|
||||||
|
; be allowed to connect at any given time.
|
||||||
|
|
||||||
|
;authlimit = 50
|
||||||
|
|
||||||
|
;httptimeout = 60
|
||||||
|
; a) httptimeout sets the Max-Age of the http cookie
|
||||||
|
; b) httptimeout is the amount of time the webserver waits
|
||||||
|
; on a action=waitevent request (actually its httptimeout-10)
|
||||||
|
; c) httptimeout is also the amount of time the webserver keeps
|
||||||
|
; a http session alive after completing a successful action
|
||||||
|
|
||||||
|
|
||||||
|
;[mark]
|
||||||
|
;secret = mysecret
|
||||||
|
;deny=0.0.0.0/0.0.0.0
|
||||||
|
;permit=209.16.236.73/255.255.255.0
|
||||||
|
;acl=named_acl_example ; use a named ACL from acl.conf
|
||||||
|
;
|
||||||
|
;
|
||||||
|
;setvar=PBXACCOUNT=edvina
|
||||||
|
; The setvar option defines channel variables that will be set when this account
|
||||||
|
; originates a call. You can define multiple setvar= commands for one manager
|
||||||
|
; user.
|
||||||
|
;
|
||||||
|
;eventfilter=Event: Newchannel
|
||||||
|
;eventfilter=Channel: (PJ)?SIP/(james|jim|john)-
|
||||||
|
;eventfilter=!Channel: DAHDI/
|
||||||
|
; The eventfilter option is used to whitelist or blacklist events per user.
|
||||||
|
; A filter consists of an (unanchored) regular expression that is run on the
|
||||||
|
; entire event data. If the first character of the filter is an exclamation
|
||||||
|
; mark (!), the filter is appended to the blacklist instead of the whitelist.
|
||||||
|
; After first checking the read access below, the regular expression filters
|
||||||
|
; are processed as follows:
|
||||||
|
; - If no filters are configured all events are reported as normal.
|
||||||
|
; - If there are white filters only: implied black all filter processed first,
|
||||||
|
; then white filters.
|
||||||
|
; - If there are black filters only: implied white all filter processed first,
|
||||||
|
; then black filters.
|
||||||
|
; - If there are both white and black filters: implied black all filter processed
|
||||||
|
; first, then white filters, and lastly black filters.
|
||||||
|
|
||||||
|
;
|
||||||
|
; If the device connected via this user accepts input slowly,
|
||||||
|
; the timeout for writes to it can be increased to keep it
|
||||||
|
; from being disconnected (value is in milliseconds)
|
||||||
|
;
|
||||||
|
; writetimeout = 100
|
||||||
|
;
|
||||||
|
;displayconnects = yes ; Display on CLI user login/logoff
|
||||||
|
;
|
||||||
|
; Authorization for various classes
|
||||||
|
;
|
||||||
|
; Read authorization permits you to receive asynchronous events, in general.
|
||||||
|
; Write authorization permits you to send commands and get back responses. The
|
||||||
|
; following classes exist:
|
||||||
|
;
|
||||||
|
; all - All event classes below (including any we may have missed).
|
||||||
|
; system - General information about the system and ability to run system
|
||||||
|
; management commands, such as Shutdown, Restart, and Reload. This
|
||||||
|
; class also includes dialplan manipulation actions such as
|
||||||
|
; DialplanExtensionAdd and DialplanExtensionRemove.
|
||||||
|
; call - Information about channels and ability to set information in a
|
||||||
|
; running channel.
|
||||||
|
; log - Logging information. Read-only. (Defined but not yet used.)
|
||||||
|
; verbose - Verbose information. Read-only. (Defined but not yet used.)
|
||||||
|
; agent - Information about queues and agents and ability to add queue
|
||||||
|
; members to a queue.
|
||||||
|
; user - Permission to send and receive UserEvent.
|
||||||
|
; config - Ability to read and write configuration files.
|
||||||
|
; command - Permission to run CLI commands. Write-only.
|
||||||
|
; dtmf - Receive DTMF events. Read-only.
|
||||||
|
; reporting - Ability to get information about the system.
|
||||||
|
; cdr - Output of cdr_manager, if loaded. Read-only.
|
||||||
|
; dialplan - Receive NewExten and VarSet events. Read-only.
|
||||||
|
; originate - Permission to originate new calls. Write-only.
|
||||||
|
; agi - Output AGI commands executed. Input AGI command to execute.
|
||||||
|
; cc - Call Completion events. Read-only.
|
||||||
|
; aoc - Permission to send Advice Of Charge messages and receive Advice
|
||||||
|
; - Of Charge events.
|
||||||
|
; test - Ability to read TestEvent notifications sent to the Asterisk Test
|
||||||
|
; Suite. Note that this is only enabled when the TEST_FRAMEWORK
|
||||||
|
; compiler flag is defined.
|
||||||
|
; security - Security Events. Read-only.
|
||||||
|
; message - Permissions to send out of call messages. Write-only
|
||||||
|
;
|
||||||
|
;read = system,call,log,verbose,agent,user,config,dtmf,reporting,cdr,dialplan
|
||||||
|
;write = system,call,agent,user,config,command,reporting,originate,message
|
||||||
218
minivm.conf
Normal file
218
minivm.conf
Normal file
@@ -0,0 +1,218 @@
|
|||||||
|
;
|
||||||
|
; Mini-Voicemail Configuration
|
||||||
|
; for the MiniVM set of applications
|
||||||
|
;
|
||||||
|
; MiniVM consists of the following dialplan applications
|
||||||
|
; MinivmGreet Play personal prompts for busy/unavailable/temporary messages or default prompts
|
||||||
|
; MinivmRecord Record voice prompts to account directory or default directory
|
||||||
|
; MinivmNotify Notify via e-mail or pager - with or without attachment
|
||||||
|
; MinivmDelete Delete voice prompt (filename as argument or channel variable set by MinivmRecord)
|
||||||
|
;
|
||||||
|
; MiniVM works without accounts (just give e-mail address as argument) or with accounts in
|
||||||
|
; this configuration file or realtime. The idea is to build voicemail as building blocks so that
|
||||||
|
; a complete and adaptive voicemail system can be built in the dialplan
|
||||||
|
;
|
||||||
|
; ----------------------------- Variables to use in subject, from and message body ------------------
|
||||||
|
; Change the from, body and/or subject, variables:
|
||||||
|
; MVM_NAME, MVM_DUR, MVM_MSGNUM, VM_MAILBOX, MVM_CALLERID, MVM_CIDNUM,
|
||||||
|
; MVM_CIDNAME, MVM_DATE
|
||||||
|
;
|
||||||
|
; In addition to these, you can set the MVM_COUNTER channel variable in the
|
||||||
|
; dial plan and use that as a counter. It will also be used in the file name
|
||||||
|
; of the media file attached to the message
|
||||||
|
;
|
||||||
|
; Note: The emailbody config row can only be up to 512 characters due to a
|
||||||
|
; limitation in the Asterisk configuration subsystem.
|
||||||
|
; To create longer mails, use the templatefile option when creating the template
|
||||||
|
; ---------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
[general]
|
||||||
|
; Default format for storing and sending voicemail
|
||||||
|
; (only one format. Can also be set on a per-mailbox level)
|
||||||
|
format=wav49
|
||||||
|
;format=gsm
|
||||||
|
;
|
||||||
|
;Turn on logfile with the following syntax. One line per voicemail received
|
||||||
|
;with minivmRecord()
|
||||||
|
; Mailbox:domain:macrocontext:exten:priority:callerchan:callerid:origdate:origtime:duration:durationstatus:accountcode
|
||||||
|
;logfile=/var/log/asterisk/minivm.log
|
||||||
|
; Who the e-mail notification should appear to come from
|
||||||
|
serveremail=asterisk
|
||||||
|
;serveremail=asterisk@asterisk.example.com
|
||||||
|
; Minimum length of a voicemail message in seconds for the message to be kept
|
||||||
|
; The default is no minimum.
|
||||||
|
;minmessage=3
|
||||||
|
; How many seconds of silence before we end the recording
|
||||||
|
maxsilence=10
|
||||||
|
; Silence threshold (what we consider silence: the lower, the more sensitive)
|
||||||
|
silencethreshold=128
|
||||||
|
; How long greeting messages (busy/unavailable/temp/name) are allowed to be, in seconds
|
||||||
|
;maxgreet=120
|
||||||
|
; If you need to have an external program, i.e. /usr/bin/myapp called when a
|
||||||
|
; voicemail is received by the server. The arguments are
|
||||||
|
;
|
||||||
|
; <app> <username@domain> <callerid-name> <callerid-number>
|
||||||
|
;
|
||||||
|
;externnotify=/usr/bin/myapp
|
||||||
|
; The character set for voicemail messages can be specified here
|
||||||
|
;charset=ISO-8859-1
|
||||||
|
; Skip the "[PBX]:" string from the message title
|
||||||
|
;pbxskip=yes
|
||||||
|
; Change the From: string
|
||||||
|
|
||||||
|
; You can override the default program to send e-mail if you wish, too
|
||||||
|
; This is used both for e-mail and pager messages
|
||||||
|
;mailcmd=/usr/sbin/sendmail -t
|
||||||
|
;
|
||||||
|
; -------------Default e-mail message template (used if no templates are used) ------
|
||||||
|
;fromstring=The Asterisk PBX
|
||||||
|
;
|
||||||
|
|
||||||
|
;emailsubject=[PBX]: New message ${MVM_COUNER} in mailbox ${VM_MAILBOX}
|
||||||
|
; The following definition is very close to the default, but the default shows
|
||||||
|
; just the CIDNAME, if it is not null, otherwise just the CIDNUM, or "an unknown
|
||||||
|
; caller", if they are both null.
|
||||||
|
;emailbody=Dear ${MVM_NAME}:\n\n\tjust wanted to let you know you were just left a ${MVM_DUR} long message (number ${MVM_COUNTER})\nin mailbox ${MVM_MAILBOX} from ${MVM_CALLERID}, on ${MVM_DATE}, so you might\nwant to check it when you get a chance. Thanks!\n\n\t\t\t\t--Asterisk\n
|
||||||
|
;
|
||||||
|
; Set the date format on outgoing mails. Valid arguments can be found on the
|
||||||
|
; strftime(3) man page
|
||||||
|
;
|
||||||
|
; Default
|
||||||
|
emaildateformat=%A, %B %d, %Y at %r
|
||||||
|
; 24h date format
|
||||||
|
;emaildateformat=%A, %d %B %Y at %H:%M:%S
|
||||||
|
;
|
||||||
|
; -------------Default pager message template (used if no templates are used) ------
|
||||||
|
; You can also change the Pager From: string, the pager body and/or subject.
|
||||||
|
; The above defined variables also can be used here
|
||||||
|
;pagerfromstring=The Asterisk PBX
|
||||||
|
;pagersubject=New VM ${MVM_COUNTER}
|
||||||
|
;pagerbody=New ${MVM_DUR} long msg in box ${MVM_MAILBOX}\nfrom ${MVM_CALLERID}, on ${MVM_DATE}
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; -------------Timezone definitions (used in voicemail accounts) -------------------
|
||||||
|
;
|
||||||
|
; Users may be located in different timezones, or may have different
|
||||||
|
; message announcements for their introductory message when they enter
|
||||||
|
; the voicemail system. Set the message and the timezone each user
|
||||||
|
; hears here. Set the user into one of these zones with the tz= attribute
|
||||||
|
; in the options field of the mailbox. Of course, language substitution
|
||||||
|
; still applies here so you may have several directory trees that have
|
||||||
|
; alternate language choices.
|
||||||
|
;
|
||||||
|
; Look in /usr/share/zoneinfo/ for names of timezones.
|
||||||
|
; Look at the manual page for strftime for a quick tutorial on how the
|
||||||
|
; variable substitution is done on the values below.
|
||||||
|
;
|
||||||
|
; Supported values:
|
||||||
|
; 'filename' filename of a soundfile (single ticks around the filename
|
||||||
|
; required)
|
||||||
|
; ${VAR} variable substitution
|
||||||
|
; A or a Day of week (Saturday, Sunday, ...)
|
||||||
|
; B or b or h Month name (January, February, ...)
|
||||||
|
; d or e numeric day of month (first, second, ..., thirty-first)
|
||||||
|
; Y Year
|
||||||
|
; I or l Hour, 12 hour clock
|
||||||
|
; H Hour, 24 hour clock (single digit hours preceded by "oh")
|
||||||
|
; k Hour, 24 hour clock (single digit hours NOT preceded by "oh")
|
||||||
|
; M Minute, with 00 pronounced as "o'clock"
|
||||||
|
; N Minute, with 00 pronounced as "hundred" (US military time)
|
||||||
|
; P or p AM or PM
|
||||||
|
; Q "today", "yesterday" or ABdY
|
||||||
|
; (*note: not standard strftime value)
|
||||||
|
; q "" (for today), "yesterday", weekday, or ABdY
|
||||||
|
; (*note: not standard strftime value)
|
||||||
|
; R 24 hour time, including minute
|
||||||
|
;
|
||||||
|
; The message here is not used in mini-voicemail, but stays for
|
||||||
|
; backwards compatibility
|
||||||
|
|
||||||
|
[zonemessages]
|
||||||
|
eastern=America/New_York|'vm-received' Q 'digits/at' IMp
|
||||||
|
central=America/Chicago|'vm-received' Q 'digits/at' IMp
|
||||||
|
central24=America/Chicago|'vm-received' q 'digits/at' H N 'hours'
|
||||||
|
military=Zulu|'vm-received' q 'digits/at' H N 'hours' 'phonetic/z_p'
|
||||||
|
|
||||||
|
; ---------------------- Message body templates---------------------
|
||||||
|
; [template-name] ; "template-" is a verbatim marker
|
||||||
|
; fromaddress = Your Friendly Asterisk Server
|
||||||
|
; fromemail = asteriskvm@digium.com
|
||||||
|
; subject = <string>
|
||||||
|
; attachmedia = yes | no ; Add media file as attachment?
|
||||||
|
; dateformat = <formatstring> ; See above
|
||||||
|
; charset = <charset> ; Mime charset definition for e-mail messages
|
||||||
|
; locale = <locale> ; Locale for LC_TIME - to get weekdays in local language
|
||||||
|
; ; See your O/S documentation for proper settings for setlocale()
|
||||||
|
; templatefile = <filename> ; File name (relative to Asterisk configuration directory,
|
||||||
|
; or absolute
|
||||||
|
; messagebody = Format ; Message body definition with variables
|
||||||
|
;
|
||||||
|
[template-sv_SE_email]
|
||||||
|
messagebody=Hej ${MVM_NAME}:\n\n\tDu har f<>tt ett r<>stbrevl<76>de-meddelande fr<66>n ${MVM_CALLERID}.\nL<6E>ngd: ${MVM_DUR}\nMailbox ${MVM_MAILBOX}\nDatum: ${MVM_DATE}. \nMeddelandet bifogas det h<>r brevet. Om du inte kan l<>sa det, kontakta intern support. \nH<6E>lsningar\n\n\t\t\t\t--Asterisk\n
|
||||||
|
subject = Du har f<>tt r<>stmeddelande (se bilaga)
|
||||||
|
fromemail = swedish-voicemail-service@stockholm.example.com
|
||||||
|
fromaddress = Asterisk R<>stbrevl<76>da
|
||||||
|
charset=iso-8859-1
|
||||||
|
attachmedia=yes
|
||||||
|
dateformat=%A, %d %B %Y at %H:%M:%S
|
||||||
|
locale=sv_SE
|
||||||
|
|
||||||
|
[template-en_US_email]
|
||||||
|
messagebody=Dear ${MVM_NAME}:\n\n\tjust wanted to let you know you were just left a ${MVM_DUR} long message \nin mailbox ${MVM_MAILBOX} from ${MVM_CALLERID}, on ${MVM_DATE}, so you might\nwant to check it when you get a chance. Thanks!\n\n\t\t\t\t--Asterisk\n
|
||||||
|
subject = New voicemail
|
||||||
|
charset=ascii
|
||||||
|
attachmedia=yes
|
||||||
|
dateformat=%A, %B %d, %Y at %r
|
||||||
|
|
||||||
|
;[template-sv_SE_pager]
|
||||||
|
;templatefile = templates/pager_sv_se.txt
|
||||||
|
;subject = Du har f<>tt voicemail
|
||||||
|
;charset=iso-8859-1
|
||||||
|
;attachmedia=no
|
||||||
|
;locale=sv_SE
|
||||||
|
|
||||||
|
;[template-nb_NO_email]
|
||||||
|
;templatefile = templates/email_nb_NO.txt
|
||||||
|
;subject = Du har f<>tt voicemail
|
||||||
|
;charset=iso-8859-1
|
||||||
|
;locale=nb_NO
|
||||||
|
|
||||||
|
;[template-en_US_email_southern]
|
||||||
|
;templatefile = templates/email_en_US.txt
|
||||||
|
;subject = Y'all got voicemail, honey!
|
||||||
|
;charset=ascii
|
||||||
|
|
||||||
|
;[template-en_UK_email]
|
||||||
|
;templatefile = templates/email_en_us.txt
|
||||||
|
;subject = Dear old chap, you've got an electronic communique
|
||||||
|
;charset=ascii
|
||||||
|
|
||||||
|
; ---------------------- Mailbox accounts --------------------------
|
||||||
|
;Template for mailbox definition - all options
|
||||||
|
;
|
||||||
|
; [username@domain] ; Has to be unique within domain (MWM_USERNAME, MWM_DOMAIN)
|
||||||
|
; etemplate = sv_SE ; Email template from [templates]
|
||||||
|
; ptemplate = en_US ; Pager template from [templates]
|
||||||
|
; email = userpart@domain ; Extra e-mail address (overrides mailbox name)
|
||||||
|
; pager = pageremail@domain ; E-mail address for pager messages
|
||||||
|
; fullname = Mark Spencer ; Full name (MWM_NAME)
|
||||||
|
; options = ; E-mail options, se below
|
||||||
|
; accountcode = ; Account code (read in dialplan function MINIVMACCOUNT)
|
||||||
|
; pincode = ; Numeric pin code (read in dialplan function MINIVMACCOUNT)
|
||||||
|
; timezone=se ; Time zone
|
||||||
|
; serveremail = asterisk@digium.com ; Who to send email from (overrides template if set)
|
||||||
|
; externnotify = <application> ; External application for this account
|
||||||
|
; volgain = ; Volume gain setting (requires "sox")
|
||||||
|
; setvar=SERVICENAME=Voop.com Networks ; Extra variables to use in template
|
||||||
|
|
||||||
|
; Remember that you can use Asterisk Configuration Templates (ACT)
|
||||||
|
|
||||||
|
; [template@example.com](!) ; Declare template
|
||||||
|
; setvar=customerdomain=example.com
|
||||||
|
; setvar=customerclass=gold
|
||||||
|
; etemplate = sv_se_email
|
||||||
|
; serveremail = voicemail@example.com
|
||||||
|
|
||||||
|
; [user2@example.com](template@example.com) ; Declare user2 account using template
|
||||||
|
; fullname = Olle E. Johansson
|
||||||
|
; ; User inherits everything from template
|
||||||
44
modules.conf
Normal file
44
modules.conf
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
;
|
||||||
|
; Asterisk configuration file
|
||||||
|
;
|
||||||
|
; Module Loader configuration file
|
||||||
|
;
|
||||||
|
|
||||||
|
[modules]
|
||||||
|
autoload=yes
|
||||||
|
;
|
||||||
|
; Any modules that need to be loaded before the Asterisk core has been
|
||||||
|
; initialized (just after the logger initialization) can be loaded
|
||||||
|
; using 'preload'. 'preload' forces a module and the modules it
|
||||||
|
; is known to depend upon to be loaded earlier than they normally get
|
||||||
|
; loaded.
|
||||||
|
;
|
||||||
|
; NOTE: There is no good reason left to use 'preload' anymore. It was
|
||||||
|
; historically required to preload realtime driver modules so you could
|
||||||
|
; map Asterisk core configuration files to Realtime storage.
|
||||||
|
; This is no longer needed.
|
||||||
|
;
|
||||||
|
;preload => your_special_module.so
|
||||||
|
;
|
||||||
|
; If you want Asterisk to fail if a module does not load, then use
|
||||||
|
; the "require" keyword. Asterisk will exit with a status code of 2
|
||||||
|
; if a required module does not load.
|
||||||
|
;
|
||||||
|
; require = chan_pjsip.so
|
||||||
|
;
|
||||||
|
; If you want you can combine with preload
|
||||||
|
; preload-require = your_special_module.so
|
||||||
|
;
|
||||||
|
;load => res_musiconhold.so
|
||||||
|
;
|
||||||
|
; Load one of: chan_oss, alsa, or console (portaudio).
|
||||||
|
; By default, load chan_oss only (automatically).
|
||||||
|
;
|
||||||
|
noload => chan_alsa.so
|
||||||
|
;noload => chan_oss.so
|
||||||
|
noload => chan_console.so
|
||||||
|
|
||||||
|
noload => res_hep.so
|
||||||
|
noload => res_hep_pjsip.so
|
||||||
|
noload => res_hep_rtcp.so
|
||||||
|
;
|
||||||
122
musiconhold.conf
Normal file
122
musiconhold.conf
Normal file
@@ -0,0 +1,122 @@
|
|||||||
|
;
|
||||||
|
; Music on Hold -- Sample Configuration
|
||||||
|
;
|
||||||
|
[general]
|
||||||
|
;cachertclasses=yes ; use 1 instance of moh class for all users who are using it,
|
||||||
|
; decrease consumable cpu cycles and memory
|
||||||
|
; disabled by default
|
||||||
|
|
||||||
|
;preferchannelclass=yes ; Prefer the musicclass as defined by CHANNEL(musicclass),
|
||||||
|
; over a class set by an application (e.g. a musicclass set on a queue).
|
||||||
|
; Defaults to yes.
|
||||||
|
|
||||||
|
; valid mode options:
|
||||||
|
; files -- read files from a directory in any Asterisk supported
|
||||||
|
; media format
|
||||||
|
; quietmp3 -- default
|
||||||
|
; mp3 -- loud
|
||||||
|
; mp3nb -- unbuffered
|
||||||
|
; quietmp3nb -- quiet unbuffered
|
||||||
|
; custom -- run a custom application (See examples below)
|
||||||
|
|
||||||
|
; =========
|
||||||
|
; File-based (native) music on hold
|
||||||
|
; =========
|
||||||
|
;
|
||||||
|
; This plays files directly from the specified directory, no external
|
||||||
|
; processes are required. Files are played in normal sorting order
|
||||||
|
; (same as a sorted directory listing), and no volume or other
|
||||||
|
; sound adjustments are available. If the file is available in
|
||||||
|
; the same format as the channel's codec, then it will be played
|
||||||
|
; without transcoding (same as Playback would do in the dialplan).
|
||||||
|
; Files can be present in as many formats as you wish, and the
|
||||||
|
; 'best' format will be chosen at playback time.
|
||||||
|
;
|
||||||
|
; The path specified can be either an absolute path (starts with '/'),
|
||||||
|
; or a relative path; relative paths are interpreted as being relative
|
||||||
|
; to the 'astdatalibdir' in asterisk.conf, which defaults to
|
||||||
|
; /var/lib/asterisk.
|
||||||
|
;
|
||||||
|
; NOTE:
|
||||||
|
; If you are not using "autoload" in modules.conf, then you
|
||||||
|
; must ensure that the format modules for any formats you wish
|
||||||
|
; to use are loaded _before_ res_musiconhold. If you do not do
|
||||||
|
; this, res_musiconhold will skip the files it is not able to
|
||||||
|
; understand when it loads.
|
||||||
|
;
|
||||||
|
|
||||||
|
[default]
|
||||||
|
mode=files
|
||||||
|
directory=moh
|
||||||
|
;
|
||||||
|
;[native-random]
|
||||||
|
;mode=files
|
||||||
|
;directory=moh
|
||||||
|
;digit=# ; If this option is set for a class, then when callers are
|
||||||
|
; ; listening to music on hold, they can press this digit, and
|
||||||
|
; ; they will switch to listening to this music class.
|
||||||
|
;announcement=queue-thankyou ;If this option is set for a class, then
|
||||||
|
; ; when callers get put on hold, the specified sound will be
|
||||||
|
; ; be played to them. Also, if using modes that Asterisk
|
||||||
|
; ; controls the playlist for (files, mp3, etc), the same
|
||||||
|
; ; sound will also be played between MOH songs.
|
||||||
|
;sort=random ; Sort the files in random order. Other sort options are:
|
||||||
|
; ; 'alpha' and 'randstart'. If 'alpha', the files are sorted
|
||||||
|
; ; in alphabetical order. If 'randstart', the files are sorted
|
||||||
|
; ; in alphabetical order as well, but the first file is chosen
|
||||||
|
; ; at random. If unspecified, the sort order is undefined.
|
||||||
|
|
||||||
|
;[native-alphabetical]
|
||||||
|
;mode=files
|
||||||
|
;directory=moh
|
||||||
|
;sort=alpha ; Sort the files in alphabetical order.
|
||||||
|
|
||||||
|
; =========
|
||||||
|
; Other (non-native) playback methods
|
||||||
|
; =========
|
||||||
|
|
||||||
|
;[manual]
|
||||||
|
;mode=custom
|
||||||
|
; Note that with mode=custom, a directory is not required, such as when reading
|
||||||
|
; from a stream.
|
||||||
|
;directory=/var/lib/asterisk/mohmp3
|
||||||
|
;application=/usr/bin/mpg123 -q -r 8000 -f 8192 -b 2048 --mono -s
|
||||||
|
|
||||||
|
;[ulawstream]
|
||||||
|
;mode=custom
|
||||||
|
;application=/usr/bin/streamplayer 192.168.100.52 888
|
||||||
|
;format=ulaw ; The 'format' option specifies the audio format that the
|
||||||
|
; ; 'application' will provide to Asterisk. In this example,
|
||||||
|
; ; streamplayer will output ulaw samples so we need to set the
|
||||||
|
; ; format to ulaw so that Asterisk knows how to interpret the
|
||||||
|
; ; incoming audio.
|
||||||
|
|
||||||
|
; mpg123 on Solaris does not always exit properly; madplay may be a better
|
||||||
|
; choice
|
||||||
|
;[solaris]
|
||||||
|
;mode=custom
|
||||||
|
;directory=/var/lib/asterisk/mohmp3
|
||||||
|
;application=/site/sw/bin/madplay -Q -o raw:- --mono -R 8000 -a -12
|
||||||
|
|
||||||
|
; By default, when res_musiconhold reloads or unloads, it sends a HUP signal
|
||||||
|
; to custom applications (and all descendants), waits 100ms, then sends a
|
||||||
|
; TERM signal, waits 100ms, then finally sends a KILL signal. An application
|
||||||
|
; which is interacting with an external device and/or spawns children of its
|
||||||
|
; own may not be able to exit cleanly in the default times, expecially if sent
|
||||||
|
; a KILL signal, or if it's children are getting signals directly from
|
||||||
|
; res_musiconhoild. To allow extra time, the 'kill_escalation_delay'
|
||||||
|
; class option can be used to set the number of milliseconds res_musiconhold
|
||||||
|
; waits before escalating kill signals, with the default being the current
|
||||||
|
; 100ms. To control to whom the signals are sent, the "kill_method"
|
||||||
|
; class option can be set to "process_group" (the default, existing behavior),
|
||||||
|
; which sends signals to the application and its descendants directly, or
|
||||||
|
; "process" which sends signals only to the application itself.
|
||||||
|
|
||||||
|
;[sox_from_device]
|
||||||
|
;mode=custom
|
||||||
|
;directory=/var/lib/asterisk/mohmp3
|
||||||
|
;application=/usr/bin/sox -q -t alsa -c 2 -r 48000 hw:1 -c 1 -r 8000 -t raw -s -
|
||||||
|
; Wait 500ms before escalating kill signals
|
||||||
|
;kill_escalation_delay=500
|
||||||
|
; Send signals to just the child process instead of all descendants
|
||||||
|
;kill_method=process
|
||||||
142
phoneprov.conf
Normal file
142
phoneprov.conf
Normal file
@@ -0,0 +1,142 @@
|
|||||||
|
[general]
|
||||||
|
; This section applies only to the default sip.conf/users.conf config provider
|
||||||
|
; embedded in res_phoneprov. Other providers may provide their own default settings.
|
||||||
|
|
||||||
|
; The default behavior of res_phoneprov will be to set the SERVER template variable to
|
||||||
|
; the IP address that the phone uses to contact the provisioning server and the
|
||||||
|
; SERVER_PORT variable to the bindport setting in sip.conf. Unless you have a very
|
||||||
|
; unusual setup, you should not need to set serveraddr, serveriface, or serverport.
|
||||||
|
|
||||||
|
;serveraddr=192.168.1.1 ; Override address to send to the phone to use as server address.
|
||||||
|
;serveriface=eth0 ; Same as above, except an ethernet interface.
|
||||||
|
; Useful for when the interface uses DHCP and the asterisk http
|
||||||
|
; server listens on a different IP than chan_sip.
|
||||||
|
;serverport=5060 ; Override port to send to the phone to use as server port.
|
||||||
|
default_profile=polycom ; The default profile to use if none specified in users.conf
|
||||||
|
|
||||||
|
; You can define profiles for different phones specifying what files to register
|
||||||
|
; with the provisioning server. You can define either static files, or dynamically
|
||||||
|
; generated files that can have dynamic names and point to templates that variables
|
||||||
|
; can be substituted into. You can also set arbitrary variables for the profiles
|
||||||
|
; templates to have access to. Profiles are shared across all config providers.
|
||||||
|
; Example:
|
||||||
|
|
||||||
|
;[example]
|
||||||
|
;mime_type => application/octet-stream
|
||||||
|
;static_file => example/firmware
|
||||||
|
;static_file => example/default.cfg,text/xml
|
||||||
|
;${TOUPPER(${MAC})}.cfg => templates/example-mac.cfg
|
||||||
|
;setvar => DB_CIDNAME=${ODBC_CID_NAME_LOOKUP(${USERNAME})}
|
||||||
|
|
||||||
|
; Dynamically generated files have a filename registered with variable substitution
|
||||||
|
; with variables obtained from various config providers. The default provider
|
||||||
|
; embedded in res_phoneprov reads users.conf. Other providers will have their own
|
||||||
|
; sources for the variables and may provide additional variables not listed here.
|
||||||
|
|
||||||
|
; Built in variables and the options in users.conf that they come from
|
||||||
|
; MAC (macaddress)
|
||||||
|
; USERNAME (username)
|
||||||
|
; DISPLAY_NAME (fullname)
|
||||||
|
; SECRET (secret)
|
||||||
|
; LABEL (label)
|
||||||
|
; CALLERID (cid_number)
|
||||||
|
; VOCIEMAIL_EXTEN (vmexten)
|
||||||
|
; EXTENSION_LENGTH (localextenlength)
|
||||||
|
; LINE
|
||||||
|
; LINEKEYS
|
||||||
|
|
||||||
|
; Built-in variables and the options in phoneprov.conf that they come from
|
||||||
|
; SERVER (server)
|
||||||
|
; SERVER_PORT (serverport)
|
||||||
|
|
||||||
|
|
||||||
|
; Built-in variables for managing timezones and daylight savings time.
|
||||||
|
; TZOFFSET
|
||||||
|
; DST_ENABLE
|
||||||
|
; DST_START_MONTH
|
||||||
|
; DST_START_MDAY
|
||||||
|
; DST_START_HOUR
|
||||||
|
; DST_END_MONTH
|
||||||
|
; DST_END_MDAY
|
||||||
|
; DST_END_HOUR
|
||||||
|
; TIMEZONE
|
||||||
|
|
||||||
|
[polycom]
|
||||||
|
staticdir => configs/ ; Sub directory of AST_DATA_DIR/phoneprov that static files reside
|
||||||
|
; in. This allows a request to /phoneprov/sip.cfg to pull the file
|
||||||
|
; from /phoneprov/configs/sip.cfg
|
||||||
|
mime_type => text/xml ; Default mime type to use if one isn't specified or the
|
||||||
|
; extension isn't recognized
|
||||||
|
static_file => bootrom.ld,application/octet-stream ; Static files the phone will download
|
||||||
|
static_file => bootrom.ver,plain/text ; static_file => filename,mime-type
|
||||||
|
static_file => sip.ld,application/octet-stream
|
||||||
|
static_file => sip.ver,plain/text
|
||||||
|
static_file => sip.cfg
|
||||||
|
static_file => custom.cfg
|
||||||
|
static_file => 2201-06642-001.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2201-06642-001.sip.ld,application/octet-stream
|
||||||
|
static_file => 2345-11000-001.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-11300-001.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-11300-010.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-11300-010.sip.ld,application/octet-stream
|
||||||
|
static_file => 2345-11402-001.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-11402-001.sip.ld,application/octet-stream
|
||||||
|
static_file => 2345-11500-001.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-11500-010.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-11500-020.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-11500-030.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-11500-030.sip.ld,application/octet-stream
|
||||||
|
static_file => 2345-11500-040.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-11500-040.sip.ld,application/octet-stream
|
||||||
|
static_file => 2345-11600-001.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-11600-001.sip.ld,application/octet-stream
|
||||||
|
static_file => 2345-11605-001.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-11605-001.sip.ld,application/octet-stream
|
||||||
|
static_file => 2345-12200-001.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-12200-001.sip.ld,application/octet-stream
|
||||||
|
static_file => 2345-12200-002.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-12200-002.sip.ld,application/octet-stream
|
||||||
|
static_file => 2345-12200-004.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-12200-004.sip.ld,application/octet-stream
|
||||||
|
static_file => 2345-12200-005.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-12200-005.sip.ld,application/octet-stream
|
||||||
|
static_file => 2345-12365-001.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-12365-001.sip.ld,application/octet-stream
|
||||||
|
static_file => 2345-12500-001.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-12500-001.sip.ld,application/octet-stream
|
||||||
|
static_file => 2345-12560-001.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-12560-001.sip.ld,application/octet-stream
|
||||||
|
static_file => 2345-12600-001.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-12600-001.sip.ld,application/octet-stream
|
||||||
|
static_file => 2345-12670-001.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-12670-001.sip.ld,application/octet-stream
|
||||||
|
static_file => 3111-15600-001.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 3111-15600-001.sip.ld,application/octet-stream
|
||||||
|
static_file => 3111-40000-001.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 3111-40000-001.sip.ld,application/octet-stream
|
||||||
|
static_file => SoundPointIPWelcome.wav,application/octet-stream
|
||||||
|
static_file => SoundPointIPLocalization/Japanese_Japan/SoundPointIP-dictionary.xml
|
||||||
|
static_file => SoundPointIPLocalization/Norwegian_Norway/SoundPointIP-dictionary.xml
|
||||||
|
static_file => SoundPointIPLocalization/Spanish_Spain/SoundPointIP-dictionary.xml
|
||||||
|
static_file => SoundPointIPLocalization/Portuguese_Portugal/SoundPointIP-dictionary.xml
|
||||||
|
static_file => SoundPointIPLocalization/English_United_Kingdom/SoundPointIP-dictionary.xml
|
||||||
|
static_file => SoundPointIPLocalization/English_United_States/SoundPointIP-dictionary.xml
|
||||||
|
static_file => SoundPointIPLocalization/Russian_Russia/SoundPointIP-dictionary.xml
|
||||||
|
static_file => SoundPointIPLocalization/Italian_Italy/SoundPointIP-dictionary.xml
|
||||||
|
static_file => SoundPointIPLocalization/Chinese_China/SoundPointIP-dictionary.xml
|
||||||
|
static_file => SoundPointIPLocalization/Swedish_Sweden/SoundPointIP-dictionary.xml
|
||||||
|
static_file => SoundPointIPLocalization/English_Canada/SoundPointIP-dictionary.xml
|
||||||
|
static_file => SoundPointIPLocalization/German_Germany/SoundPointIP-dictionary.xml
|
||||||
|
static_file => SoundPointIPLocalization/French_France/SoundPointIP-dictionary.xml
|
||||||
|
static_file => SoundPointIPLocalization/Danish_Denmark/SoundPointIP-dictionary.xml
|
||||||
|
static_file => SoundPointIPLocalization/Dutch_Netherlands/SoundPointIP-dictionary.xml
|
||||||
|
static_file => SoundPointIPLocalization/Korean_Korea/SoundPointIP-dictionary.xml
|
||||||
|
|
||||||
|
${MAC}.cfg => 000000000000.cfg ; Dynamically generated files.
|
||||||
|
${MAC}-phone.cfg => 000000000000-phone.cfg ; (relative to AST_DATA_DIR/phoneprov)
|
||||||
|
config/${MAC} => polycom.xml ; Dynamic Filename => template file
|
||||||
|
${MAC}-directory.xml => 000000000000-directory.xml
|
||||||
|
setvar => CUSTOM_CONFIG=/var/lib/asterisk/phoneprov/configs/custom.cfg ; Custom variable
|
||||||
|
|
||||||
|
;snom 300, 320, 360, 370, 820, 821, 870 support
|
||||||
|
snom-${MAC}.xml => snom-mac.xml
|
||||||
56
pjproject.conf
Normal file
56
pjproject.conf
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
; Common pjproject options
|
||||||
|
;
|
||||||
|
|
||||||
|
;[startup]
|
||||||
|
; NOTES: The name of this section in the pjproject.conf configuration file must
|
||||||
|
; remain startup or the configuration will not be applied.
|
||||||
|
;
|
||||||
|
;cache_pools = yes ; Cache pjproject memory pools for performance
|
||||||
|
; Disable this option to help track down pool content
|
||||||
|
; mismanagement when using valgrind or MALLOC_DEBUG.
|
||||||
|
; The cache gets in the way of determining if the
|
||||||
|
; pool contents are used after being freed and who
|
||||||
|
; freed it.
|
||||||
|
; Default yes
|
||||||
|
;log_level=default ; Initial maximum pjproject logging level to log
|
||||||
|
; Valid values are: 0-6, and default
|
||||||
|
;
|
||||||
|
; Note: This option is needed very early in the startup
|
||||||
|
; process so it can only be read from config files because
|
||||||
|
; the modules for other methods have not been loaded yet.
|
||||||
|
;type= ; Must be of type startup (default: "")
|
||||||
|
|
||||||
|
;========================LOG_MAPPINGS SECTION OPTIONS===============================
|
||||||
|
;[log_mappings]
|
||||||
|
; SYNOPSIS: Provides pjproject to Asterisk log level mappings.
|
||||||
|
; NOTES: The name of this section in the pjproject.conf configuration file must
|
||||||
|
; remain log_mappings or the configuration will not be applied.
|
||||||
|
; The defaults mentioned below only apply if this file or the 'log_mappings'
|
||||||
|
; object can't be found. If the object is found, there are no defaults. If
|
||||||
|
; you don't specify an entry, nothing will be logged for that level.
|
||||||
|
;
|
||||||
|
; These logging level meanings are typically used by pjproject:
|
||||||
|
; - 0: fatal error
|
||||||
|
; - 1: error
|
||||||
|
; - 2: warning
|
||||||
|
; - 3: info
|
||||||
|
; - 4: debug
|
||||||
|
; - 5: trace
|
||||||
|
; - 6: more detailed trace
|
||||||
|
;
|
||||||
|
;asterisk_error = ; A comma separated list of pjproject log levels to map to
|
||||||
|
; Asterisk errors.
|
||||||
|
; (default: "0,1")
|
||||||
|
;asterisk_warning = ; A comma separated list of pjproject log levels to map to
|
||||||
|
; Asterisk warnings.
|
||||||
|
; (default: "2")
|
||||||
|
;asterisk_notice = ; A comma separated list of pjproject log levels to map to
|
||||||
|
; Asterisk notices.
|
||||||
|
; (default: "")
|
||||||
|
;asterisk_verbose = ; A comma separated list of pjproject log levels to map to
|
||||||
|
; Asterisk verbose.
|
||||||
|
; (default: "")
|
||||||
|
;asterisk_debug = ; A comma separated list of pjproject log levels to map to
|
||||||
|
; Asterisk debug
|
||||||
|
; (default: "3,4,5,6")
|
||||||
|
;type= ; Must be of type log_mappings (default: "")
|
||||||
1387
pjsip.conf
Normal file
1387
pjsip.conf
Normal file
File diff suppressed because it is too large
Load Diff
57
pjsip_notify.conf
Normal file
57
pjsip_notify.conf
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
; rfc3842
|
||||||
|
; put empty "Content=>" at the end to have CRLF after last body line
|
||||||
|
|
||||||
|
[clear-mwi]
|
||||||
|
Event=>message-summary
|
||||||
|
Content-type=>application/simple-message-summary
|
||||||
|
Content=>Messages-Waiting: no
|
||||||
|
Content=>Message-Account: sip:asterisk@127.0.0.1
|
||||||
|
Content=>Voice-Message: 0/0 (0/0)
|
||||||
|
Content=>
|
||||||
|
|
||||||
|
; Aastra
|
||||||
|
|
||||||
|
[aastra-check-cfg]
|
||||||
|
Event=>check-sync
|
||||||
|
|
||||||
|
[aastra-xml]
|
||||||
|
Event=>aastra-xml
|
||||||
|
|
||||||
|
; Digium
|
||||||
|
|
||||||
|
[digium-check-cfg]
|
||||||
|
Event=>check-sync
|
||||||
|
|
||||||
|
; Linksys
|
||||||
|
|
||||||
|
[linksys-cold-restart]
|
||||||
|
Event=>reboot_now
|
||||||
|
|
||||||
|
[linksys-warm-restart]
|
||||||
|
Event=>restart_now
|
||||||
|
|
||||||
|
; Polycom
|
||||||
|
|
||||||
|
[polycom-check-cfg]
|
||||||
|
Event=>check-sync
|
||||||
|
|
||||||
|
; Sipura
|
||||||
|
|
||||||
|
[sipura-check-cfg]
|
||||||
|
Event=>resync
|
||||||
|
|
||||||
|
[sipura-get-report]
|
||||||
|
Event=>report
|
||||||
|
|
||||||
|
; snom
|
||||||
|
|
||||||
|
[snom-check-cfg]
|
||||||
|
Event=>check-sync\;reboot=false
|
||||||
|
|
||||||
|
[snom-reboot]
|
||||||
|
Event=>check-sync\;reboot=true
|
||||||
|
|
||||||
|
; Cisco
|
||||||
|
|
||||||
|
[cisco-check-cfg]
|
||||||
|
Event=>check-sync
|
||||||
163
pjsip_wizard.conf
Normal file
163
pjsip_wizard.conf
Normal file
@@ -0,0 +1,163 @@
|
|||||||
|
; PJSIP Wizard Configuration Samples and Quick Reference
|
||||||
|
;
|
||||||
|
; This file has several very basic configuration examples, to serve as a quick
|
||||||
|
; reference to jog your memory when you need to write up a new configuration.
|
||||||
|
; It is not intended to teach PJSIP configuration or serve as an exhaustive
|
||||||
|
; reference of options and potential scenarios.
|
||||||
|
;
|
||||||
|
; This file has two main sections.
|
||||||
|
; First, manually written examples to serve as a handy reference.
|
||||||
|
; Second, a list of all possible PJSIP config options by section. This is
|
||||||
|
; pulled from the XML config help. It only shows the synopsis for every item.
|
||||||
|
; If you want to see more detail please check the documentation sources
|
||||||
|
; mentioned at the top of this file.
|
||||||
|
|
||||||
|
; ============================================================================
|
||||||
|
; NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE
|
||||||
|
;
|
||||||
|
; This file does not maintain the complete option documentation.
|
||||||
|
; ============================================================================
|
||||||
|
|
||||||
|
; Documentation
|
||||||
|
;
|
||||||
|
; The official documentation is at http://wiki.asterisk.org
|
||||||
|
; You can read the XML configuration help via Asterisk command line with
|
||||||
|
; "config show help res_pjsip_config_wizard", then you can drill down through
|
||||||
|
; the various sections and their options.
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
;============EXAMPLE WIZARD CONFIGURATION FOR A PHONE=======================
|
||||||
|
|
||||||
|
; This config would create an endpoint, aor with dynamic contact, inbound
|
||||||
|
; auth, a phoneprov object and a dialplan hint for extension 1000.
|
||||||
|
|
||||||
|
;[myphone]
|
||||||
|
;type = wizard
|
||||||
|
;accepts_auth = yes
|
||||||
|
;accepts_registrations = yes
|
||||||
|
;has_phoneprov = yes
|
||||||
|
;transport = ipv4
|
||||||
|
;has_hint = yes
|
||||||
|
;hint_exten = 1000
|
||||||
|
;inbound_auth/username = testname
|
||||||
|
;inbound_auth/password = test password
|
||||||
|
;endpoint/allow = ulaw
|
||||||
|
;endpoint/context = default
|
||||||
|
;phoneprov/MAC = 001122aa4455
|
||||||
|
;phoneprov/PROFILE = profile1
|
||||||
|
|
||||||
|
|
||||||
|
;============EXAMPLE WIZARD CONFIGURATION FOR AN ITSP TRUNK=================
|
||||||
|
|
||||||
|
; This ITSP has 2 servers available and requires registration.
|
||||||
|
|
||||||
|
; This config would create an endpoint, an aor with 2 static contacts, an
|
||||||
|
; outbound auth, an identify with 2 matches, and 2 registrations.
|
||||||
|
|
||||||
|
;[mytrunk]
|
||||||
|
;type = wizard
|
||||||
|
;sends_auth = yes
|
||||||
|
;sends_registrations = yes
|
||||||
|
;transport = ipv4
|
||||||
|
;remote_hosts = sip1.myitsp.com:5060,sip2.myitsp.com:5060
|
||||||
|
;outbound_auth/username = testname
|
||||||
|
;outbound_auth/password = test password
|
||||||
|
;endpoint/allow = ulaw
|
||||||
|
;endpoint/context = default
|
||||||
|
|
||||||
|
|
||||||
|
;========================WIZARD SECTION OPTIONS===============================
|
||||||
|
;[wizard]
|
||||||
|
; SYNOPSIS: Provides configuration wizard for common scenarios.
|
||||||
|
;sends_auth= ; Will create an outbound auth object for the endpoint and
|
||||||
|
; registration.
|
||||||
|
; If yes, outbound/username must be specified.
|
||||||
|
; (default = "no")
|
||||||
|
|
||||||
|
;accepts_auth= ; Will create an inbound auth object for the endpoint.
|
||||||
|
; If yes, inbound/username must be specified.
|
||||||
|
; (default = "no")
|
||||||
|
|
||||||
|
;sends_registrations= ; Will create an outbound registration object and an
|
||||||
|
; identify match for each host in remote_hosts (which
|
||||||
|
; must be specified).
|
||||||
|
; sends_auth must also be specified.
|
||||||
|
; (default: "no")
|
||||||
|
|
||||||
|
;sends_line_with_registrations= ; Setting this to true will cause the wizard to
|
||||||
|
; skip the creation of an identify object to match
|
||||||
|
; incoming requests to the endpoint and instead add the
|
||||||
|
; line and endpoint parameters to the outbound
|
||||||
|
; registration object.
|
||||||
|
; (default: "no")
|
||||||
|
|
||||||
|
;accepts_registrations= ; Will create an aor with dynamic contacts which will
|
||||||
|
; accept registrations.
|
||||||
|
; accepts_auth must also be specified.
|
||||||
|
; (default: "no")
|
||||||
|
|
||||||
|
;remote_hosts= ; A comma separated list of remote hosts in the form of
|
||||||
|
; <ipaddress | hostname>[:port] [,<ipaddress | hostname>[:port] ] ...
|
||||||
|
; If specified, a static contact for each host will be created
|
||||||
|
; in the aor. If accepts_registrations is no, an identify
|
||||||
|
; object is also created with a match line for each remote host.
|
||||||
|
; If an aor/contact or match/identify is explicitly supplied,
|
||||||
|
; remote_hosts will not be used to automatically create contacts
|
||||||
|
; or matches respectively.
|
||||||
|
; (default: "")
|
||||||
|
|
||||||
|
;outbound_proxy= ; Setting this is a shortcut for setting
|
||||||
|
; endpoint/outbound_proxy
|
||||||
|
; aor/outbound_proxy
|
||||||
|
; registration/outbound_proxy
|
||||||
|
|
||||||
|
;transport= ; The transport to use for the endpoint and registrations
|
||||||
|
; (default: the pjsip default)
|
||||||
|
|
||||||
|
;server_uri_pattern= ; The pattern used to construct the registration
|
||||||
|
; server_uri. The replaceable parameter ${REMOTE_HOST} isa
|
||||||
|
; available for use.
|
||||||
|
; (default: "sip:${REMOTE_HOST}")
|
||||||
|
|
||||||
|
;client_uri_pattern= ; The pattern used to construct the registration client_uri.
|
||||||
|
; The replaceable parameters ${REMOTE_HOST} and ${USERNAME}
|
||||||
|
; are available for use.
|
||||||
|
; (default: "sip:${USERNAME}@${REMOTE_HOST}")
|
||||||
|
|
||||||
|
;contact_pattern= ; The pattern used to construct the aor contact.
|
||||||
|
; The replaceable parameter ${REMOTE_HOST} is available
|
||||||
|
; for use.
|
||||||
|
; (default: "sip:${REMOTE_HOST}")
|
||||||
|
|
||||||
|
;has_phoneprov= ; Will create a phoneprov object.
|
||||||
|
; If yes, phoneprov/MAC must be specified.
|
||||||
|
; (default: "no")
|
||||||
|
|
||||||
|
;has_hint= ; Create hint and optionally a default application.
|
||||||
|
; (default: "no")
|
||||||
|
|
||||||
|
;hint_context ; Any hints created for this wizard will be placed in this
|
||||||
|
; context.
|
||||||
|
; (default: endpoint/context)
|
||||||
|
|
||||||
|
;hint_exten ; If specified, a PJSIP/<wizard_id> hint will be created
|
||||||
|
; for this extension in 'hint_context'.
|
||||||
|
; context.
|
||||||
|
; (default: none)
|
||||||
|
|
||||||
|
;hint_application ; If specified, an extension will be placed in 'hint_context'
|
||||||
|
; at priority 1 that calls this application. Could be any
|
||||||
|
; valid dialplan expression like
|
||||||
|
; "Gosub(stdexten,${EXTEN},1(${HINT}))"
|
||||||
|
; (default: "Dial(${HINT})")
|
||||||
|
|
||||||
|
;endpoint/<param> ; Any parameters to be passed directly to and validated
|
||||||
|
;aor/<param> ; by their respective objects.
|
||||||
|
;inbound_auth/<param>
|
||||||
|
;outbound_auth/<param>
|
||||||
|
;identify/<param>
|
||||||
|
;registration/<param>
|
||||||
|
;phoneprov/<param>
|
||||||
|
|
||||||
|
;type= ; Must be of type wizard (default: "")
|
||||||
47
queuerules.conf
Normal file
47
queuerules.conf
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
|
||||||
|
[general]
|
||||||
|
|
||||||
|
; Look for queue rules in the queue_rules database table through RealTime. Note
|
||||||
|
; that this option is not strictly "RealTime", in the sense that the queue
|
||||||
|
; rules are only loaded and parsed during module load/reload. Queue rules
|
||||||
|
; must have a unique rule name and support relative min/max penalties.
|
||||||
|
;
|
||||||
|
; realtime_rules = yes
|
||||||
|
;
|
||||||
|
|
||||||
|
; It is possible to change the value of the QUEUE_MAX_PENALTY, QUEUE_MIN_PENALTY and QUEUE_RAISE_PENALTY
|
||||||
|
; channel variables in mid-call by defining rules in the queue for when to do so. This can allow for
|
||||||
|
; a call to be opened to more members or potentially a different set of members.
|
||||||
|
; The advantage to changing members this way as opposed to inserting the caller into a
|
||||||
|
; different queue with more members or reinserting the caller into the same queue with a different
|
||||||
|
; QUEUE_MAX_PENALTY or QUEUE_MIN_PENALTY set is that the caller does not lose his place in the queue.
|
||||||
|
;
|
||||||
|
; QUEUE_MAX_PENALTY, QUEUE_MIN_PENALTY and QUEUE_RAISE_PENALTY only apply to a queue call, and are only
|
||||||
|
; modified by these rules if they are initially set in the dialplan.
|
||||||
|
;
|
||||||
|
; If QUEUE_MIN_PENALTY is set, agents with a lower penalty value will not be considered for the caller.
|
||||||
|
; If QUEUE_MAX_PENALTY is set, agents with a higher penalty value will not be considered for the caller.
|
||||||
|
; If QUEUE_RAISE_PENALTY is set, agents with a lower penalty will be treated as having a penalty = QUEUE_RAISE_PENALTY.
|
||||||
|
;
|
||||||
|
; QUEUE_RAISE_PENALTY example:
|
||||||
|
; - Agent 1 has penalty 1
|
||||||
|
; - Agent 2 has penalty 2
|
||||||
|
; - the queue rule is set to:
|
||||||
|
; penaltychange => 30,,,2
|
||||||
|
;
|
||||||
|
; Prior to the 30 second mark, Agent 1 will take priority over Agent 2 for call distribution.
|
||||||
|
; After 30 seconds, Agent 1's priority is bumped to 2 by the penaltychange, so both agents are treated equally.
|
||||||
|
;
|
||||||
|
; Note: There is a limitation to these rules; a caller will follow the penaltychange rules for
|
||||||
|
; the queue that were defined at the time the caller entered the queue. If an update to the rules is
|
||||||
|
; made during the caller's stay in the queue, these will not be reflected for that caller.
|
||||||
|
;
|
||||||
|
; The syntax for these rules is
|
||||||
|
; penaltychange => <number of seconds into the call>,<absolute or relative change to QUEUE_MAX_PENALTY>[,absolute or relative change to QUEUE_MIN_PENALTY][,absolute or relative change to QUEUE_RAISE_PENALTY]
|
||||||
|
;
|
||||||
|
; Example:
|
||||||
|
; [myrule]
|
||||||
|
; penaltychange => 30,+3 ; 30 seconds into the call increase the QUEUE_MAX_PENALTY by 3, no change to QUEUE_MIN_PENALTY
|
||||||
|
; penaltychange => 60,10,5 ; 60 seconds into the call increase the QUEUE_MAX_PENALTY to 10 and increase the QUEUE_MIN_PENALTY to 5
|
||||||
|
; penaltychange => 75,,7 ; 75 seconds into the call keep the QUEUE_MAX_PENALTY the same and increase the QUEUE_MIN_PENALTY to 7
|
||||||
|
; penaltychange => 90,,,20 ; 90 seconds into the call leave QUEUE_MAX_PENALTY and QUEUE_MIN_PENALTY untouched and set QUEUE_RAISE_PENALTY to 20
|
||||||
562
queues.conf
Normal file
562
queues.conf
Normal file
@@ -0,0 +1,562 @@
|
|||||||
|
[general]
|
||||||
|
;
|
||||||
|
; Global settings for call queues
|
||||||
|
;
|
||||||
|
; Persistent Members
|
||||||
|
; Store each dynamic member in each queue in the astdb so that
|
||||||
|
; when asterisk is restarted, each member will be automatically
|
||||||
|
; read into their recorded queues. Default is 'no'.
|
||||||
|
;
|
||||||
|
persistentmembers = yes
|
||||||
|
;
|
||||||
|
; AutoFill Behavior
|
||||||
|
; The old behavior of the queue (autofill=no) is to have a serial type behavior
|
||||||
|
; in that the queue will make all waiting callers wait in the queue
|
||||||
|
; even if there is more than one available member ready to take
|
||||||
|
; calls until the head caller is connected with the member they
|
||||||
|
; were trying to get to. The next waiting caller in line then
|
||||||
|
; becomes the head caller, and they are then connected with the
|
||||||
|
; next available member and all available members and waiting callers
|
||||||
|
; waits while this happens. The new behavior, enabled by setting
|
||||||
|
; autofill=yes makes sure that when the waiting callers are connecting
|
||||||
|
; with available members in a parallel fashion until there are
|
||||||
|
; no more available members or no more waiting callers. This is
|
||||||
|
; probably more along the lines of how a queue should work and
|
||||||
|
; in most cases, you will want to enable this behavior. If you
|
||||||
|
; do not specify or comment out this option, it will default to yes.
|
||||||
|
;
|
||||||
|
;autofill = no
|
||||||
|
;
|
||||||
|
; Monitor Type
|
||||||
|
; By setting monitor-type = MixMonitor, when specifying monitor-format
|
||||||
|
; to enable recording of queue member conversations, app_queue will
|
||||||
|
; now use the new MixMonitor application instead of Monitor so
|
||||||
|
; the concept of "joining/mixing" the in/out files now goes away
|
||||||
|
; when this is enabled. You can set the default type for all queues
|
||||||
|
; here, and then also change monitor-type for individual queues within
|
||||||
|
; queue by using the same configuration parameter within a queue
|
||||||
|
; configuration block. If you do not specify or comment out this option,
|
||||||
|
; it will default to the old 'Monitor' behavior to keep backward
|
||||||
|
; compatibility.
|
||||||
|
;
|
||||||
|
monitor-type = MixMonitor
|
||||||
|
;
|
||||||
|
; UpdateCDR behavior.
|
||||||
|
; This option is implemented to mimic chan_agents behavior of populating
|
||||||
|
; CDR dstchannel field of a call with an agent name, which you can set
|
||||||
|
; at the login time with AddQueueMember membername parameter.
|
||||||
|
;
|
||||||
|
; updatecdr = no
|
||||||
|
|
||||||
|
;
|
||||||
|
; Note that a timeout to fail out of a queue may be passed as part of
|
||||||
|
; an application call from extensions.conf:
|
||||||
|
; Queue(queuename,[options],[optionalurl],[announceoverride],[timeout])
|
||||||
|
; example: Queue(dave,t,,,45)
|
||||||
|
|
||||||
|
; shared_lastcall will make the lastcall and calls received be the same in
|
||||||
|
; members logged in more than one queue. This is useful to make the queue
|
||||||
|
; respect the wrapuptime of another queue for a shared member.
|
||||||
|
; The default value is no.
|
||||||
|
;
|
||||||
|
;shared_lastcall=no
|
||||||
|
;
|
||||||
|
; Negative_penalty_invalid will treat members with a negative penalty as logged off
|
||||||
|
;
|
||||||
|
;negative_penalty_invalid = no
|
||||||
|
;
|
||||||
|
; log_membername_as_agent will cause app_queue to log the membername rather than
|
||||||
|
; the interface for the ADDMEMBER and REMOVEMEMBER events when a state_interface
|
||||||
|
; is set. The default value (no) maintains backward compatibility.
|
||||||
|
;
|
||||||
|
;log_membername_as_agent = no
|
||||||
|
;
|
||||||
|
;[markq]
|
||||||
|
;
|
||||||
|
; A sample call queue
|
||||||
|
;
|
||||||
|
; Musicclass sets which music applies for this particular call queue.
|
||||||
|
; The only class which can override this one is if the MOH class is set
|
||||||
|
; directly on the channel using Set(CHANNEL(musicclass)=whatever) in the
|
||||||
|
; dialplan.
|
||||||
|
;
|
||||||
|
;musicclass = default
|
||||||
|
;
|
||||||
|
; An announcement may be specified which is played for the member as
|
||||||
|
; soon as they answer a call, typically to indicate to them which queue
|
||||||
|
; this call should be answered as, so that agents or members who are
|
||||||
|
; listening to more than one queue can differentiated how they should
|
||||||
|
; engage the customer
|
||||||
|
;
|
||||||
|
;announce = queue-markq
|
||||||
|
;
|
||||||
|
; A strategy may be specified. Valid strategies include:
|
||||||
|
;
|
||||||
|
; ringall - ring all available channels until one answers (default)
|
||||||
|
; leastrecent - ring interface which was least recently hung up by this queue
|
||||||
|
; fewestcalls - ring the one with fewest completed calls from this queue
|
||||||
|
; random - ring random interface
|
||||||
|
; rrmemory - round robin with memory, remember where we left off last ring pass
|
||||||
|
; rrordered - same as rrmemory, except the queue member order from config file
|
||||||
|
; is preserved
|
||||||
|
; linear - rings interfaces in the order specified in this configuration file.
|
||||||
|
; If you use dynamic members, the members will be rung in the order in
|
||||||
|
; which they were added
|
||||||
|
; wrandom - rings random interface, but uses the member's penalty as a weight
|
||||||
|
; when calculating their metric. So a member with penalty 0 will have
|
||||||
|
; a metric somewhere between 0 and 1000, and a member with penalty 1 will
|
||||||
|
; have a metric between 0 and 2000, and a member with penalty 2 will have
|
||||||
|
; a metric between 0 and 3000. Please note, if using this strategy, the member
|
||||||
|
; penalty is not the same as when using other queue strategies. It is ONLY used
|
||||||
|
; as a weight for calculating metric.
|
||||||
|
;
|
||||||
|
;strategy = ringall
|
||||||
|
;
|
||||||
|
; Second settings for service level (default 0)
|
||||||
|
; Used for service level statistics (calls answered within service level time frame)
|
||||||
|
; There are 2 Service Level Performance Calculations SL and SL2
|
||||||
|
; SL = (total calls answered within threshold / total calls answered) * 100
|
||||||
|
; SL2 = ((calls answered within threshold + calls abandoned within threshold) / (answered calls + abandoned calls)) * 100
|
||||||
|
;servicelevel = 60
|
||||||
|
;
|
||||||
|
; A context may be specified, in which if the user types a SINGLE
|
||||||
|
; digit extension while they are in the queue, they will be taken out
|
||||||
|
; of the queue and sent to that extension in this context.
|
||||||
|
;
|
||||||
|
;context = qoutcon
|
||||||
|
;
|
||||||
|
; A limit can be set to disregard penalty settings when the queue has
|
||||||
|
; too few members. No penalty will be weighed in if there are only X
|
||||||
|
; or fewer queue members. (default 0)
|
||||||
|
;
|
||||||
|
;penaltymemberslimit = 5
|
||||||
|
;
|
||||||
|
; ---------------------QUEUE TIMING OPTIONS------------------------------------
|
||||||
|
; A Queue has two different "timeout" values associated with it. One is the
|
||||||
|
; timeout parameter configured in queues.conf. This timeout specifies the
|
||||||
|
; amount of time to try ringing a member's phone before considering the
|
||||||
|
; member to be unavailable. The other timeout value is the second argument
|
||||||
|
; to the Queue() application. This timeout represents the absolute amount
|
||||||
|
; of time to allow a caller to stay in the queue before the caller is
|
||||||
|
; removed from the queue. In certain situations, these two timeout values
|
||||||
|
; may clash. For instance, if the timeout in queues.conf is set to 5 seconds,
|
||||||
|
; the retry value in queues.conf is set to 4, and the second argument to Queue()
|
||||||
|
; is 10, then the following may occur:
|
||||||
|
;
|
||||||
|
; A caller places a call to a queue.
|
||||||
|
; The queue selects a member and attempts to ring that member.
|
||||||
|
; The member's phone is rung for 5 seconds and he does not answer.
|
||||||
|
; The retry time of 4 seconds occurs.
|
||||||
|
; The queue selects a second member to call.
|
||||||
|
;
|
||||||
|
; How long does that second member's phone ring? Does it ring for 5 seconds
|
||||||
|
; since the timeout set in app_queue is 5 seconds? Does it ring for 1 second since
|
||||||
|
; the caller has been in the queue for 9 seconds and is supposed to be removed after
|
||||||
|
; being in the queue for 10 seconds? This is configurable with the timeoutpriority
|
||||||
|
; option. By setting the timeoutpriority to "conf" then you are saying that you would
|
||||||
|
; rather use the time specified in the configuration file even if it means having the
|
||||||
|
; caller stay in the queue longer than the time specified in the application argument.
|
||||||
|
; For the scenario described above, timeoutpriority=conf would result in the second
|
||||||
|
; member's phone ringing for 5 seconds. By specifying "app" as the value for
|
||||||
|
; timeoutpriority, you are saying that the timeout specified as the argument to the
|
||||||
|
; Queue application is more important. In the scenario above, timeoutpriority=app
|
||||||
|
; would result in the second member's phone ringing for 1 second.
|
||||||
|
;
|
||||||
|
; There are a few exceptions to the priority rules. For instance, if timeoutpriority=appp
|
||||||
|
; and the configuration file timeout is set to 0, but the application argument timeout is
|
||||||
|
; non-zero, then the timeoutpriority is ignored and the application argument is used as
|
||||||
|
; the timeout. Furthermore, if no application argument timeout is specified, then the
|
||||||
|
; timeoutpriority option is ignored and the configuration file timeout is always used
|
||||||
|
; when calling queue members.
|
||||||
|
;
|
||||||
|
; In timeoutpriority=conf mode however timeout specified in config file will take higher
|
||||||
|
; priority than timeout in application arguments, so if config file has timeout 0, each
|
||||||
|
; queue member will be called indefineately and application timeout will be checked only
|
||||||
|
; after this call attempt. This is useful for having queue members with custom timeouts
|
||||||
|
; specified within Dial application of Local channel, and allows handling NO ANSWER which
|
||||||
|
; would otherwise be interrupted by queue destroying child channel on timeout.
|
||||||
|
;
|
||||||
|
; The default value for timeoutpriority is "app" since this was how previous versions of
|
||||||
|
; Asterisk behaved.
|
||||||
|
;
|
||||||
|
;timeout = 15
|
||||||
|
;retry = 5
|
||||||
|
;timeoutpriority = app|conf
|
||||||
|
;
|
||||||
|
; ----------------------END QUEUE TIMING OPTIONS---------------------------------
|
||||||
|
; Weight of queue - when compared to other queues, higher weights get
|
||||||
|
; first shot at available channels when the same channel is included in
|
||||||
|
; more than one queue.
|
||||||
|
;
|
||||||
|
;weight=0
|
||||||
|
;
|
||||||
|
; After a successful call, how long to wait before sending a potentially
|
||||||
|
; free member another call (default is 0, or no delay)
|
||||||
|
;
|
||||||
|
;wrapuptime=15
|
||||||
|
;
|
||||||
|
; Autofill will follow queue strategy but push multiple calls through
|
||||||
|
; at same time until there are no more waiting callers or no more
|
||||||
|
; available members. The per-queue setting of autofill allows you
|
||||||
|
; to override the default setting on an individual queue level.
|
||||||
|
;
|
||||||
|
;autofill=yes
|
||||||
|
;
|
||||||
|
; Autopause will pause a queue member if they fail to answer a call
|
||||||
|
; no: Member will not be paused
|
||||||
|
; yes: Member will be paused only in the queue where the timeout took place
|
||||||
|
; all: Memeber will be paused in all queues he/she is a member
|
||||||
|
;autopause=yes
|
||||||
|
;
|
||||||
|
; Autopausedelay delay autopause for autopausedelay seconds from the
|
||||||
|
; last call if a member has not taken a call the delay has no effect.
|
||||||
|
;autopausedelay=60
|
||||||
|
;
|
||||||
|
; Autopausebusy controls whether or not a queue member is set as paused
|
||||||
|
; automatically upon the member device reporting busy. The autopausedelay
|
||||||
|
; option applies. Defaults to 'no'.
|
||||||
|
;autopausebusy=no
|
||||||
|
;
|
||||||
|
; Autopauseunavail controls whether or not a queue member is set as paused
|
||||||
|
; automatically upon the member device reporting congestion. The autopausedely
|
||||||
|
; option applies. Defaults to 'no'.
|
||||||
|
;autopauseunavail=no
|
||||||
|
;
|
||||||
|
; Maximum number of people waiting in the queue (0 for unlimited)
|
||||||
|
;
|
||||||
|
;maxlen = 0
|
||||||
|
;
|
||||||
|
; Note: for below queue channel options (setinterfacevar, setqueueentryvar,
|
||||||
|
; setqueuevar) if the caller channel is a local channel and optimizations
|
||||||
|
; is enabled then after optimization has occurred only the queue member
|
||||||
|
; channel will contain the variables.
|
||||||
|
;
|
||||||
|
; If set to yes, just prior to the caller being bridged with a queue member
|
||||||
|
; the following variables will be set on the caller and queue member channels:
|
||||||
|
; MEMBERINTERFACE is the interface name (eg. Agent/1234)
|
||||||
|
; MEMBERNAME is the member name (eg. Joe Soap)
|
||||||
|
; MEMBERCALLS is the number of calls that interface has taken,
|
||||||
|
; MEMBERLASTCALL is the last time the member took a call.
|
||||||
|
; MEMBERPENALTY is the penalty of the member
|
||||||
|
; MEMBERDYNAMIC indicates if a member is dynamic or not
|
||||||
|
; MEMBERREALTIME indicates if a member is realtime or not
|
||||||
|
;
|
||||||
|
;setinterfacevar=no
|
||||||
|
;
|
||||||
|
; If set to yes, just prior to the caller being bridged with a queue member
|
||||||
|
; the following variables will be set on the caller and queue member channels:
|
||||||
|
; QEHOLDTIME callers hold time
|
||||||
|
; QEORIGINALPOS original position of the caller in the queue
|
||||||
|
;
|
||||||
|
;setqueueentryvar=no
|
||||||
|
;
|
||||||
|
; If set to yes, the following variables will be set
|
||||||
|
; just prior to the caller being bridged with a queue member (set on the
|
||||||
|
; caller and queue member channels) and just prior to the caller
|
||||||
|
; leaving the queue
|
||||||
|
; QUEUENAME name of the queue
|
||||||
|
; QUEUEMAX maxmimum number of calls allowed
|
||||||
|
; QUEUESTRATEGY the strategy of the queue;
|
||||||
|
; QUEUECALLS number of calls currently in the queue
|
||||||
|
; QUEUEHOLDTIME current average hold time
|
||||||
|
; QUEUECOMPLETED number of completed calls for the queue
|
||||||
|
; QUEUEABANDONED number of abandoned calls
|
||||||
|
; QUEUESRVLEVEL queue service level
|
||||||
|
; QUEUESRVLEVELPERF current service level performance
|
||||||
|
;
|
||||||
|
;setqueuevar=no
|
||||||
|
|
||||||
|
; if set, run this macro when connected to the queue member
|
||||||
|
; you can override this macro by setting the macro option on
|
||||||
|
; the queue application
|
||||||
|
;
|
||||||
|
;membermacro=macro_name[,arg1[,...][,argN]]
|
||||||
|
|
||||||
|
; if set, run this gosub when connected to the queue member
|
||||||
|
; you can override this gosub by setting the gosub option on
|
||||||
|
; the queue application
|
||||||
|
;
|
||||||
|
;membergosub=gosub_context_name[,arg1[,...][,argN]]
|
||||||
|
|
||||||
|
; How often to announce queue position and/or estimated
|
||||||
|
; holdtime to caller (0=off)
|
||||||
|
; Note that this value is ignored if the caller's queue
|
||||||
|
; position has changed (see min-announce-frequency)
|
||||||
|
;
|
||||||
|
;announce-frequency = 90
|
||||||
|
;
|
||||||
|
; The absolute minimum time between the start of each
|
||||||
|
; queue position and/or estimated holdtime announcement
|
||||||
|
; This is useful for avoiding constant announcements
|
||||||
|
; when the caller's queue position is changing frequently
|
||||||
|
; (see announce-frequency)
|
||||||
|
;
|
||||||
|
;min-announce-frequency = 15
|
||||||
|
;
|
||||||
|
; How often to make any periodic announcement (see periodic-announce)
|
||||||
|
;
|
||||||
|
;periodic-announce-frequency=60
|
||||||
|
;
|
||||||
|
; Should the periodic announcements be played in a random order? Default is no.
|
||||||
|
;
|
||||||
|
;random-periodic-announce=no
|
||||||
|
;
|
||||||
|
; If set to yes, the periodic announcement frequency will be timed from the end
|
||||||
|
; of each announcement rather than from the start of each announcement. This
|
||||||
|
; defaults to off.
|
||||||
|
;
|
||||||
|
;relative-periodic-announce=yes
|
||||||
|
;
|
||||||
|
; Should we include estimated hold time in position announcements?
|
||||||
|
; Either yes, no, or only once.
|
||||||
|
; Hold time will be announced as the estimated time.
|
||||||
|
;
|
||||||
|
;announce-holdtime = yes|no|once
|
||||||
|
;
|
||||||
|
; Queue position announce?
|
||||||
|
; Valid values are "yes," "no," "limit," or "more." If set to "no," then the caller's position will
|
||||||
|
; never be announced. If "yes," then the caller's position in the queue will be announced
|
||||||
|
; to the caller. If set to "more," then if the number of callers is more than the number
|
||||||
|
; specified by the announce-position-limit option, then the caller will hear that there
|
||||||
|
; are more than that many callers waiting (i.e. if a caller number 6 is in a queue with the
|
||||||
|
; announce-position-limit set to 5, then that caller will hear that there are more than 5
|
||||||
|
; callers waiting). If set to "limit," then only callers within the limit specified by announce-position-limit
|
||||||
|
; will have their position announced.
|
||||||
|
;
|
||||||
|
;announce-position = yes
|
||||||
|
;
|
||||||
|
; If enabled, play announcements to the first user waiting in the Queue. This may mean
|
||||||
|
; that announcements are played when an agent attempts to connect to the waiting user,
|
||||||
|
; which may delay the time before the agent and the user can communicate. Disabled by
|
||||||
|
; default.
|
||||||
|
;
|
||||||
|
; announce-to-first-user = no
|
||||||
|
;
|
||||||
|
; If you have specified "limit" or "more" for the announce-position option, then the following
|
||||||
|
; value is what is used to determine what announcement to play to waiting callers. If you have
|
||||||
|
; set the announce-position option to anything else, then this will have no bearing on queue operation
|
||||||
|
;
|
||||||
|
;announce-position-limit = 5
|
||||||
|
;
|
||||||
|
; What's the rounding time for the seconds?
|
||||||
|
; If this is non-zero, then we announce the seconds as well as the minutes
|
||||||
|
; rounded to this value.
|
||||||
|
; Valid values are 0, 5, 10, 15, 20, and 30.
|
||||||
|
;
|
||||||
|
; announce-round-seconds = 10
|
||||||
|
;
|
||||||
|
; Only announce the caller's position if it has improved since the last announcement.
|
||||||
|
; The default value is no.
|
||||||
|
;
|
||||||
|
; announce-position-only-up = yes
|
||||||
|
;
|
||||||
|
; Use these sound files in making position/holdtime announcements. The
|
||||||
|
; defaults are as listed below -- change only if you need to.
|
||||||
|
;
|
||||||
|
; Keep in mind that you may also prevent a sound from being played if you
|
||||||
|
; explicitly set a sound to be an empty string. For example, if you want to
|
||||||
|
; prevent the queue from playing queue-thankyou, you may set the sound using
|
||||||
|
; the following line:
|
||||||
|
;
|
||||||
|
; queue-thankyou=
|
||||||
|
;
|
||||||
|
; ("You are now first in line.")
|
||||||
|
;queue-youarenext = queue-youarenext
|
||||||
|
; ("There are")
|
||||||
|
;queue-thereare = queue-thereare
|
||||||
|
; ("calls waiting.")
|
||||||
|
;queue-callswaiting = queue-callswaiting
|
||||||
|
; ("The current est. holdtime is")
|
||||||
|
;queue-holdtime = queue-holdtime
|
||||||
|
; ("minute.")
|
||||||
|
;queue-minute = queue-minute
|
||||||
|
; ("minutes.")
|
||||||
|
;queue-minutes = queue-minutes
|
||||||
|
; ("seconds.")
|
||||||
|
;queue-seconds = queue-seconds
|
||||||
|
; ("Thank you for your patience.")
|
||||||
|
;queue-thankyou = queue-thankyou
|
||||||
|
; ("Hold time")
|
||||||
|
;queue-reporthold = queue-reporthold
|
||||||
|
; ("All reps busy / wait for next")
|
||||||
|
;periodic-announce = queue-periodic-announce
|
||||||
|
;
|
||||||
|
; A set of periodic announcements can be defined by separating
|
||||||
|
; periodic announcements to reproduce by commas. For example:
|
||||||
|
;periodic-announce = queue-periodic-announce,your-call-is-important,please-wait
|
||||||
|
;
|
||||||
|
; The announcements will be played in the order in which they are defined. After
|
||||||
|
; playing the last announcement, the announcements begin again from the beginning.
|
||||||
|
;
|
||||||
|
; Calls may be recorded using Asterisk's monitor/MixMonitor resource
|
||||||
|
; This can be enabled from within the Queue application, starting recording
|
||||||
|
; when the call is actually picked up; thus, only successful calls are
|
||||||
|
; recorded, and you are not recording while people are listening to MOH.
|
||||||
|
; To enable monitoring, simply specify "monitor-format"; it will be disabled
|
||||||
|
; otherwise.
|
||||||
|
;
|
||||||
|
; You can specify the monitor filename with by calling
|
||||||
|
; Set(MONITOR_FILENAME=foo)
|
||||||
|
; Otherwise it will use MONITOR_FILENAME=${UNIQUEID}
|
||||||
|
;
|
||||||
|
; Pick any one valid extension for monitor format recording. If you leave
|
||||||
|
; monitor-format commented out, it will not record calls.
|
||||||
|
;
|
||||||
|
; monitor-format = gsm|wav|wav49
|
||||||
|
;
|
||||||
|
; Monitor Type
|
||||||
|
; By setting monitor-type = MixMonitor, when specifying monitor-format
|
||||||
|
; to enable recording of queue member conversations, app_queue will
|
||||||
|
; now use the new MixMonitor application instead of Monitor so
|
||||||
|
; the concept of "joining/mixing" the in/out files now goes away
|
||||||
|
; when this is enabled. If you do not specify or comment out this option,
|
||||||
|
; it will default to the old 'Monitor' behavior to keep backward
|
||||||
|
; compatibility.
|
||||||
|
;
|
||||||
|
; monitor-type = MixMonitor
|
||||||
|
;
|
||||||
|
; ----------------------- TYPE MIXMONITOR OPTIONS -----------------------------
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; You can specify the options supplied to MixMonitor by calling (from the dialplan)
|
||||||
|
; Set(MONITOR_OPTIONS=av(<x>)V(<x>)W(<x>))
|
||||||
|
; The 'b' option for MixMonitor (only save audio to the file while bridged) is
|
||||||
|
; implied.
|
||||||
|
;
|
||||||
|
; You can specify a post recording command to be executed after the end of
|
||||||
|
; recording by calling (from the dialplan)
|
||||||
|
;
|
||||||
|
; Set(MONITOR_EXEC=mv /var/spool/asterisk/monitor/^{MONITOR_FILENAME} /tmp/^{MONITOR_FILENAME})
|
||||||
|
;
|
||||||
|
; or
|
||||||
|
;
|
||||||
|
; Set(MONITOR_EXEC=mv /var/spool/asterisk/monitor/^{MIXMONITOR_FILENAME} /tmp/^{MIXMONITOR_FILENAME})
|
||||||
|
;
|
||||||
|
; If you choose to use the latter, you will not be able to switch the monitor-type back to Monitor
|
||||||
|
; without changing this in the dialplan.
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; The command specified within the contents of MONITOR_EXEC will be executed when
|
||||||
|
; the recording is over. Any strings matching ^{X} will be unescaped to ${X} and
|
||||||
|
; all variables will be evaluated just prior to recording being started.
|
||||||
|
;
|
||||||
|
; The contents of MONITOR_FILENAME will also be unescaped from ^{X} to ${X} and
|
||||||
|
; all variables will be evaluated just prior to recording being started.
|
||||||
|
;
|
||||||
|
; ---------------------- Queue Empty Options ----------------------------------
|
||||||
|
;
|
||||||
|
; Asterisk has provided the "joinempty" and "leavewhenempty" options for a while
|
||||||
|
; with tenuous definitions of what they actually mean. The "joinempty" option controls
|
||||||
|
; whether a caller may join a queue depending on several factors of member availability.
|
||||||
|
; Similarly, then leavewhenempty option controls whether a caller may remain in a queue
|
||||||
|
; he has already joined. Both options take a comma-separated list of factors which
|
||||||
|
; contribute towards whether a caller may join/remain in the queue. The list of
|
||||||
|
; factors which contribute to these option is as follows:
|
||||||
|
;
|
||||||
|
; paused: a member is not considered available if he is paused
|
||||||
|
; penalty: a member is not considered available if his penalty is less than QUEUE_MAX_PENALTY
|
||||||
|
; inuse: a member is not considered available if he is currently on a call
|
||||||
|
; ringing: a member is not considered available if his phone is currently ringing
|
||||||
|
; unavailable: This applies mainly to Agent channels. If the agent is a member of the queue
|
||||||
|
; but has not logged in, then do not consider the member to be available
|
||||||
|
; invalid: Do not consider a member to be available if he has an "invalid" device state.
|
||||||
|
; This generally is caused by an error condition in the member's channel driver.
|
||||||
|
; unknown: Do not consider a member to be available if we are unable to determine the member's
|
||||||
|
; current device state.
|
||||||
|
; wrapup: A member is not considered available if he is currently in his wrapuptime after
|
||||||
|
; taking a call.
|
||||||
|
;
|
||||||
|
; For the "joinempty" option, when a caller attempts to enter a queue, the members of that
|
||||||
|
; queue are examined. If all members are deemed to be unavailable due to any of the conditions
|
||||||
|
; listed for the "joinempty" option, then the caller will be unable to enter the queue. For the
|
||||||
|
; "leavewhenempty" option, the state of the members of the queue are checked periodically during
|
||||||
|
; the caller's stay in the queue. If all of the members are unavailable due to any of the above
|
||||||
|
; conditions, then the caller will be removed from the queue.
|
||||||
|
;
|
||||||
|
; Some examples:
|
||||||
|
;
|
||||||
|
;joinempty = paused,inuse,invalid
|
||||||
|
;
|
||||||
|
; A caller will not be able to enter a queue if at least one member cannot be found
|
||||||
|
; who is not paused, on the phone, or who has an invalid device state.
|
||||||
|
;
|
||||||
|
;leavewhenempty = inuse,ringing
|
||||||
|
;
|
||||||
|
; A caller will be removed from the queue if at least one member cannot be found
|
||||||
|
; who is not on the phone, or whose phone is not ringing.
|
||||||
|
;
|
||||||
|
; For the sake of backwards-compatibility, the joinempty and leavewhenempty
|
||||||
|
; options also accept the strings "yes" "no" "strict" and "loose". The following
|
||||||
|
; serves as a translation for these values:
|
||||||
|
;
|
||||||
|
; yes - (empty) for joinempty; penalty,paused,invalid for leavewhenempty
|
||||||
|
; no - penalty,paused,invalid for joinempty; (empty) for leavewhenempty
|
||||||
|
; strict - penalty,paused,invalid,unavailable
|
||||||
|
; loose - penalty,invalid
|
||||||
|
;
|
||||||
|
|
||||||
|
; If you wish to report the caller's hold time to the member before they are
|
||||||
|
; connected to the caller, set this to yes.
|
||||||
|
;
|
||||||
|
; reportholdtime = no
|
||||||
|
;
|
||||||
|
; If you want the queue to avoid sending calls to members whose devices are
|
||||||
|
; known to be 'in use' (via the channel driver supporting that device state)
|
||||||
|
; uncomment this option. This can be controlled on a per member basis by
|
||||||
|
; setting 'ringinuse' on that member. This can be done in the member definition,
|
||||||
|
; in the 'ringinuse' field on a realtime member, via the QUEUE_MEMBER dialplan
|
||||||
|
; function, or with CLI/AMI. By default, the per member value will be the same
|
||||||
|
; as the queue's ringinuse value if it isn't set on the member deliberately.
|
||||||
|
; (Note: only the SIP channel driver currently is able to report 'in use'.)
|
||||||
|
; ringinuse = no
|
||||||
|
;
|
||||||
|
; If you wish to have a delay before the member is connected to the caller (or
|
||||||
|
; before the member hears any announcement messages), set this to the number of
|
||||||
|
; seconds to delay.
|
||||||
|
;
|
||||||
|
; memberdelay = 0
|
||||||
|
;
|
||||||
|
; If timeoutrestart is set to yes, then the timeout for an agent to answer is
|
||||||
|
; reset if a BUSY or CONGESTION is received. This can be useful if agents
|
||||||
|
; are able to cancel a call with reject or similar.
|
||||||
|
;
|
||||||
|
; timeoutrestart = no
|
||||||
|
;
|
||||||
|
; If you wish to implement a rule defined in queuerules.conf (see
|
||||||
|
; configs/queuerules.conf.sample from the asterisk source directory for
|
||||||
|
; more information about penalty rules) by default, you may specify this
|
||||||
|
; by setting defaultrule to the rule's name
|
||||||
|
;
|
||||||
|
; defaultrule = myrule
|
||||||
|
;
|
||||||
|
; Each member of this call queue is listed on a separate line in
|
||||||
|
; the form technology/dialstring. "member" means a normal member of a
|
||||||
|
; queue. An optional penalty may be specified after a comma, such that
|
||||||
|
; entries with higher penalties are considered last. An optional member
|
||||||
|
; name may also be specified after a second comma, which is used in log
|
||||||
|
; messages as a "friendly name". Multiple interfaces may share a single
|
||||||
|
; member name. An optional state interface may be specified after a third
|
||||||
|
; comma. This interface will be the one for which app_queue receives device
|
||||||
|
; state notifications, even though the first interface specified is the one
|
||||||
|
; that is actually called.
|
||||||
|
;
|
||||||
|
; A hint can also be used in place of the state interface using the format
|
||||||
|
; hint:<extension>@<context>. If no context is specified then 'default' will
|
||||||
|
; be used.
|
||||||
|
;
|
||||||
|
; It is important to ensure that channel drivers used for members are loaded
|
||||||
|
; before app_queue.so itself or they may be marked invalid until reload. This
|
||||||
|
; can be accomplished by explicitly listing them in modules.conf before
|
||||||
|
; app_queue.so. Additionally, if you use Local channels as queue members, you
|
||||||
|
; must also preload pbx_config.so and chan_local.so (or pbx_ael.so, pbx_lua.so,
|
||||||
|
; or pbx_realtime.so, depending on how your dialplan is configured).
|
||||||
|
;
|
||||||
|
; syntax: member => interface,[,penalty][,membername][,state_interface][,ringinuse][,wrapuptime]
|
||||||
|
;
|
||||||
|
;member => DAHDI/1
|
||||||
|
;member => DAHDI/2,10
|
||||||
|
;member => DAHDI/3,10,Bob Johnson
|
||||||
|
;member => Local/1001@agents,0,May Flowers,Agent:1001
|
||||||
|
;member => Local/1002@agents,0,John Doe,Agent:1002
|
||||||
|
;member => Local/1000@default,0,John Smith,SIP/1000
|
||||||
|
;member => Local/2000@default,0,Lorem Ipsum,SIP/2000,no
|
||||||
35
res_config_sqlite3.conf
Normal file
35
res_config_sqlite3.conf
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
; Define a realtime database name to use in extconfig.conf
|
||||||
|
;
|
||||||
|
;[asterisk]
|
||||||
|
;dbfile => /var/lib/asterisk/realtime.sqlite3
|
||||||
|
;
|
||||||
|
; debug - Turn on debugging information
|
||||||
|
;debug=yes
|
||||||
|
;
|
||||||
|
; requirements - At startup, each realtime family will make requirements
|
||||||
|
; on the backend. There are several strategies for handling requirements:
|
||||||
|
; warn - Warn if the required column does not exist.
|
||||||
|
; createclose - Create columns as close to the requirements as possible.
|
||||||
|
; createchar - Create char columns only
|
||||||
|
;
|
||||||
|
;requirements=warn
|
||||||
|
;
|
||||||
|
; batch - SQLite 3 write performance can be greatly improved by wrapping
|
||||||
|
; multiple writes in transactions. This option specifies the duration in
|
||||||
|
; milliseconds of auto-generated transactions. Any changes made during an
|
||||||
|
; unfinished transaction will be immediately available to the same database
|
||||||
|
; connection, but any external connections could see a delay up to the value
|
||||||
|
; of this setting. It is also possible that if asterisk crashes, any changes
|
||||||
|
; made during this time could be lost. Due to the nearly 100x performance
|
||||||
|
; benefit, the default is 100 ms. Set to 0 to disable batching.
|
||||||
|
;
|
||||||
|
; PLEASE NOTE: If you need to write to the database from another connection
|
||||||
|
; you will need to set batch=0 as the transactions will cause the database
|
||||||
|
; to lock for writing.
|
||||||
|
;
|
||||||
|
;batch=1000
|
||||||
|
;
|
||||||
|
; busy timeout - timeout in miliseconds to stop waiting for locked database.
|
||||||
|
; More info at https://www.sqlite.org/c3ref/busy_timeout.html
|
||||||
|
;
|
||||||
|
;busy_timeout=1000
|
||||||
32
res_fax.conf
Normal file
32
res_fax.conf
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
; Generic Fax Application configuration
|
||||||
|
|
||||||
|
[general]
|
||||||
|
; Maximum Transmission Rate
|
||||||
|
; Possible values are { 2400 | 4800 | 7200 | 9600 | 12000 | 14400 }
|
||||||
|
; Set this value to the maximum desired transfer rate. Default: 14400
|
||||||
|
;maxrate=14400
|
||||||
|
|
||||||
|
; Minimum Transmission Rate
|
||||||
|
; Possible values are { 2400 | 4800 | 7200 | 9600 | 12000 | 14400 }
|
||||||
|
; Set this value to the minimum desired transfer rate. Default: 4800
|
||||||
|
;minrate=4800
|
||||||
|
|
||||||
|
; Send Progress/Status events to manager session
|
||||||
|
; Manager events with 'call' class permissions will receive events indicating the
|
||||||
|
; steps to initiate a fax session. Fax completion events are always sent to manager
|
||||||
|
; sessions with 'call' class permissions, regardless of the value of this option.
|
||||||
|
; Default: no
|
||||||
|
statusevents=yes
|
||||||
|
|
||||||
|
; modem capabilities
|
||||||
|
; Possible values are { v17 | v27 | v29 }
|
||||||
|
; Set this value to modify the default modem options. Default: v17,v27,v29
|
||||||
|
;modems=v17,v27,v29
|
||||||
|
|
||||||
|
; Enable/disable T.30 ECM (error correction mode) by default.
|
||||||
|
; Default: Enabled
|
||||||
|
;ecm=yes
|
||||||
|
|
||||||
|
; T.38 Negotiation Timeout in milliseconds
|
||||||
|
; Default: 5000
|
||||||
|
t38timeout=5000
|
||||||
198
res_ldap.conf
Normal file
198
res_ldap.conf
Normal file
@@ -0,0 +1,198 @@
|
|||||||
|
;
|
||||||
|
; Configuration file for res_config_ldap
|
||||||
|
;
|
||||||
|
|
||||||
|
; Realtime configuration
|
||||||
|
; ----------------------
|
||||||
|
; In order to use this module, you start
|
||||||
|
; in extconfig.conf with a configuration like this:
|
||||||
|
;
|
||||||
|
; sippeers = ldap,"dc=myDomain,dc=myDomainExt",sip
|
||||||
|
; extensions = ldap,"dc=myDomain,dc=myDomainExt",extensions
|
||||||
|
; sip.conf = ldap,"dc=myDomain,dc=myDomainExt",config
|
||||||
|
;
|
||||||
|
; In the case of LDAP the last keyword in each line above specifies
|
||||||
|
; a section in this file.
|
||||||
|
;
|
||||||
|
; LDAP schema and ldif files can be located in contrib/scripts.
|
||||||
|
|
||||||
|
; TLS support
|
||||||
|
; -----------
|
||||||
|
; Note that you can configure an ldaps: url here to get TLS support.
|
||||||
|
; Detailed configuration of certificates and supported CAs is done in your
|
||||||
|
; ldap.conf file for OpenLDAP clients on your system.
|
||||||
|
; This requires that you have OpenLDAP libraries compiled with TLS support
|
||||||
|
|
||||||
|
; *********************************************************************************
|
||||||
|
; NOTE: res_ldap.conf should be chmod 600 because it contains the plain-text LDAP
|
||||||
|
; password to an account with WRITE access to the asterisk configuration.
|
||||||
|
; *********************************************************************************
|
||||||
|
|
||||||
|
[_general]
|
||||||
|
;
|
||||||
|
; Specify one of either host and port OR url. URL is preferred, as you can
|
||||||
|
; use more options.
|
||||||
|
;host=192.168.1.1 ; LDAP host
|
||||||
|
;port=389
|
||||||
|
;url=ldap://ldap3.mydomain.com:3890
|
||||||
|
;protocol=3 ; Version of the LDAP protocol to use; default is 3.
|
||||||
|
;basedn=dc=example,dc=tld ; Base DN
|
||||||
|
;user=cn=asterisk,dc=example,dc=tld ; Bind DN
|
||||||
|
;pass=MyPassword ; Bind password
|
||||||
|
|
||||||
|
; Configuration Table
|
||||||
|
[config]
|
||||||
|
;
|
||||||
|
; additionalFilter - This specifies an additional set of criteria to be used
|
||||||
|
; when querying the LDAP server.
|
||||||
|
;
|
||||||
|
additionalFilter=(objectClass=AstConfig)
|
||||||
|
;
|
||||||
|
; Attributes mapping (asterisk variable name = ldap attribute name)
|
||||||
|
; When Asterisk requests the variable by the name of the value on the left,
|
||||||
|
; this module will look up the attribute listed on the right.
|
||||||
|
;
|
||||||
|
filename = AstConfigFilename
|
||||||
|
category = AstConfigCategory
|
||||||
|
variable_name = AstConfigVariableName
|
||||||
|
variable_value = AstConfigVariableValue
|
||||||
|
cat_metric = AstConfigCategoryMetric
|
||||||
|
commented = AstConfigCommented
|
||||||
|
|
||||||
|
;
|
||||||
|
; Extensions Table
|
||||||
|
;
|
||||||
|
[extensions]
|
||||||
|
context = AstExtensionContext
|
||||||
|
exten = AstExtensionExten
|
||||||
|
priority = AstExtensionPriority
|
||||||
|
app = AstExtensionApplication
|
||||||
|
appdata = AstExtensionApplicationData
|
||||||
|
additionalFilter=(objectClass=AstExtension)
|
||||||
|
|
||||||
|
;
|
||||||
|
; Sip Users Table
|
||||||
|
;
|
||||||
|
[sip]
|
||||||
|
name = cn ; We use the "cn" as the default value for name on the line above
|
||||||
|
; because objectClass=AsteriskSIPUser does not include a uid as an allowed field
|
||||||
|
; If your entry combines other objectClasses and uid is available, you may
|
||||||
|
; prefer to change the line to be name = uid, especially if your LDAP entries
|
||||||
|
; contain spaces in the cn field.
|
||||||
|
; You may also find it appropriate to use something completely different.
|
||||||
|
; This is possible by changing the line above to name = AstAccountName (or whatever you
|
||||||
|
; prefer).
|
||||||
|
;
|
||||||
|
amaflags = AstAccountAMAFlags
|
||||||
|
callgroup = AstAccountCallGroup
|
||||||
|
callerid = AstAccountCallerID
|
||||||
|
directmedia = AstAccountDirectMedia
|
||||||
|
context = AstAccountContext
|
||||||
|
dtmfmode = AstAccountDTMFMode
|
||||||
|
fromuser = AstAccountFromUser
|
||||||
|
fromdomain = AstAccountFromDomain
|
||||||
|
fullcontact = AstAccountFullContact
|
||||||
|
fullcontact = gecos
|
||||||
|
host = AstAccountHost
|
||||||
|
insecure = AstAccountInsecure
|
||||||
|
mailbox = AstAccountMailbox
|
||||||
|
md5secret = AstAccountRealmedPassword ; Must be an MD5 hash. Field value can start with
|
||||||
|
; {md5} but it is not required.
|
||||||
|
; Generate the password via the md5sum command, e.g.
|
||||||
|
; echo "my_password" | md5sum
|
||||||
|
nat = AstAccountNAT
|
||||||
|
deny = AstAccountDeny
|
||||||
|
permit = AstAccountPermit
|
||||||
|
pickupgroup = AstAccountPickupGroup
|
||||||
|
port = AstAccountPort
|
||||||
|
qualify = AstAccountQualify
|
||||||
|
restrictcid = AstAccountRestrictCID
|
||||||
|
rtptimeout = AstAccountRTPTimeout
|
||||||
|
rtpholdtimeout = AstAccountRTPHoldTimeout
|
||||||
|
type = AstAccountType
|
||||||
|
disallow = AstAccountDisallowedCodec
|
||||||
|
allow = AstAccountAllowedCodec
|
||||||
|
MusicOnHold = AstAccountMusicOnHold
|
||||||
|
regseconds = AstAccountExpirationTimestamp
|
||||||
|
regcontext = AstAccountRegistrationContext
|
||||||
|
regexten = AstAccountRegistrationExten
|
||||||
|
CanCallForward = AstAccountCanCallForward
|
||||||
|
ipaddr = AstAccountIPAddress
|
||||||
|
defaultuser = AstAccountDefaultUser
|
||||||
|
regserver = AstAccountRegistrationServer
|
||||||
|
lastms = AstAccountLastQualifyMilliseconds
|
||||||
|
supportpath = AstAccountPathSupport
|
||||||
|
additionalFilter=(objectClass=AsteriskSIPUser)
|
||||||
|
|
||||||
|
;
|
||||||
|
; IAX Users Table
|
||||||
|
;
|
||||||
|
[iax]
|
||||||
|
amaflags = AstAccountAMAFlags
|
||||||
|
callerid = AstAccountCallerID
|
||||||
|
context = AstAccountContext
|
||||||
|
fullcontact = AstAccountFullContact
|
||||||
|
fullcontact = gecos
|
||||||
|
host = AstAccountHost
|
||||||
|
mailbox = AstAccountMailbox
|
||||||
|
md5secret = AstAccountRealmedPassword ; Must be an MD5 hash. Field value can start with
|
||||||
|
; {md5} but it is not required.
|
||||||
|
; Generate the password via the md5sum command, e.g.
|
||||||
|
; echo "my_password" | md5sum
|
||||||
|
deny = AstAccountDeny
|
||||||
|
permit = AstAccountPermit
|
||||||
|
port = AstAccountPort
|
||||||
|
qualify = AstAccountQualify
|
||||||
|
type = AstAccountType
|
||||||
|
disallow = AstAccountDisallowedCodec
|
||||||
|
allow = AstAccountAllowedCodec
|
||||||
|
regseconds = AstAccountExpirationTimestamp
|
||||||
|
regcontext = AstAccountRegistrationContext
|
||||||
|
regexten = AstAccountRegistrationExten
|
||||||
|
notransfer = AstAccountNoTransfer
|
||||||
|
lastms = AstAccountLastQualifyMilliseconds
|
||||||
|
additionalFilter=(objectClass=AstAccountIAX)
|
||||||
|
|
||||||
|
;
|
||||||
|
; A Test Family
|
||||||
|
;
|
||||||
|
[testfamily]
|
||||||
|
MyUSERID = uid
|
||||||
|
additionalFilter=(objectClass=*)
|
||||||
|
|
||||||
|
[accounts]
|
||||||
|
amaflags = AstAccountAMAFlags
|
||||||
|
callgroup = AstAccountCallGroup
|
||||||
|
callerid = AstAccountCallerID
|
||||||
|
directmedia = AstAccountDirectMedia
|
||||||
|
context = AstAccountContext
|
||||||
|
dtmfmode = AstAccountDTMFMode
|
||||||
|
fromuser = AstAccountFromUser
|
||||||
|
fromdomain = AstAccountFromDomain
|
||||||
|
fullcontact = AstAccountFullContact
|
||||||
|
fullcontact = gecos
|
||||||
|
host = AstAccountHost
|
||||||
|
insecure = AstAccountInsecure
|
||||||
|
mailbox = AstAccountMailbox
|
||||||
|
md5secret = AstAccountRealmedPassword ; Must be an MD5 hash. Field value can start with
|
||||||
|
; {md5} but it is not required.
|
||||||
|
; Generate the password via the md5sum command, e.g.
|
||||||
|
; echo "my_password" | md5sum
|
||||||
|
nat = AstAccountNAT
|
||||||
|
deny = AstAccountDeny
|
||||||
|
permit = AstAccountPermit
|
||||||
|
pickupgroup = AstAccountPickupGroup
|
||||||
|
port = AstAccountPort
|
||||||
|
qualify = AstAccountQualify
|
||||||
|
restrictcid = AstAccountRestrictCID
|
||||||
|
rtptimeout = AstAccountRTPTimeout
|
||||||
|
rtpholdtimeout = AstAccountRTPHoldTimeout
|
||||||
|
type = AstAccountType
|
||||||
|
disallow = AstAccountDisallowedCodec
|
||||||
|
allow = AstAccountAllowedCodec
|
||||||
|
MusicOnHold = AstAccountMusicOnHold
|
||||||
|
regseconds = AstAccountExpirationTimestamp
|
||||||
|
regcontext = AstAccountRegistrationContext
|
||||||
|
regexten = AstAccountRegistrationExten
|
||||||
|
CanCallForward = AstAccountCanCallForward
|
||||||
|
additionalFilter=(objectClass=AstAccount)
|
||||||
163
res_parking.conf
Normal file
163
res_parking.conf
Normal file
@@ -0,0 +1,163 @@
|
|||||||
|
[general]
|
||||||
|
;parkeddynamic = yes ; Enables dynamically created parkinglots. (default is no)
|
||||||
|
; If the option is enabled then the following
|
||||||
|
; variables can be used to dynamically create
|
||||||
|
; new parking lots.
|
||||||
|
;
|
||||||
|
; The PARKINGDYNAMIC variable specifies the
|
||||||
|
; parking lot to use as a template to create
|
||||||
|
; a dynamic parking lot. It is an error to
|
||||||
|
; specify a non-existent parking lot for the
|
||||||
|
; template. If not set then the default
|
||||||
|
; parking lot is used as the template.
|
||||||
|
;
|
||||||
|
; The PARKINGDYNCONTEXT variable specifies
|
||||||
|
; the dialplan context to use for the newly
|
||||||
|
; created dynamic parking lot. If not set
|
||||||
|
; then the context from the parking lot
|
||||||
|
; template is used. The context is created
|
||||||
|
; if it does not already exist and the new
|
||||||
|
; parking lot needs to create extensions.
|
||||||
|
;
|
||||||
|
; The PARKINGDYNEXTEN variable specifies the
|
||||||
|
; parkext to use for the newly created dynamic
|
||||||
|
; parking lot. If not set then the parkext
|
||||||
|
; is used from the parking lot template. If
|
||||||
|
; the template does not specify a parkext
|
||||||
|
; then no extensions are created for the
|
||||||
|
; newly created parking lot. The dynamic
|
||||||
|
; parking lot cannot be created if it needs
|
||||||
|
; to create extensions that overlap existing
|
||||||
|
; parking lot extensions. The only exception
|
||||||
|
; to this is for the parkext extension and
|
||||||
|
; only if neither of the overlaping parking
|
||||||
|
; lot's parkext is exclusive.
|
||||||
|
;
|
||||||
|
; The PARKINGDYNPOS variable specifies the
|
||||||
|
; parking positions to use for the newly
|
||||||
|
; created dynamic parking lot. If not set
|
||||||
|
; then the parkpos from the parking lot
|
||||||
|
; template is used.
|
||||||
|
|
||||||
|
; A parking lot named 'default' will automatically be used when no other
|
||||||
|
; named parking lot is indicated for use by the park application or a
|
||||||
|
; channel's parkinglot function and PARKINGLOT channel variable. This parking
|
||||||
|
; lot is guaranteed to exist and will be created even if default is left out of
|
||||||
|
; the configuration file.
|
||||||
|
|
||||||
|
[default] ; Default Parking Lot
|
||||||
|
parkext => 700 ; What extension to dial to park. (optional; if
|
||||||
|
; specified, extensions will be created for parkext and
|
||||||
|
; the whole range of parkpos)
|
||||||
|
;
|
||||||
|
; Note: Generated parking extensions cannot overlap.
|
||||||
|
; The only exception is if neither overlapping parkext
|
||||||
|
; is exclusive.
|
||||||
|
|
||||||
|
;parkext_exclusive=yes ; Specify that the parkext created for this parking lot
|
||||||
|
; will only access this parking lot. (default is no)
|
||||||
|
|
||||||
|
parkpos => 701-720 ; What range of parking spaces to use - must be numeric
|
||||||
|
; Creates these spaces as extensions if parkext is set.
|
||||||
|
; Since this value is interpreted numerically, leading 0's
|
||||||
|
; will be ignored (so expect 00700-00720 to map to 700-720)
|
||||||
|
|
||||||
|
context => parkedcalls ; Which context parked calls and the default park
|
||||||
|
|
||||||
|
;parkinghints = no ; Add hints priorities automatically for parkpos
|
||||||
|
; extensions if parkext is set
|
||||||
|
|
||||||
|
;parkingtime => 45 ; Number of seconds a call can be parked before returning
|
||||||
|
|
||||||
|
;comebacktoorigin = yes ; Setting this option configures the behavior of call parking when the
|
||||||
|
; parked call times out (See the parkingtime option). The default value is 'yes'.
|
||||||
|
;
|
||||||
|
; 'yes' - When the parked call times out, attempt to send the call back to the peer
|
||||||
|
; that parked this call. This is done by saving off the name of the channel
|
||||||
|
; that parked the call. The call will return to the context 'park-dial' and
|
||||||
|
; an extension created based on the name of the channel that originally parked
|
||||||
|
; the call. This extension will be created automatically to do a Dial() to the
|
||||||
|
; device that originally parked the call for comebacktodialtime seconds. If the
|
||||||
|
; call is not answered, the call will proceed to the next priority (usually none
|
||||||
|
; unless you deliberately set up a catch-all second priority in the park-call
|
||||||
|
; context) in the dialplan for extension matching the peer name (same as how
|
||||||
|
; peer names are flattened into extensions when comebacktoorigin is 'no').
|
||||||
|
;
|
||||||
|
; 'no' - This option is useful for performing custom dialplan functionality prior to
|
||||||
|
; sending the call back to the extension that initially parked the call, or to
|
||||||
|
; an entirely different destination.
|
||||||
|
;
|
||||||
|
; When the parked call times out, send it back to the dialplan. The location
|
||||||
|
; will be defined by the comebackcontext option. The extension will be built from
|
||||||
|
; the saved channel name that parked the call. For example, if a SIP peer named
|
||||||
|
; '0004F2040001' parked this call, the extension will be 'SIP_0004F2040001'.
|
||||||
|
; (Note that an underscore is used here because the '/' character has a special
|
||||||
|
; meaning in extension names for CallerID matching.) If this extension does not
|
||||||
|
; exist, the call will be sent to the 's' extension, instead. Finally, if the 's'
|
||||||
|
; extension of 'parkedcallstimeout' does not exist, the call will fall back to the
|
||||||
|
; 's' extension of the 'default' context.
|
||||||
|
;
|
||||||
|
; Additionally, in this example an extension of 'SIP_0004F2040001' will be
|
||||||
|
; created in the 'park-dial' context. This extension will be set up to do a
|
||||||
|
; Dial() to 'SIP/0004F2040001'.
|
||||||
|
;
|
||||||
|
; During the timeout procedure, the following variables are set
|
||||||
|
; PARKING_SPACE - extension that the call was parked in prior to timing out
|
||||||
|
; PARKEDLOT - name of the lot that the call was parked in prior to timing out
|
||||||
|
; PARKER - dial string to call the device that parked the call
|
||||||
|
|
||||||
|
;comebackdialtime = 30 ; When a parked call times out, this is the number of seconds to dial the device that
|
||||||
|
; originally parked the call. It is also available as a channel variable COMEBACKDIALTIME
|
||||||
|
; after a parked call has timed out.
|
||||||
|
; The default value is 30 seconds.
|
||||||
|
|
||||||
|
;comebackcontext = parkedcallstimeout
|
||||||
|
; The context a timed out call will return to if comebcktoorigin=no.
|
||||||
|
; The default value is 'parkedcallstimeout'.
|
||||||
|
|
||||||
|
;courtesytone = beep ; Sound file to play to when someone picks up a parked call
|
||||||
|
; and also when the Touch Monitor is activated/deactivated.
|
||||||
|
; Default is no tone.
|
||||||
|
|
||||||
|
;parkedplay = caller ; Who to play courtesytone to when picking up a parked call.
|
||||||
|
; One of: parked, caller, both (default is caller)
|
||||||
|
|
||||||
|
;parkedcalltransfers = caller ; Enables or disables DTMF based transfers when picking up a parked call.
|
||||||
|
; one of: callee, caller, both, no (default is no)
|
||||||
|
|
||||||
|
;parkedcallreparking = caller ; Enables or disables DTMF based parking when picking up a parked call.
|
||||||
|
; one of: callee, caller, both, no (default is no)
|
||||||
|
|
||||||
|
;parkedcallhangup = caller ; Enables or disables DTMF based hangups when picking up a parked call.
|
||||||
|
; one of: callee, caller, both, no (default is no)
|
||||||
|
|
||||||
|
;findslot => next ; Sets the method for selecting parking spaces when a call is parked
|
||||||
|
; 'next' - use the next parking space from the most recently used one.
|
||||||
|
; 'first' - use the lowest numbered parking space available
|
||||||
|
|
||||||
|
;parkedmusicclass = default ; This is the MOH class to use for the parked channel
|
||||||
|
; as long as the class is not set on the channel directly
|
||||||
|
; using Set(CHANNEL(musicclass)=whatever) in the dialplan
|
||||||
|
|
||||||
|
;*** Define another parking lot
|
||||||
|
;
|
||||||
|
; The parkinglot used can be set with the CHANNEL(parkinglot) dialplan function or by
|
||||||
|
; setting the 'parkinglot' configuration for a channel in its configuration file.
|
||||||
|
;
|
||||||
|
; Parking lots can now be any named configuration category aside from
|
||||||
|
; 'general' which is reserved for general options. They no longer need to be
|
||||||
|
; prefixed with 'parkinglot_'
|
||||||
|
;
|
||||||
|
;[edvina]
|
||||||
|
;context => edvina_park
|
||||||
|
;parkpos => 800-850
|
||||||
|
;findslot => next
|
||||||
|
;comebacktoorigin = no
|
||||||
|
;comebackdialtime = 90
|
||||||
|
;comebackcontext = edvinapark-timeout
|
||||||
|
;parkedmusicclass = edvina
|
||||||
|
;
|
||||||
|
; Since edvina doesn't define parkext, extensions won't automatically be
|
||||||
|
; created for parking to it or for retrieving calls from it. These can be
|
||||||
|
; created manually in the dial plan by using the Park and ParkedCall
|
||||||
|
; applications.
|
||||||
32
res_pktccops.conf
Normal file
32
res_pktccops.conf
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
;; Sample res_pktccops.conf
|
||||||
|
;
|
||||||
|
;[general]
|
||||||
|
;gateinfoperiod => 60 ; default 60s
|
||||||
|
;gatetimeout = 150 ; default 150
|
||||||
|
;t1 => 250 ; default 250s
|
||||||
|
;t7 => 200 ; default 200s
|
||||||
|
;t8 => 300 ; default 300s
|
||||||
|
;keepalive => 60 ; default 60s
|
||||||
|
;
|
||||||
|
;[teszt]
|
||||||
|
;host => 192.168.0.24
|
||||||
|
;pool => 10.0.1.0 10.0.1.255
|
||||||
|
;pool => 10.0.3.0 10.0.3.255
|
||||||
|
;pool => 10.0.7.0 10.0.8.255
|
||||||
|
;pool => 10.0.10.0 10.0.11.255
|
||||||
|
;
|
||||||
|
;[general]
|
||||||
|
;gateinfoperiod => 60 ; default 60s
|
||||||
|
;gatetimeout = 150 ; default 150
|
||||||
|
;t1 => 250 ; default 250s
|
||||||
|
;t7 => 200 ; default 200s
|
||||||
|
;t8 => 300 ; default 300s
|
||||||
|
;keepalive => 60 ; default 60s
|
||||||
|
;
|
||||||
|
;[test]
|
||||||
|
;host => 192.168.0.24
|
||||||
|
;pool => 10.0.1.0 10.0.1.255
|
||||||
|
;pool => 10.0.3.0 10.0.3.255
|
||||||
|
;pool => 10.0.7.0 10.0.8.255
|
||||||
|
;pool => 10.0.10.0 10.0.11.255
|
||||||
|
;
|
||||||
22
res_snmp.conf
Normal file
22
res_snmp.conf
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
;
|
||||||
|
; Configuration file for res_snmp
|
||||||
|
; --------------------------------
|
||||||
|
;
|
||||||
|
; Res_snmp can run as a subagent or standalone SNMP agent. The standalone snmp
|
||||||
|
; agent is based on net-snmp and will read a configuration file called
|
||||||
|
; asterisk.conf in the net-snmp configuration file path, starting with
|
||||||
|
; /etc/snmp on many systems.
|
||||||
|
;
|
||||||
|
; If you use the subagent model, you need to enable agentx in snmpd.conf
|
||||||
|
; Note that you can only run one Asterisk on the system in this case.
|
||||||
|
;
|
||||||
|
; See https://wiki.asterisk.org/wiki/display/AST/Simple+Network+Management+Protocol+(SNMP)+Support
|
||||||
|
; to get more information about
|
||||||
|
; snmp support in Asterisk
|
||||||
|
|
||||||
|
[general]
|
||||||
|
; We run as a subagent per default -- to run as a full agent
|
||||||
|
; we must run as root (to be able to bind to port 161)
|
||||||
|
;subagent = yes
|
||||||
|
; SNMP must be explicitly enabled to be active
|
||||||
|
;enabled = yes
|
||||||
27
res_stun_monitor.conf
Normal file
27
res_stun_monitor.conf
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
;
|
||||||
|
; Configuration file for the res_stun_monitor module
|
||||||
|
;
|
||||||
|
; The res_stun_monitor module sends STUN requests to a configured STUN server
|
||||||
|
; periodically. If the monitor detects a change in the external IP address or port
|
||||||
|
; provided by the STUN server an event is sent out internally within Asterisk
|
||||||
|
; to alert all listeners to that event of the change.
|
||||||
|
|
||||||
|
; The current default listeners for the network change event include chan_sip
|
||||||
|
; and chan_iax. Both of these channel drivers by default react to this event
|
||||||
|
; by renewing all outbound registrations. This allows the endpoints Asterisk
|
||||||
|
; is registering with to become aware of the address change and know the new
|
||||||
|
; location.
|
||||||
|
;
|
||||||
|
[general]
|
||||||
|
;
|
||||||
|
; ---- STUN Server configuration ---
|
||||||
|
; Setting the 'stunaddr' option to a valid address enables the STUN monitor.
|
||||||
|
;
|
||||||
|
;stunaddr = mystunserver.com ; Address of the STUN server to query.
|
||||||
|
; Valid form:
|
||||||
|
; [(hostname | IP-address) [':' port]]
|
||||||
|
; The port defaults to the standard STUN port (3478).
|
||||||
|
; Set to an empty value to disable STUN monitoring.
|
||||||
|
; Default is disabled.
|
||||||
|
;stunrefresh = 30 ; Number of seconds between STUN refreshes.
|
||||||
|
; Default is 30.
|
||||||
23
resolver_unbound.conf
Normal file
23
resolver_unbound.conf
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
; Unbound DNS Resolver Configuration
|
||||||
|
;
|
||||||
|
; This file serves as a reference for the configurable options within the
|
||||||
|
; unbound DNS resolver.
|
||||||
|
|
||||||
|
[general]
|
||||||
|
;hosts = /etc/hosts ; Full path to a hosts file which contains a mapping of
|
||||||
|
; ; hostnames to addresses. If "system" is specified then
|
||||||
|
; ; the system specific hosts file will be used. (default: system)
|
||||||
|
;resolv = /etc/resolv.conf ; Full path to a resolv.conf which contains the nameservers
|
||||||
|
; ; to use for resolution. If "system" is specified then the
|
||||||
|
; ; system specific resolv.conf file will be used. (default: system)
|
||||||
|
;nameserver = 127.0.0.1 ; An explicit nameserver to use for queries. If this option
|
||||||
|
; ; is specified multiple times the first configured one will
|
||||||
|
; ; be treated as the primary with each subsequent one being
|
||||||
|
; ; a backup. If the resolv options is also specified the
|
||||||
|
; ; nameservers from it will be tried after all nameserver
|
||||||
|
; ; options.
|
||||||
|
;debug = 99 ; The debug level to run the unbound resolver at. While
|
||||||
|
; ; there is no explicit range the higher the number the more
|
||||||
|
; ; debug is output.
|
||||||
|
;ta_file = /etc/asterisk/dnssec_keys ; Full path to a trusted anchors key file. These keys are
|
||||||
|
; ; used to verify DNSSEC signed results.
|
||||||
130
rtp.conf
Normal file
130
rtp.conf
Normal file
@@ -0,0 +1,130 @@
|
|||||||
|
;
|
||||||
|
; RTP Configuration
|
||||||
|
;
|
||||||
|
[general]
|
||||||
|
;
|
||||||
|
; RTP start and RTP end configure start and end addresses
|
||||||
|
;
|
||||||
|
; Defaults are rtpstart=5000 and rtpend=31000
|
||||||
|
;
|
||||||
|
rtpstart=10000
|
||||||
|
rtpend=20000
|
||||||
|
;
|
||||||
|
; Whether to enable or disable UDP checksums on RTP traffic
|
||||||
|
;
|
||||||
|
;rtpchecksums=no
|
||||||
|
;
|
||||||
|
; The amount of time a DTMF digit with no 'end' marker should be
|
||||||
|
; allowed to continue (in 'samples', 1/8000 of a second)
|
||||||
|
;
|
||||||
|
;dtmftimeout=3000
|
||||||
|
; rtcpinterval = 5000 ; Milliseconds between rtcp reports
|
||||||
|
;(min 500, max 60000, default 5000)
|
||||||
|
;
|
||||||
|
; Enable strict RTP protection. This will drop RTP packets that do not come
|
||||||
|
; from the recoginized source of the RTP stream. Strict RTP qualifies RTP
|
||||||
|
; packet stream sources before accepting them upon initial connection and
|
||||||
|
; when the connection is renegotiated (e.g., transfers and direct media).
|
||||||
|
; Initial connection and renegotiation starts a learning mode to qualify
|
||||||
|
; stream source addresses. Once Asterisk has recognized a stream it will
|
||||||
|
; allow other streams to qualify and replace the current stream for 5
|
||||||
|
; seconds after starting learning mode. Once learning mode completes the
|
||||||
|
; current stream is locked in and cannot change until the next
|
||||||
|
; renegotiation.
|
||||||
|
; Valid options are "no" to disable strictrtp, "yes" to enable strictrtp,
|
||||||
|
; and "seqno", which does the same thing as strictrtp=yes, but only checks
|
||||||
|
; to make sure the sequence number is correct rather than checking the time
|
||||||
|
; interval as well.
|
||||||
|
; This option is enabled by default.
|
||||||
|
; strictrtp=yes
|
||||||
|
;
|
||||||
|
; Number of packets containing consecutive sequence values needed
|
||||||
|
; to change the RTP source socket address. This option only comes
|
||||||
|
; into play while using strictrtp=yes. Consider changing this value
|
||||||
|
; if rtp packets are dropped from one or both ends after a call is
|
||||||
|
; connected. This option is set to 4 by default.
|
||||||
|
; probation=8
|
||||||
|
;
|
||||||
|
; Whether to enable or disable ICE support. This option is enabled by default.
|
||||||
|
; icesupport=false
|
||||||
|
;
|
||||||
|
; Hostname or address for the STUN server used when determining the external
|
||||||
|
; IP address and port an RTP session can be reached at. The port number is
|
||||||
|
; optional. If omitted the default value of 3478 will be used. This option is
|
||||||
|
; disabled by default.
|
||||||
|
;
|
||||||
|
; e.g. stundaddr=mystun.server.com:3478
|
||||||
|
;
|
||||||
|
; stunaddr=
|
||||||
|
;
|
||||||
|
; Some multihomed servers have IP interfaces that cannot reach the STUN
|
||||||
|
; server specified by stunaddr. Blacklist those interface subnets from
|
||||||
|
; trying to send a STUN packet to find the external IP address.
|
||||||
|
; Attempting to send the STUN packet needlessly delays processing incoming
|
||||||
|
; and outgoing SIP INVITEs because we will wait for a response that can
|
||||||
|
; never come until we give up on the response.
|
||||||
|
; * Multiple subnets may be listed.
|
||||||
|
; * Blacklisting applies to IPv4 only. STUN isn't needed for IPv6.
|
||||||
|
; * Blacklisting applies when binding RTP to specific IP addresses and not
|
||||||
|
; the wildcard 0.0.0.0 address. e.g., A PJSIP endpoint binding RTP to a
|
||||||
|
; specific address using the bind_rtp_to_media_address and media_address
|
||||||
|
; options. Or the PJSIP endpoint specifies an explicit transport that binds
|
||||||
|
; to a specific IP address.
|
||||||
|
;
|
||||||
|
; e.g. stun_blacklist = 192.168.1.0/255.255.255.0
|
||||||
|
; stun_blacklist = 10.32.77.0/255.255.255.0
|
||||||
|
;
|
||||||
|
; stun_blacklist =
|
||||||
|
;
|
||||||
|
; Hostname or address for the TURN server to be used as a relay. The port
|
||||||
|
; number is optional. If omitted the default value of 3478 will be used.
|
||||||
|
; This option is disabled by default.
|
||||||
|
;
|
||||||
|
; e.g. turnaddr=myturn.server.com:34780
|
||||||
|
;
|
||||||
|
; turnaddr=
|
||||||
|
;
|
||||||
|
; Username used to authenticate with TURN relay server.
|
||||||
|
; turnusername=
|
||||||
|
;
|
||||||
|
; Password used to authenticate with TURN relay server.
|
||||||
|
; turnpassword=
|
||||||
|
;
|
||||||
|
; Subnets to exclude from ICE host, srflx and relay discovery. This is useful
|
||||||
|
; to optimize the ICE process where a system has multiple host address ranges
|
||||||
|
; and/or physical interfaces and certain of them are not expected to be used
|
||||||
|
; for RTP. For example, VPNs and local interconnections may not be suitable or
|
||||||
|
; necessary for ICE. Multiple subnets may be listed. If left unconfigured,
|
||||||
|
; all discovered host addresses are used.
|
||||||
|
;
|
||||||
|
; e.g. ice_blacklist = 192.168.1.0/255.255.255.0
|
||||||
|
; ice_blacklist = 10.32.77.0/255.255.255.0
|
||||||
|
;
|
||||||
|
; ice_blacklist =
|
||||||
|
;
|
||||||
|
[ice_host_candidates]
|
||||||
|
;
|
||||||
|
; When Asterisk is behind a static one-to-one NAT and ICE is in use, ICE will
|
||||||
|
; expose the server's internal IP address as one of the host candidates.
|
||||||
|
; Although using STUN (see the 'stunaddr' configuration option) will provide a
|
||||||
|
; publicly accessible IP, the internal IP will still be sent to the remote
|
||||||
|
; peer. To help hide the topology of your internal network, you can override
|
||||||
|
; the host candidates that Asterisk will send to the remote peer.
|
||||||
|
;
|
||||||
|
; IMPORTANT: Only use this functionality when your Asterisk server is behind a
|
||||||
|
; one-to-one NAT and you know what you're doing. If you do define anything
|
||||||
|
; here, you almost certainly will NOT want to specify 'stunaddr' or 'turnaddr'
|
||||||
|
; above.
|
||||||
|
;
|
||||||
|
; The format for these overrides is:
|
||||||
|
;
|
||||||
|
; <local address> => <advertised address>
|
||||||
|
;
|
||||||
|
; The following will replace 192.168.1.10 with 1.2.3.4 during ICE
|
||||||
|
; negotiation:
|
||||||
|
;
|
||||||
|
;192.168.1.10 => 1.2.3.4
|
||||||
|
;
|
||||||
|
; You can define an override for more than 1 interface if you have a multihomed
|
||||||
|
; server. Any local interface that is not matched will be passed through
|
||||||
|
; unaltered. Both IPv4 and IPv6 addresses are supported.
|
||||||
57
sip_notify.conf
Normal file
57
sip_notify.conf
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
; rfc3842
|
||||||
|
; put empty "Content=>" at the end to have CRLF after last body line
|
||||||
|
|
||||||
|
[clear-mwi]
|
||||||
|
Event=>message-summary
|
||||||
|
Content-type=>application/simple-message-summary
|
||||||
|
Content=>Messages-Waiting: no
|
||||||
|
Content=>Message-Account: sip:asterisk@127.0.0.1
|
||||||
|
Content=>Voice-Message: 0/0 (0/0)
|
||||||
|
Content=>
|
||||||
|
|
||||||
|
; Aastra
|
||||||
|
|
||||||
|
[aastra-check-cfg]
|
||||||
|
Event=>check-sync
|
||||||
|
|
||||||
|
[aastra-xml]
|
||||||
|
Event=>aastra-xml
|
||||||
|
|
||||||
|
; Digium
|
||||||
|
|
||||||
|
[digium-check-cfg]
|
||||||
|
Event=>check-sync
|
||||||
|
|
||||||
|
; Linksys
|
||||||
|
|
||||||
|
[linksys-cold-restart]
|
||||||
|
Event=>reboot_now
|
||||||
|
|
||||||
|
[linksys-warm-restart]
|
||||||
|
Event=>restart_now
|
||||||
|
|
||||||
|
; Polycom
|
||||||
|
|
||||||
|
[polycom-check-cfg]
|
||||||
|
Event=>check-sync
|
||||||
|
|
||||||
|
; Sipura
|
||||||
|
|
||||||
|
[sipura-check-cfg]
|
||||||
|
Event=>resync
|
||||||
|
|
||||||
|
[sipura-get-report]
|
||||||
|
Event=>report
|
||||||
|
|
||||||
|
; snom
|
||||||
|
|
||||||
|
[snom-check-cfg]
|
||||||
|
Event=>check-sync\;reboot=false
|
||||||
|
|
||||||
|
[snom-reboot]
|
||||||
|
Event=>check-sync\;reboot=true
|
||||||
|
|
||||||
|
; Cisco
|
||||||
|
|
||||||
|
[cisco-check-cfg]
|
||||||
|
Event=>check-sync
|
||||||
75
smdi.conf
Normal file
75
smdi.conf
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
; Asterisk SMDI configuration
|
||||||
|
|
||||||
|
[interfaces]
|
||||||
|
; Specify serial ports to listen for SMDI messages on below. These will be
|
||||||
|
; referenced later in chan_dahdi.conf. If you do not specify any interfaces
|
||||||
|
; then SMDI will be disabled. Interfaces can have several different attributes
|
||||||
|
; associated with them.
|
||||||
|
|
||||||
|
; Set the number of stop bits to use per character here. The default is no,
|
||||||
|
; in which case one stop bit will be used.
|
||||||
|
|
||||||
|
;twostopbits = no
|
||||||
|
|
||||||
|
; Character size or bit length is the size of each character sent across the
|
||||||
|
; link. Character size can be 7 or 8. The default is 7.
|
||||||
|
|
||||||
|
;charsize = 7
|
||||||
|
|
||||||
|
; If you need parity checking enabled you can turn it on here. Acceptable
|
||||||
|
; values are even, odd, and none. The default is even.
|
||||||
|
|
||||||
|
;paritybit = even
|
||||||
|
|
||||||
|
; The baudrate to use for this port. Acceptable values are 1200, 2400, 4800,
|
||||||
|
; and 9600. The default is 9600.
|
||||||
|
|
||||||
|
;baudrate = 1200
|
||||||
|
|
||||||
|
; Often the numbering scheme for a set of mailboxes or extensions will not be 7
|
||||||
|
; or 10 digits (as SMDI requires). Use the msdstrip option to strip unused
|
||||||
|
; digits from the start of numbers.
|
||||||
|
|
||||||
|
;msdstrip = 0
|
||||||
|
|
||||||
|
; Occasionally Asterisk and the SMDI switch may become out of sync. If this
|
||||||
|
; happens, Asterisk will appear one or several calls behind as it processes
|
||||||
|
; voicemail requests. To prevent this from happening, adjust the msgexpirytime.
|
||||||
|
; This will make Asterisk discard old SMDI messages that have not yet been
|
||||||
|
; processed. The default expiry time is 30000 milliseconds.
|
||||||
|
|
||||||
|
;msgexpirytime = 30000
|
||||||
|
|
||||||
|
;smdiport => /dev/ttyS0
|
||||||
|
|
||||||
|
|
||||||
|
[mailboxes]
|
||||||
|
; This section configures parameters related to MWI handling for the SMDI link.
|
||||||
|
|
||||||
|
; This option configures the polling interval used to check to see if the
|
||||||
|
; mailboxes have any new messages. This option is specified in seconds.
|
||||||
|
; The default value is 10 seconds.
|
||||||
|
;
|
||||||
|
;pollinginterval=10
|
||||||
|
|
||||||
|
; Every other entry in this section of the configuration file is interpreted as
|
||||||
|
; a mapping between the mailbox ID on the SMDI link, and the local Asterisk
|
||||||
|
; mailbox name. In many cases, they are the same thing, but they still must be
|
||||||
|
; listed here so that this module knows which mailboxes it needs to pay
|
||||||
|
; attention to.
|
||||||
|
;
|
||||||
|
; Syntax:
|
||||||
|
; <SMDI mailbox ID>=<Asterisk Mailbox Name>[@Asterisk Voicemail Context]
|
||||||
|
;
|
||||||
|
; If no Asterisk voicemail context is specified, "default" will be assumed.
|
||||||
|
;
|
||||||
|
; Before specifying mailboxes, you must specify an SMDI interface. All mailbox
|
||||||
|
; definitions that follow will correspond to that SMDI interface. If you specify
|
||||||
|
; another interface, then all definitions following that will correspond to the
|
||||||
|
; new interface.
|
||||||
|
;
|
||||||
|
;smdiport=/dev/ttyS0
|
||||||
|
;2565551234=1234@vmcontext1
|
||||||
|
;2565555678=5678@vmcontext2
|
||||||
|
;smdiport=/dev/ttyS1
|
||||||
|
;2565559999=9999
|
||||||
78
sorcery.conf
Normal file
78
sorcery.conf
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
; Sample configuration file for Sorcery Data Access Layer
|
||||||
|
|
||||||
|
;
|
||||||
|
; Wizards
|
||||||
|
;
|
||||||
|
; Wizards are the persistence mechanism for objects. They are loaded as Asterisk modules and register
|
||||||
|
; themselves with the sorcery core. All implementation specific details of how objects are persisted is isolated
|
||||||
|
; within wizards.
|
||||||
|
;
|
||||||
|
|
||||||
|
;
|
||||||
|
; Caching
|
||||||
|
;
|
||||||
|
; A wizard can optionally be marked as an object cache by adding "/cache" to the object type within the mapping.
|
||||||
|
; If an object is returned from a non-object cache it is immediately given to the cache to be created. Multiple
|
||||||
|
; object caches can be configured for a single object type.
|
||||||
|
;
|
||||||
|
|
||||||
|
;
|
||||||
|
; Object Type Mappings
|
||||||
|
;
|
||||||
|
; To allow configuration of where and how an object is persisted object mappings can be defined within this file
|
||||||
|
; on a per-module basis. The mapping consists of the object type, options, wizard name, and wizard configuration
|
||||||
|
; data. This has the following format:
|
||||||
|
;
|
||||||
|
; object type [/options] = wizard name, wizard configuration data
|
||||||
|
;
|
||||||
|
; For example to configure an in-memory wizard for the 'bob' object type:
|
||||||
|
;
|
||||||
|
; bob = memory
|
||||||
|
;
|
||||||
|
; Or to configure the object type 'joe' from a configuration file:
|
||||||
|
;
|
||||||
|
; joe = config,joe.conf
|
||||||
|
;
|
||||||
|
; Note that an object type can have multiple mappings defined. Each mapping will be consulted in the order in which
|
||||||
|
; it appears within the configuration file. This means that if you are configuring a wizard as a cache it should
|
||||||
|
; appear as the first mapping so the cache is consulted before all other mappings.
|
||||||
|
;
|
||||||
|
|
||||||
|
;
|
||||||
|
; The following object mappings are used by the unit test to test certain functionality of sorcery.
|
||||||
|
;
|
||||||
|
[test_sorcery_section]
|
||||||
|
test=memory
|
||||||
|
|
||||||
|
[test_sorcery_cache]
|
||||||
|
test/cache=test
|
||||||
|
test=memory
|
||||||
|
|
||||||
|
;
|
||||||
|
; The following object mapping is the default mapping of external MWI mailbox
|
||||||
|
; objects to give persistence to the message counts.
|
||||||
|
;
|
||||||
|
;[res_mwi_external]
|
||||||
|
;mailboxes=astdb,mwi_external
|
||||||
|
|
||||||
|
;
|
||||||
|
; The following object mappings set PJSIP objects to use realtime database mappings from extconfig
|
||||||
|
; with the table names used when automatically generating configuration from the alembic script.
|
||||||
|
;
|
||||||
|
;[res_pjsip]
|
||||||
|
;endpoint=realtime,ps_endpoints
|
||||||
|
;auth=realtime,ps_auths
|
||||||
|
;aor=realtime,ps_aors
|
||||||
|
;domain_alias=realtime,ps_domain_aliases
|
||||||
|
|
||||||
|
;[res_pjsip_endpoint_identifier_ip]
|
||||||
|
;identify=realtime,ps_endpoint_id_ips
|
||||||
|
|
||||||
|
;[res_pjsip_outbound_publish]
|
||||||
|
;outbound-publish=realtime,ps_outbound_publishes
|
||||||
|
|
||||||
|
;[res_pjsip_pubsub]
|
||||||
|
;inbound-publication=realtime,ps_inbound_publications
|
||||||
|
|
||||||
|
;[res_pjsip_publish_asterisk]
|
||||||
|
;asterisk-publication=realtime,ps_asterisk_publications
|
||||||
132
stasis.conf
Normal file
132
stasis.conf
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
[threadpool]
|
||||||
|
;initial_size = 5 ; Initial size of the threadpool.
|
||||||
|
; ; 0 means the threadpool has no threads initially
|
||||||
|
; ; until a task needs a thread.
|
||||||
|
;idle_timeout_sec = 20 ; Number of seconds a thread should be idle before
|
||||||
|
; ; dying. 0 means threads never time out.
|
||||||
|
;max_size = 50 ; Maximum number of threads in the Stasis threadpool.
|
||||||
|
; ; 0 means no limit to the number of threads in the
|
||||||
|
; ; threadpool.
|
||||||
|
|
||||||
|
[declined_message_types]
|
||||||
|
; This config section contains the names of message types that should be prevented
|
||||||
|
; from being created. By default, all message types are allowed to be created.
|
||||||
|
;
|
||||||
|
; Using this functionality requires knowledge of the names of internal stasis
|
||||||
|
; message types which is generally the same as the name of the accessor function.
|
||||||
|
;
|
||||||
|
; Use of this functionality may break more complex functionality in Asterisk
|
||||||
|
; such as CEL, CDR, transfers, etc. and will likely cause related messages in ARI
|
||||||
|
; and AMI to go missing.
|
||||||
|
; decline=stasis_app_recording_snapshot_type
|
||||||
|
; decline=stasis_app_playback_snapshot_type
|
||||||
|
; decline=stasis_test_message_type
|
||||||
|
; decline=confbridge_start_type
|
||||||
|
; decline=confbridge_end_type
|
||||||
|
; decline=confbridge_join_type
|
||||||
|
; decline=confbridge_leave_type
|
||||||
|
; decline=confbridge_start_record_type
|
||||||
|
; decline=confbridge_stop_record_type
|
||||||
|
; decline=confbridge_mute_type
|
||||||
|
; decline=confbridge_unmute_type
|
||||||
|
; decline=confbridge_talking_type
|
||||||
|
; decline=cel_generic_type
|
||||||
|
; decline=ast_bridge_snapshot_type
|
||||||
|
; decline=ast_bridge_merge_message_type
|
||||||
|
; decline=ast_channel_entered_bridge_type
|
||||||
|
; decline=ast_channel_left_bridge_type
|
||||||
|
; decline=ast_blind_transfer_type
|
||||||
|
; decline=ast_attended_transfer_type
|
||||||
|
; decline=ast_endpoint_snapshot_type
|
||||||
|
; decline=ast_endpoint_state_type
|
||||||
|
; decline=ast_device_state_message_type
|
||||||
|
; decline=ast_test_suite_message_type
|
||||||
|
; decline=ast_mwi_state_type
|
||||||
|
; decline=ast_mwi_vm_app_type
|
||||||
|
; decline=ast_format_register_type
|
||||||
|
; decline=ast_format_unregister_type
|
||||||
|
; decline=ast_manager_get_generic_type
|
||||||
|
; decline=ast_parked_call_type
|
||||||
|
; decline=ast_channel_snapshot_type
|
||||||
|
; decline=ast_channel_dial_type
|
||||||
|
; decline=ast_channel_varset_type
|
||||||
|
; decline=ast_channel_hangup_request_type
|
||||||
|
; decline=ast_channel_dtmf_begin_type
|
||||||
|
; decline=ast_channel_dtmf_end_type
|
||||||
|
; decline=ast_channel_hold_type
|
||||||
|
; decline=ast_channel_unhold_type
|
||||||
|
; decline=ast_channel_chanspy_start_type
|
||||||
|
; decline=ast_channel_chanspy_stop_type
|
||||||
|
; decline=ast_channel_fax_type
|
||||||
|
; decline=ast_channel_hangup_handler_type
|
||||||
|
; decline=ast_channel_moh_start_type
|
||||||
|
; decline=ast_channel_moh_stop_type
|
||||||
|
; decline=ast_channel_monitor_start_type
|
||||||
|
; decline=ast_channel_monitor_stop_type
|
||||||
|
; decline=ast_channel_agent_login_type
|
||||||
|
; decline=ast_channel_agent_logoff_type
|
||||||
|
; decline=ast_channel_talking_start
|
||||||
|
; decline=ast_channel_talking_stop
|
||||||
|
; decline=ast_security_event_type
|
||||||
|
; decline=ast_named_acl_change_type
|
||||||
|
; decline=ast_local_bridge_type
|
||||||
|
; decline=ast_local_optimization_begin_type
|
||||||
|
; decline=ast_local_optimization_end_type
|
||||||
|
; decline=stasis_subscription_change_type
|
||||||
|
; decline=ast_multi_user_event_type
|
||||||
|
; decline=stasis_cache_clear_type
|
||||||
|
; decline=stasis_cache_update_type
|
||||||
|
; decline=ast_network_change_type
|
||||||
|
; decline=ast_system_registry_type
|
||||||
|
; decline=ast_cc_available_type
|
||||||
|
; decline=ast_cc_offertimerstart_type
|
||||||
|
; decline=ast_cc_requested_type
|
||||||
|
; decline=ast_cc_requestacknowledged_type
|
||||||
|
; decline=ast_cc_callerstopmonitoring_type
|
||||||
|
; decline=ast_cc_callerstartmonitoring_type
|
||||||
|
; decline=ast_cc_callerrecalling_type
|
||||||
|
; decline=ast_cc_recallcomplete_type
|
||||||
|
; decline=ast_cc_failure_type
|
||||||
|
; decline=ast_cc_monitorfailed_type
|
||||||
|
; decline=ast_presence_state_message_type
|
||||||
|
; decline=ast_rtp_rtcp_sent_type
|
||||||
|
; decline=ast_rtp_rtcp_received_type
|
||||||
|
; decline=ast_call_pickup_type
|
||||||
|
; decline=aoc_s_type
|
||||||
|
; decline=aoc_d_type
|
||||||
|
; decline=aoc_e_type
|
||||||
|
; decline=dahdichannel_type
|
||||||
|
; decline=mcid_type
|
||||||
|
; decline=session_timeout_type
|
||||||
|
; decline=cdr_read_message_type
|
||||||
|
; decline=cdr_write_message_type
|
||||||
|
; decline=cdr_prop_write_message_type
|
||||||
|
; decline=corosync_ping_message_type
|
||||||
|
; decline=agi_exec_start_type
|
||||||
|
; decline=agi_exec_end_type
|
||||||
|
; decline=agi_async_start_type
|
||||||
|
; decline=agi_async_exec_type
|
||||||
|
; decline=agi_async_end_type
|
||||||
|
; decline=queue_caller_join_type
|
||||||
|
; decline=queue_caller_leave_type
|
||||||
|
; decline=queue_caller_abandon_type
|
||||||
|
; decline=queue_member_status_type
|
||||||
|
; decline=queue_member_added_type
|
||||||
|
; decline=queue_member_removed_type
|
||||||
|
; decline=queue_member_pause_type
|
||||||
|
; decline=queue_member_penalty_type
|
||||||
|
; decline=queue_member_ringinuse_type
|
||||||
|
; decline=queue_agent_called_type
|
||||||
|
; decline=queue_agent_connect_type
|
||||||
|
; decline=queue_agent_complete_type
|
||||||
|
; decline=queue_agent_dump_type
|
||||||
|
; decline=queue_agent_ringnoanswer_type
|
||||||
|
; decline=meetme_join_type
|
||||||
|
; decline=meetme_leave_type
|
||||||
|
; decline=meetme_end_type
|
||||||
|
; decline=meetme_mute_type
|
||||||
|
; decline=meetme_talking_type
|
||||||
|
; decline=meetme_talk_request_type
|
||||||
|
; decline=appcdr_message_type
|
||||||
|
; decline=forkcdr_message_type
|
||||||
|
; decline=cdr_sync_message_type
|
||||||
8
statsd.conf
Normal file
8
statsd.conf
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
[general]
|
||||||
|
;enabled = yes ; When set to yes, statsd support is enabled
|
||||||
|
;server = 127.0.0.1 ; server[:port] of statsd server to use.
|
||||||
|
; If not specified, the port is 8125
|
||||||
|
;prefix = ; Prefix to prepend to all metrics
|
||||||
|
;add_newline = no ; Append a newline to every event. This is
|
||||||
|
; useful if you want to run a fake statsd
|
||||||
|
; server using netcat (nc -lu 8125)
|
||||||
83
telcordia-1.adsi
Normal file
83
telcordia-1.adsi
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
;
|
||||||
|
; Asterisk default ADSI script
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; Begin with the preamble requirements
|
||||||
|
;
|
||||||
|
DESCRIPTION "Telcordia Demo" ; Name of vendor
|
||||||
|
VERSION 0x02 ; Version of stuff
|
||||||
|
;SECURITY "_AST" ; Security code
|
||||||
|
SECURITY 0x0000 ; Security code
|
||||||
|
FDN 0x0000000f ; Descriptor number
|
||||||
|
|
||||||
|
;
|
||||||
|
; Predefined strings
|
||||||
|
;
|
||||||
|
DISPLAY "talkingto" IS "Talking To" "$Call1p" WRAP
|
||||||
|
DISPLAY "titles" IS "20th Century IQ Svc"
|
||||||
|
DISPLAY "newcall" IS "New Call From" "$Call1p" WRAP
|
||||||
|
DISPLAY "ringing" IS "Ringing"
|
||||||
|
|
||||||
|
;
|
||||||
|
; Begin state definitions
|
||||||
|
;
|
||||||
|
STATE "callup" ; Call is currently up
|
||||||
|
STATE "inactive" ; No active call
|
||||||
|
|
||||||
|
;
|
||||||
|
; Begin soft key definitions
|
||||||
|
;
|
||||||
|
KEY "CB_OH" IS "Block" OR "Call Block"
|
||||||
|
OFFHOOK
|
||||||
|
VOICEMODE
|
||||||
|
WAITDIALTONE
|
||||||
|
SENDDTMF "*60"
|
||||||
|
SUBSCRIPT "offHook"
|
||||||
|
ENDKEY
|
||||||
|
|
||||||
|
KEY "CB" IS "Block" OR "Call Block"
|
||||||
|
SENDDTMF "*60"
|
||||||
|
ENDKEY
|
||||||
|
|
||||||
|
;
|
||||||
|
; Begin main subroutine
|
||||||
|
;
|
||||||
|
|
||||||
|
SUB "main" IS
|
||||||
|
IFEVENT NEARANSWER THEN
|
||||||
|
CLEAR
|
||||||
|
SHOWDISPLAY "talkingto" AT 1
|
||||||
|
GOTO "stableCall"
|
||||||
|
ENDIF
|
||||||
|
IFEVENT OFFHOOK THEN
|
||||||
|
CLEAR
|
||||||
|
SHOWDISPLAY "titles" AT 1
|
||||||
|
SHOWKEYS "CB"
|
||||||
|
GOTO "offHook"
|
||||||
|
ENDIF
|
||||||
|
IFEVENT IDLE THEN
|
||||||
|
CLEAR
|
||||||
|
SHOWDISPLAY "titles" AT 1
|
||||||
|
SHOWKEYS "CB_OH"
|
||||||
|
ENDIF
|
||||||
|
IFEVENT CALLERID THEN
|
||||||
|
CLEAR
|
||||||
|
SHOWDISPLAY "newcall" AT 1
|
||||||
|
ENDIF
|
||||||
|
ENDSUB
|
||||||
|
|
||||||
|
SUB "offHook" IS
|
||||||
|
IFEVENT FARRING THEN
|
||||||
|
CLEAR
|
||||||
|
SHOWDISPLAY "ringing" AT 1
|
||||||
|
ENDIF
|
||||||
|
IFEVENT FARANSWER THEN
|
||||||
|
CLEAR
|
||||||
|
SHOWDISPLAY "talkingto" AT 1
|
||||||
|
GOTO "stableCall"
|
||||||
|
ENDIF
|
||||||
|
ENDSUB
|
||||||
|
|
||||||
|
SUB "stableCall" IS
|
||||||
|
|
||||||
|
ENDSUB
|
||||||
26
udptl.conf
Normal file
26
udptl.conf
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
;
|
||||||
|
; UDPTL Configuration (UDPTL is one of the transports for T.38)
|
||||||
|
;
|
||||||
|
[general]
|
||||||
|
;
|
||||||
|
; UDPTL start and UDPTL end configure start and end addresses
|
||||||
|
;
|
||||||
|
udptlstart=4000
|
||||||
|
udptlend=4999
|
||||||
|
;
|
||||||
|
; Whether to enable or disable UDP checksums on UDPTL traffic
|
||||||
|
;
|
||||||
|
;udptlchecksums=no
|
||||||
|
;
|
||||||
|
; The number of error correction entries in a UDPTL packet
|
||||||
|
;
|
||||||
|
udptlfecentries = 3
|
||||||
|
;
|
||||||
|
; The span over which parity is calculated for FEC in a UDPTL packet
|
||||||
|
;
|
||||||
|
udptlfecspan = 3
|
||||||
|
;
|
||||||
|
; Some VoIP providers will only accept an offer with an even-numbered
|
||||||
|
; UDPTL port. Set this option so that Asterisk will only attempt to use
|
||||||
|
; even-numbered ports when negotiating T.38. Default is no.
|
||||||
|
use_even_ports = no
|
||||||
113
users.conf
Normal file
113
users.conf
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
;
|
||||||
|
; User configuration
|
||||||
|
;
|
||||||
|
; Creating entries in users.conf is a "shorthand" for creating individual
|
||||||
|
; entries in each configuration file. Using users.conf is not intended to
|
||||||
|
; provide you with as much flexibility as using the separate configuration
|
||||||
|
; files (e.g. sip.conf, iax.conf, etc) but is intended to accelerate the
|
||||||
|
; simple task of adding users. Note that creating individual items (e.g.
|
||||||
|
; custom SIP peers, IAX friends, etc.) will allow you to override specific
|
||||||
|
; parameters within this file. Parameter names here are the same as they
|
||||||
|
; appear in the other configuration files. There is no way to change the
|
||||||
|
; value of a parameter here for just one subsystem.
|
||||||
|
;
|
||||||
|
|
||||||
|
[general]
|
||||||
|
;
|
||||||
|
; Full name of a user
|
||||||
|
;
|
||||||
|
fullname = New User
|
||||||
|
;
|
||||||
|
; Starting point of allocation of extensions
|
||||||
|
;
|
||||||
|
userbase = 6000
|
||||||
|
;
|
||||||
|
; Create voicemail mailbox and use use macro-stdexten
|
||||||
|
;
|
||||||
|
hasvoicemail = yes
|
||||||
|
;
|
||||||
|
; Set voicemail mailbox 6000 password to 1234
|
||||||
|
;
|
||||||
|
vmsecret = 1234
|
||||||
|
;
|
||||||
|
; Create SIP Peer
|
||||||
|
;
|
||||||
|
hassip = yes
|
||||||
|
;
|
||||||
|
; Create IAX friend
|
||||||
|
;
|
||||||
|
hasiax = yes
|
||||||
|
;
|
||||||
|
; Create H.323 friend
|
||||||
|
;
|
||||||
|
;hash323 = yes
|
||||||
|
;
|
||||||
|
; Create manager entry
|
||||||
|
;
|
||||||
|
hasmanager = no
|
||||||
|
;
|
||||||
|
; Set permissions for manager entry (see manager.conf.sample for documentation)
|
||||||
|
; (defaults to *all* permissions)
|
||||||
|
;managerread = system,call,log,verbose,command,agent,user,config
|
||||||
|
;managerwrite = system,call,log,verbose,command,agent,user,config
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; MAC Address for res_phoneprov
|
||||||
|
;
|
||||||
|
;macaddress = 112233445566
|
||||||
|
;
|
||||||
|
; Auto provision the phone with res_phoneprov
|
||||||
|
;
|
||||||
|
;autoprov = yes
|
||||||
|
;
|
||||||
|
; Line Keys for hardphone
|
||||||
|
;
|
||||||
|
;LINEKEYS = 1
|
||||||
|
;
|
||||||
|
; Line number for hardphone
|
||||||
|
;
|
||||||
|
;linenumber = 1
|
||||||
|
;
|
||||||
|
; Local Caller ID number used with res_phoneprov and Asterisk GUI
|
||||||
|
;
|
||||||
|
;cid_number = 6000
|
||||||
|
;
|
||||||
|
; Remaining options are not specific to users.conf entries but are general.
|
||||||
|
;
|
||||||
|
callwaiting = yes
|
||||||
|
threewaycalling = yes
|
||||||
|
callwaitingcallerid = yes
|
||||||
|
transfer = yes
|
||||||
|
canpark = yes
|
||||||
|
cancallforward = yes
|
||||||
|
callreturn = yes
|
||||||
|
callgroup = 1
|
||||||
|
pickupgroup = 1
|
||||||
|
;nat = no
|
||||||
|
|
||||||
|
;[6000]
|
||||||
|
;fullname = Joe User
|
||||||
|
;description = Courtesy Phone In Lobby ; Used to provide a description of the
|
||||||
|
; peer in console output
|
||||||
|
;email = joe@foo.bar
|
||||||
|
;secret = 1234
|
||||||
|
;dahdichan = 1
|
||||||
|
;hasvoicemail = yes
|
||||||
|
;vmsecret = 1234
|
||||||
|
;hassip = yes
|
||||||
|
;hasiax = no
|
||||||
|
;hash323 = no
|
||||||
|
;hasmanager = no
|
||||||
|
;callwaiting = no
|
||||||
|
;context = international
|
||||||
|
;
|
||||||
|
; Some administrators choose alphanumeric extensions, but still want their
|
||||||
|
; users to be reachable by traditional numeric extensions, specified by the
|
||||||
|
; alternateexts entry.
|
||||||
|
;
|
||||||
|
;alternateexts = 7057,3249
|
||||||
|
;macaddress = 112233445566
|
||||||
|
;autoprov = yes
|
||||||
|
;LINEKEYS = 1
|
||||||
|
;linenumber = 1
|
||||||
|
;cid_number = 6000
|
||||||
64
xmpp.conf
Normal file
64
xmpp.conf
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
[general]
|
||||||
|
;debug=yes ; Enable debugging (disabled by default).
|
||||||
|
;autoprune=yes ; Auto remove users from buddy list. Depending on your
|
||||||
|
; setup (ie, using your personal Gtalk account for a test)
|
||||||
|
; you might lose your contacts list. Default is 'no'.
|
||||||
|
;autoregister=yes ; Auto register users from buddy list.
|
||||||
|
;collection_nodes=yes ; Enable support for XEP-0248 for use with
|
||||||
|
; distributed device state. Default is 'no'.
|
||||||
|
;pubsub_autocreate=yes ; Whether or not the PubSub server supports/is using
|
||||||
|
; auto-create for nodes. If it is, we have to
|
||||||
|
; explicitly pre-create nodes before publishing them.
|
||||||
|
; Default is 'no'.
|
||||||
|
;auth_policy=accept ; Auto accept users' subscription requests (default).
|
||||||
|
; Set to deny for auto denial.
|
||||||
|
;[asterisk]
|
||||||
|
;type=client ; Client or Component connection
|
||||||
|
;serverhost=astjab.org ; Route to server for example, talk.google.com
|
||||||
|
;pubsub_node=pubsub.astjab.org ; Node to use for publishing events via PubSub
|
||||||
|
;username=asterisk@astjab.org/asterisk ; Username with optional resource.
|
||||||
|
;secret=blah ; Password
|
||||||
|
;refresh_token=TOKEN_VALUE ; Refresh token issued by Google OAuth 2.0 protocol.
|
||||||
|
; `secret` must NOT be set if you use OAuth.
|
||||||
|
; See https://developers.google.com/identity/protocols/OAuth2WebServer
|
||||||
|
; for more details.
|
||||||
|
; For test reasons you can obtain one on the page
|
||||||
|
; https://developers.google.com/oauthplayground/
|
||||||
|
; 1. Click on Settings icon, check "Use your own OAuth credentials"
|
||||||
|
; and enter your Client ID and Client Secret (see below).
|
||||||
|
; 2. Input the scope https://www.googleapis.com/auth/googletalk
|
||||||
|
; and push "Authorize APIs" button.
|
||||||
|
; 3. Approve permissions.
|
||||||
|
; 4. On section "Step 2" push "Exchange authorization code for tokens"
|
||||||
|
; and get your Refresh token.
|
||||||
|
;oauth_clientid=OAUTH_CLIENT_ID_VALUE ; The application's client id to authorize using Google OAuth 2.0 protocol.
|
||||||
|
;oauth_secret=OAUTH_SECRET_VALUE ; The application's client secret to authorize using Google OAuth 2.0 protocol.
|
||||||
|
; 1. Create new Project on the page:
|
||||||
|
; https://console.cloud.google.com/apis/credentials/oauthclient
|
||||||
|
; 2. Create new Application ID on the same page with type Web-application.
|
||||||
|
; In section "Allowed URI redirections" put the path to the corresponding
|
||||||
|
; script on your site or https://developers.google.com/oauthplayground
|
||||||
|
; if you would like to obtain refresh_token from users by hand
|
||||||
|
; (for example, for test reasons).
|
||||||
|
; 3. Client ID and Client Secret will be shown and available on the same page.
|
||||||
|
;priority=1 ; Resource priority
|
||||||
|
;port=5222 ; Port to use defaults to 5222
|
||||||
|
;usetls=yes ; Use tls or not
|
||||||
|
;usesasl=yes ; Use sasl or not
|
||||||
|
;buddy=mogorman@astjab.org ; Manual addition of buddy to list.
|
||||||
|
; For distributed events, these buddies are
|
||||||
|
; automatically added in the whitelist as
|
||||||
|
; 'owners' of the node(s).
|
||||||
|
;distribute_events=yes ; Whether or not to distribute events using
|
||||||
|
; this connection. Default is 'no'.
|
||||||
|
;status=available ; One of: chat, available, away, xaway, or dnd
|
||||||
|
;statusmessage="I am available" ; Have custom status message for Asterisk
|
||||||
|
;timeout=5 ; Timeout (in seconds) on the message stack, defaults to 5.
|
||||||
|
; Messages stored longer than this value will be deleted by Asterisk.
|
||||||
|
; This option applies to incoming messages only, which are intended to
|
||||||
|
; be processed by the JABBER_RECEIVE dialplan function.
|
||||||
|
;sendtodialplan=yes ; Send incoming messages into the dialplan. Off by default.
|
||||||
|
;context=messages ; Dialplan context to send incoming messages to. If not set,
|
||||||
|
; "default" will be used.
|
||||||
|
;forceoldssl=no ; Force the use of old-style SSL.
|
||||||
|
;keepalive=
|
||||||
Reference in New Issue
Block a user