diff options
author | Matthew Jordan <mjordan@digium.com> | 2014-07-17 21:17:28 +0000 |
---|---|---|
committer | Matthew Jordan <mjordan@digium.com> | 2014-07-17 21:17:28 +0000 |
commit | fc0fecb4768d696db3324bcf6dd03325bb4cd513 (patch) | |
tree | 12615f96e88382b2824d4901f6949571e41ea2e4 /configs/samples | |
parent | 1ce23d4534994fdd8bfb8ad3b9ca1884194097be (diff) |
configs: Move sample config files into a subdirectory of configs
This moves all samples configs from configs/ to configs/samples. This allows
for additional sets of sample configuration files to be added in the future.
Review: https://reviewboard.asterisk.org/r/3804/
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@418870 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'configs/samples')
107 files changed, 16768 insertions, 0 deletions
diff --git a/configs/samples/acl.conf.sample b/configs/samples/acl.conf.sample new file mode 100644 index 000000000..b052606ce --- /dev/null +++ b/configs/samples/acl.conf.sample @@ -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 diff --git a/configs/samples/adsi.conf.sample b/configs/samples/adsi.conf.sample new file mode 100644 index 000000000..0f36f80da --- /dev/null +++ b/configs/samples/adsi.conf.sample @@ -0,0 +1,8 @@ +; +; Sample ADSI Configuration file +; +[intro] +alignment = center +greeting => Welcome to the +greeting => Asterisk +greeting => Open Source PBX diff --git a/configs/samples/agents.conf.sample b/configs/samples/agents.conf.sample new file mode 100644 index 000000000..0cf0c4c90 --- /dev/null +++ b/configs/samples/agents.conf.sample @@ -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 diff --git a/configs/samples/alarmreceiver.conf.sample b/configs/samples/alarmreceiver.conf.sample new file mode 100644 index 000000000..e4815a9eb --- /dev/null +++ b/configs/samples/alarmreceiver.conf.sample @@ -0,0 +1,91 @@ +; +; alarmreceiver.conf +; +; Sample configuration file for the Asterisk alarm receiver application. +; + + +[general] + +; +; Specify a timestamp format for the metadata section of the event files +; Default is %a %b %d, %Y @ %H:%M:%S %Z + +timestampformat = %a %b %d, %Y @ %H:%M:%S %Z + +; +; Specify a command to execute when the caller hangs up +; +; Default is none +; + +;eventcmd = yourprogram -yourargs ... + +; +; Specify a spool directory for the event files. This setting is required +; if you want the app to be useful. Event files written to the spool +; directory will be of the template event-XXXXXX, where XXXXXX is a random +; and unique alphanumeric string. +; +; Default is none, and the events will be dropped on the floor. +; + +eventspooldir = /tmp + +; +; The alarmreceiver app can either log the events one-at-a-time to individual +; files in the spool directory, or it can store them until the caller +; disconnects and write them all to one file. +; +; The default setting for logindividualevents is no. +; + +logindividualevents = no + +; +; The timeout for receiving the first DTMF digit is adjustable from 1000 msec. +; to 10000 msec. The default is 2000 msec. Note: if you wish to test the +; receiver by entering digits manually, set this to a reasonable time out +; like 10000 milliseconds. + +fdtimeout = 2000 + +; +; The timeout for receiving subsequent DTMF digits is adjustable from +; 110 msec. to 4000 msec. The default is 200 msec. Note: if you wish to test +; the receiver by entering digits manually, set this to a reasonable time out +; like 4000 milliseconds. +; + +sdtimeout = 200 + +; +; Wait for the connection to settle post-answer. Adjustable from 500 msec. to 10000 msec. +; The default is 1250 msec. +; + +answait = 1250 + +; When logging individual events it may be desirable to skip grouping of metadata + +;no_group_meta = yes + +; +; The loudness of the ACK and Kissoff tones is adjustable from 100 to 8192. +; The default is 8192. This shouldn't need to be messed with, but is included +; just in case there are problems with signal levels. +; + +loudness = 8192 + +; +; The db-family setting allows the user to capture statistics on the number of +; calls, and the errors the alarm receiver sees. The default is for no +; db-family name to be defined and the database logging to be turned off. +; + +;db-family = yourfamily: + +; +; End of alarmreceiver.conf +; diff --git a/configs/samples/alsa.conf.sample b/configs/samples/alsa.conf.sample new file mode 100644 index 000000000..ced5b4485 --- /dev/null +++ b/configs/samples/alsa.conf.sample @@ -0,0 +1,78 @@ +; +; Open Sound System Console Driver Configuration File +; +[general] +; +; Automatically answer incoming calls on the console? Choose yes if +; for example you want to use this as an intercom. +; +autoanswer=yes +; +; Default context (is overridden with @context syntax) +; +context=local +; +; Default extension to call +; +extension=s +; +; Default language +; +;language=en +; +; Default Music on Hold class to use when this channel is placed on hold in +; the case that the music class is not set on the channel with +; Set(CHANNEL(musicclass)=whatever) in the dialplan and the peer channel +; putting this one on hold did not suggest a class to use. +; +;mohinterpret=default +; +; Silence suppression can be enabled when sound is over a certain threshold. +; The value for the threshold should probably be between 500 and 2000 or so, +; but your mileage may vary. Use the echo test to evaluate the best setting. +;silencesuppression = yes +;silencethreshold = 1000 +; +; To set which ALSA device to use, change this parameter +;input_device=hw:0,0 +;output_device=hw:0,0 + +; +; Default mute state (can also be toggled via CLI) +;mute=true + +; +; If enabled, no audio capture device will be opened. This is useful on +; systems where there will be no return audio path, such as overhead pagers. +;noaudiocapture=true + +;------------------------------ JITTER BUFFER CONFIGURATION -------------------------- +; jbenable = yes ; Enables the use of a jitterbuffer on the receiving side of an + ; ALSA channel. Defaults to "no". An enabled jitterbuffer will + ; be used only if the sending side can create and the receiving + ; side can not accept jitter. The ALSA channel can't accept jitter, + ; thus an enabled jitterbuffer on the receive ALSA side will always + ; be used if the sending side can create jitter. + +; jbmaxsize = 200 ; Max length of the jitterbuffer in milliseconds. + +; jbresyncthreshold = 1000 ; Jump in the frame timestamps over which the jitterbuffer is + ; resynchronized. Useful to improve the quality of the voice, with + ; big jumps in/broken timestamps, usually sent from exotic devices + ; and programs. Defaults to 1000. + +; jbimpl = fixed ; Jitterbuffer implementation, used on the receiving side of a SIP + ; channel. Two implementations are currently available - "fixed" + ; (with size always equals to jbmax-size) and "adaptive" (with + ; variable size, actually the new jb of IAX2). Defaults to fixed. + +; jbtargetextra = 40 ; This option only affects the jb when 'jbimpl = adaptive' is set. + ; The option represents the number of milliseconds by which the new + ; jitter buffer will pad its size. the default is 40, so without + ; modification, the new jitter buffer will set its size to the jitter + ; value plus 40 milliseconds. increasing this value may help if your + ; network normally has low jitter, but occasionally has spikes. + +; jblog = no ; Enables jitterbuffer frame logging. Defaults to "no". +;----------------------------------------------------------------------------------- + diff --git a/configs/samples/amd.conf.sample b/configs/samples/amd.conf.sample new file mode 100644 index 000000000..ce4808a0c --- /dev/null +++ b/configs/samples/amd.conf.sample @@ -0,0 +1,18 @@ +; +; Answering Machine Detection Configuration +; + +[general] +initial_silence = 2500 ; Maximum silence duration before the greeting. + ; If exceeded then MACHINE. +greeting = 1500 ; Maximum length of a greeting. If exceeded then MACHINE. +after_greeting_silence = 800 ; Silence after detecting a greeting. + ; If exceeded then HUMAN +total_analysis_time = 5000 ; Maximum time allowed for the algorithm to decide + ; on a HUMAN or MACHINE +min_word_length = 100 ; Minimum duration of Voice to considered as a word +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 = 3 ; Maximum number of words in the greeting. + ; If exceeded then MACHINE +silence_threshold = 256 diff --git a/configs/samples/app_mysql.conf.sample b/configs/samples/app_mysql.conf.sample new file mode 100644 index 000000000..fafd4f7a2 --- /dev/null +++ b/configs/samples/app_mysql.conf.sample @@ -0,0 +1,24 @@ +; Configuration file for the MYSQL app addon + +[general] +; +; Nullvalue governs how NULL values are returned from the database. In +; previous versions, the special NULL value was returned as the "NULL" +; string. We now provide an option for the behavior, configured globally. +; nullstring - the string "NULL" +; emptystring - the string "" +; null - unset the variable +; +; WARNING: setting nullvalue=null may have undesireable consequences, in +; particular if you use subroutines in AEL or the LOCAL() variable construct. +; You have been warned. Don't complain if you use that setting in combination +; with Gosub or AEL and get buggy behavior. +; +nullvalue = nullstring + +; If set, autoclear will destroy allocated statement and connection resources +; when the channel ends. For most usage of the MYSQL app, this is what you +; want, but it's conceivable that somebody is sharing MYSQL connections across +; multiple channels, in which case, this should be set to 'no'. Defaults to +; 'no', as this was the original behavior. +autoclear=yes diff --git a/configs/samples/app_skel.conf.sample b/configs/samples/app_skel.conf.sample new file mode 100644 index 000000000..ada8461e3 --- /dev/null +++ b/configs/samples/app_skel.conf.sample @@ -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 diff --git a/configs/samples/ari.conf.sample b/configs/samples/ari.conf.sample new file mode 100644 index 000000000..59f9a44e5 --- /dev/null +++ b/configs/samples/ari.conf.sample @@ -0,0 +1,31 @@ +[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 + +;[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 + diff --git a/configs/samples/asterisk.adsi b/configs/samples/asterisk.adsi new file mode 100644 index 000000000..a58952589 --- /dev/null +++ b/configs/samples/asterisk.adsi @@ -0,0 +1,159 @@ +; +; 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 + diff --git a/configs/samples/asterisk.conf.sample b/configs/samples/asterisk.conf.sample new file mode 100644 index 000000000..e4883ec97 --- /dev/null +++ b/configs/samples/asterisk.conf.sample @@ -0,0 +1,97 @@ +[directories](!) +astetcdir => /etc/asterisk +astmoddir => /usr/lib/asterisk/modules +astvarlibdir => /var/lib/asterisk +astdbdir => /var/lib/asterisk +astkeydir => /var/lib/asterisk +astdatadir => /var/lib/asterisk +astagidir => /var/lib/asterisk/agi-bin +astspooldir => /var/spool/asterisk +astrundir => /var/run/asterisk +astlogdir => /var/log/asterisk +astsbindir => /usr/sbin + +[options] +;verbose = 3 +;debug = 3 +;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_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 + +; Changing the following lines may compromise your security. +;[files] +;astctlpermissions = 0660 +;astctlowner = root +;astctlgroup = apache +;astctl = asterisk.ctl diff --git a/configs/samples/calendar.conf.sample b/configs/samples/calendar.conf.sample new file mode 100644 index 000000000..82b8702f0 --- /dev/null +++ b/configs/samples/calendar.conf.sample @@ -0,0 +1,109 @@ +;[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 +; +; 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 diff --git a/configs/samples/ccss.conf.sample b/configs/samples/ccss.conf.sample new file mode 100644 index 000000000..21b0b0668 --- /dev/null +++ b/configs/samples/ccss.conf.sample @@ -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= diff --git a/configs/samples/cdr.conf.sample b/configs/samples/cdr.conf.sample new file mode 100644 index 000000000..458e19ab4 --- /dev/null +++ b/configs/samples/cdr.conf.sample @@ -0,0 +1,171 @@ +; +; Asterisk Call Detail Record engine configuration +; +; CDR is Call Detail Record, which provides logging services via a variety of +; pluggable backend modules. Detailed call information can be recorded to +; databases, files, etc. Useful for billing, fraud prevention, compliance with +; Sarbanes-Oxley aka The Enron Act, QOS evaluations, and more. +; + +[general] + +; Define whether or not to use CDR logging. Setting this to "no" will override +; any loading of backend CDR modules. Default is "yes". +;enable=yes + +; Define whether or not to log unanswered calls. Setting this to "yes" will +; report every attempt to ring a phone in dialing attempts, when it was not +; answered. For example, if you try to dial 3 extensions, and this option is "yes", +; you will get 3 CDR's, one for each phone that was rung. Default is "no". Some +; find this information horribly useless. Others find it very valuable. Note, in "yes" +; mode, you will see one CDR, with one of the call targets on one side, and the originating +; channel on the other, and then one CDR for each channel attempted. This may seem +; redundant, but cannot be helped. +; +; In brief, this option controls the reporting of unanswered calls which only have an A +; party. Calls which get offered to an outgoing line, but are unanswered, are still +; logged, and that is the intended behaviour. (It also results in some B side CDRs being +; output, as they have the B side channel as their source channel, and no destination +; channel.) +;unanswered = no + +; Define whether or not to log congested calls. Setting this to "yes" will +; report each call that fails to complete due to congestion conditions. Default +; is "no". +;congestion = no + +; Normally, CDR's are not closed out until after all extensions are finished +; executing. By enabling this option, the CDR will be ended before executing +; the "h" extension and hangup handlers so that CDR values such as "end" and +; "billsec" may be retrieved inside of of this extension. +; The default value is "no". +;endbeforehexten=no + +; Normally, the 'billsec' field logged to the backends (text files or databases) +; is simply the end time (hangup time) minus the answer time in seconds. Internally, +; asterisk stores the time in terms of microseconds and seconds. By setting +; initiatedseconds to 'yes', you can force asterisk to report any seconds +; that were initiated (a sort of round up method). Technically, this is +; when the microsecond part of the end time is greater than the microsecond +; part of the answer time, then the billsec time is incremented one second. +; The default value is "no". +;initiatedseconds=no + +; Define the CDR batch mode, where instead of posting the CDR at the end of +; every call, the data will be stored in a buffer to help alleviate load on the +; asterisk server. Default is "no". +; +; WARNING WARNING WARNING +; Use of batch mode may result in data loss after unsafe asterisk termination +; ie. software crash, power failure, kill -9, etc. +; WARNING WARNING WARNING +; +;batch=no + +; Define the maximum number of CDRs to accumulate in the buffer before posting +; them to the backend engines. 'batch' must be set to 'yes'. Default is 100. +;size=100 + +; Define the maximum time to accumulate CDRs in the buffer before posting them +; to the backend engines. If this time limit is reached, then it will post the +; records, regardless of the value defined for 'size'. 'batch' must be set to +; 'yes'. Note that time is in seconds. Default is 300 (5 minutes). +;time=300 + +; The CDR engine uses the internal asterisk scheduler to determine when to post +; records. Posting can either occur inside the scheduler thread, or a new +; thread can be spawned for the submission of every batch. For small batches, +; it might be acceptable to just use the scheduler thread, so set this to "yes". +; For large batches, say anything over size=10, a new thread is recommended, so +; set this to "no". Default is "no". +;scheduleronly=no + +; When shutting down asterisk, you can block until the CDRs are submitted. If +; you don't, then data will likely be lost. You can always check the size of +; the CDR batch buffer with the CLI "cdr status" command. To enable blocking on +; submission of CDR data during asterisk shutdown, set this to "yes". Default +; is "yes". +;safeshutdown=yes + +; +; +; CHOOSING A CDR "BACKEND" (what kind of output to generate) +; +; To choose a backend, you have to make sure either the right category is +; defined in this file, or that the appropriate config file exists, and has the +; proper definitions in it. If there are any problems, usually, the entry will +; silently ignored, and you get no output. +; +; Also, please note that you can generate CDR records in as many formats as you +; wish. If you configure 5 different CDR formats, then each event will be logged +; in 5 different places! In the example config files, all formats are commented +; out except for the cdr-csv format. +; +; Here are all the possible back ends: +; +; csv, custom, manager, odbc, pgsql, radius, sqlite, tds +; (also, mysql is available via the asterisk-addons, due to licensing +; requirements) +; (please note, also, that other backends can be created, by creating +; a new backend module in the source cdr/ directory!) +; +; Some of the modules required to provide these backends will not build or install +; unless some dependency requirements are met. Examples of this are pgsql, odbc, +; etc. If you are not getting output as you would expect, the first thing to do +; is to run the command "make menuselect", and check what modules are available, +; by looking in the "2. Call Detail Recording" option in the main menu. If your +; backend is marked with XXX, you know that the "configure" command could not find +; the required libraries for that option. +; +; To get CDRs to be logged to the plain-jane /var/log/asterisk/cdr-csv/Master.csv +; file, define the [csv] category in this file. No database necessary. The example +; config files are set up to provide this kind of output by default. +; +; To get custom csv CDR records, make sure the cdr_custom.conf file +; is present, and contains the proper [mappings] section. The advantage to +; using this backend, is that you can define which fields to output, and in +; what order. By default, the example configs are set up to mimic the cdr-csv +; output. If you don't make any changes to the mappings, you are basically generating +; the same thing as cdr-csv, but expending more CPU cycles to do so! +; +; To get manager events generated, make sure the cdr_manager.conf file exists, +; and the [general] section is defined, with the single variable 'enabled = yes'. +; +; For odbc, make sure all the proper libs are installed, that "make menuselect" +; shows that the modules are available, and the cdr_odbc.conf file exists, and +; has a [global] section with the proper variables defined. +; +; For pgsql, make sure all the proper libs are installed, that "make menuselect" +; shows that the modules are available, and the cdr_pgsql.conf file exists, and +; has a [global] section with the proper variables defined. +; +; For logging to radius databases, make sure all the proper libs are installed, that +; "make menuselect" shows that the modules are available, and the [radius] +; category is defined in this file, and in that section, make sure the 'radiuscfg' +; variable is properly pointing to an existing radiusclient.conf file. +; +; For logging to sqlite databases, make sure the 'cdr.db' file exists in the log directory, +; which is usually /var/log/asterisk. Of course, the proper libraries should be available +; during the 'configure' operation. +; +; For tds logging, make sure the proper libraries are available during the 'configure' +; phase, and that cdr_tds.conf exists and is properly set up with a [global] category. +; +; Also, remember, that if you wish to log CDR info to a database, you will have to define +; a specific table in that databse to make things work! See the doc directory for more details +; on how to create this table in each database. +; + +[csv] +usegmtime=yes ; log date/time in GMT. Default is "no" +loguniqueid=yes ; log uniqueid. Default is "no" +loguserfield=yes ; log user field. Default is "no" +accountlogs=yes ; create separate log file for each account code. Default is "yes" + +;[radius] +;usegmtime=yes ; log date/time in GMT +;loguniqueid=yes ; log uniqueid +;loguserfield=yes ; log user field +; 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 diff --git a/configs/samples/cdr_adaptive_odbc.conf.sample b/configs/samples/cdr_adaptive_odbc.conf.sample new file mode 100644 index 000000000..f3c806e75 --- /dev/null +++ b/configs/samples/cdr_adaptive_odbc.conf.sample @@ -0,0 +1,60 @@ +; The point of this module is to allow you log whatever you like in terms of +; the CDR variables. Do you want to log uniqueid? Then simply ensure that +; your table has that column. If you don't want the column, ensure that it +; does not exist in the table structure. If you'd like to call uniqueid +; something else in your table, simply provide an alias in the configuration +; file that maps the standard CDR field name (uniqueid) to whatever column +; name you like. Perhaps you'd like some extra CDR values logged that aren't +; in the standard repertoire of CDR variables (some that come to mind are +; certain values used for LCR: route, per_minute_cost, and per_minute_price). +; Simply set those CDR variables in your dialplan, i.e. Set(CDR(route)=27), +; ensure that a corresponding column exists in your table, and cdr_adaptive_odbc +; will do the rest. +; +; This configuration defines the connections and tables for which CDRs may +; be populated. Each context specifies a different CDR table to be used. +; +; The columns in the tables should match up word-for-word (case-insensitive) +; to the CDR variables set in the dialplan. The natural advantage to this +; system is that beyond setting up the configuration file to tell you what +; tables to look at, there isn't anything more to do beyond creating the +; columns for the fields that you want, and populating the corresponding +; CDR variables in the dialplan. For the builtin variables only, you may +; create aliases for the real column name. +; +; Please note that after adding columns to the database, it is necessary to +; reload this module to get the new column names and types read. +; +; Warning: if you specify two contexts with exactly the same connection and +; table names, you will get duplicate records in that table. So be careful. +; + +;[first] +;connection=mysql1 +;table=cdr + +;[second] +;connection=mysql1 +;table=extracdr + +;[third] +;connection=sqlserver +;table=AsteriskCDR +;schema=public ; for databases which support schemas +;usegmtime=yes ; defaults to no +;alias src => source +;alias channel => source_channel +;alias dst => dest +;alias dstchannel => dest_channel +; +; Any filter specified MUST match exactly or the CDR will be discarded +;filter accountcode => somename +;filter src => 123 +; Negative filters are also now available +;filter src != 456 +; +; Additionally, we now support setting static values per column. The reason +; for this is to allow different sections to specify different values for +; a certain named column, presumably separated by filters. +;static "Some Special Value" => identifier_code + diff --git a/configs/samples/cdr_custom.conf.sample b/configs/samples/cdr_custom.conf.sample new file mode 100644 index 000000000..bec9e3377 --- /dev/null +++ b/configs/samples/cdr_custom.conf.sample @@ -0,0 +1,14 @@ +; +; Mappings for custom config file +; +; To get your CSV output in a format tailored to your liking, uncomment the +; following lines and look for the output in the cdr-custom directory (usually +; in /var/log/asterisk). Depending on which mapping you uncomment, you may see +; Master.csv, Simple.csv, or both. +; +;[mappings] +;Master.csv => ${CSV_QUOTE(${CDR(clid)})},${CSV_QUOTE(${CDR(src)})},${CSV_QUOTE(${CDR(dst)})},${CSV_QUOTE(${CDR(dcontext)})},${CSV_QUOTE(${CDR(channel)})},${CSV_QUOTE(${CDR(dstchannel)})},${CSV_QUOTE(${CDR(lastapp)})},${CSV_QUOTE(${CDR(lastdata)})},${CSV_QUOTE(${CDR(start)})},${CSV_QUOTE(${CDR(answer)})},${CSV_QUOTE(${CDR(end)})},${CSV_QUOTE(${CDR(duration)})},${CSV_QUOTE(${CDR(billsec)})},${CSV_QUOTE(${CDR(disposition)})},${CSV_QUOTE(${CDR(amaflags)})},${CSV_QUOTE(${CDR(accountcode)})},${CSV_QUOTE(${CDR(uniqueid)})},${CSV_QUOTE(${CDR(userfield)})},${CDR(sequence)} +; +; High Resolution Time for billsec and duration fields +;Master.csv => ${CSV_QUOTE(${CDR(clid)})},${CSV_QUOTE(${CDR(src)})},${CSV_QUOTE(${CDR(dst)})},${CSV_QUOTE(${CDR(dcontext)})},${CSV_QUOTE(${CDR(channel)})},${CSV_QUOTE(${CDR(dstchannel)})},${CSV_QUOTE(${CDR(lastapp)})},${CSV_QUOTE(${CDR(lastdata)})},${CSV_QUOTE(${CDR(start)})},${CSV_QUOTE(${CDR(answer)})},${CSV_QUOTE(${CDR(end)})},${CSV_QUOTE(${CDR(duration,f)})},${CSV_QUOTE(${CDR(billsec,f)})},${CSV_QUOTE(${CDR(disposition)})},${CSV_QUOTE(${CDR(amaflags)})},${CSV_QUOTE(${CDR(accountcode)})},${CSV_QUOTE(${CDR(uniqueid)})},${CSV_QUOTE(${CDR(userfield)})},${CDR(sequence)} +;Simple.csv => ${CSV_QUOTE(${EPOCH})},${CSV_QUOTE(${CDR(src)})},${CSV_QUOTE(${CDR(dst)})} diff --git a/configs/samples/cdr_manager.conf.sample b/configs/samples/cdr_manager.conf.sample new file mode 100644 index 000000000..aa596b718 --- /dev/null +++ b/configs/samples/cdr_manager.conf.sample @@ -0,0 +1,15 @@ +; +; Asterisk Call Management CDR +; +[general] +enabled = no + +; The "mappings" category can be used to define additional "key: value" pairs +; that will be included in the manager event. (after AccountCode, Source, etc). +; +; Each line like "varname => label" will include a "label: ${CDR(varname)}" +; in the generated event where ${CDR(varname)} its replaced with its value +; +;[mappings] +;rate => Rate +;carrier => Carrier diff --git a/configs/samples/cdr_mysql.conf.sample b/configs/samples/cdr_mysql.conf.sample new file mode 100644 index 000000000..04b70493b --- /dev/null +++ b/configs/samples/cdr_mysql.conf.sample @@ -0,0 +1,60 @@ +; +; Note - if the database server is hosted on the same machine as the +; asterisk server, you can achieve a local Unix socket connection by +; setting hostname=localhost +; +; port and sock are both optional parameters. If hostname is specified +; and is not "localhost" (you can use address 127.0.0.1 instead), then +; cdr_mysql will attempt to connect to the port specified or use the +; default port. If hostname is not specified or if hostname is +; "localhost", then cdr_mysql will attempt to connect to the socket file +; specified by sock or otherwise use the default socket file. +; +;[global] +;hostname=database.host.name +;dbname=asteriskcdrdb +;table=cdr +;password=password +;user=asteriskcdruser +;port=3306 +;sock=/tmp/mysql.sock +;timezone=UTC ; Previously called usegmtime +; +; If your system's locale differs from mysql database character set, +; cdr_mysql can damage non-latin characters in CDR variables. Use this +; option to protect your data. +;charset=koi8r +; +; Older versions of cdr_mysql set the calldate field to whenever the +; record was posted, rather than the start date of the call. This flag +; reverts to the old (incorrect) behavior. Note that you'll also need +; to comment out the "start=calldate" alias, below, to use this. +;compat=no +; +; ssl connections (optional) +;ssl_ca=<path to CA cert> +;ssl_cert=<path to cert> +;ssl_key=<path to keyfile> +; +; You may also configure the field names used in the CDR table. +; +[columns] +;static "<value>" => <column> +;alias <cdrvar> => <column> +alias start => calldate +;alias clid => <a_field_not_named_clid> +;alias src => <a_field_not_named_src> +;alias dst => <a_field_not_named_dst> +;alias dcontext => <a_field_not_named_dcontext> +;alias channel => <a_field_not_named_channel> +;alias dstchannel => <a_field_not_named_dstchannel> +;alias lastapp => <a_field_not_named_lastapp> +;alias lastdata => <a_field_not_named_lastdata> +;alias duration => <a_field_not_named_duration> +;alias billsec => <a_field_not_named_billsec> +;alias disposition => <a_field_not_named_disposition> +;alias amaflags => <a_field_not_named_amaflags> +;alias accountcode => <a_field_not_named_accountcode> +;alias userfield => <a_field_not_named_userfield> +;alias uniqueid => <a_field_not_named_uniqueid> + diff --git a/configs/samples/cdr_odbc.conf.sample b/configs/samples/cdr_odbc.conf.sample new file mode 100644 index 000000000..93bd6fff8 --- /dev/null +++ b/configs/samples/cdr_odbc.conf.sample @@ -0,0 +1,11 @@ +; +; cdr_odbc.conf +; + +;[global] +;dsn=MySQL-test +;loguniqueid=yes +;dispositionstring=yes +;table=cdr ;"cdr" is default table name +;usegmtime=no ; set to "yes" to log in GMT +;hrtime=yes ;Enables microsecond accuracy with the billsec and duration fields diff --git a/configs/samples/cdr_pgsql.conf.sample b/configs/samples/cdr_pgsql.conf.sample new file mode 100644 index 000000000..c5a989f31 --- /dev/null +++ b/configs/samples/cdr_pgsql.conf.sample @@ -0,0 +1,16 @@ +; Sample Asterisk config file for CDR logging to PostgresSQL +; +; Note that you can use TLS connections to your database server. +; This is configured for your PostgreSQL client installation +; on this system (check for pgsessions.conf) + +[global] +;hostname=localhost +;port=5432 +;dbname=asterisk +;password=password +;user=postgres +;appname=asterisk ; Postgres application_name support (optional). Whitespace not allowed. +;table=cdr ;SQL table where CDRs will be inserted +;encoding=LATIN9 ; Encoding of logged characters in Asterisk +;timezone=UTC ; Uncomment if you want datetime fields in UTC/GMT diff --git a/configs/samples/cdr_sqlite3_custom.conf.sample b/configs/samples/cdr_sqlite3_custom.conf.sample new file mode 100644 index 000000000..0d5dc091c --- /dev/null +++ b/configs/samples/cdr_sqlite3_custom.conf.sample @@ -0,0 +1,10 @@ +; +; Mappings for custom config file +; +[master] ; currently, only file "master.db" is supported, with only one table at a time. +;table => cdr +;columns => calldate, clid, dcontext, channel, dstchannel, lastapp, lastdata, duration, billsec, disposition, amaflags, accountcode, uniqueid, userfield, test +;values => '${CDR(start)}','${CDR(clid)}','${CDR(dcontext)}','${CDR(channel)}','${CDR(dstchannel)}','${CDR(lastapp)}','${CDR(lastdata)}','${CDR(duration)}','${CDR(billsec)}','${CDR(disposition)}','${CDR(amaflags)}','${CDR(accountcode)}','${CDR(uniqueid)}','${CDR(userfield)}','${CDR(test)}' + +;Enable High Resolution Times for billsec and duration fields +;values => '${CDR(start)}','${CDR(clid)}','${CDR(dcontext)}','${CDR(channel)}','${CDR(dstchannel)}','${CDR(lastapp)}','${CDR(lastdata)}','${CDR(duration,f)}','${CDR(billsec,f)}','${CDR(disposition)}','${CDR(amaflags)}','${CDR(accountcode)}','${CDR(uniqueid)}','${CDR(userfield)}','${CDR(test)}' diff --git a/configs/samples/cdr_syslog.conf.sample b/configs/samples/cdr_syslog.conf.sample new file mode 100644 index 000000000..3a619be9f --- /dev/null +++ b/configs/samples/cdr_syslog.conf.sample @@ -0,0 +1,83 @@ +; +; Asterisk Call Detail Records (CDR) - Syslog Backend +; + +; The cdr_syslog module writes CDRs using the facilities provided by syslog. +; +; Not only must you configure cdr_syslog from this file (cdr_syslog.conf) but +; you will also need to make changes to your /etc/syslog.conf before CDRs will +; be written to syslog. +; +; As an example, you can add the following to /etc/syslog.conf: +; +; local4.info /var/log/asterisk-cdr.log +; +; And then instruct syslogd to re-read the configuration file by sending it a +; HUP signal. On Linux this can be done like this: +; +; kill -HUP `cat /var/run/syslogd.pid` +; +; Finally, you will need to uncomment the [cdr-simple] section below, and restart +; Asterisk. When calls are placed, you should start seeing records appear in +; /var/log/asterisk-cdr.log. + +[general] +; Facility +; +; The 'facility' keyword specifies the syslog facility to use when writing out +; CDRs. +; +; Accepted values: One of the following: +; user, local0, local1, local2, local3, local4, local5, local6 +; and local7. +; +; Note: Depending on your platform, the following may also be +; available: +; auth, authpriv, cron, daemon, ftp, kern, lpr, mail, +; news, syslog, and uucp. +; +; Default value: local4 + +;facility=local0 + +; Priority +; +; Use the 'priority' keyword to select which of the syslog priority levels to +; use when logging CDRs. +; +; Accepted values: One of the following: +; alert, crit, debug, emerg, err, info, notice, warning +; Default value: info + +;priority=warn + +; Note: The settings for 'facility' and 'priority' in the [general] section +; define the default values for all of the logging locations created +; below in separate sections. + +;[cdr-master] +;facility = local5 +;priority = debug + +; Template +; +; The 'template' value allows you to specify a custom format for messages +; written to syslog. This is similar to how cdr_custom is configured. +; +; Allowed values: A diaplan style string. +; Default value: None, this is required field. +; +; Note: Because of the way substitution is done, the only meaningful values +; available when the record is logged are those available via the CDR() +; dialplan function. All other channel variables will be unavailable. + +;template = "${CDR(clid)}","${CDR(src)}","${CDR(dst)}","${CDR(dcontext)}","${CDR(channel)}","${CDR(dstchannel)}","${CDR(lastapp)}","${CDR(lastdata)}","${CDR(start)}","${CDR(answer)}","${CDR(end)}","${CDR(duration)}","${CDR(billsec)}","${CDR(disposition)}","${CDR(amaflags)}","${CDR(accountcode)}","${CDR(uniqueid)}","${CDR(userfield)}" + +; High Resolution Time for billsec and duration fields +;template = "${CDR(clid)}","${CDR(src)}","${CDR(dst)}","${CDR(dcontext)}","${CDR(channel)}","${CDR(dstchannel)}","${CDR(lastapp)}","${CDR(lastdata)}","${CDR(start)}","${CDR(answer)}","${CDR(end)}","${CDR(duration,f)}","${CDR(billsec,f)}","${CDR(disposition)}","${CDR(amaflags)}","${CDR(accountcode)}","${CDR(uniqueid)}","${CDR(userfield)}" +;[cdr-simple] + +; Since we don't specify a facility or priority for this logging location, the +; records will use the defaults specified in the [general] section. + +;template = "We received a call from ${CDR(src)}" diff --git a/configs/samples/cdr_tds.conf.sample b/configs/samples/cdr_tds.conf.sample new file mode 100644 index 000000000..309599e5f --- /dev/null +++ b/configs/samples/cdr_tds.conf.sample @@ -0,0 +1,78 @@ +; +; Asterisk Call Detail Records (CDR) - FreeTDS Backend +; + +;[global] + +; Connection +; +; Use the 'connection' keyword to specify one of the instance names from your +; 'freetds.conf' file. Note that 'freetds.conf' is not an Asterisk +; configuration file, but one specific to the FreeTDS library. See the FreeTDS +; documentation on 'freetds.conf' for more information: +; +; http://www.freetds.org/userguide/freetdsconf.htm +; +; Accepted values: One of the connections specified in freetds.conf + +;connection=ConnectionFromFreeTDSConf + +; Database Name +; +; The 'dbname' keyword specifies the database name to use when logging CDRs. +; +; Accepted values: Any valid database name + +;dbname=AsteriskCDRs + +; Database Table Name +; +; The 'table' keyword identifies which database table is used to log CDRs. +; +; Accepted value: Any valid table name +; Default value: If not specified, a table named 'cdr' is assumed + +;table=cdr + +; Credentials +; +; The 'username' and 'password' keywords specify the user credentials that +; Asterisk should use when connecting to the database. +; +; Accepted value: Any valid username and password + +;username=mangUsr +;password= + +; Language +; +; The 'language' keyword changes the language which are used for error and +; information messages returned by SQL Server. Each database and user has their +; own default value, and this default can be overriden here. +; +; Accepted value: Any language installed on the target SQL Server. +; Default value: us_english + +;language=us_english + +; Character Set +; +; The 'charset' setting is used to change the character set used when connecting +; to the database server. Each database and database user has their own +; character set setting, and this default can be overriden here. +; +; Accepted value: Any valid character set available on the target SQL server. +; Default value: iso_1 + +;charset=BIG5 + +; High Resolution Times +; +; The 'hrtime' setting is used to store high resolution (sub second) times for +; billsec and duration fields. +; +; Accepted value: true or false +; Default value: false + +;hrtime=false + diff --git a/configs/samples/cel.conf.sample b/configs/samples/cel.conf.sample new file mode 100644 index 000000000..d92e2745d --- /dev/null +++ b/configs/samples/cel.conf.sample @@ -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 +; diff --git a/configs/samples/cel_custom.conf.sample b/configs/samples/cel_custom.conf.sample new file mode 100644 index 000000000..126248aca --- /dev/null +++ b/configs/samples/cel_custom.conf.sample @@ -0,0 +1,35 @@ +; +; Asterisk Channel Event Logging (CEL) - Custom CSV Backend +; + +; This is the configuration file for the customizable CSV backend for CEL +; logging. +; +; In order to create custom CSV logs for CEL, uncomment the template below +; (Master.csv) and start Asterisk. Once CEL events are generated, a file will +; appear in the following location: +; +; /var/log/asterisk/cel-custom/Master.csv +; +; (Note that /var/log/asterisk is the default and may differ on your system) +; +; You can also create more than one template if desired. All logs will appear +; in the cel-custom directory under your Asterisk logs directory. +; + +; +; Within a mapping, use the CALLERID() and CHANNEL() functions to retrieve +; details from the CEL event. There are also a few variables created by this +; module that can be used in a mapping: +; +; eventtype - The name of the CEL event. +; eventtime - The timestamp of the CEL event. +; eventenum - Like eventtype but is "USER_DEFINED" for a user defined event. +; userdeftype - User defined event type name from CELGenUserEvent(). +; eventextra - Extra data included with this CEL event, typically along with +; an event of type USER_DEFINED from CELGenUserEvent(). +; BRIDGEPEER - Bridged peer channel name at the time of the CEL event. +; CHANNEL(peer) could also be used. +; +[mappings] +;Master.csv => ${CSV_QUOTE(${eventtype})},${CSV_QUOTE(${eventtime})},${CSV_QUOTE(${CALLERID(name)})},${CSV_QUOTE(${CALLERID(num)})},${CSV_QUOTE(${CALLERID(ANI)})},${CSV_QUOTE(${CALLERID(RDNIS)})},${CSV_QUOTE(${CALLERID(DNID)})},${CSV_QUOTE(${CHANNEL(exten)})},${CSV_QUOTE(${CHANNEL(context)})},${CSV_QUOTE(${CHANNEL(channame)})},${CSV_QUOTE(${CHANNEL(appname)})},${CSV_QUOTE(${CHANNEL(appdata)})},${CSV_QUOTE(${CHANNEL(amaflags)})},${CSV_QUOTE(${CHANNEL(accountcode)})},${CSV_QUOTE(${CHANNEL(uniqueid)})},${CSV_QUOTE(${CHANNEL(linkedid)})},${CSV_QUOTE(${BRIDGEPEER})},${CSV_QUOTE(${CHANNEL(userfield)})},${CSV_QUOTE(${userdeftype})},${CSV_QUOTE(${eventextra})} diff --git a/configs/samples/cel_odbc.conf.sample b/configs/samples/cel_odbc.conf.sample new file mode 100644 index 000000000..0c0b83fda --- /dev/null +++ b/configs/samples/cel_odbc.conf.sample @@ -0,0 +1,108 @@ +; +; Asterisk Channel Event Logging (CEL) - Adaptive ODBC Backend +; + +; General module options category. +[general] +; Use 'show_user_defined' to put "USER_DEFINED" in the eventtype field, +; instead of (by default) just putting the user defined event name there. +; +;show_user_defined=yes + +; This configuration defines the connections and tables for which CEL records +; may be populated. Each context specifies a different CEL table to be used. +; +; The columns in the tables should match up word-for-word (case-insensitive) to +; the CEL variables set in the dialplan. The natural advantage to this system +; is that beyond setting up the configuration file to tell you what tables to +; look at, there isn't anything more to do beyond creating the columns for the +; fields that you want, and populating the corresponding CEL variables in the +; dialplan. +; +; Please note that after adding columns to the database, it is necessary to +; reload this module to get the new column names and types read. +; +; Warning: if you specify two contexts with exactly the same connection and +; table names, you will get duplicate records in that table. So be careful. +; +; CEL FIELDS: +; eventtype +; CHANNEL_START = 1 +; CHANNEL_END = 2 +; HANGUP = 3 +; ANSWER = 4 +; APP_START = 5 +; APP_END = 6 +; BRIDGE_START = 7 +; BRIDGE_END = 8 +; CONF_START = 9 +; CONF_END = 10 +; PARK_START = 11 +; PARK_END = 12 +; BLINDTRANSFER = 13 +; ATTENDEDTRANSFER = 14 +; TRANSFER = 15 +; HOOKFLASH = 16 +; 3WAY_START = 17 +; 3WAY_END = 18 +; CONF_ENTER = 19 +; CONF_EXIT = 20 +; USER_DEFINED = 21 +; LINKEDID_END = 22 +; BRIDGE_UPDATE = 23 +; PICKUP = 24 +; FORWARD = 25 +; eventtime (timeval, includes microseconds) +; userdeftype (set only if eventtype == USER_DEFINED) +; cid_name +; cid_num +; cid_ani +; cid_rdnis +; cid_dnid +; exten +; context +; channame +; appname +; appdata +; accountcode +; peeraccount +; uniqueid +; linkedid +; amaflags (an int) +; userfield +; peer +; extra + +; The point of this module is to allow you log whatever you like in terms of the +; CEL variables. Do you want to log uniqueid? Then simply ensure that your +; table has that column. If you don't want the column, ensure that it does not +; exist in the table structure. If you'd like to call uniqueid something else +; in your table, simply provide an alias in this file that maps the standard CEL +; field name (uniqueid) to whatever column name you like. + +;[first] +;connection=mysql1 +;table=cel + +;[second] +;connection=mysql1 +;table=extracel + +;[third] +;connection=sqlserver +;table=AsteriskCEL +;usegmtime=yes ; defaults to no +;allowleapsecond=no ; allow leap second in SQL column for eventtime, default yes. +;alias src => source +;alias channel => source_channel +;alias dst => dest +;alias dstchannel => dest_channel + +; Any filter specified MUST match exactly or the event will be discarded +;filter accountcode => somename +;filter src => 123 + +; Additionally, we now support setting static values per column. Reason +; for this is to allow different sections to specify different values for +; a certain named column, presumably separated by filters. +;static "Some Special Value" => identifier_code diff --git a/configs/samples/cel_pgsql.conf.sample b/configs/samples/cel_pgsql.conf.sample new file mode 100644 index 000000000..2298b2ddc --- /dev/null +++ b/configs/samples/cel_pgsql.conf.sample @@ -0,0 +1,68 @@ +; +; Asterisk Channel Event Logging (CEL) - PostgreSQL Backend +; + +; Sample Asterisk config file for CEL logging to PostgreSQL +; +; CEL field names: +; +; eventtype +; CHANNEL_START = 1 +; CHANNEL_END = 2 +; HANGUP = 3 +; ANSWER = 4 +; APP_START = 5 +; APP_END = 6 +; BRIDGE_START = 7 +; BRIDGE_END = 8 +; CONF_START = 9 +; CONF_END = 10 +; PARK_START = 11 +; PARK_END = 12 +; BLINDTRANSFER = 13 +; ATTENDEDTRANSFER = 14 +; TRANSFER = 15 +; HOOKFLASH = 16 +; 3WAY_START = 17 +; 3WAY_END = 18 +; CONF_ENTER = 19 +; CONF_EXIT = 20 +; USER_DEFINED = 21 +; LINKEDID_END = 22 +; BRIDGE_UPDATE = 23 +; PICKUP = 24 +; FORWARD = 25 +; eventtime (timeval, includes microseconds) +; userdeftype (set only if eventtype == USER_DEFINED) +; cid_name +; cid_num +; cid_ani +; cid_rdnis +; cid_dnid +; exten +; context +; channame +; appname +; appdata +; accountcode +; peeraccount +; uniqueid +; linkedid +; amaflags (an int) +; userfield +; peer +; extra + +[global] +; Use 'show_user_defined' to put "USER_DEFINED" in the eventtype field, +; instead of (by default) just putting the user defined event name there. +; +;show_user_defined=yes + +;hostname=localhost +;port=5432 +;dbname=asterisk +;password=password +;user=postgres +;table=cel ;SQL table where CEL's will be inserted +;appname=asterisk ; Postgres application_name support (optional). Whitespace not allowed.
\ No newline at end of file diff --git a/configs/samples/cel_sqlite3_custom.conf.sample b/configs/samples/cel_sqlite3_custom.conf.sample new file mode 100644 index 000000000..2d9a24fc7 --- /dev/null +++ b/configs/samples/cel_sqlite3_custom.conf.sample @@ -0,0 +1,24 @@ +; +; Asterisk Channel Event Logging (CEL) - SQLite 3 Backend +; + +; +; Mappings for sqlite3 config file +; +; Within a mapping, use the CALLERID() and CHANNEL() functions to retrieve +; details from the CEL event. There are also a few variables created by this +; module that can be used in a mapping: +; +; eventtype - The name of the CEL event. +; eventtime - The timestamp of the CEL event. +; eventenum - Like eventtype but is "USER_DEFINED" for a user defined event. +; userdeftype - User defined event type name from CELGenUserEvent(). +; eventextra - Extra data included with this CEL event, typically along with +; an event of type USER_DEFINED from CELGenUserEvent(). +; BRIDGEPEER - Bridged peer channel name at the time of the CEL event. +; CHANNEL(peer) could also be used. +; +;[master] ; currently, only file "master.db" is supported, with only one table at a time. +;table => cel +;columns => eventtype, eventtime, cidname, cidnum, cidani, cidrdnis, ciddnid, context, exten, channame, appname, appdata, amaflags, accountcode, uniqueid, userfield, peer, userdeftype, eventextra +;values => '${eventtype}','${eventtime}','${CALLERID(name)}','${CALLERID(num)}','${CALLERID(ANI)}','${CALLERID(RDNIS)}','${CALLERID(DNID)}','${CHANNEL(context)}','${CHANNEL(exten)}','${CHANNEL(channame)}','${CHANNEL(appname)}','${CHANNEL(appdata)}','${CHANNEL(amaflags)}','${CHANNEL(accountcode)}','${CHANNEL(uniqueid)}','${CHANNEL(userfield)}','${BRIDGEPEER}','${userdeftype}','${eventextra}' diff --git a/configs/samples/cel_tds.conf.sample b/configs/samples/cel_tds.conf.sample new file mode 100644 index 000000000..399093b47 --- /dev/null +++ b/configs/samples/cel_tds.conf.sample @@ -0,0 +1,69 @@ +; +; Asterisk Channel Event Logging (CEL) - FreeTDS Backend +; + +;[global] + +; Connection +; +; Use the 'connection' keyword to specify one of the instance names from your +; 'freetds.conf' file. Note that 'freetds.conf' is not an Asterisk +; configuration file, but one specific to the FreeTDS library. See the FreeTDS +; documentation on 'freetds.conf' for more information: +; +; http://www.freetds.org/userguide/freetdsconf.htm +; +; Accepted values: One of the connections specified in freetds.conf + +;connection=ConnectionFromFreeTDSConf + +; Database Name +; +; The 'dbname' keyword specifies the database name to use when logging CEL +; records. +; +; Accepted values: Any valid database name + +;dbname=MalicoHN + +; Database Table Name +; +; The 'table' keyword identifies which database table is used to log CEL +; records. +; +; Accepted value: Any valid table name +; Default value: If not specified, a table named 'cel' is assumed + +;table=cel + +; Credentials +; +; The 'username' and 'password' keywords specify the user credentials that +; Asterisk should use when connecting to the database. +; +; Accepted value: Any valid username and password + +;username=mangUsr +;password= + +; Language +; +; The 'language' keyword changes the language which are used for error and +; information messages returned by SQL Server. Each database and user has their +; own default value, and this default can be overriden here. +; +; Accepted value: Any language installed on the target SQL Server. +; Default value: Server default + +;language=us_english + +; Character Set +; +; The 'charset' setting is used to change the character set used when connecting +; to the database server. Each database and database user has their own +; character set setting, and this default can be overriden here. +; +; Accepted value: Any valid character set available on the target server. +; Default value: Server setting + +;charset=BIG5 diff --git a/configs/samples/chan_dahdi.conf.sample b/configs/samples/chan_dahdi.conf.sample new file mode 100644 index 000000000..13691fcdf --- /dev/null +++ b/configs/samples/chan_dahdi.conf.sample @@ -0,0 +1,1695 @@ +; +; DAHDI Telephony Configuration file +; +; You need to restart Asterisk to re-configure the DAHDI channel +; CLI> module reload chan_dahdi.so +; will reload the configuration file, but not all configuration options +; are re-configured during a reload (signalling, as well as PRI and +; SS7-related settings cannot be changed on a reload). +; +; This file documents many configuration variables. Normally unless you know +; what a variable means or that it should be changed, there's no reason to +; un-comment those lines. +; +; Examples below that are commented out (those lines that begin with a ';' but +; no space afterwards) typically show a value that is not the default value, +; but would make sense under certain circumstances. The default values are +; usually sane. Thus you should typically not touch them unless you know what +; they mean or you know you should change them. + +[trunkgroups] +; +; Trunk groups are used for NFAS connections. +; +; Group: Defines a trunk group. +; trunkgroup => <trunkgroup>,<dchannel>[,<backup1>...] +; +; trunkgroup is the numerical trunk group to create +; dchannel is the DAHDI channel which will have the +; d-channel for the trunk. +; backup1 is an optional list of backup d-channels. +; +;trunkgroup => 1,24,48 +;trunkgroup => 1,24 +; +; Spanmap: Associates a span with a trunk group +; spanmap => <dahdispan>,<trunkgroup>[,<logicalspan>] +; +; dahdispan is the DAHDI span number to associate +; trunkgroup is the trunkgroup (specified above) for the mapping +; logicalspan is the logical span number within the trunk group to use. +; if unspecified, no logical span number is used. +; +;spanmap => 1,1,1 +;spanmap => 2,1,2 +;spanmap => 3,1,3 +;spanmap => 4,1,4 + +[channels] +; +; Default language +; +;language=en +; +; Context for incoming calls. Defaults to 'default' +; +context=public +; +; Switchtype: Only used for PRI. +; +; national: National ISDN 2 (default) +; dms100: Nortel DMS100 +; 4ess: AT&T 4ESS +; 5ess: Lucent 5ESS +; euroisdn: EuroISDN (common in Europe) +; ni1: Old National ISDN 1 +; qsig: Q.SIG +; +;switchtype=euroisdn +; +; MSNs for ISDN spans. Asterisk will listen for the listed numbers on +; incoming calls and ignore any calls not listed. +; Here you can give a comma separated list of numbers or dialplan extension +; patterns. An empty list disables MSN matching to allow any incoming call. +; Only set on PTMP CPE side of ISDN span if needed. +; The default is an empty list. +;msn= +; +; Some switches (AT&T especially) require network specific facility IE. +; Supported values are currently 'none', 'sdn', 'megacom', 'tollfreemegacom', 'accunet' +; +; nsf cannot be changed on a reload. +; +;nsf=none +; +;service_message_support=yes +; Enable service message support for channel. Must be set after switchtype. +; +; Dialing options for ISDN (i.e., Dial(DAHDI/g1/exten/options)): +; R Reverse Charge Indication +; Indicate to the called party that the call will be reverse charged. +; K(n) Keypad digits n +; Send out the specified digits as keypad digits. +; +; PRI Dialplan: The ISDN-level Type Of Number (TON) or numbering plan, used for +; the dialed number. Leaving this as 'unknown' (the default) works for most +; cases. In some very unusual circumstances, you may need to set this to +; 'dynamic' or 'redundant'. +; +; unknown: Unknown +; private: Private ISDN +; local: Local ISDN +; national: National ISDN +; international: International ISDN +; dynamic: Dynamically selects the appropriate dialplan using the +; prefix settings. +; redundant: Same as dynamic, except that the underlying number is not +; changed (not common) +; +; pridialplan cannot be changed on reload. +;pridialplan=unknown +; +; PRI Local Dialplan: Only RARELY used for PRI (sets the calling number's +; numbering plan). In North America, the typical use is sending the 10 digit +; callerID number and setting the prilocaldialplan to 'national' (the default). +; Only VERY rarely will you need to change this. +; +; unknown: Unknown +; private: Private ISDN +; local: Local ISDN +; national: National ISDN +; international: International ISDN +; from_channel: Use the CALLERID(ton) value from the channel. +; dynamic: Dynamically selects the appropriate dialplan using the +; prefix settings. +; redundant: Same as dynamic, except that the underlying number is not +; changed (not common) +; +; prilocaldialplan cannot be changed on reload. +;prilocaldialplan=national +; +; PRI Connected Line Dialplan: Sets the connected party number's numbering plan. +; +; unknown: Unknown +; private: Private ISDN +; local: Local ISDN +; national: National ISDN +; international: International ISDN +; from_channel: Use the CONNECTEDLINE(ton) value from the channel. +; dynamic: Dynamically selects the appropriate dialplan using the +; prefix settings. +; redundant: Same as dynamic, except that the underlying number is not +; changed (not common) +; +; pricpndialplan cannot be changed on reload. +;pricpndialplan=from_channel +; +; pridialplan may be also set at dialtime, by prefixing the dialed number with +; one of the following letters: +; U - Unknown +; I - International +; N - National +; L - Local (Net Specific) +; S - Subscriber +; V - Abbreviated +; R - Reserved (should probably never be used but is included for completeness) +; +; Additionally, you may also set the following NPI bits (also by prefixing the +; dialed string with one of the following letters): +; u - Unknown +; e - E.163/E.164 (ISDN/telephony) +; x - X.121 (Data) +; f - F.69 (Telex) +; n - National +; p - Private +; r - Reserved (should probably never be used but is included for completeness) +; +; You may also set the prilocaldialplan in the same way, but by prefixing the +; Caller*ID Number rather than the dialed number. + +; Please note that telcos which require this kind of additional manipulation +; of the TON/NPI are *rare*. Most telco PRIs will work fine simply by +; setting pridialplan to unknown or dynamic. +; +; +; PRI caller ID prefixes based on the given TON/NPI (dialplan) +; This is especially needed for EuroISDN E1-PRIs +; +; None of the prefix settings can be changed on reload. +; +; sample 1 for Germany +;internationalprefix = 00 +;nationalprefix = 0 +;localprefix = 0711 +;privateprefix = 07115678 +;unknownprefix = +; +; sample 2 for Germany +;internationalprefix = + +;nationalprefix = +49 +;localprefix = +49711 +;privateprefix = +497115678 +;unknownprefix = +; +; PRI resetinterval: sets the time in seconds between restart of unused +; B channels; defaults to 'never'. +; +;resetinterval = 3600 +; +; Assume inband audio may be present when a SETUP ACK message is received. +; Q.931 Section 5.1.3 says that in scenarios with overlap dialing, when a +; dialtone is sent from the network side, progress indicator 8 "Inband info +; now available" MAY be sent to the CPE if no digits were received with +; the SETUP. It is thus implied that the ie is mandatory if digits came +; with the SETUP and dialtone is needed. +; This option should be enabled, when the network sends dialtone and you +; want to hear it, but the network doesn't send the progress indicator when +; needed. +; +; NOTE: For Q.SIG setups this option should be enabled when outgoing overlap +; dialing is also enabled because Q.SIG does not send the progress indicator +; with the SETUP ACK. +; Default no. +; +;inband_on_setup_ack=yes +; +; Assume inband audio may be present when a PROCEEDING message is received. +; Q.931 Section 5.1.2 says the network cannot assume that the CPE side has +; attached to the B channel at this time without explicitly sending the +; progress indicator ie informing the CPE side to attach to the B channel +; for audio. However, some non-compliant ISDN switches send a PROCEEDING +; without the progress indicator ie indicating inband audio is available and +; assume that the CPE device has connected the media path for listening to +; ringback and other messages. +; Default no. +; +;inband_on_proceeding=yes +; +; Overlap dialing mode (sending overlap digits) +; Cannot be changed on a reload. +; +; incoming: incoming direction only +; outgoing: outgoing direction only +; no: neither direction +; yes or both: both directions +; +;overlapdial=yes + +; Send/receive ISDN display IE options. The display options are a comma separated +; list of the following options: +; +; block: Do not pass display text data. +; Q.SIG: Default for send/receive. +; ETSI CPE: Default for send. +; name_initial: Use display text in SETUP/CONNECT messages as the party name. +; Default for all other modes. +; name_update: Use display text in other messages (NOTIFY/FACILITY) for COLP name +; update. +; name: Combined name_initial and name_update options. +; text: Pass any unused display text data as an arbitrary display message +; during a call. Sent text goes out in an INFORMATION message. +; +; * Default is an empty string for legacy behavior. +; * The name options are not recommended for Q.SIG since Q.SIG already +; supports names. +; * The send block is the only recommended setting for CPE mode since Q.931 uses +; the display IE only in the network to user direction. +; +; display_send and display_receive cannot be changed on reload. +; +;display_send= +;display_receive= + +; Allow sending an ISDN Malicious Caller ID (MCID) request on this span. +; Default disabled +; +;mcid_send=yes + +; Send ISDN date/time IE in CONNECT message option. Only valid on NT spans. +; +; no: Do not send date/time IE in CONNECT message. +; date: Send date only. +; date_hh Send date and hour. +; date_hhmm Send date, hour, and minute. +; date_hhmmss Send date, hour, minute, and second. +; +; Default is an empty string which lets libpri pick the default +; date/time IE send policy. +; +;datetime_send= + +; Send ISDN conected line information. +; +; block: Do not send any connected line information. +; connect: Send connected line information on initial connect. +; update: Same as connect but also send any updates during a call. +; Updates happen if the call is transferred. (Default) +; +;colp_send=update + +; Allow inband audio (progress) when a call is DISCONNECTed by the far end of a PRI +; +;inbanddisconnect=yes +; +; Allow a held call to be transferred to the active call on disconnect. +; This is useful on BRI PTMP NT lines where an ISDN phone can simulate the +; transfer feature of an analog phone. +; The default is no. +;hold_disconnect_transfer=yes + +; BRI PTMP layer 1 presence. +; You should normally not need to set this option. +; You may need to set this option if your telco brings layer 1 down when +; the line is idle. +; required: Layer 1 presence required for outgoing calls. (default) +; ignore: Ignore alarms from DAHDI about this span. +; (Layer 1 and 2 will be brought back up for an outgoing call.) +; NOTE: You will not be able to detect physical line problems +; until an outgoing call is attempted and fails. +; +;layer1_presence=ignore + +; BRI PTMP layer 2 persistence. +; You should normally not need to set this option. +; You may need to set this option if your telco brings layer 1 down when +; the line is idle. +; <blank>: Use libpri default. +; keep_up: Bring layer 2 back up if peer takes it down. +; leave_down: Leave layer 2 down if peer takes it down. (Libpri default) +; (Layer 2 will be brought back up for an outgoing call.) +; +;layer2_persistence=leave_down + +; PRI Out of band indications. +; Enable this to report Busy and Congestion on a PRI using out-of-band +; notification. Inband indication, as used by Asterisk doesn't seem to work +; with all telcos. +; +; outofband: Signal Busy/Congestion out of band with RELEASE/DISCONNECT +; inband: Signal Busy/Congestion using in-band tones (default) +; +; priindication cannot be changed on a reload. +; +;priindication = outofband +; +; If you need to override the existing channels selection routine and force all +; PRI channels to be marked as exclusively selected, set this to yes. +; +; priexclusive cannot be changed on a reload. +; +;priexclusive = yes +; +; +; If you need to use the logical channel mapping with your Q.SIG PRI instead +; of the physical mapping you must use the qsigchannelmapping option. +; +; logical: Use the logical channel mapping +; physical: Use physical channel mapping (default) +; +;qsigchannelmapping=logical +; +; If you wish to ignore remote hold indications (and use MOH that is supplied over +; the B channel) enable this option. +; +;discardremoteholdretrieval=yes +; +; ISDN Timers +; All of the ISDN timers and counters that are used are configurable. Specify +; the timer name, and its value (in ms for timers). +; K: Layer 2 max number of outstanding unacknowledged I frames (default 7) +; N200: Layer 2 max number of retransmissions of a frame (default 3) +; T200: Layer 2 max time before retransmission of a frame (default 1000 ms) +; T203: Layer 2 max time without frames being exchanged (default 10000 ms) +; T305: Wait for DISCONNECT acknowledge (default 30000 ms) +; T308: Wait for RELEASE acknowledge (default 4000 ms) +; T309: Maintain active calls on Layer 2 disconnection (default 6000 ms) +; EuroISDN: 6000 to 12000 ms, according to (N200 + 1) x T200 + 2s +; May vary in other ISDN standards (Q.931 1993 : 90000 ms) +; T313: Wait for CONNECT acknowledge, CPE side only (default 3000 ms) +; +; T-RESPONSE: Maximum time to wait for a typical APDU response. (default 4000 ms) +; This is an implementation timer when the standard does not specify one. +; T-ACTIVATE: Request supervision timeout. (default 10000 ms) +; T-RETENTION: Maximum time to wait for user A to activate call-completion. (default 30000 ms) +; Used by ETSI PTP, ETSI PTMP, and Q.SIG as the cc_offer_timer. +; T-CCBS1: T-STATUS timer equivalent for CC user A status. (default 4000 ms) +; T-CCBS2: Maximum time the CCBS service will be active (default 45 min in ms) +; T-CCBS3: Maximum time to wait for user A to respond to user B availability. (default 20000 ms) +; T-CCBS5: Network B CCBS supervision timeout. (default 60 min in ms) +; T-CCBS6: Network A CCBS supervision timeout. (default 60 min in ms) +; T-CCNR2: Maximum time the CCNR service will be active (default 180 min in ms) +; T-CCNR5: Network B CCNR supervision timeout. (default 195 min in ms) +; T-CCNR6: Network A CCNR supervision timeout. (default 195 min in ms) +; CC-T1: Q.SIG CC request supervision timeout. (default 30000 ms) +; CCBS-T2: Q.SIG CCBS supervision timeout. (default 60 min in ms) +; CCNR-T2: Q.SIG CCNR supervision timeout. (default 195 min in ms) +; CC-T3: Q.SIG CC Maximum time to wait for user A to respond to user B availability. (default 30000 ms) +; +;pritimer => t200,1000 +;pritimer => t313,4000 +; +; CC PTMP recall mode: +; specific - Only the CC original party A can participate in the CC callback +; global - Other compatible endpoints on the PTMP line can be party A in the CC callback +; +; cc_ptmp_recall_mode cannot be changed on a reload. +; +;cc_ptmp_recall_mode = specific +; +; CC Q.SIG Party A (requester) retain signaling link option +; retain Require that the signaling link be retained. +; release Request that the signaling link be released. +; do_not_care The responder is free to choose if the signaling link will be retained. +; +;cc_qsig_signaling_link_req = retain +; +; CC Q.SIG Party B (responder) retain signaling link option +; retain Prefer that the signaling link be retained. +; release Prefer that the signaling link be released. +; +;cc_qsig_signaling_link_rsp = retain +; +; See ccss.conf.sample for more options. The timers described by ccss.conf.sample +; are not used by ISDN for the native protocol since they are defined by the +; standards and set by pritimer above. +; +; To enable transmission of facility-based ISDN supplementary services (such +; as caller name from CPE over facility), enable this option. +; Cannot be changed on a reload. +; +;facilityenable = yes +; + +; This option enables Advice of Charge pass-through between the ISDN PRI and +; Asterisk. This option can be set to any combination of 's', 'd', and 'e' which +; represent the different variants of Advice of Charge, AOC-S, AOC-D, and AOC-E. +; Advice of Charge pass-through is currently only supported for ETSI. Since most +; AOC messages are sent on facility messages, the 'facilityenable' option must +; also be enabled to fully support AOC pass-through. +; +;aoc_enable=s,d,e +; +; When this option is enabled, a hangup initiated by the ISDN PRI side of the +; asterisk channel will result in the channel delaying its hangup in an +; attempt to receive the final AOC-E message from its bridge. The delay +; period is configured as one half the T305 timer length. If the channel +; is not bridged the hangup will occur immediatly without delay. +; +;aoce_delayhangup=yes + +; pritimer cannot be changed on a reload. +; +; Signalling method. The default is "auto". Valid values: +; auto: Use the current value from DAHDI. +; em: E & M +; em_e1: E & M E1 +; em_w: E & M Wink +; featd: Feature Group D (The fake, Adtran style, DTMF) +; featdmf: Feature Group D (The real thing, MF (domestic, US)) +; featdmf_ta: Feature Group D (The real thing, MF (domestic, US)) through +; a Tandem Access point +; featb: Feature Group B (MF (domestic, US)) +; fgccama: Feature Group C-CAMA (DP DNIS, MF ANI) +; fgccamamf: Feature Group C-CAMA MF (MF DNIS, MF ANI) +; fxs_ls: FXS (Loop Start) +; fxs_gs: FXS (Ground Start) +; fxs_ks: FXS (Kewl Start) +; fxo_ls: FXO (Loop Start) +; fxo_gs: FXO (Ground Start) +; fxo_ks: FXO (Kewl Start) +; pri_cpe: PRI signalling, CPE side +; pri_net: PRI signalling, Network side +; bri_cpe: BRI PTP signalling, CPE side +; bri_net: BRI PTP signalling, Network side +; bri_cpe_ptmp: BRI PTMP signalling, CPE side +; bri_net_ptmp: BRI PTMP signalling, Network side +; sf: SF (Inband Tone) Signalling +; sf_w: SF Wink +; sf_featd: SF Feature Group D (The fake, Adtran style, DTMF) +; sf_featdmf: SF Feature Group D (The real thing, MF (domestic, US)) +; sf_featb: SF Feature Group B (MF (domestic, US)) +; e911: E911 (MF) style signalling +; ss7: Signalling System 7 +; mfcr2: MFC/R2 Signalling. To specify the country variant see 'mfcr2_variant' +; +; The following are used for Radio interfaces: +; fxs_rx: Receive audio/COR on an FXS kewlstart interface (FXO at the +; channel bank) +; fxs_tx: Transmit audio/PTT on an FXS loopstart interface (FXO at the +; channel bank) +; fxo_rx: Receive audio/COR on an FXO loopstart interface (FXS at the +; channel bank) +; fxo_tx: Transmit audio/PTT on an FXO groundstart interface (FXS at +; the channel bank) +; em_rx: Receive audio/COR on an E&M interface (1-way) +; em_tx: Transmit audio/PTT on an E&M interface (1-way) +; em_txrx: Receive audio/COR AND Transmit audio/PTT on an E&M interface +; (2-way) +; em_rxtx: Same as em_txrx (for our dyslexic friends) +; sf_rx: Receive audio/COR on an SF interface (1-way) +; sf_tx: Transmit audio/PTT on an SF interface (1-way) +; sf_txrx: Receive audio/COR AND Transmit audio/PTT on an SF interface +; (2-way) +; sf_rxtx: Same as sf_txrx (for our dyslexic friends) +; ss7: Signalling System 7 +; +; signalling of a channel can not be changed on a reload. +; +;signalling=fxo_ls +; +; If you have an outbound signalling format that is different from format +; specified above (but compatible), you can specify outbound signalling format, +; (see below). The 'signalling' format specified will be the inbound signalling +; format. If you only specify 'signalling', then it will be the format for +; both inbound and outbound. +; +; outsignalling can only be one of: +; em, em_e1, em_w, sf, sf_w, sf_featd, sf_featdmf, sf_featb, featd, +; featdmf, featdmf_ta, e911, fgccama, fgccamamf +; +; outsignalling cannot be changed on a reload. +; +;signalling=featdmf +; +;outsignalling=featb +; +; For Feature Group D Tandem access, to set the default CIC and OZZ use these +; parameters (Will not be updated on reload): +; +;defaultozz=0000 +;defaultcic=303 +; +; A variety of timing parameters can be specified as well +; The default values for those are "-1", which is to use the +; compile-time defaults of the DAHDI kernel modules. The timing +; parameters, (with the standard default from DAHDI): +; +; prewink: Pre-wink time (default 50ms) +; preflash: Pre-flash time (default 50ms) +; wink: Wink time (default 150ms) +; flash: Flash time (default 750ms) +; start: Start time (default 1500ms) +; rxwink: Receiver wink time (default 300ms) +; rxflash: Receiver flashtime (default 1250ms) +; debounce: Debounce timing (default 600ms) +; +; None of them will update on a reload. +; +; How long generated tones (DTMF and MF) will be played on the channel +; (in milliseconds). +; +; This is a global, rather than a per-channel setting. It will not be +; updated on a reload. +; +;toneduration=100 +; +; Whether or not to do distinctive ring detection on FXO lines: +; +;usedistinctiveringdetection=yes +; +; enable dring detection after caller ID for those countries like Australia +; where the ring cadence is changed *after* the caller ID spill: +; +;distinctiveringaftercid=yes +; +; Whether or not to use caller ID: +; +usecallerid=yes +; +; Type of caller ID signalling in use +; bell = bell202 as used in US (default) +; v23 = v23 as used in the UK +; v23_jp = v23 as used in Japan +; dtmf = DTMF as used in Denmark, Sweden and Netherlands +; smdi = Use SMDI for caller ID. Requires SMDI to be enabled (usesmdi). +; +;cidsignalling=v23 +; +; What signals the start of caller ID +; ring = a ring signals the start (default) +; polarity = polarity reversal signals the start +; polarity_IN = polarity reversal signals the start, for India, +; for dtmf dialtone detection; using DTMF. +; (see https://wiki.asterisk.org/wiki/display/AST/Caller+ID+in+India) +; dtmf = causes monitor loop to look for dtmf energy on the +; incoming channel to initate cid acquisition +; +;cidstart=polarity +; +; When cidstart=dtmf, the energy level on the line used to trigger dtmf cid +; acquisition. This number is compared to the average over a packet of audio +; of the absolute values of 16 bit signed linear samples. The default is set +; to 256. The choice of 256 is arbitrary. The value you should select should +; be high enough to prevent false detections while low enough to insure that +; no dtmf spills are missed. +; +;dtmfcidlevel=256 +; +; Whether or not to hide outgoing caller ID (Override with *67 or *82) +; (If your dialplan doesn't catch it) +; +;hidecallerid=yes +; +; Enable if you need to hide just the name and not the number for legacy PBX use. +; Only applies to PRI channels. +;hidecalleridname=yes +; +; On UK analog lines, the caller hanging up determines the end of calls. So +; Asterisk hanging up the line may or may not end a call (DAHDI could just as +; easily be re-attaching to a prior incoming call that was not yet hung up). +; This option changes the hangup to wait for a dialtone on the line, before +; marking the line as once again available for use with outgoing calls. +; Specified in milliseconds, not set by default. +;waitfordialtone=1000 +; +; For analog lines, enables Asterisk to use dialtone detection per channel +; if an incoming call was hung up before it was answered. If dialtone is +; detected, the call is hung up. +; no: Disabled. (Default) +; yes: Look for dialtone for 10000 ms after answer. +; <number>: Look for dialtone for the specified number of ms after answer. +; always: Look for dialtone for the entire call. Dialtone may return +; if the far end hangs up first. +; +;dialtone_detect=no +; +; The following option enables receiving MWI on FXO lines. The default +; value is no. +; The mwimonitor can take the following values +; no - No mwimonitoring occurs. (default) +; yes - The same as specifying fsk +; fsk - the FXO line is monitored for MWI FSK spills +; fsk,rpas - the FXO line is monitored for MWI FSK spills preceded +; by a ring pulse alert signal. +; neon - The fxo line is monitored for the presence of NEON pulses +; indicating MWI. +; When detected, an internal Asterisk MWI event is generated so that any other +; part of Asterisk that cares about MWI state changes is notified, just as if +; the state change came from app_voicemail. +; For FSK MWI Spills, the energy level that must be seen before starting the +; MWI detection process can be set with 'mwilevel'. +; +;mwimonitor=no +;mwilevel=512 +; +; This option is used in conjunction with mwimonitor. This will get executed +; when incoming MWI state changes. The script is passed 2 arguments. The +; first is the corresponding configured mailbox, and the second is 1 or 0, +; indicating if there are messages waiting or not. +; Note: app_voicemail mailboxes are in the form of mailbox@context. +; +; /usr/local/bin/dahdinotify.sh 501@mailboxes 1 +; +;mwimonitornotify=/usr/local/bin/dahdinotify.sh +; +; The following keyword 'mwisendtype' enables various VMWI methods on FXS lines (if supported). +; The default is to send FSK only. +; The following options are available; +; 'rpas' Ring Pulse Alert Signal, alerts intelligent phones that a FSK message is about to be sent. +; 'lrev' Line reversed to indicate messages waiting. +; 'hvdc' 90Vdc OnHook DC voltage to indicate messages waiting. +; 'hvac' or 'neon' 90Vac OnHook AC voltage to light Neon bulb. +; 'nofsk' Disables FSK MWI spills from being sent out. +; It is feasible that multiple options can be enabled. +;mwisendtype=rpas,lrev +; +; Whether or not to enable call waiting on internal extensions +; With this set to 'yes', busy extensions will hear the call-waiting +; tone, and can use hook-flash to switch between callers. The Dial() +; app will not return the "BUSY" result for extensions. +; +callwaiting=yes +; +; Configure the number of outstanding call waiting calls for internal ISDN +; endpoints before bouncing the calls as busy. This option is equivalent to +; the callwaiting option for analog ports. +; A call waiting call is a SETUP message with no B channel selected. +; The default is zero to disable call waiting for ISDN endpoints. +;max_call_waiting_calls=0 +; +; Allow incoming ISDN call waiting calls. +; A call waiting call is a SETUP message with no B channel selected. +;allow_call_waiting_calls=no + +; Configure the ISDN span to indicate MWI for the list of mailboxes. +; You can give a comma separated list of up to 8 mailboxes per span. +; An empty list disables MWI. +; +; The default is an empty list. +;mwi_mailboxes=vm-mailbox{,vm-mailbox} +; vm-mailbox = Internal voicemail mailbox identifier. +; Note: app_voicemail mailboxes must be in the form of mailbox@context. +;mwi_mailboxes=501@mailboxes,502@mailboxes + +; Configure the ISDN mailbox number sent over the span for MWI mailboxes. +; The position of the number in the list corresponds to the position in +; mwi_mailboxes. If either position in mwi_mailboxes or mwi_vm_boxes is +; empty then that position is disabled. +; +; The default is an empty list. +;mwi_vm_boxes=mailbox_number{,mailbox_number} +;mwi_vm_boxes=501,502 + +; Configure the ISDN span voicemail controlling numbers for MWI mailboxes. +; What number to call for a user to retrieve voicemail messages. +; +; You can give a comma separated list of numbers. The position of the number +; corresponds to the position in mwi_mailboxes. If a position is empty then +; the last number is reused. +; +; For example: +; mwi_vm_numbers=700,,800,,900 +; is equivalent to: +; mwi_vm_numbers=700,700,800,800,900,900,900,900 +; +; The default is no number. +;mwi_vm_numbers= + +; Whether or not restrict outgoing caller ID (will be sent as ANI only, not +; available for the user) +; Mostly use with FXS ports +; Does nothing. Use hidecallerid instead. +; +;restrictcid=no +; +; Whether or not to use the caller ID presentation from the Asterisk channel +; for outgoing calls. +; See dialplan function CALLERID(pres) for more information. +; Only applies to PRI and SS7 channels. +; +usecallingpres=yes +; +; Some countries (UK) have ring tones with different ring tones (ring-ring), +; which means the caller ID needs to be set later on, and not just after +; the first ring, as per the default (1). +; +;sendcalleridafter = 2 +; +; +; Support caller ID on Call Waiting +; +callwaitingcallerid=yes +; +; Support three-way calling +; +threewaycalling=yes +; +; For FXS ports (either direct analog or over T1/E1): +; Support flash-hook call transfer (requires three way calling) +; Also enables call parking (overrides the 'canpark' parameter) +; +; For digital ports using ISDN PRI protocols: +; Support switch-side transfer (called 2BCT, RLT or other names) +; This setting must be enabled on both ports involved, and the +; 'facilityenable' setting must also be enabled to allow sending +; the transfer to the ISDN switch, since it sent in a FACILITY +; message. +; NOTE: This should be disabled for NT PTMP mode. Phones cannot +; have tromboned calls pushed down to them. +; +transfer=yes +; +; Allow call parking +; ('canpark=no' is overridden by 'transfer=yes') +; +canpark=yes + +; Sets the default parking lot for call parking. +; This is setable per channel. +; Parkinglots are configured in features.conf +; +;parkinglot=plaza + +; +; Support call forward variable +; +cancallforward=yes +; +; Whether or not to support Call Return (*69, if your dialplan doesn't +; catch this first) +; +callreturn=yes +; +; Stutter dialtone support: If voicemail is received in the mailbox then +; taking the phone off hook will cause a stutter dialtone instead of a +; normal one. +; +; Note: app_voicemail mailboxes must be in the form of mailbox@context. +; +;mailbox=1234@context +; +; Enable echo cancellation +; Use either "yes", "no", or a power of two from 32 to 256 if you wish to +; actually set the number of taps of cancellation. +; +; Note that when setting the number of taps, the number 256 does not translate +; to 256 ms of echo cancellation. echocancel=256 means 256 / 8 = 32 ms. +; +; Note that if any of your DAHDI cards have hardware echo cancellers, +; then this setting only turns them on and off; numeric settings will +; be treated as "yes". There are no special settings required for +; hardware echo cancellers; when present and enabled in their kernel +; modules, they take precedence over the software echo canceller compiled +; into DAHDI automatically. +; +; +echocancel=yes +; +; Some DAHDI echo cancellers (software and hardware) support adjustable +; parameters; these parameters can be supplied as additional options to +; the 'echocancel' setting. Note that Asterisk does not attempt to +; validate the parameters or their values, so if you supply an invalid +; parameter you will not know the specific reason it failed without +; checking the kernel message log for the error(s) put there by DAHDI. +; +;echocancel=128,param1=32,param2=0,param3=14 +; +; Generally, it is not necessary (and in fact undesirable) to echo cancel when +; the circuit path is entirely TDM. You may, however, change this behavior +; by enabling the echo canceller during pure TDM bridging below. +; +echocancelwhenbridged=yes +; +; In some cases, the echo canceller doesn't train quickly enough and there +; is echo at the beginning of the call. Enabling echo training will cause +; DAHDI to briefly mute the channel, send an impulse, and use the impulse +; response to pre-train the echo canceller so it can start out with a much +; closer idea of the actual echo. Value may be "yes", "no", or a number of +; milliseconds to delay before training (default = 400) +; +; WARNING: In some cases this option can make echo worse! If you are +; trying to debug an echo problem, it is worth checking to see if your echo +; is better with the option set to yes or no. Use whatever setting gives +; the best results. +; +; Note that these parameters do not apply to hardware echo cancellers. +; +;echotraining=yes +;echotraining=800 +; +; If you are having trouble with DTMF detection, you can relax the DTMF +; detection parameters. Relaxing them may make the DTMF detector more likely +; to have "talkoff" where DTMF is detected when it shouldn't be. +; +;relaxdtmf=yes +; +; Hardware gain settings increase/decrease the analog volume level on a channel. +; The values are in db (decibels) and can be adjusted in 0.1 dB increments. +; A positive number increases the volume level on a channel, and a negavive +; value decreases volume level. +; +; Hardware gain settings are only possible on hardware with analog ports +; because the gain is done on the analog side of the analog/digital conversion. +; +; When hardware gains are disabled, Asterisk will NOT touch the gain setting +; already configured in hardware. +; +; hwrxgain: Hardware receive gain for the channel (into Asterisk). +; Default: disabled +; hwtxgain: Hardware transmit gain for the channel (out of Asterisk). +; Default: disabled +; +;hwrxgain=disabled +;hwtxgain=disabled +;hwrxgain=2.0 +;hwtxgain=3.0 +; +; Software gain settings digitally increase/decrease the volume level on a channel. +; The values are in db (decibels). A positive number increases the volume +; level on a channel, and a negavive value decreases volume level. +; +; Software gains work on the digital side of the analog/digital conversion +; and thus can also work with T1/E1 cards. +; +; rxgain: Software receive gain for the channel (into Asterisk). Default: 0.0 +; txgain: Software transmit gain for the channel (out of Asterisk). +; Default: 0.0 +; +; cid_rxgain: Add this gain to rxgain when Asterisk expects to receive +; a Caller ID stream. +; Default: 5.0 . +; +;rxgain=2.0 +;txgain=3.0 +; +; Dynamic Range Compression: You can also enable dynamic range compression +; on a channel. This will digitally amplify quiet sounds while leaving louder +; sounds untouched. This is useful in situations where a linear gain setting +; would cause clipping. Acceptable values are in the range of 0.0 to around +; 6.0 with higher values causing more compression to be done. +; +; rxdrc: dynamic range compression for the rx channel. Default: 0.0 +; txdrc: dynamic range compression for the tx channel. Default: 0.0 +; +;rxdrc=1.0 +;txdrc=4.0 +; +; Logical groups can be assigned to allow outgoing roll-over. Groups range +; from 0 to 63, and multiple groups can be specified. By default the +; channel is not a member of any group. +; +; Note that an explicit empty value for 'group' is invalid, and will not +; override a previous non-empty one. The same applies to callgroup and +; pickupgroup as well. +; +group=1 +; +; Ring groups (a.k.a. call groups) and pickup groups. If a phone is ringing +; and it is a member of a group which is one of your pickup groups, then +; you can answer it by picking up and dialing *8#. For simple offices, just +; make these both the same. Groups range from 0 to 63. +; +callgroup=1 +pickupgroup=1 +; +; Named ring groups (a.k.a. named call groups) and named pickup groups. +; If a phone is ringing and it is a member of a group which is one of your +; named pickup groups, then you can answer it by picking up and dialing *8#. +; For simple offices, just make these both the same. +; The number of named groups is not limited. +; +;namedcallgroup=engineering,sales,netgroup,protgroup +;namedpickupgroup=sales + +; Channel variables to be set for all calls from this channel +;setvar=CHANNEL=42 +;setvar=ATTENDED_TRANSFER_COMPLETE_SOUND=beep ; This channel variable will + ; cause the given audio file to + ; be played upon completion of + ; an attended transfer to the + ; target of the transfer. + +; +; Specify whether the channel should be answered immediately or if the simple +; switch should provide dialtone, read digits, etc. +; Note: If immediate=yes the dialplan execution will always start at extension +; 's' priority 1 regardless of the dialed number! +; +;immediate=yes +; +; Specify whether flash-hook transfers to 'busy' channels should complete or +; return to the caller performing the transfer (default is yes). +; +;transfertobusy=no + +; Calls will have the party id user tag set to this string value. +; +;cid_tag= + +; With this set, you can automatically append the MSN of a party +; to the cid_tag. An '_' is used to separate the tag from the MSN. +; Applies to ISDN spans. +; Default is no. +; +; Table of what number is appended: +; outgoing incoming +; net dialed caller +; cpe caller dialed +; +;append_msn_to_cid_tag=no + +; caller ID can be set to "asreceived" or a specific number if you want to +; override it. Note that "asreceived" only applies to trunk interfaces. +; fullname sets just the +; +; fullname: sets just the name part. +; cid_number: sets just the number part: +; +;callerid = 123456 +; +;callerid = My Name <2564286000> +; Which can also be written as: +;cid_number = 2564286000 +;fullname = My Name +; +;callerid = asreceived +; +; should we use the caller ID from incoming call on DAHDI transfer? +; +;useincomingcalleridondahditransfer = yes +; +; Add a description for the channel which can be shown through the Asterisk +; console when executing the 'dahdi show channels' command is run. +; +;description=Phone located in lobby +; +; AMA flags affects the recording of Call Detail Records. If specified +; it may be 'default', 'omit', 'billing', or 'documentation'. +; +;amaflags=default +; +; Channels may be associated with an account code to ease +; billing +; +;accountcode=lss0101 +; +; ADSI (Analog Display Services Interface) can be enabled on a per-channel +; basis if you have (or may have) ADSI compatible CPE equipment +; +;adsi=yes +; +; SMDI (Simplified Message Desk Interface) can be enabled on a per-channel +; basis if you would like that channel to behave like an SMDI message desk. +; The SMDI port specified should have already been defined in smdi.conf. The +; default port is /dev/ttyS0. +; +;usesmdi=yes +;smdiport=/dev/ttyS0 +; +; On trunk interfaces (FXS) and E&M interfaces (E&M, Wink, Feature Group D +; etc, it can be useful to perform busy detection either in an effort to +; detect hangup or for detecting busies. This enables listening for +; the beep-beep busy pattern. +; +;busydetect=yes +; +; If busydetect is enabled, it is also possible to specify how many busy tones +; to wait for before hanging up. The default is 3, but it might be +; safer to set to 6 or even 8. Mind that the higher the number, the more +; time that will be needed to hangup a channel, but lowers the probability +; that you will get random hangups. +; +;busycount=6 +; +; If busydetect is enabled, it is also possible to specify the cadence of your +; busy signal. In many countries, it is 500msec on, 500msec off. Without +; busypattern specified, we'll accept any regular sound-silence pattern that +; repeats <busycount> times as a busy signal. If you specify busypattern, +; then we'll further check the length of the sound (tone) and silence, which +; will further reduce the chance of a false positive. +; +;busypattern=500,500 +; +; NOTE: In make menuselect, you'll find further options to tweak the busy +; detector. If your country has a busy tone with the same length tone and +; silence (as many countries do), consider enabling the +; BUSYDETECT_COMPARE_TONE_AND_SILENCE option. +; +; To further detect which hangup tone your telco provider is sending, it is +; useful to use the dahdi_monitor utility to record the audio that main/dsp.c +; is receiving after the caller hangs up. +; +; For FXS (FXO signalled) ports +; switch the line polarity to signal the connected PBX that an outgoing +; call was answered by the remote party. +; For FXO (FXS signalled) ports +; watch for a polarity reversal to mark when a outgoing call is +; answered by the remote party. +; +;answeronpolarityswitch=yes +; +; For FXS (FXO signalled) ports +; switch the line polarity to signal the connected PBX that the current +; call was "hung up" by the remote party +; For FXO (FXS signalled) ports +; In some countries, a polarity reversal is used to signal the disconnect of a +; phone line. If the hanguponpolarityswitch option is selected, the call will +; be considered "hung up" on a polarity reversal. +; +;hanguponpolarityswitch=yes +; +; polarityonanswerdelay: minimal time period (ms) between the answer +; polarity switch and hangup polarity switch. +; (default: 600ms) +; +; On trunk interfaces (FXS) it can be useful to attempt to follow the progress +; of a call through RINGING, BUSY, and ANSWERING. If turned on, call +; progress attempts to determine answer, busy, and ringing on phone lines. +; This feature is HIGHLY EXPERIMENTAL and can easily detect false answers, +; so don't count on it being very accurate. +; +; Few zones are supported at the time of this writing, but may be selected +; with "progzone". +; +; progzone also affects the pattern used for buzydetect (unless +; busypattern is set explicitly). The possible values are: +; us (default) +; ca (alias for 'us') +; cr (Costa Rica) +; br (Brazil, alias for 'cr') +; uk +; +; This feature can also easily detect false hangups. The symptoms of this is +; being disconnected in the middle of a call for no reason. +; +;callprogress=yes +;progzone=uk +; +; Set the tonezone. Equivalent of the defaultzone settings in +; /etc/dahdi/system.conf. This sets the tone zone by number. +; Note that you'd still need to load tonezones (loadzone in +; /etc/dahdi/system.conf). +; The default is -1: not to set anything. +;tonezone = 0 ; 0 is US +; +; FXO (FXS signalled) devices must have a timeout to determine if there was a +; hangup before the line was answered. This value can be tweaked to shorten +; how long it takes before DAHDI considers a non-ringing line to have hungup. +; +; ringtimeout will not update on a reload. +; +;ringtimeout=8000 +; +; For FXO (FXS signalled) devices, whether to use pulse dial instead of DTMF +; Pulse digits from phones (FXS devices, FXO signalling) are always +; detected. +; +;pulsedial=yes +; +; For fax detection, uncomment one of the following lines. The default is *OFF* +; +;faxdetect=both +;faxdetect=incoming +;faxdetect=outgoing +;faxdetect=no +; +; When 'faxdetect' is used, one could use 'faxbuffers' to configure the DAHDI +; transmit buffer policy. The default is *OFF*. When this configuration +; option is used, the faxbuffer policy will be used for the life of the call +; after a fax tone is detected. The faxbuffer policy is reverted after the +; call is torn down. The sample below will result in 6 buffers and a full +; buffer policy. +; +;faxbuffers=>6,full +; +; Configure the default number of DAHDI buffers and the transmit policy to use. +; This can be used to eliminate data drops when scheduling jitter prevents +; Asterisk from writing to a DAHDI channel regularly. Most users will probably +; want "faxbuffers" instead of "buffers". +; +; The policies are: +; immediate - DAHDI will immediately start sending the data to the hardware after +; Asterisk writes to the channel. This is the default mode. It +; introduces the least amount of latency but has an increased chance for +; hardware under runs if Asterisk is not able to keep the DAHDI write +; queue from going empty. +; half - DAHDI will wait until half of the configured buffers are full before +; starting to transmit. This adds latency to the audio but reduces +; the chance of under runs. Essentially, this is like an in-kernel jitter +; buffer. +; full - DAHDI will not start transmitting until all buffers are full. +; Introduces the most amount of latency and is susceptible to over +; runs from the Asterisk process. +; +; The receive policy is never changed. DAHDI will always pass up audio as soon +; as possible. +; +; The default number of buffers is 4 (from jitterbuffers) and the default policy +; is immediate. +; +;buffers=4,immediate +; +; This option specifies what to do when the channel's bridged peer puts the +; ISDN channel on hold. Settable per logical ISDN span. +; moh: Generate music-on-hold to the remote party. +; notify: Send hold notification signaling to the remote party. +; For ETSI PTP and ETSI PTMP NT links. +; (The notify setting deprecates the mohinterpret=passthrough setting.) +; hold: Use HOLD/RETRIEVE signaling to release the B channel while on hold. +; For ETSI PTMP TE links. +; +;moh_signaling=moh +; +; This option specifies a preference for which music on hold class this channel +; should listen to when put on hold if the music class has not been set on the +; channel with Set(CHANNEL(musicclass)=whatever) in the dialplan, and the peer +; channel putting this one on hold did not suggest a music class. +; +; This option may be set globally or on a per-channel basis. +; +;mohinterpret=default +; +; This option specifies which music on hold class to suggest to the peer channel +; when this channel places the peer on hold. This option may be set globally, +; or on a per-channel basis. +; +;mohsuggest=default +; +; PRI channels can have an idle extension and a minunused number. So long as +; at least "minunused" channels are idle, chan_dahdi will try to call "idledial" +; on them, and then dump them into the PBX in the "idleext" extension (which +; is of the form exten@context). When channels are needed the "idle" calls +; are disconnected (so long as there are at least "minidle" calls still +; running, of course) to make more channels available. The primary use of +; this is to create a dynamic service, where idle channels are bundled through +; multilink PPP, thus more efficiently utilizing combined voice/data services +; than conventional fixed mappings/muxings. +; +; Those settings cannot be changed on reload. +; +;idledial=6999 +;idleext=6999@dialout +;minunused=2 +;minidle=1 +; +; +; ignore_failed_channels: Continue even if some channels failed to configure. +; True by default. Disable this if you can guarantee that DAHDI starts before +; Asterisk and want to be sure chan_dahdi will not start with broken +; configuration. +; +;ignore_failed_channels = false +; +; Configure jitter buffers in DAHDI (each one is 20ms, default is 4) +; This is set globally, rather than per-channel. +; +;jitterbuffers=4 +; +;------------------------------ JITTER BUFFER CONFIGURATION -------------------------- +; jbenable = yes ; Enables the use of a jitterbuffer on the receiving side of a + ; DAHDI channel. Defaults to "no". An enabled jitterbuffer will + ; be used only if the sending side can create and the receiving + ; side can not accept jitter. The DAHDI channel can't accept jitter, + ; thus an enabled jitterbuffer on the receive DAHDI side will always + ; be used if the sending side can create jitter. + +; jbmaxsize = 200 ; Max length of the jitterbuffer in milliseconds. + +; jbresyncthreshold = 1000 ; Jump in the frame timestamps over which the jitterbuffer is + ; resynchronized. Useful to improve the quality of the voice, with + ; big jumps in/broken timestamps, usually sent from exotic devices + ; and programs. Defaults to 1000. + +; jbimpl = fixed ; Jitterbuffer implementation, used on the receiving side of a DAHDI + ; channel. Two implementations are currently available - "fixed" + ; (with size always equals to jbmax-size) and "adaptive" (with + ; variable size, actually the new jb of IAX2). Defaults to fixed. + +; jbtargetextra = 40 ; This option only affects the jb when 'jbimpl = adaptive' is set. + ; The option represents the number of milliseconds by which the new + ; jitter buffer will pad its size. the default is 40, so without + ; modification, the new jitter buffer will set its size to the jitter + ; value plus 40 milliseconds. increasing this value may help if your + ; network normally has low jitter, but occasionally has spikes. + +; jblog = no ; Enables jitterbuffer frame logging. Defaults to "no". +;----------------------------------------------------------------------------------- +; +; You can define your own custom ring cadences here. You can define up to 8 +; pairs. If the silence is negative, it indicates where the caller ID spill is +; to be placed. Also, if you define any custom cadences, the default cadences +; will be turned off. +; +; This setting is global, rather than per-channel. It will not update on +; a reload. +; +; Syntax is: cadence=ring,silence[,ring,silence[...]] +; +; These are the default cadences: +; +;cadence=125,125,2000,-4000 +;cadence=250,250,500,1000,250,250,500,-4000 +;cadence=125,125,125,125,125,-4000 +;cadence=1000,500,2500,-5000 +; +; Each channel consists of the channel number or range. It inherits the +; parameters that were specified above its declaration. +; +; +;callerid="Green Phone"<(256) 428-6121> +;description=Reception Phone ; add a description for 'dahdi show channels' +;channel => 1 +;callerid="Black Phone"<(256) 428-6122> +;description=Courtesy Phone +;channel => 2 +;callerid="CallerID Phone" <(630) 372-1564> +;description= ; reset the description for following channels +;channel => 3 +;callerid="Pac Tel Phone" <(256) 428-6124> +;channel => 4 +;callerid="Uniden Dead" <(256) 428-6125> +;channel => 5 +;callerid="Cortelco 2500" <(256) 428-6126> +;channel => 6 +;callerid="Main TA 750" <(256) 428-6127> +;channel => 44 +; +; For example, maybe we have some other channels which start out in a +; different context and use E & M signalling instead. +; +;context=remote +;signaling=em +;channel => 15 +;channel => 16 + +;signalling=em_w +; +; All those in group 0 I'll use for outgoing calls +; +; Strip most significant digit (9) before sending +; +;stripmsd=1 +;callerid=asreceived +;group=0 +;signalling=fxs_ls +;channel => 45 + +;signalling=fxo_ls +;group=1 +;callerid="Joe Schmoe" <(256) 428-6131> +;channel => 25 +;callerid="Megan May" <(256) 428-6132> +;channel => 26 +;callerid="Suzy Queue" <(256) 428-6233> +;channel => 27 +;callerid="Larry Moe" <(256) 428-6234> +;channel => 28 +; +; Sample PRI (CPE) config: Specify the switchtype, the signalling as either +; pri_cpe or pri_net for CPE or Network termination, and generally you will +; want to create a single "group" for all channels of the PRI. +; +; switchtype cannot be changed on a reload. +; +; switchtype = national +; signalling = pri_cpe +; group = 2 +; channel => 1-23 +; +; Alternatively, the number of the channel may be replaced with a relative +; path to a device file under /dev/dahdi . The final element of that file +; must be a number, though. The directory separator is '!', as we can't +; use '/' in a dial string. So if we have +; +; /dev/dahdi/span-name/pstn/00/1 +; /dev/dahdi/span-name/pstn/00/2 +; /dev/dahdi/span-name/pstn/00/3 +; /dev/dahdi/span-name/pstn/00/4 +; +; we could use: +;channel => span-name!pstn!00!1-4 +; +; or: +;channel => span-name!pstn!00!1,2,3,4 +; +; See also ignore_failed_channels above. + +; Used for distinctive ring support for x100p. +; You can see the dringX patterns is to set any one of the dringXcontext fields +; and they will be printed on the console when an inbound call comes in. +; +; dringXrange is used to change the acceptable ranges for "tone offsets". Defaults to 10. +; Note: a range of 0 is NOT what you might expect - it instead forces it to the default. +; A range of -1 will force it to always match. +; Anything lower than -1 would presumably cause it to never match. +; +;dring1=95,0,0 +;dring1context=internal1 +;dring1range=10 +;dring2=325,95,0 +;dring2context=internal2 +;dring2range=10 +; If no pattern is matched here is where we go. +;context=default +;channel => 1 + +; AMI alarm event reporting +;reportalarms=channels +;Possible values are: +;channels - report each channel alarms (current behavior, default for backward compatibility) +;spans - report an "SpanAlarm" event when the span of any configured channel is alarmed +;all - report channel and span alarms (aggregated behavior) +;none - do not report any alarms. + +; ---------------- Options for use with signalling=ss7 ----------------- +; None of them can be changed by a reload. +; +; Variant of SS7 signalling: +; Options are itu and ansi +;ss7type = itu + +; SS7 Called Nature of Address Indicator +; +; unknown: Unknown +; subscriber: Subscriber +; national: National +; international: International +; dynamic: Dynamically selects the appropriate dialplan +; +;ss7_called_nai=dynamic +; +; SS7 Calling Nature of Address Indicator +; +; unknown: Unknown +; subscriber: Subscriber +; national: National +; international: International +; dynamic: Dynamically selects the appropriate dialplan +; +;ss7_calling_nai=dynamic +; +; +; sample 1 for Germany +;ss7_internationalprefix = 00 +;ss7_nationalprefix = 0 +;ss7_subscriberprefix = +;ss7_unknownprefix = +; + +; This option is used to disable automatic sending of ACM when the call is started +; in the dialplan. If you do use this option, you will need to use the Proceeding() +; application in the dialplan to send ACM or enable ss7_autoacm below. +;ss7_explicitacm=yes + +; Use this option to automatically send ACM when the call rings or is answered and +; has not seen proceeding yet. If you use this option, you should disable ss7_explicitacm. +; You may still use Proceeding() to explicitly send an ACM from the dialplan. +;ss7_autoacm=yes + +; Create the linkset with all CICs in hardware remotely blocked state. +;ss7_initialhwblo=yes + +; This option is whether or not to trust the remote echo control indication. This means +; that in cases where echo control is reported by the remote end, we will trust them and +; not enable echo cancellation on the call. +;ss7_use_echocontrol=yes + +; This option is to set what our echo control indication is to the other end. Set to +; yes to indicate that we are using echo cancellation or no if we are not. +;ss7_default_echocontrol=yes + +; All settings apply to linkset 1 +;linkset = 1 + +; Set the Signaling Link Code (SLC) for each sigchan. +; If you manually set any you need to manually set all. +; Should be defined before sigchan. +; The default SLC starts with zero and increases for each defined sigchan. +;slc= + +; Point code of the linkset. For ITU, this is the decimal number +; format of the point code. For ANSI, this can either be in decimal +; number format or in the xxx-xxx-xxx format +;pointcode = 1 + +; Point code of node adjacent to this signalling link (Possibly the STP between you and +; your destination). Point code format follows the same rules as above. +;adjpointcode = 2 + +; Default point code that you would like to assign to outgoing messages (in case of +; routing through STPs, or using A links). Point code format follows the same rules +; as above. +;defaultdpc = 3 + +; Begin CIC (Circuit indication codes) count with this number +;cicbeginswith = 1 + +; What the MTP3 network indicator bits should be set to. Choices are +; national, national_spare, international, international_spare +;networkindicator=international + +; First signalling channel +;sigchan = 48 + +; Additional signalling channel for this linkset (So you can have a linkset +; with two signalling links in it). It seems like a silly way to do it, but +; for linksets with multiple signalling links, you add an additional sigchan +; line for every additional signalling link on the linkset. +;sigchan = 96 + +; Channels to associate with CICs on this linkset +;channel = 25-47 +; + +; Set this option if you wish to send an Information Request Message (INR) request +; if no calling party number is specified. This will attempt to tell the other end +; to send it anyways. Should be defined after sigchan. +;inr_if_no_calling=yes + +; Set this to set whether or not the originating access is (non) ISDN in the forward and +; backward call indicators. Should be defined after sigchan +;non_isdn_access=yes + +; This sets the number of binary places to shift the CIC when doing load balancing between +; sigchans on a linkset. Should be defined after sigchan. Default 0 +;sls_shift = 0 + +; Send custom cause_location value +; Should be defined after sigchan. Default 1 (private local) +;cause_location=1 + +; SS7 timers (ISUP and MTP3) should be explicitly defined for each linkset to be used. +; For a full list of supported timers and their default values (applicable for both ITU +; and ANSI) see ss7.timers +; Should be defined after sigchan +;#include ss7.timers + +; For more information on setting up SS7, see the README file in libss7 or +; https://wiki.asterisk.org/wiki/display/AST/Signaling+System+Number+7 +; ----------------- SS7 Options ---------------------------------------- + +; ---------------- Options for use with signalling=mfcr2 -------------- + +; MFC-R2 signaling has lots of variants from country to country and even sometimes +; minor variants inside the same country. The only mandatory parameters here are: +; mfcr2_variant, mfcr2_max_ani and mfcr2_max_dnis. +; IT IS RECOMMENDED that you leave the default values (leaving it commented) for the +; other parameters unless you have problems or you have been instructed to change some +; parameter. OpenR2 library uses the mfcr2_variant parameter to try to determine the +; best defaults for your country, also refer to the OpenR2 package directory +; doc/asterisk/ where you can find sample configurations for some countries. If you +; want to contribute your configs for a particular country send them to the e-mail +; of the primary OpenR2 developer that you can find in the AUTHORS file of the OpenR2 package + +; MFC/R2 variant. This depends on the OpenR2 supported variants +; A list of values can be found by executing the openr2 command r2test -l +; some valid values are: +; ar (Argentina) +; br (Brazil) +; mx (Mexico) +; ph (Philippines) +; itu (per ITU spec) +; mfcr2_variant=mx + +; Max amount of ANI to ask for +; mfcr2_max_ani=10 + +; Max amount of DNIS to ask for +; mfcr2_max_dnis=4 + +; whether or not to get the ANI before getting DNIS. +; some telcos require ANI first some others do not care +; if this go wrong, change this value +; mfcr2_get_ani_first=no + +; Caller Category to send +; national_subscriber +; national_priority_subscriber +; international_subscriber +; international_priority_subscriber +; collect_call +; usually national_subscriber works just fine +; you can change this setting from the dialplan +; by setting the variable MFCR2_CATEGORY +; (remember to set _MFCR2_CATEGORY from originating channels) +; MFCR2_CATEGORY will also be a variable available in your context +; on incoming calls set to the value received from the far end +; mfcr2_category=national_subscriber + +; Call logging is stored at the Asterisk +; logging directory specified in asterisk.conf +; plus mfcr2/<whatever you put here> +; if you specify 'span1' here and asterisk.conf has +; as logging directory /var/log/asterisk then the full +; path to your MFC/R2 call logs will be /var/log/asterisk/mfcr2/span1 +; (the directory will be automatically created if not present already) +; remember to set mfcr2_call_files=yes +; mfcr2_logdir=span1 + +; whether or not to drop call files into mfcr2_logdir +; mfcr2_call_files=yes|no + +; MFC/R2 valid logging values are: all,error,warning,debug,notice,cas,mf,stack,nothing +; error,warning,debug and notice are self-descriptive +; 'cas' is for logging ABCD CAS tx and rx +; 'mf' is for logging of the Multi Frequency tones +; 'stack' is for very verbose output of the channel and context call stack, only useful +; if you are debugging a crash or want to learn how the library works. The stack logging +; will be only enabled if the openr2 library was compiled with -DOR2_TRACE_STACKS +; You can mix up values, like: loglevel=error,debug,mf to log just error, debug and +; multi frequency messages +; 'all' is a special value to log all the activity +; 'nothing' is a clean-up value, in case you want to not log any activity for +; a channel or group of channels +; BE AWARE that the level of output logged will ALSO depend on +; the value you have in logger.conf, if you disable output in logger.conf +; then it does not matter you specify 'all' here, nothing will be logged +; so logger.conf has the last word on what is going to be logged +; mfcr2_logging=all + +; MFC/R2 value in milliseconds for the MF timeout. Any negative value +; means 'default', smaller values than 500ms are not recommended +; and can cause malfunctioning. If you experience protocol error +; due to MF timeout try incrementing this value in 500ms steps +; mfcr2_mfback_timeout=-1 + +; MFC/R2 value in milliseconds for the metering pulse timeout. +; Metering pulses are sent by some telcos for some R2 variants +; during a call presumably for billing purposes to indicate costs, +; however this pulses use the same signal that is used to indicate +; call hangup, therefore a timeout is sometimes required to distinguish +; between a *real* hangup and a billing pulse that should not +; last more than 500ms, If you experience call drops after some +; minutes of being stablished try setting a value of some ms here, +; values greater than 500ms are not recommended. +; BE AWARE that choosing the proper protocol mfcr2_variant parameter +; implicitly sets a good recommended value for this timer, use this +; parameter only when you *really* want to override the default, otherwise +; just comment out this value or put a -1 +; Any negative value means 'default'. +; mfcr2_metering_pulse_timeout=-1 + +; Brazil uses a special calling party category for collect calls (llamadas por cobrar) +; instead of using the operator (as in Mexico). The R2 spec in Brazil says a special GB tone +; should be used to reject collect calls. If you want to ALLOW collect calls specify 'yes', +; if you want to BLOCK collect calls then say 'no'. Default is to block collect calls. +; (see also 'mfcr2_double_answer') +; mfcr2_allow_collect_calls=no + +; This feature is related but independent of mfcr2_allow_collect_calls +; Some PBX's require a double-answer process to block collect calls, if +; you ever have problems blocking collect calls using Group B signals (mfcr2_allow_collect_calls=no) +; then you may want to try with mfcr2_double_answer=yes, this will cause that every answer signal +; is changed by answer->clear back->answer (sort of a flash) +; (see also 'mfcr2_allow_collect_calls') +; mfcr2_double_answer=no + +; This feature allows to skip the use of Group B/II signals and go directly +; to the accepted state for incoming calls +; mfcr2_immediate_accept=no + +; You most likely dont need this feature. Default is yes. +; When this is set to yes, all calls that are offered (incoming calls) which +; DNIS is valid (exists in extensions.conf) and pass collect call validation +; will be accepted with a Group B tone (either call with charge or not, depending on mfcr2_charge_calls) +; with this set to 'no' then the call will NOT be accepted on offered, and the call will start its +; execution in extensions.conf without being accepted until the channel is answered (either with Answer() or +; any other application resulting in the channel being answered). +; This can be set to 'no' if your telco or PBX needs the hangup cause to be set accurately +; when this option is set to no you must explicitly accept the call with DAHDIAcceptR2Call +; or implicitly through the Answer() application. +; mfcr2_accept_on_offer=yes + +; Skip request of calling party category and ANI +; you need openr2 >= 1.2.0 to use this feature +; mfcr2_skip_category=no + +; WARNING: advanced users only! I really mean it +; this parameter is commented by default because +; YOU DON'T NEED IT UNLESS YOU REALLY GROK MFC/R2 +; READ COMMENTS on doc/r2proto.conf in openr2 package +; for more info +; mfcr2_advanced_protocol_file=/path/to/r2proto.conf + +; Brazil use a special signal to force the release of the line (hangup) from the +; backward perspective. When mfcr2_forced_release=no, the normal clear back signal +; will be sent on hangup, which is OK for all mfcr2 variants I know of, except for +; Brazilian variant, where the central will leave the line up for several seconds (30, 60) +; which sometimes is not what people really want. When mfcr2_forced_release=yes, a different +; signal will be sent to hangup the call indicating that the line should be released immediately +; mfcr2_forced_release=no + +; Whether or not report to the other end 'accept call with charge' +; This setting has no effect with most telecos, usually is safe +; leave the default (yes), but once in a while when interconnecting with +; old PBXs this may be useful. +; Concretely this affects the Group B signal used to accept calls +; The application DAHDIAcceptR2Call can also be used to decide this +; in the dial plan in a per-call basis instead of doing it here for all calls +; mfcr2_charge_calls=yes + +; ---------------- END of options to be used with signalling=mfcr2 + +; Configuration Sections +; ~~~~~~~~~~~~~~~~~~~~~~ +; You can also configure channels in a separate chan_dahdi.conf section. In +; this case the keyword 'channel' is not used. Instead the keyword +; 'dahdichan' is used (as in users.conf) - configuration is only processed +; in a section where the keyword dahdichan is used. It will only be +; processed in the end of the section. Thus the following section: +; +;[phones] +;echocancel = 64 +;dahdichan = 1-8 +;group = 1 +; +; Is somewhat equivalent to the following snippet in the section +; [channels]: +; +;echocancel = 64 +;group = 1 +;channel => 1-8 +; +; When starting a new section almost all of the configuration values are +; copied from their values at the end of the section [channels] in +; chan_dahdi.conf and [general] in users.conf - one section's configuration +; does not affect another one's. +; +; Instead of letting common configuration values "slide through" you can +; use configuration templates to easily keep the common part in one +; place and override where needed. +; +;[phones](!) +;echocancel = yes +;group = 0,4 +;callgroup = 3 +;pickupgroup = 3 +;threewaycalling = yes +;transfer = yes +;context = phones +;faxdetect = incoming +; +;[phone-1](phones) +;dahdichan = 1 +;callerid = My Name <501> +;mailbox = 501@mailboxes +; +; +;[fax](phones) +;dahdichan = 2 +;faxdetect = no +;context = fax +; +;[phone-3](phones) +;dahdichan = 3 +;pickupgroup = 3,4 diff --git a/configs/samples/chan_mobile.conf.sample b/configs/samples/chan_mobile.conf.sample new file mode 100644 index 000000000..c9c4d2d85 --- /dev/null +++ b/configs/samples/chan_mobile.conf.sample @@ -0,0 +1,69 @@ +; +; chan_mobile.conf +; configuration file for chan_mobile +; + +[general] +interval=30 ; Number of seconds between trying to connect to devices. + +; The following is a list of adapters we use. +; id must be unique and address is the bdaddr of the adapter from hciconfig. +; Each adapter may only have one device (headset or phone) connected at a time. +; Add an [adapter] entry for each adapter you have. + +[adapter] +id=blue +address=00:09:DD:60:01:A3 +;forcemaster=yes ; attempt to force adapter into master mode. default is no. +;alignmentdetection=yes ; enable this if you sometimes get 'white noise' on asterisk side of the call + ; its a bug in the bluetooth adapter firmware, enabling this will compensate for it. + ; default is no. + +[adapter] +id=dlink +address=00:80:C8:35:52:78 + +; The following is a list of the devices we deal with. +; Every device listed below will be available for calls in and out of Asterisk. +; Each device needs an adapter=xxxx entry which determines which bluetooth adapter is used. +; Use the CLI command 'mobile search' to discover devices. +; Use the CLI command 'mobile show devices' to see device status. +; +; To place a call out through a mobile phone use Dial(Mobile/[device]/NNN.....) or Dial(Mobile/gn/NNN......) in your dialplan. +; To call a headset use Dial(Mobile/[device]). + +[LGTU550] +address=00:E0:91:7F:46:44 ; the address of the phone +port=4 ; the rfcomm port number (from mobile search) +context=incoming-mobile ; dialplan context for incoming calls +adapter=dlink ; adapter to use +group=1 ; this phone is in channel group 1 +;sms=no ; support SMS, defaults to yes +;nocallsetup=yes ; set this only if your phone reports that it supports call progress notification, but does not do it. Motorola L6 for example. + +[blackberry] +address=00:60:57:32:7E:B2 +port=2 +context=incoming-mobile +adapter=dlink +group=1 +;blackberry=yes ; set this if you are using a blackberry device + +[6310i] +address=00:60:57:32:7E:B1 +port=13 +context=incoming-mobile +adapter=dlink +group=1 ; this phone is in channel group 1 also. + +[headset] +address=00:0B:9E:11:AE:C6 +port=1 +type=headset ; This is a headset, not a Phone ! +adapter=blue + +[headset1] +address=00:0B:9E:11:74:A5 +port=1 +type=headset +adapter=dlink diff --git a/configs/samples/cli.conf.sample b/configs/samples/cli.conf.sample new file mode 100644 index 000000000..0ddd92c99 --- /dev/null +++ b/configs/samples/cli.conf.sample @@ -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 diff --git a/configs/samples/cli_aliases.conf.sample b/configs/samples/cli_aliases.conf.sample new file mode 100644 index 000000000..21353fdb4 --- /dev/null +++ b/configs/samples/cli_aliases.conf.sample @@ -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 + +; 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. diff --git a/configs/samples/cli_permissions.conf.sample b/configs/samples/cli_permissions.conf.sample new file mode 100644 index 000000000..4a6973f50 --- /dev/null +++ b/configs/samples/cli_permissions.conf.sample @@ -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 +; +; diff --git a/configs/samples/codecs.conf.sample b/configs/samples/codecs.conf.sample new file mode 100644 index 000000000..9b5738577 --- /dev/null +++ b/configs/samples/codecs.conf.sample @@ -0,0 +1,153 @@ +[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 + + +[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 +genericplc => true + +; 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 diff --git a/configs/samples/confbridge.conf.sample b/configs/samples/confbridge.conf.sample new file mode 100644 index 000000000..860f1cb87 --- /dev/null +++ b/configs/samples/confbridge.conf.sample @@ -0,0 +1,373 @@ +[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. +;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 ; The time in milliseconds of sound above what the dsp has + ; established as base line silence for a user before a user + ; is considered to be 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. Audio is only mixed out of a user's incoming audio stream + ; if talking is detected. If this value is set too + ; loose the user will hear themselves briefly each + ; time they begin talking until the dsp has time to + ; establish that they are in fact 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 tight + ; 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 loose + ; the beginning of a user's speech will get cut off as they + ; transition from silence to talking. + ; + ; By default this value is 160 ms. Valid values are 1 through 2^31 + +;dsp_silence_threshold=2000 ; The time in milliseconds of sound falling within the what + ; the dsp has established as baseline silence before a user + ; is considered be silent. 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 ms of silence a user may generate during + ; natural speech. + ; + ; By default this value is 2500ms. Valid values are 1 through 2^31 + +;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. + +; --- 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. + +;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. + +;language=en ; Set the language used for announcements to the conference. + ; Default is en (English). + +; 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 it toggled on. +;sound_unmuted ; The sound played when the mute option it toggled off. +;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. + +; --- 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. + +; 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. All + ; admin users are unaffected by this option. Note that all + ; users, regardless of their admin status, are notified + ; that the conference is muted. + +; 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 diff --git a/configs/samples/config_test.conf.sample b/configs/samples/config_test.conf.sample new file mode 100644 index 000000000..2fff45ece --- /dev/null +++ b/configs/samples/config_test.conf.sample @@ -0,0 +1,38 @@ +; Config to test config parsing +; global and item have values that differ from defaults +; global_defaults and item_defualts are to show all defaults are set +; there should be an option for every default type, and a custom type + +[global] +intopt=-1 +uintopt=1 +doubleopt=0.1 +sockaddropt=1.2.3.4:1234 +boolopt=true +boolflag1=true +boolflag2=false +boolflag3=true +deny=0.0.0.0/0 +permit=1.2.3.4/32 +codecopt=!all,ulaw,g729 +stropt=test +customopt=yes + +[global_defaults] + +[item] +intopt=-1 +uintopt=1 +doubleopt=0.1 +sockaddropt=1.2.3.4:1234 +boolopt=true +boolflag1=true +boolflag2=false +boolflag3=true +acldenyopt=0.0.0.0/0 +aclpermitopt=1.2.3.4/32 +codecopt=!all,ulaw,g729 +stropt=test +customopt=yes + +[item_defaults] diff --git a/configs/samples/console.conf.sample b/configs/samples/console.conf.sample new file mode 100644 index 000000000..606254eee --- /dev/null +++ b/configs/samples/console.conf.sample @@ -0,0 +1,97 @@ +; +; Configuration for chan_console, a cross-platform console channel driver. +; + +[general] + +; Set this option to "yes" to enable automatically answering calls on the +; console. This is very useful if the console is used as an intercom. +; The default value is "no". +; +;autoanswer = no + +; Set the default context to use for outgoing calls. This can be overridden by +; dialing some extension@context, unless the overridecontext option is enabled. +; The default is "default". +; +;context = default + +; Set the default extension to use for outgoing calls. The default is "s". +; +;extension = s + +; Set the default CallerID for created channels. +; +;callerid = MyName Here <(256) 428-6000> + +; Set the default language for created channels. +; +;language = en + +; If you set overridecontext to 'yes', then the whole dial string +; will be interpreted as an extension, which is extremely useful +; to dial SIP, IAX and other extensions which use the '@' character. +; The default is "no". +; +;overridecontext = no ; if 'no', the last @ will start the context + ; if 'yes' the whole string is an extension. + + +; Default Music on Hold class to use when this channel is placed on hold in +; the case that the music class is not set on the channel with +; Set(CHANNEL(musicclass)=whatever) in the dialplan and the peer channel +; putting this one on hold did not suggest a class to use. +; +;mohinterpret=default + +;------------------------------ JITTER BUFFER CONFIGURATION -------------------------- +; jbenable = yes ; Enables the use of a jitterbuffer on the receiving side of an + ; Console channel. Defaults to "no". An enabled jitterbuffer will + ; be used only if the sending side can create and the receiving + ; side can not accept jitter. The Console channel can't accept jitter, + ; thus an enabled jitterbuffer on the receive Console side will always + ; be used if the sending side can create jitter. + +; jbmaxsize = 200 ; Max length of the jitterbuffer in milliseconds. + +; jbresyncthreshold = 1000 ; Jump in the frame timestamps over which the jitterbuffer is + ; resynchronized. Useful to improve the quality of the voice, with + ; big jumps in/broken timestamps, usually sent from exotic devices + ; and programs. Defaults to 1000. + +; jbimpl = fixed ; Jitterbuffer implementation, used on the receiving side of a Console + ; channel. Two implementations are currently available - "fixed" + ; (with size always equals to jbmax-size) and "adaptive" (with + ; variable size, actually the new jb of IAX2). Defaults to fixed. + +; jbtargetextra = 40 ; This option only affects the jb when 'jbimpl = adaptive' is set. + ; The option represents the number of milliseconds by which the new + ; jitter buffer will pad its size. the default is 40, so without + ; modification, the new jitter buffer will set its size to the jitter + ; value plus 40 milliseconds. increasing this value may help if your + ; network normally has low jitter, but occasionally has spikes. + +; jblog = no ; Enables jitterbuffer frame logging. Defaults to "no". +;----------------------------------------------------------------------------------- + + +; +; Any configuration context defined beyond the [general] section configures +; specific devices for use. +; + +[default] +input_device = default ; When configuring an input device and output device, +output_device = default ; use the name that you see when you run the "console + ; list available" CLI command. If you say "default", the + ; system default input and output devices will be used. +autoanswer = no +context = default +extension = s +callerid = MyName Here <(256) 428-6000> +language = en +overridecontext = no +mohinterpret = default +active = yes ; This option should only be set for one console. + ; It means that it is the active console to be + ; used from the Asterisk CLI. diff --git a/configs/samples/dbsep.conf.sample b/configs/samples/dbsep.conf.sample new file mode 100644 index 000000000..9cfa23740 --- /dev/null +++ b/configs/samples/dbsep.conf.sample @@ -0,0 +1,35 @@ +# +# Configuration file for dbsep.cgi +# +# The purpose of this file is to provide realtime access to a database, +# possibly through ODBC, without needing to load the ODBC drivers into +# Asterisk, since there are several backend drivers which are rather +# buggy. +# +# We accomplish this separation by using the res_config_curl realtime +# driver to connect to a server running dbsep.cgi (or another, which +# implements the same protocol). +# +# This file contains the information necessary to configure dbsep.cgi. +# +# +# Once installed to a web server, you'll need to preload func_curl.so +# and res_config_curl.so in modules.conf and configure extconfig.conf: +# +# voicemail => curl,http://server/path/to/dbsep.cgi/voicemail +# sippeers => curl,http://server/path/to/dbsep.cgi/sippeers +# + +# The Data Source Name, as specified by the Perl DBI module. +# Typically, this will be along the lines of 'DBI:mysql:astdbname[:dbhostname]' or 'DBI:Pg:dbname=astdbname;hostname=dbhostname' +dsn=somedsn + +# Connected database user +dbuser=someuser + +# And its password +dbpass=password + +# For most databases, this is fine. Set to 'no' for Sybase or MS SQL Server. +backslash_is_escape=yes + diff --git a/configs/samples/dnsmgr.conf.sample b/configs/samples/dnsmgr.conf.sample new file mode 100644 index 000000000..e34dbcf0a --- /dev/null +++ b/configs/samples/dnsmgr.conf.sample @@ -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)
\ No newline at end of file diff --git a/configs/samples/dsp.conf.sample b/configs/samples/dsp.conf.sample new file mode 100644 index 000000000..08c5a5715 --- /dev/null +++ b/configs/samples/dsp.conf.sample @@ -0,0 +1,43 @@ +[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 Column energy is greater than the Row energy +; Reverse Twist is where the Row 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 + diff --git a/configs/samples/dundi.conf.sample b/configs/samples/dundi.conf.sample new file mode 100644 index 000000000..70f97d422 --- /dev/null +++ b/configs/samples/dundi.conf.sample @@ -0,0 +1,268 @@ +; +; DUNDi configuration file +; +; For more information about DUNDi, see http://www.dundi.com +; +; +[general] +; +; The "general" section contains general parameters relating +; to the operation of the dundi client and server. +; +; The first part should be your complete contact information +; should someone else in your peer group need to contact you. +; +;department=Your Department +;organization=Your Company, Inc. +;locality=Your City +;stateprov=ST +;country=US +;email=your@email.com +;phone=+12565551212 +; +; +; Specify bind address and port number. Default is +; 4520 +; +;bindaddr=0.0.0.0 +;port=4520 +; +; See https://wiki.asterisk.org/wiki/display/AST/IP+Quality+of+Service for a description of the tos parameter. +;tos=ef +; +; Our entity identifier (Should generally be the MAC address of the +; machine it's running on. Defaults to the first eth address, but you +; can override it here, as long as you set it to the MAC of *something* +; you own!) The EID can be overridden by a setting in asterisk.conf, +; or by setting this option. +; +;entityid=00:07:E9:3B:76:60 +; +; Peers shall cache our query responses for the specified time, +; given in seconds. Default is 3600. +; +;cachetime=3600 +; +; This defines the max depth in which to search the DUNDi system. +; Note that the maximum time that we will wait for a response is +; (2000 + 200 * ttl) ms. +; +ttl=32 +; +; If we don't get ACK to our DPDISCOVER within 2000ms, and autokill is set +; to yes, then we cancel the whole thing (that's enough time for one +; retransmission only). This is used to keep things from stalling for a long +; time for a host that is not available, but would be ill advised for bad +; connections. In addition to 'yes' or 'no' you can also specify a number +; of milliseconds. See 'qualify' for individual peers to turn on for just +; a specific peer. +; +autokill=yes +; +; pbx_dundi creates a rotating key called "secret", under the family +; 'secretpath'. The default family is dundi (resulting in +; the key being held at dundi/secret). +; +;secretpath=dundi +; +; The 'storehistory' option (also changeable at runtime with +; 'dundi store history' and 'dundi no store history') will +; cause the DUNDi engine to keep track of the last several +; queries and the amount of time each query took to execute +; for the purpose of tracking slow nodes. This option is +; off by default due to performance impacts. +; +;storehistory=yes + +[mappings] +; +; The "mappings" section maps DUNDi contexts +; to contexts on the local asterisk system. Remember +; that numbers that are made available under the e164 +; DUNDi context are regulated by the DUNDi General Peering +; Agreement (GPA) if you are a member of the DUNDi E.164 +; Peering System. +; +; dundi_context => local_context,weight,tech,dest[,options]] +; +; 'dundi_context' is the name of the context being requested +; within the DUNDi request +; +; 'local_context' is the name of the context on the local system +; in which numbers can be looked up for which responses shall be given. +; +; 'weight' is the weight to use for the responses provided from this +; mapping. The number must be >= 0 and < 60000. Since it is totally +; valid to receive multiple responses to a query, responses received +; with a lower weight are tried first. Note that the weight has a +; special meaning in the e164 context - see the GPA for more details. +; +; 'tech' is the technology to use (IAX, SIP, H323) +; +; 'dest' is the destination to supply for reaching that number. The +; following variables can be used in the destination string and will +; be automatically substituted: +; ${NUMBER}: The number being requested +; ${IPADDR}: The IP address to connect to +; ${SECRET}: The current rotating secret key to be used +; +; Further options may include: +; +; nounsolicited: No unsolicited calls of any type permitted via this +; route +; nocomunsolicit: No commercial unsolicited calls permitted via +; this route +; residential: This number is known to be a residence +; commercial: This number is known to be a business +; mobile: This number is known to be a mobile phone +; nocomunsolicit: No commercial unsolicited calls permitted via +; this route +; nopartial: Do not search for partial matches +; +; There *must* exist an entry in mappings for DUNDi to respond +; to any request, although it may be empty. +; +;e164 => dundi-e164-canonical,0,IAX2,dundi:${SECRET}@${IPADDR}/${NUMBER},nounsolicited,nocomunsolicit,nopartial +;e164 => dundi-e164-customers,100,IAX2,dundi:${SECRET}@${IPADDR}/${NUMBER},nounsolicited,nocomunsolicit,nopartial +;e164 => dundi-e164-via-pstn,400,IAX2,dundi:${SECRET}@${IPADDR}/${NUMBER},nounsolicited,nocomunsolicit,nopartial + +;digexten => default,0,IAX2,guest@lappy/${NUMBER} +;asdf => + +; +; Weights for mappings can be set a few different ways: +; +; 1) It can be set as a static number. +;testmap1 => context1,222,IAX2,guest@peer1/${NUMBER} +; +; 2) It can be an Asterisk global variable. +;testmap2 => context2,${DUNDITESTVAR},IAX2,guest@peer2${NUMBER} +; +; 3) It can be retrieved using a dialplan function. This can be extremely +; useful if you want to let an external script decide what the weight +; in a response shouuld be. +;testmap3 => context3,${SHELL(echo 123)},IAX2,guest@peer3/${NUMBER} +; +; The built in variables ${SECRET}, ${IPADDR} and ${NUMBER} can also be +; passed to the weight. For example, you could pass the ${NUMBER} value +; to your SHELL() script and use that to dynamically return a weight. +; +; Note than when using a global variable or dialplan function to set the +; weight for a mapping, that response caching should be disabled if you +; plan for these values to change frequently at all. If the results are +; cached, then any change in value will not take effect until the cache +; has expired. +; + +; +; The remaining sections represent the peers +; that we fundamentally trust. The section name +; represents the name and optionally at a specific +; DUNDi context if you want the trust to be established +; for only a specific DUNDi context. +; +; inkey - What key they will be authenticating to us with +; +; outkey - What key we use to authenticate to them +; +; host - What their host is +; +; port - The port where their host is listening (default: 4520) +; +; order - What search order to use. May be 'primary', 'secondary', +; 'tertiary' or 'quartiary'. In large systems, it is beneficial +; to only query one up-stream host in order to maximize caching +; value. Adding one with primary and one with secondary gives you +; redundancy without sacrificing performance. +; +; include - Includes this peer when searching a particular context +; for lookup (set "all" to perform all lookups with that +; host. This is also the context in which peers are permitted +; to precache. +; +; noinclude - Disincludes this peer when searching a particular context +; for lookup (set "all" to perform no lookups with that +; host. +; +; permit - Permits this peer to search a given DUNDi context on +; the local system. Set "all" to permit this host to +; lookup all contexts. This is also a context for which +; we will create/forward PRECACHE commands. +; +; deny - Denies this peer to search a given DUNDi context on +; the local system. Set "all" to deny this host to +; lookup all contexts. +; +; model - inbound, outbound, or symmetric for whether we receive +; requests only, transmit requests only, or do both. +; +; precache - Utilize/Permit precaching with this peer (to pre +; cache means to provide an answer when no request +; was made and is used so that machines with few +; routes can push those routes up a to a higher level). +; outgoing means we send precache routes to this peer, +; incoming means we permit this peer to send us +; precache routes. symmetric means we do both. +; +; Note: You cannot mix symmetric/outbound model with symmetric/inbound +; precache, nor can you mix symmetric/inbound model with symmetric/outbound +; precache. +; +; +; The '*' peer is special and matches an unspecified entity +; + +; +; Sample Primary e164 DUNDi peer +; +;[00:50:8B:F3:75:BB] +;model = symmetric +;host = 64.215.96.114 +;inkey = digium +;outkey = misery +;include = e164 +;permit = e164 +;qualify = yes + +; +; Sample Secondary e164 DUNDi peer +; +;[00:A0:C9:96:92:84] +;model = symmetric +;host = misery.digium.com +;inkey = misery +;outkey = ourkey +;include = e164 +;permit = e164 +;qualify = yes +;order = secondary + +; +; Sample "push mode" downstream host +; +;[00:0C:76:96:75:28] +;model = inbound +;host = dynamic +;precache = inbound +;inkey = littleguy +;outkey = ourkey +;include = e164 ; In this case used only for precaching +;permit = e164 +;qualify = yes + +; +; Sample "push mode" upstream host +; +;[00:07:E9:3B:76:60] +;model = outbound +;precache = outbound +;host = 216.207.245.34 +;register = yes +;inkey = dhcp34 +;permit = all ; In this case used only for precaching +;include = all +;qualify = yes +;outkey=foo + +;[*] +; diff --git a/configs/samples/enum.conf.sample b/configs/samples/enum.conf.sample new file mode 100644 index 000000000..39c723175 --- /dev/null +++ b/configs/samples/enum.conf.sample @@ -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 diff --git a/configs/samples/extconfig.conf.sample b/configs/samples/extconfig.conf.sample new file mode 100644 index 000000000..52a49cfbe --- /dev/null +++ b/configs/samples/extconfig.conf.sample @@ -0,0 +1,108 @@ +; +; 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 +;voicemail => odbc,asterisk +;extensions => odbc,asterisk +;meetme => mysql,general +;queues => odbc,asterisk +;queue_members => 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. + diff --git a/configs/samples/extensions.ael.sample b/configs/samples/extensions.ael.sample new file mode 100644 index 000000000..495001f90 --- /dev/null +++ b/configs/samples/extensions.ael.sample @@ -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. +// +} diff --git a/configs/samples/extensions.conf.sample b/configs/samples/extensions.conf.sample new file mode 100644 index 000000000..df91223f0 --- /dev/null +++ b/configs/samples/extensions.conf.sample @@ -0,0 +1,857 @@ +; 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] +;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(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. diff --git a/configs/samples/extensions.lua.sample b/configs/samples/extensions.lua.sample new file mode 100644 index 000000000..1b4428c7c --- /dev/null +++ b/configs/samples/extensions.lua.sample @@ -0,0 +1,241 @@ + + +CONSOLE = "Console/dsp" -- Console interface for demo +--CONSOLE = "DAHDI/1" +--CONSOLE = "Phone/phone0" + +IAXINFO = "guest" -- IAXtel username/password +--IAXINFO = "myuser:mypass" + +TRUNK = "DAHDI/G2" +TRUNKMSD = 1 +-- TRUNK = "IAX2/user:pass@provider" + + +-- +-- Extensions are expected to be defined in a global table named 'extensions'. +-- The 'extensions' table should have a group of tables in it, each +-- representing a context. Extensions are defined in each context. See below +-- for examples. +-- +-- 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. +-- +-- If your extension has special characters in it such as '.' and '!' you must +-- explicitly make it a string in the tabale definition: +-- +-- ["_special."] = function; +-- ["_special!"] = function; +-- +-- There are no priorities. All extensions to asterisk appear to have a single +-- priority as if they consist of a single priority. +-- +-- Each context is defined as a table in the extensions table. The +-- context names should be strings. +-- +-- One context may be included in another context using the 'includes' +-- extension. This extension should be set to a table containing a list +-- of context names. Do not put references to tables in the includes +-- table. +-- +-- include = {"a", "b", "c"}; +-- +-- Channel variables can be accessed thorugh the global 'channel' table. +-- +-- v = channel.var_name +-- v = channel["var_name"] +-- v.value +-- v:get() +-- +-- channel.var_name = "value" +-- channel["var_name"] = "value" +-- v:set("value") +-- +-- channel.func_name(1,2,3):set("value") +-- value = channel.func_name(1,2,3):get() +-- +-- channel["func_name(1,2,3)"]:set("value") +-- channel["func_name(1,2,3)"] = "value" +-- value = channel["func_name(1,2,3)"]:get() +-- +-- Note the use of the ':' operator to access the get() and set() +-- methods. +-- +-- Also notice the absence of the following constructs from the examples above: +-- channel.func_name(1,2,3) = "value" -- this will NOT work +-- value = channel.func_name(1,2,3) -- this will NOT work as expected +-- +-- +-- Dialplan applications can be accessed through the global 'app' table. +-- +-- app.Dial("DAHDI/1") +-- app.dial("DAHDI/1") +-- app["dial"]("DAHDI/1") +-- +-- More examples can be found below. +-- +-- An autoservice is automatically run while lua code is executing. The +-- autoservice can be stopped and restarted using the autoservice_stop() and +-- autoservice_start() functions. The autservice should be running before +-- starting long running operations. The autoservice will automatically be +-- stopped before executing applications and dialplan functions and will be +-- restarted afterwards. The autoservice_status() function can be used to +-- check the current status of the autoservice and will return true if an +-- autoservice is currently running. +-- +-- Note about naming conflicts: +-- Lua allows you to refer to table entries using the '.' notation, +-- I.E. app.goto(something), only if the entry doesn't conflict with an Lua +-- reserved word. In the 'goto' example, with Lua 5.1 or earlier, 'goto' is +-- not a reserved word so you'd be calling the Asterisk dialplan application +-- 'goto'. Lua 5.2 however, introduced the 'goto' control statement which +-- makes 'goto' a reserved word. This casues the interpreter to fail parsing +-- the file and pbx_lua.so will fail to load. The same applies to any use of +-- Lua tables including extensions, channels and any tables you create. +-- +-- There are two ways around this: Since Lua is case-sensitive, you can use +-- capitalized names, I.E. app.Goto(something) to refer to the Asterisk apps, +-- functions, etc. Or you can use the full syntax, I.E. app["goto"](something). +-- Both syntaxes are backwards compatible with earlier Lua versions. To make +-- your Lua dialplans easier to maintain and to reduce the chance of future +-- conflicts you may want to use the app["goto"](something) syntax for all +-- table accesses. +-- + +function outgoing_local(c, e) + app.dial("DAHDI/1/" .. e, "", "") +end + +function demo_instruct() + app.background("demo-instruct") + app.waitexten() +end + +function demo_congrats() + app.background("demo-congrats") + demo_instruct() +end + +-- Answer the chanel and play the demo sound files +function demo_start(context, exten) + app.wait(1) + app.answer() + + channel.TIMEOUT("digit"):set(5) + channel.TIMEOUT("response"):set(10) + -- app.set("TIMEOUT(digit)=5") + -- app.set("TIMEOUT(response)=10") + + demo_congrats(context, exten) +end + +function demo_hangup() + app.playback("demo-thanks") + app.hangup() +end + +extensions = { + demo = { + s = demo_start; + + ["2"] = function() + app.background("demo-moreinfo") + demo_instruct() + end; + ["3"] = function () + channel.LANGUAGE():set("fr") -- set the language to french + demo_congrats() + end; + + ["1000"] = function() +-- See the naming conflict note above. + app['goto']("default", "s", 1) + end; + + ["1234"] = function() + app.playback("transfer", "skip") + -- do a dial here + end; + + ["1235"] = function() + app.voicemail("1234", "u") + end; + + ["1236"] = function() + app.dial("Console/dsp") + app.voicemail(1234, "b") + end; + + ["#"] = demo_hangup; + t = demo_hangup; + i = function() + app.playback("invalid") + demo_instruct() + end; + + ["500"] = function() + app.playback("demo-abouttotry") + app.dial("IAX2/guest@misery.digium.com/s@default") + app.playback("demo-nogo") + demo_instruct() + end; + + ["600"] = function() + app.playback("demo-echotest") + app.echo() + app.playback("demo-echodone") + demo_instruct() + end; + + ["8500"] = function() + app.voicemailmain() + demo_instruct() + end; + + }; + + default = { + -- by default, do the demo + include = {"demo"}; + }; + + 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"}; + }; + + ["local"] = { + ["_NXXXXXX"] = outgoing_local; + }; +} + +hints = { + demo = { + [1000] = "SIP/1000"; + [1001] = "SIP/1001"; + }; + + default = { + ["1234"] = "SIP/1234"; + }; +} + diff --git a/configs/samples/extensions_minivm.conf.sample b/configs/samples/extensions_minivm.conf.sample new file mode 100644 index 000000000..2f9d24637 --- /dev/null +++ b/configs/samples/extensions_minivm.conf.sample @@ -0,0 +1,159 @@ +; MINI-VOICEMAIL dialplan example +; --------------------------------------------------------------------------------------- +; ASTERISK_FILE_VERSION(__FILE__, "$Revision$") +; +; +; 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)) + diff --git a/configs/samples/features.conf.sample b/configs/samples/features.conf.sample new file mode 100644 index 000000000..1724fc155 --- /dev/null +++ b/configs/samples/features.conf.sample @@ -0,0 +1,115 @@ +; +; Sample Call Features (transfer, monitor/mixmonitor, etc) configuration +; + +; Asterisk 12 Note - 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. + + +; 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 predial +; to set different values of 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]. diff --git a/configs/samples/festival.conf.sample b/configs/samples/festival.conf.sample new file mode 100644 index 000000000..e91821719 --- /dev/null +++ b/configs/samples/festival.conf.sample @@ -0,0 +1,35 @@ +; +; 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 +; +; + diff --git a/configs/samples/followme.conf.sample b/configs/samples/followme.conf.sample new file mode 100644 index 000000000..a233948bf --- /dev/null +++ b/configs/samples/followme.conf.sample @@ -0,0 +1,91 @@ +; 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. +; +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. +; +; +[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. +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. + + diff --git a/configs/samples/func_odbc.conf.sample b/configs/samples/func_odbc.conf.sample new file mode 100644 index 000000000..fd528d216 --- /dev/null +++ b/configs/samples/func_odbc.conf.sample @@ -0,0 +1,96 @@ +; +; func_odbc.conf +; +; Each context is a separately defined function. By convention, all +; functions are entirely uppercase, so the defined contexts should also +; be all-uppercase, but there is nothing that enforces this. All functions +; are case-sensitive, however. +; +; For substitution, you have ${ARG1}, ${ARG2} ... ${ARGn} +; for the arguments to each SQL statement. +; +; In addition, for write statements, you have ${VAL1}, ${VAL2} ... ${VALn} +; parsed, just like arguments, for the values. In addition, if you want the +; whole value, never mind the parsing, you can get that with ${VALUE}. +; +; +; If you have data which may potentially contain single ticks, you may wish +; to use the dialplan function SQL_ESC() to escape the data prior to its +; inclusion in the SQL statement. +; +; +; The following options are available in this configuration file: +; +; readhandle A comma-separated list of DSNs (from res_odbc.conf) to use when +; executing the readsql statement. Each DSN is tried, in +; succession, until the statement succeeds. You may specify up to +; 5 DSNs per function class. If not specified, it will default to +; the value of writehandle or dsn, if specified. +; writehandle A comma-separated list of DSNs (from res_odbc.conf) to use when +; executing the writesql statement. The same rules apply as to +; readhandle. "dsn" is a synonym for "writehandle". +; readsql The statement to execute when reading from the function class. +; writesql The statement to execute when writing to the function class. +; insertsql The statement to execute when writing to the function class +; succeeds, but initially indicates that 0 rows were affected. +; prefix Normally, all function classes are prefixed with "ODBC" to keep +; them uniquely named. You may choose to change this prefix, which +; may be useful to segregate a collection of certain function +; classes from others. +; escapecommas This option may be used to turn off the default behavior of +; escaping commas which occur within a field. If commas are +; escaped (the default behavior), then fields containing commas +; will be treated as a single value when assigning to ARRAY() or +; HASH(). If commas are not escaped, then values will be separated +; at the comma within fields. Please note that turning this option +; off is incompatible with the functionality of HASH(). +; synopsis Appears in the synopsis field for the command +; 'core show function <function name>' +; mode This option may be set to 'multirow' to allow the function +; specified to return more than a single row. However, this +; changes the way that func_odbc normally works. Instead of the +; invocation of the function returning a row, it returns an opaque +; ID, which may be passed to ODBC_FETCH() to return each row in +; turn. ODBC_FETCH_STATUS returns SUCCESS or FAILURE, to indicate +; whether any results were stored, and you should call ODBC_Finish +; on the ID to clean up any remaining results when you are done +; with the query. Also, the variable ODBCROWS is set initially, +; which may be used in an iterative fashion to return each row in +; the result. +; Please note that multirow queries are isolated to the channel, +; and rows may not be fetched outside of the channel where the +; query was initially performed. Additionally, as the results are +; associated with a channel, mode=multirow is incompatible with +; the global space. +; rowlimit Rowlimit limits the total number of rows which can be stored for +; that query. For mode=multirow, otherwise, func_odbc will +; attempt to store all rows in the resultset, up to the maximum +; amount of memory. In normal mode, rowlimit can be set to allow +; additional rows to be fetched, rather than just the first one. +; These additional rows can be returned by using the name of the +; function which was called to retrieve the first row as an +; argument to ODBC_FETCH(). + + +; ODBC_SQL - Allow an SQL statement to be built entirely in the dialplan +[SQL] +dsn=mysql1 +readsql=${ARG1} + +; ODBC_ANTIGF - A blacklist. +[ANTIGF] +dsn=mysql1,mysql2 ; Use mysql1 as the primary handle, but fall back to mysql2 + ; if mysql1 is down. Supports up to 5 comma-separated + ; DSNs. "dsn" may also be specified as "readhandle" and + ; "writehandle", if it is important to separate reads and + ; writes to different databases. +readsql=SELECT COUNT(*) FROM exgirlfriends WHERE callerid='${SQL_ESC(${ARG1})}' +syntax=<callerid> +synopsis=Check if a specified callerid is contained in the ex-gf database + +; ODBC_PRESENCE - Retrieve and update presence +[PRESENCE] +dsn=mysql1 +readsql=SELECT location FROM presence WHERE id='${SQL_ESC(${ARG1})}' +writesql=UPDATE presence SET location='${SQL_ESC(${VAL1})}' WHERE id='${SQL_ESC(${ARG1})}' + diff --git a/configs/samples/hep.conf.sample b/configs/samples/hep.conf.sample new file mode 100644 index 000000000..40b17aa0e --- /dev/null +++ b/configs/samples/hep.conf.sample @@ -0,0 +1,16 @@ +; +; res_hep Module configuration for Asterisk +; + +; All settings are currently set in the general section. +[general] +enabled = yes ; 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. + diff --git a/configs/samples/http.conf.sample b/configs/samples/http.conf.sample new file mode 100644 index 000000000..44095a11e --- /dev/null +++ b/configs/samples/http.conf.sample @@ -0,0 +1,96 @@ +; +; 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] +; +; 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 +; +; 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/ +; diff --git a/configs/samples/iax.conf.sample b/configs/samples/iax.conf.sample new file mode 100644 index 000000000..e17c7dfeb --- /dev/null +++ b/configs/samples/iax.conf.sample @@ -0,0 +1,672 @@ +; +; Inter-Asterisk eXchange v2 (IAX2) Channel Driver configuration +; +; This configuration is read when the chan_iax2.so module is loaded, and is +; re-read when the module is reloaded, such as when invoking the CLI command: +; +; *CLI> iax2 reload +; + +; General settings, like port number to bind to, and an option address (the +; default is to bind to all local addresses). + +[general] + +; Listener Addresses +; +; Use the 'bindaddr' and 'bindport' options to specify on which address and port +; the IAX2 channel driver will listen for incoming requests. +; +; + +;bindport=4569 ; The default port to listen on + ; NOTE: bindport must be specified BEFORE bindaddr or + ; may be specified on a specific bindaddr if followed by + ; colon and port (e.g. bindaddr=192.168.0.1:4569) or for + ; IPv6 the address needs to be in brackets then colon + ; and port (e.g. bindaddr=[2001:db8::1]:4569). + +;bindaddr=192.168.0.1 ; You can specify 'bindaddr' more than once to bind to + ; multiple addresses, but the first will be the + ; default. IPv6 addresses are accepted. + +; +; Set 'iaxcompat' to yes if you plan to use layered switches or some other +; scenario which may cause some delay when doing a lookup in the dialplan. It +; incurs a small performance hit to enable it. This option causes Asterisk to +; spawn a separate thread when it receives an IAX2 DPREQ (Dialplan Request) +; instead of blocking while it waits for a response. +; +; Accepted values: yes, no +; Default value: no +; +;iaxcompat=yes +; + +; +; Disable UDP checksums (if nochecksums is set, then no checkums will +; be calculated/checked on systems supporting this feature) +; +; Accepted values: yes, no +; Default value: no +; +;nochecksums=yes +; + +; +; For increased security against brute force password attacks enable +; 'delayreject' which will delay the sending of authentication reject for REGREQ +; or AUTHREP if there is a password. +; +; Accepted values: yes, no +; Default value: no +; +;delayreject=yes +; + +; +; You may specify a global default AMA flag for iaxtel calls. These flags are +; used in the generation of call detail records. +; +; Accepted values: default, omit, billing, documentation +; Default value: default +; +;amaflags=billing +; + +; +; ADSI (Analog Display Services Interface) can be enabled if you have (or may +; have) ADSI compatible CPE equipment. +; +; Accepted values: yes, no +; Default value: no +; +;adsi=yes +; + +; +; Whether or not to perform an SRV lookup on outbound calls. +; +; Accepted values: yes, no +; Default value: no +; +;srvlookup=yes +; + +; +; You may specify a default account for Call Detail Records (CDRs) in addition to +; specifying on a per-user basis. +; +; Accepted values: Any string value up to 19 characters in length +; Default value: <empty> +; +;accountcode=lss0101 +; + +; +; You may specify a global default language for users. This can be specified +; also on a per-user basis. If omitted, will fallback to English (en). +; +; Accepted values: A language tag such as 'en' or 'es' +; Default value: en +; +;language=en +; + +; +; This option specifies a preference for which music-on-hold class this channel +; should listen to when put on hold if the music class has not been set on the +; channel with Set(CHANNEL(musicclass)=whatever) in the dialplan, and the peer +; channel putting this one on hold did not suggest a music class. +; +; If this option is set to "passthrough", then the hold message will always be +; passed through as signalling instead of generating hold music locally. +; +; This option may be specified globally, or on a per-user or per-peer basis. +; +; Accepted values: passthrough, or any music-on-hold class name +; Default value: <empty> +; +;mohinterpret=default +; + +; +; The 'mohsuggest' option specifies which music on hold class to suggest to the +; peer channel when this channel places the peer on hold. It may be specified +; globally or on a per-user or per-peer basis. +; +;mohsuggest=default +; + +; +; Specify bandwidth of low, medium, or high to control which codecs are used +; in general. +; +bandwidth=low +; + +; +; You can also fine tune codecs here using "allow" and "disallow" clauses with +; specific codecs. Use "all" to represent all formats. +; +;allow=all +;disallow=g723.1 +disallow=lpc10 +;allow=gsm +; + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Jitter Buffer +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +; +; You can adjust several parameters relating to the jitter buffer. The jitter +; buffer's function is to compensate for varying network delay. +; +; All of the jitter buffer settings are in milliseconds. The jitter buffer +; works for INCOMING audio only - the outbound audio will be dejittered by the +; jitter buffer at the other end. +; +; jitterbuffer=yes|no: global default as to whether you want +; the jitter buffer at all. +; +; forcejitterbuffer=yes|no: in the ideal world, when we bridge VoIP channels +; we don't want to do jitterbuffering on the switch, since the endpoints +; can each handle this. However, some endpoints may have poor jitterbuffers +; themselves, so this option will force * to always jitterbuffer, even in this +; case. +; +; maxjitterbuffer: a maximum size for the jitter buffer. +; Setting a reasonable maximum here will prevent the call delay +; from rising to silly values in extreme situations; you'll hear +; SOMETHING, even though it will be jittery. +; +; resyncthreshold: when the jitterbuffer notices a significant change in delay +; that continues over a few frames, it will resync, assuming that the change in +; delay was caused by a timestamping mix-up. The threshold for noticing a +; change in delay is measured as twice the measured jitter plus this resync +; threshold. +; Resyncing can be disabled by setting this parameter to -1. +; +; maxjitterinterps: the maximum number of interpolation frames the jitterbuffer +; should return in a row. Since some clients do not send CNG/DTX frames to +; indicate silence, the jitterbuffer will assume silence has begun after +; returning this many interpolations. This prevents interpolating throughout +; a long silence. +; +; jittertargetextra: number of milliseconds by which the new jitter buffer +; will pad its size. the default is 40, so without modification, the new +; jitter buffer will set its size to the jitter value plus 40 milliseconds. +; increasing this value may help if your network normally has low jitter, +; but occasionally has spikes. +; + +jitterbuffer=no +forcejitterbuffer=no +;maxjitterbuffer=1000 +;maxjitterinterps=10 +;resyncthreshold=1000 +;jittertargetextra=40 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; IAX2 Encryption +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +; +; Enable IAX2 encryption. The default is no. +; +;encryption=yes +; + +; +; Force encryption insures no connection is established unless both sides +; support encryption. By turning this option on, encryption is automatically +; turned on as well. The default is no. +; +;forceencryption=yes +; + +; This option defines the maximum payload in bytes an IAX2 trunk can support at +; a given time. The best way to explain this is to provide an example. If the +; maximum number of calls to be supported is 800, and each call transmits 20ms +; frames of audio using ulaw: +; +; (8000hz / 1000ms) * 20ms * 1 byte per sample = 160 bytes per frame +; +; The maximum load in bytes is: +; +; (160 bytes per frame) * (800 calls) = 128000 bytes +; +; Once this limit is reached, calls may be dropped or begin to lose audio. +; Depending on the codec in use and number of channels to be supported this value +; may need to be raised, but in most cases the default value is large enough. +; +; trunkmaxsize = 128000 ; defaults to 128000 bytes, which supports up to 800 + ; calls of ulaw at 20ms a frame. + +; With a large amount of traffic on IAX2 trunks, there is a risk of bad voice +; quality when allowing the Linux system to handle fragmentation of UDP packets. +; Depending on the size of each payload, allowing the OS to handle fragmentation +; may not be very efficient. This setting sets the maximum transmission unit for +; IAX2 UDP trunking. The default is 1240 bytes which means if a trunk's payload +; is over 1240 bytes for every 20ms it will be broken into multiple 1240 byte +; messages. Zero disables this functionality and let's the OS handle +; fragmentation. +; +; trunkmtu = 1240 ; trunk data will be sent in 1240 byte messages. + +; trunkfreq sets how frequently trunk messages are sent in milliseconds. This +; value is 20ms by default, which means the trunk will send all the data queued +; to it in the past 20ms. By increasing the time between sending trunk messages, +; the trunk's payload size will increase as well. Note, depending on the size +; set by trunkmtu, messages may be sent more often than specified. For example +; if a trunk's message size grows to the trunkmtu size before 20ms is reached +; that message will be sent immediately. Acceptable values are between 10ms and +; 1000ms. +; +; trunkfreq=20 ; How frequently to send trunk msgs (in ms). This is 20ms by + ; default. + +; Should we send timestamps for the individual sub-frames within trunk frames? +; There is a small bandwidth use for these (less than 1kbps/call), but they +; ensure that frame timestamps get sent end-to-end properly. If both ends of +; all your trunks go directly to TDM, _and_ your trunkfreq equals the frame +; length for your codecs, you can probably suppress these. The receiver must +; also support this feature, although they do not also need to have it enabled. +; +; trunktimestamps=yes + +; Minimum and maximum amounts of time that IAX2 peers can request as a +; registration expiration interval (in seconds). +; minregexpire = 60 +; maxregexpire = 60 + +; IAX2 helper threads + +; Establishes the number of iax helper threads to handle I/O. +; iaxthreadcount = 10 + +; Establishes the number of extra dynamic threads that may be spawned to handle I/O +; iaxmaxthreadcount = 100 + +; +; We can register with another IAX2 server to let him know where we are +; in case we have a dynamic IP address for example +; +; Register with tormenta using username marko and password secretpass +; +;register => marko:secretpass@tormenta.linux-support.net +; +; Register joe at remote host with no password +; +;register => joe@remotehost:5656 +; +; Register marko at tormenta.linux-support.net using RSA key "torkey" +; +;register => marko:[torkey]@tormenta.linux-support.net +; +; Sample Registration for iaxtel +; +; Visit http://www.iaxtel.com to register with iaxtel. Replace "user" +; and "pass" with your username and password for iaxtel. Incoming +; calls arrive at the "s" extension of "default" context. +; +;register => user:pass@iaxtel.com +; +; Sample Registration for IAX2 + FWD +; +; To register using IAX2 with FWD, it must be enabled by visiting the URL +; http://www.fwdnet.net/index.php?section_id=112 +; +; Note that you need an extension in you default context which matches +; your free world dialup number. Please replace "FWDNumber" with your +; FWD number and "passwd" with your password. +; +;register => FWDNumber:passwd@iax.fwdnet.net +; +; Through the use of the res_stun_monitor module, Asterisk has the ability to detect when the +; perceived external network address has changed. When the stun_monitor is installed and +; configured, chan_iax will renew all outbound registrations when the monitor detects any sort +; of network change has occurred. By default this option is enabled, but only takes effect once +; res_stun_monitor is configured. If res_stun_monitor is enabled and you wish to not +; generate all outbound registrations on a network change, use the option below to disable +; this feature. +; +; subscribe_network_change_event = yes ; on by default +; +; You can enable authentication debugging to increase the amount of +; debugging traffic. +; +;authdebug = yes +; +; See https://wiki.asterisk.org/wiki/display/AST/IP+Quality+of+Service for a description of these parameters. +;tos=ef +;cos=5 +; +; If regcontext is specified, Asterisk will dynamically create and destroy +; a NoOp priority 1 extension for a given peer who registers or unregisters +; with us. The actual extension is the 'regexten' parameter of the registering +; peer or its name if 'regexten' is not provided. More than one regexten +; may be supplied if they are separated by '&'. Patterns may be used in +; regexten. +; +;regcontext=iaxregistrations +; +; If we don't get ACK to our NEW within 2000ms, and autokill is set to yes, +; then we cancel the whole thing (that's enough time for one retransmission +; only). This is used to keep things from stalling for a long time for a host +; that is not available, but would be ill advised for bad connections. In +; addition to 'yes' or 'no' you can also specify a number of milliseconds. +; See 'qualify' for individual peers to turn on for just a specific peer. +; +autokill=yes +; +; codecpriority controls the codec negotiation of an inbound IAX2 call. +; This option is inherited to all user entities. It can also be defined +; in each user entity separately which will override the setting in general. +; +; The valid values are: +; +; caller - Consider the callers preferred order ahead of the host's. +; host - Consider the host's preferred order ahead of the caller's. +; disabled - Disable the consideration of codec preference altogether. +; (this is the original behaviour before preferences were added) +; reqonly - Same as disabled, only do not consider capabilities if +; the requested format is not available the call will only +; be accepted if the requested format is available. +; +; The default value is 'host' +; +;codecpriority=host +; +; allowfwdownload controls whether this host will serve out firmware to +; IAX2 clients which request it. This has only been used for the IAXy, +; and it has been recently proven that this firmware distribution method +; can be used as a source of traffic amplification attacks. Also, the +; IAXy firmware has not been updated for at least 18 months, so unless +; you are provisioning IAXys in a secure network, we recommend that you +; leave this option to the default, off. +; +;allowfwdownload=yes + +;rtcachefriends=yes ; Cache realtime friends by adding them to the internal list + ; just like friends added from the config file only on a + ; as-needed basis? (yes|no) + +;rtsavesysname=yes ; Save systemname in realtime database at registration + ; Default = no + +;rtupdate=yes ; Send registry updates to database using realtime? (yes|no) + ; If set to yes, when a IAX2 peer registers successfully, + ; the IP address, the origination port, the registration period, + ; and the username of the peer will be set to database via realtime. + ; If not present, defaults to 'yes'. + +;rtautoclear=yes ; Auto-Expire friends created on the fly on the same schedule + ; as if it had just registered? (yes|no|<seconds>) + ; If set to yes, when the registration expires, the friend will + ; vanish from the configuration until requested again. + ; If set to an integer, friends expire within this number of + ; seconds instead of the registration interval. + +;rtignoreregexpire=yes ; When reading a peer from Realtime, if the peer's registration + ; has expired based on its registration interval, used the stored + ; address information regardless. (yes|no) + +;parkinglot=edvina ; Default parkinglot for IAX2 peers and users + ; This can also be configured per device + ; Parkinglots are defined in features.conf + +; +; The following two options are used to disable call token validation for the +; purposes of interoperability with IAX2 endpoints that do not yet support it. +; +; Call token validation can be set as optional for a single IP address or IP +; address range by using the 'calltokenoptional' option. 'calltokenoptional' is +; only a global option. +; +;calltokenoptional=209.16.236.73/255.255.255.0 +; +; By setting 'requirecalltoken=no', call token validation becomes optional for +; that peer/user. By setting 'requirecalltoken=auto', call token validation +; is optional until a call token supporting peer registers successfully using +; call token validation. This is used as an indication that from now on, we +; can require it from this peer. So, requirecalltoken is internally set to yes. +; requirecalltoken may only be used in peer/user/friend definitions, +; not in the global scope. +; By default, 'requirecalltoken=yes'. +; +;requirecalltoken=no +; + +; +; These options are used to limit the amount of call numbers allocated to a +; single IP address. Before changing any of these values, it is highly encouraged +; to read the user guide associated with these options first. In most cases, the +; default values for these options are sufficient. +; +; The 'maxcallnumbers' option limits the amount of call numbers allowed for each +; individual remote IP address. Once an IP address reaches it's call number +; limit, no more new connections are allowed until the previous ones close. This +; option can be used in a peer definition as well, but only takes effect for +; the IP of a dynamic peer after it completes registration. +; +;maxcallnumbers=512 +; +; The 'maxcallnumbers_nonvalidated' is used to set the combined number of call +; numbers that can be allocated for connections where call token validation +; has been disabled. Unlike the 'maxcallnumbers' option, this limit is not +; separate for each individual IP address. Any connection resulting in a +; non-call token validated call number being allocated contributes to this +; limit. For use cases, see the call token user guide. This option's +; default value of 8192 should be sufficient in most cases. +; +;maxcallnumbers_nonvalidated=1024 +; +; The [callnumberlimits] section allows custom call number limits to be set +; for specific IP addresses and IP address ranges. These limits take precedence +; over the global 'maxcallnumbers' option, but may still be overridden by a +; peer defined 'maxcallnumbers' entry. Note that these limits take effect +; for every individual address within the range, not the range as a whole. +; +;[callnumberlimits] +;10.1.1.0/255.255.255.0 = 24 +;10.1.2.0/255.255.255.0 = 32 +; + +; The shrinkcallerid function removes '(', ' ', ')', non-trailing '.', and '-' not +; in square brackets. For example, the Caller*ID value 555.5555 becomes 5555555 +; when this option is enabled. Disabling this option results in no modification +; of the Caller*ID value, which is necessary when the Caller*ID represents something +; that must be preserved. This option can only be used in the [general] section. +; By default this option is on. +; +;shrinkcallerid=yes ; on by default + +; Guest sections for unauthenticated connection attempts. Just specify an +; empty secret, or provide no secret section. +; +[guest] +type=user +context=public +callerid="Guest IAX User" + +; +; Trust Caller*ID Coming from iaxtel.com +; +[iaxtel] +type=user +context=default +auth=rsa +inkeys=iaxtel + +; +; Trust Caller*ID Coming from iax.fwdnet.net +; +[iaxfwd] +type=user +context=default +auth=rsa +inkeys=freeworlddialup + +; +; Trust Caller*ID delivered over DUNDi/e164 +; +;[dundi] +;type=user +;dbsecret=dundi/secret +;context=dundi-e164-local + +; +; Further user sections may be added, specifying a context and a secret used +; for connections with that given authentication name. Limited IP based +; access control is allowed by use of "permit", "deny", and "acl" keywords. +; Multiple rules are permitted. Multiple permitted contexts may be specified, +; in which case the first will be the default. You can also override +; Caller*ID so that when you receive a call you set the Caller*ID to be what +; you want instead of trusting what the remote user provides +; +; There are three authentication methods that are supported: md5, plaintext, +; and rsa. The least secure is "plaintext", which sends passwords cleartext +; across the net. "md5" uses a challenge/response md5 sum arrangement, but +; still requires both ends have plain text access to the secret. "rsa" allows +; unidirectional secret knowledge through public/private keys. If "rsa" +; authentication is used, "inkeys" is a list of acceptable public keys on the +; local system that can be used to authenticate the remote peer, separated by +; the ":" character. "outkey" is a single, private key to use to authenticate +; to the other side. Public keys are named /var/lib/asterisk/keys/<name>.pub +; while private keys are named /var/lib/asterisk/keys/<name>.key. Private +; keys should always be 3DES encrypted. +; +; +; NOTE: All hostnames and IP addresses in this file are for example purposes +; only; you should not expect any of them to actually be available for +; your use. +; +;[markster] +;type=user +;context=default +;context=local +;auth=md5,plaintext,rsa +;secret=markpasswd +;setvar=ATTENDED_TRANSFER_COMPLETE_SOUND=beep ; This channel variable will + ; cause the given audio file to + ; be played upon completion of + ; an attended transfer to the + ; target of the transfer. +;dbsecret=mysecrets/place ; Secrets can be stored in astdb, too +;transfer=no ; Disable IAX2 native transfer +;transfer=mediaonly ; When doing IAX2 native transfers, transfer only + ; the media stream +;jitterbuffer=yes ; Override the global setting and enable the jitter + ; buffer for this user +;maxauthreq=10 ; Set the maximum number of outstanding AUTHREQs + ; waiting for replies. If this limit is reached, + ; any further authentication will be blocked, until + ; the pending requests expire or a reply is + ; received. +;callerid="Mark Spencer" <(256) 428-6275> +;deny=0.0.0.0/0.0.0.0 +;accountcode=markster0101 +;permit=209.16.236.73/255.255.255.0 +;language=en ; Use english as default language +;encryption=yes ; Enable IAX2 encryption. The default is no. +;keyrotate=off ; This is a compatibility option for older versions + ; of IAX2 that do not support key rotation with + ; encryption. This option will disable the + ; IAX_COMMAND_RTENC message. The default is on. + +; +; Peers may also be specified, with a secret and a remote hostname. +; +[demo] +type=peer +username=asterisk +secret=supersecret +host=216.207.245.47 +description=Demo System At Digium ; Description of this peer, as listed by + ; 'iax2 show peers' +;sendani=no +;host=asterisk.linux-support.net +;port=5036 +;mask=255.255.255.255 +;qualify=yes ; Make sure this peer is alive. +;qualifysmoothing = yes ; Use an average of the last two PONG results to + ; reduce falsely detected LAGGED hosts. The default + ; is 'no.' +;qualifyfreqok = 60000 ; How frequently to ping the peer when everything + ; seems to be OK, in milliseconds. +;qualifyfreqnotok = 10000 ; How frequently to ping the peer when it's either + ; LAGGED or UNAVAILABLE, in milliseconds. +;jitterbuffer=no ; Turn off jitter buffer for this peer +; +;encryption=yes ; Enable IAX2 encryption. The default is no. +;keyrotate=off ; This is a compatibility option for older versions + ; of IAX2 that do not support key rotation with + ; encryption. This option will disable the + ; IAX_COMMAND_RTENC message. The default is 'on.' + +; Peers can remotely register as well, so that they can be mobile. Default +; IPs can also optionally be given but are not required. Caller*ID can be +; suggested to the other side as well if it is for example a phone instead of +; another PBX. +;connectedline=yes ; Set if connected line and redirecting information updates +; ; are passed between Asterisk servers for this peer. +; ; yes - Sending and receiving updates are enabled. +; ; send - Only send updates. +; ; receive - Only process received updates. +; ; no - Sending and receiving updates are disabled. +; ; Default is "no". +; ; +; ; Note: Because of an incompatibility between Asterisk v1.4 +; ; and Asterisk v1.8 or later, this option must be set +; ; to "no" toward the Asterisk v1.4 peer. A symptom of the +; ; incompatibility is the call gets disconnected unexpectedly. + + +;[dynamichost] +;host=dynamic +;secret=mysecret +; Note: app_voicemail mailboxes must be in the form of mailbox@context. +;mailbox=1234 ; Notify about mailbox 1234 +;inkeys=key1:key2 +;peercontext=local ; Default context to request for calls to peer +;defaultip=216.207.245.34 +;callerid="Some Host" <(256) 428-6011> + +;[biggateway] +;type=peer +;host=192.168.0.1 +;description=Gateway to PSTN +;context=* +;secret=myscret +;trunk=yes ; Use IAX2 trunking with this host +;timezone=America/New_York ; Set a timezone for the date/time IE + +; +; Friends are a shortcut for creating a user and a peer with the same values. +; + +;[marko] +;type=friend +;host=dynamic +;regexten=1234 +;secret=moofoo ; Multiple secrets may be specified. For a "user", all +;secret=foomoo ; specified entries will be accepted as valid. For a "peer", +;secret=shazbot ; only the last specified secret will be used. +;context=default +;permit=0.0.0.0/0.0.0.0 +;acl=example_named_acl + +; +; With immediate=yes, an IAX2 phone or a phone on an IAXy acts as a hot-line +; which goes immediately to the s extension when picked up. Useful for +; elevator phones, manual service, or other similar applications. +; +;[manual] +;type=friend +;host=dynamic +;immediate=yes ; go immediately to s extension when picked up +;secret=moofoo ; when immediate=yes is specified, secret is required +;context=number-please ; we start at the s extension in this context +; diff --git a/configs/samples/iaxprov.conf.sample b/configs/samples/iaxprov.conf.sample new file mode 100644 index 000000000..668809c4d --- /dev/null +++ b/configs/samples/iaxprov.conf.sample @@ -0,0 +1,81 @@ +; +; IAX2 Provisioning Information +; +; Contains provisioning information for templates and for specific service +; entries. +; +; Templates provide a group of settings from which provisioning takes place. +; A template may be based upon any template that has been specified before +; it. If the template that an entry is based on is not specified then it is +; presumed to be 'default' (unless it is the first of course). +; +; Templates which begin with 'si-' are used for provisioning units with +; specific service identifiers. For example the entry "si-000364000126" +; would be used when the device with the corresponding service identifier of +; "000364000126" attempts to register or make a call. +; +[default] +; +; The port number the device should use to bind to. The default is 4569. +; +;port=4569 +; +; server is our PRIMARY server for registration and placing calls +; +;server=192.168.69.3 +; +; altserver is the BACKUP server for registration and placing calls in the +; event the primary server is unavailable. +; +;altserver=192.168.69.4 +; +; port is the port number to use for IAX2 outbound. The connections to the +; server and altserver -- default is of course 4569. +;serverport=4569 +; +; language is the preferred language for the device +; +;language=en +; +; codec is the requested codec. The iaxy supports ulaw and adpcm +; +codec=ulaw +; +; flags is a comma separated list of flags which the device should +; use and may contain any of the following keywords: +; +; "register" - Register with server +; "secure" - Do not accept calls / provisioning not originated by the server +; "heartbeat" - Generate status packets on port 9999 sent to 255.255.255.255 +; "debug" - Output extra debugging to port 9999 +; +; Note that use can use += and -= to adjust parameters +; +flags=register,heartbeat +; +; See https://wiki.asterisk.org/wiki/display/AST/IP+Quality+of+Service for a description of this parameter. +;tos=ef +; +; Example iaxy provisioning +; +;[si-000364000126] +;user=iaxy +;pass=bitsy +;flags += debug + +;[si-000364000127] +;user=iaxy2 +;pass=bitsy2 +;template=si-000364000126 +;flags += debug + +; +;[*] +; +; If specified, the '*' provisioning is used for all devices which do not +; have another provisioning entry within the file. If unspecified, no +; provisioning will take place for devices which have no entry. DO NOT +; USE A '*' PROVISIONING ENTRY UNLESS YOU KNOW WHAT YOU'RE DOING. +; +;template=default + diff --git a/configs/samples/indications.conf.sample b/configs/samples/indications.conf.sample new file mode 100644 index 000000000..7ac1ba936 --- /dev/null +++ b/configs/samples/indications.conf.sample @@ -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 diff --git a/configs/samples/logger.conf.sample b/configs/samples/logger.conf.sample new file mode 100644 index 000000000..0fa7dcc8d --- /dev/null +++ b/configs/samples/logger.conf.sample @@ -0,0 +1,134 @@ +; +; 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 +; +[logfiles] +; +; Format is "filename" and then "levels" of debugging to be included: +; debug +; notice +; warning +; error +; verbose(<level>) +; dtmf +; fax +; security +; +; Special filename "console" represents the root console +; +; Filenames can either be relative to the standard Asterisk log directory +; (see 'astlogdir' in asterisk.conf), or absolute paths that begin with +; '/'. +; +; 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 + +;syslog keyword : This special keyword logs to syslog facility +; +;syslog.local0 => notice,warning,error +; diff --git a/configs/samples/manager.conf.sample b/configs/samples/manager.conf.sample new file mode 100644 index 000000000..f31c6d397 --- /dev/null +++ b/configs/samples/manager.conf.sample @@ -0,0 +1,157 @@ +; +; AMI - The Asterisk Manager Interface +; +; Third party application call management support and PBX event supervision +; +; This configuration file is read every time someone logs in +; +; 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. +; 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 + diff --git a/configs/samples/meetme.conf.sample b/configs/samples/meetme.conf.sample new file mode 100644 index 000000000..c40c4606e --- /dev/null +++ b/configs/samples/meetme.conf.sample @@ -0,0 +1,45 @@ +; +; Configuration file for MeetMe simple conference rooms for Asterisk of course. +; +; This configuration file is read every time you call app meetme() + +[general] +;audiobuffers=32 ; The number of 20ms audio buffers to be used + ; when feeding audio frames from non-DAHDI channels + ; into the conference; larger numbers will allow + ; for the conference to 'de-jitter' audio that arrives + ; at different timing than the conference's timing + ; source, but can also allow for latency in hearing + ; the audio from the speaker. Minimum value is 2, + ; maximum value is 32. +; +; Conferences may be scheduled from realtime? +;schedule=yes +; +; Update realtime when members login/out of the conference +;logmembercount=no +; +; How much earlier than the start time should we allow participants to +; join the conference (in seconds)? +;fuzzystart=300 +; +; If the participants join too early, how much time should we allow +; to tell them that they've joined too early, rather than telling them +; the conference simply doesn't exist (in seconds)? +;earlyalert=3600 +; +; How many seconds before the scheduled end of the conference should +; the participants be warned? +;endalert=120 +; +[rooms] +; +; Usage is conf => confno[,pin][,adminpin] +; +; Note that once a participant has called the conference, a change to the pin +; number done in this file will not take effect until there are no more users +; in the conference and it goes away. When it is created again, it will have +; the new pin number. +; +;conf => 1234 +;conf => 2345,9938 diff --git a/configs/samples/mgcp.conf.sample b/configs/samples/mgcp.conf.sample new file mode 100644 index 000000000..7c725bc3d --- /dev/null +++ b/configs/samples/mgcp.conf.sample @@ -0,0 +1,142 @@ +; +; MGCP Configuration for Asterisk +; +[general] +;port = 2427 +;bindaddr = 0.0.0.0 + +; See https://wiki.asterisk.org/wiki/display/AST/IP+Quality+of+Service for a description of these parameters. +;tos=cs3 ; Sets TOS for signaling packets. +;tos_audio=ef ; Sets TOS for RTP audio packets. +;cos=3 ; Sets 802.1p priority for signaling packets. +;cos_audio=5 ; Sets 802.1p priority for RTP audio packets. + +;---------------------- DIGIT TIMEOUTS ---------------------------- +firstdigittimeout = 30000 ; default 16000 = 16s +gendigittimeout = 10000 ; default 8000 = 8s +matchdigittimeout = 5000 ; defaults 3000 = 3s + +;------------------------------ JITTER BUFFER CONFIGURATION -------------------------- +; jbenable = yes ; Enables the use of a jitterbuffer on the receiving side of a + ; MGCP channel. Defaults to "no". An enabled jitterbuffer will + ; be used only if the sending side can create and the receiving + ; side can not accept jitter. The MGCP channel can accept jitter, + ; thus an enabled jitterbuffer on the receive MGCP side will only + ; be used if the sending side can create jitter and jbforce is + ; also set to yes. + +; jbforce = no ; Forces the use of a jitterbuffer on the receive side of a MGCP + ; channel. Defaults to "no". + +; jbmaxsize = 200 ; Max length of the jitterbuffer in milliseconds. + +; jbresyncthreshold = 1000 ; Jump in the frame timestamps over which the jitterbuffer is + ; resynchronized. Useful to improve the quality of the voice, with + ; big jumps in/broken timestamps, usually sent from exotic devices + ; and programs. Defaults to 1000. + +; jbimpl = fixed ; Jitterbuffer implementation, used on the receiving side of a MGCP + ; channel. Two implementations are currently available - "fixed" + ; (with size always equals to jbmax-size) and "adaptive" (with + ; variable size, actually the new jb of IAX2). Defaults to fixed. + +; jbtargetextra = 40 ; This option only affects the jb when 'jbimpl = adaptive' is set. + ; The option represents the number of milliseconds by which the new + ; jitter buffer will pad its size. the default is 40, so without + ; modification, the new jitter buffer will set its size to the jitter + ; value plus 40 milliseconds. increasing this value may help if your + ; network normally has low jitter, but occasionally has spikes. + +; jblog = no ; Enables jitterbuffer frame logging. Defaults to "no". +;----------------------------------------------------------------------------------- + +;[dlinkgw] +;host = 192.168.0.64 +;context = default +;directmedia = no +;line => aaln/2 +;line => aaln/1 + +;; The MGCP channel supports the following service codes: +;; # - Transfer +;; *67 - Calling Number Delivery Blocking +;; *70 - Cancel Call Waiting +;; *72 - Call Forwarding Activation +;; *73 - Call Forwarding Deactivation +;; *78 - Do Not Disturb Activation +;; *79 - Do Not Disturb Deactivation +;; *8 - Call pick-up +; +; known to work with Swissvoice IP10s +;[192.168.1.20] +;context=local +;host=192.168.1.20 +;callerid = "John Doe" <123> +;callgroup=0 ; in the range from 0 to 63 +;pickupgroup=0 ; in the range from 0 to 63 +;nat=no +;threewaycalling=yes +;transfer=yes ; transfer requires threewaycalling=yes. Use FLASH to transfer +;callwaiting=yes ; this might be a cause of trouble for ip10s +;cancallforward=yes +;line => aaln/1 +; + +;[dph100] +; +; Supporting the DPH100M requires defining DLINK_BUGGY_FIRMWARE in +; chan_mgcp.c in addition to enabling the slowsequence mode due to +; bugs in the D-Link firmware +; +;context=local +;host=dynamic +;dtmfmode=none ; DTMF Mode can be 'none', 'rfc2833', or 'inband' or + ; 'hybrid' which starts in none and moves to inband. Default is none. +;slowsequence=yes ; The DPH100M does not follow MGCP standards for sequencing +;line => aaln/1 + +; known to work with wave7optics FTTH LMGs +;[192.168.1.20] +;accountcode = 1000 ; record this in cdr as account identification for billing +;amaflags = billing ; record this in cdr as flagged for 'billing', + ; 'documentation', or 'omit' +;context = local +;host = 192.168.1.20 +;wcardep = aaln/* ; enables wildcard endpoint and sets it to 'aaln/*' + ; another common format is '*' +;callerid = "Duane Cox" <123> ; now lets setup line 1 using per endpoint configuration... +;callwaiting = no +;callreturn = yes +;cancallforward = yes +;directmedia = no +;transfer = no +;dtmfmode = inband +;setvar=one=1 ; Set channel variables associated with this incoming line +;setvar=two=2 +;line => aaln/1 ; now lets save this config to line1 aka aaln/1 +;clearvars=all ; Reset list of variables back to none +;callerid = "Duane Cox" <456> ; now lets setup line 2 +;callwaiting = no +;callreturn = yes +;cancallforward = yes +;directmedia = no +;transfer = no +;dtmfmode = inband +;line => aaln/2 ; now lets save this config to line2 aka aaln/2 + +; PacketCable +;[sbv5121e-mta.test.local] +;host = 10.0.1.3 +;callwaiting = 1 +;canreinvite = 1 +;dtmfmode = rfc2833 +;amaflags = BILLING +;ncs = yes ; Use NCS 1.0 signalling +;pktcgatealloc = yes ; Allocate DQOS gate on CMTS +;hangupongateremove = yes ; Hangup the channel if the CMTS close the gate +;callerid = 3622622225 +;accountcode = test-3622622225 +;line = aaln/1 +;callerid = 3622622226 +;accountcode = test-3622622226 +;line = aaln/2 diff --git a/configs/samples/minivm.conf.sample b/configs/samples/minivm.conf.sample new file mode 100644 index 000000000..55a39c869 --- /dev/null +++ b/configs/samples/minivm.conf.sample @@ -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-number> <callerid-name> +; +;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åde-meddelande från ${MVM_CALLERID}.\nLä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ä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å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 diff --git a/configs/samples/misdn.conf.sample b/configs/samples/misdn.conf.sample new file mode 100644 index 000000000..ac54dbc5a --- /dev/null +++ b/configs/samples/misdn.conf.sample @@ -0,0 +1,537 @@ +; +; chan_misdn sample config +; + +; general section: +; +; for debugging and general setup, things that are not bound to port groups +; + +[general] +; +; Sets the Path to the misdn-init.conf (for nt_ptp mode checking) +; +misdn_init=/etc/misdn-init.conf + +; set debugging flag: +; 0 - No Debug +; 1 - mISDN Messages and * - Messages, and * - State changes +; 2 - Messages + Message specific Informations (e.g. bearer capability) +; 3 - very Verbose, the above + lots of Driver specific infos +; 4 - even more Verbose than 3 +; +; default value: 0 +; +debug=0 + + + +; set debugging file and flags for mISDNuser (NT-Stack) +; +; flags can be or'ed with the following values: +; +; DBGM_NET 0x00000001 +; DBGM_MSG 0x00000002 +; DBGM_FSM 0x00000004 +; DBGM_TEI 0x00000010 +; DBGM_L2 0x00000020 +; DBGM_L3 0x00000040 +; DBGM_L3DATA 0x00000080 +; DBGM_BC 0x00000100 +; DBGM_TONE 0x00000200 +; DBGM_BCDATA 0x00000400 +; DBGM_MAN 0x00001000 +; DBGM_APPL 0x00002000 +; DBGM_ISDN 0x00004000 +; DBGM_SOCK 0x00010000 +; DBGM_CONN 0x00020000 +; DBGM_CDATA 0x00040000 +; DBGM_DDATA 0x00080000 +; DBGM_SOUND 0x00100000 +; DBGM_SDATA 0x00200000 +; DBGM_TOPLEVEL 0x40000000 +; DBGM_ALL 0xffffffff +; + +ntdebugflags=0 +ntdebugfile=/var/log/misdn-nt.log + + +; some pbx systems do cut the L1 for some milliseconds, to avoid +; dropping running calls, we can set this flag to yes and tell +; mISDNuser not to drop the calls on L2_RELEASE +ntkeepcalls=no + +; the big trace +; +; default value: [not set] +; +;tracefile=/var/log/asterisk/misdn.log + + +; set to yes if you want mISDN_dsp to bridge the calls in HW +; +; default value: yes +; +bridging=no + + +; stops dialtone after getting first digit on nt Port +; +; default value: yes +; +stop_tone_after_first_digit=yes + +; whether to append overlapdialed Digits to Extension or not +; +; default value: yes +; +append_digits2exten=yes + +;;; CRYPTION STUFF + +; Whether to look for dynamic crypting attempt +; +; default value: no +; +dynamic_crypt=no + +; crypt_prefix, what is used for crypting Protocol +; +; default value: [not set] +; +crypt_prefix=** + +; Keys for cryption, you reference them in the dialplan +; later also in dynamic encr. +; +; default value: [not set] +; +crypt_keys=test,muh + +;------------------------------ JITTER BUFFER CONFIGURATION -------------------------- +; jbenable = yes ; Enables the use of a jitterbuffer on the receiving side of a + ; SIP channel. Defaults to "no". An enabled jitterbuffer will + ; be used only if the sending side can create and the receiving + ; side can not accept jitter. The SIP channel can accept jitter, + ; thus a jitterbuffer on the receive SIP side will be used only + ; if it is forced and enabled. + +; jbforce = no ; Forces the use of a jitterbuffer on the receive side of a SIP + ; channel. Defaults to "no". + +; jbmaxsize = 200 ; Max length of the jitterbuffer in milliseconds. + +; jbresyncthreshold = 1000 ; Jump in the frame timestamps over which the jitterbuffer is + ; resynchronized. Useful to improve the quality of the voice, with + ; big jumps in/broken timestamps, usually sent from exotic devices + ; and programs. Defaults to 1000. + +; jbimpl = fixed ; Jitterbuffer implementation, used on the receiving side of a SIP + ; channel. Two implementations are currently available - "fixed" + ; (with size always equals to jbmaxsize) and "adaptive" (with + ; variable size, actually the new jb of IAX2). Defaults to fixed. + +; jbtargetextra = 40 ; This option only affects the jb when 'jbimpl = adaptive' is set. + ; The option represents the number of milliseconds by which the new + ; jitter buffer will pad its size. the default is 40, so without + ; modification, the new jitter buffer will set its size to the jitter + ; value plus 40 milliseconds. increasing this value may help if your + ; network normally has low jitter, but occasionally has spikes. + +; jblog = no ; Enables jitterbuffer frame logging. Defaults to "no". +;----------------------------------------------------------------------------------- + +; users sections: +; +; name your sections as you wish but not "general" or "default" ! +; the sections are Groups, you can dial out in extensions.conf +; with Dial(mISDN/g:extern/101) where extern is a section name, +; chan_misdn tries every port in this section to find a +; new free channel +; +; The default section is not a group section, it just contains config elements +; which are inherited by group sections. +; +[default] + +; define your default context here +; +; default value: default +; +context=misdn + +; language +; +; default value: en +; +language=en + +; +; This option specifies a default music on hold class to +; use when put on hold if the channel's moh class was not +; explicitly set with Set(CHANNEL(musicclass)=whatever) and +; the peer channel did not suggest a class to use. +; +musicclass=default + +; +; Either if we should produce DTMF Tones ourselves +; +senddtmf=yes + +; +; If we should generate Ringing for chan_sip and others +; +far_alerting=no + + +; +; Here you can list which bearer capabilities should be allowed: +; all - allow any bearer capability +; speech - allow speech +; 3_1khz - allow 3.1KHz audio +; digital_unrestricted - allow unrestricted digital +; digital_restricted - allow restricted digital +; video - allow video +; +; Example: +; allowed_bearers=speech,3_1khz +; +allowed_bearers=all + +; Incoming number prefixes for the indicated Type-Of-Number. These are +; inserted before any number (caller, dialed, connected, redirecting, +; redirection) received from the ISDN link if that number has the +; corresponding Type-Of-Number. +; See the dialplan options. +; +; default values: +; unknownprefix= +; internationalprefix=00 +; nationalprefix=0 +; netspecificprefix= +; subscriberprefix= +; abbreviatedprefix= +; +;unknownprefix= +internationalprefix=00 +nationalprefix=0 +;netspecificprefix= +;subscriberprefix= +;abbreviatedprefix= + +; set rx/tx gains between -8 and 8 to change the RX/TX Gain +; +; default values: rxgain: 0 +; txgain: 0 +; +rxgain=0 +txgain=0 + +; some telcos especially in NL seem to need this set to yes, also in +; switzerland this seems to be important +; +; default value: no +; +te_choose_channel=no + + + +; +; Monitors L1 of the port. If L1 is down it tries +; to bring it up. The polling timeout is given in seconds. +; Setting the value to 0 disables monitoring L1 of the port. +; +; default value: 0 +; +; This option is only read at chan_misdn loading time. +; You need to unload and load chan_misdn to change the +; value. An asterisk restart will also do the trick. +; +l1watcher_timeout=0 + +; +; This option defines, if chan_misdn should check the L1 on a PMP +; before making a group call on it. The L1 may go down for PMP Ports +; so we might need this. +; But be aware! a broken or plugged off cable might be used for a group call +; as well, since chan_misdn has no chance to distinguish if the L1 is down +; because of a lost Link or because the Provider shut it down... +; +; default: no +; +pmp_l1_check=no + + +; +; in PMP this option defines which cause should be sent out to +; the 3. caller. chan_misdn does not support callwaiting on TE +; PMP side. This allows to modify the RELEASE_COMPLETE cause +; at least. +; +reject_cause=16 + + +; +; Send Setup_Acknowledge on incoming calls anyway (instead of PROCEEDING), +; this requests additional Infos, so we can waitfordigits +; without much issues. This works only for PTP Ports +; +; default value: no +; +need_more_infos=no + + +; +; set this to yes if you want to disconnect calls when a timeout occurs +; for example during the overlapdial phase +; +nttimeout=no + +; Set the method to use for channel selection: +; standard - Use the first free channel starting from the lowest number. +; standard_dec - Use the first free channel starting from the highest number. +; round_robin - Use the round robin algorithm to select a channel. Use this +; if you want to balance your load. +; +; default value: standard +; +method=standard + + +; specify if chan_misdn should collect digits before going into the +; dialplan, you can choose yes=4 Seconds, no, or specify the amount +; of seconds you need; +; +overlapdial=yes + +; +; dialplan means Type Of Number in ISDN Terms +; There are different types of the dialplan: +; +; dialplan -> for outgoing call's dialed number +; localdialplan -> for outgoing call's callerid +; (if -1 is set use the value from the asterisk channel) +; cpndialplan -> for incoming call's connected party number sent to caller +; (if -1 is set use the value from the asterisk channel) +; +; dialplan options: +; +; 0 - unknown +; 1 - International +; 2 - National +; 3 - Network-Specific +; 4 - Subscriber +; 5 - Abbreviated +; +; default value: 0 +; +dialplan=0 +localdialplan=0 +cpndialplan=0 + + + +; +; turn this to no if you don't mind correct handling of Progress Indicators +; +early_bconnect=yes + + +; +; turn this on if you like to send Tone Indications to a Incoming +; isdn channel on a TE Port. Rarely used, only if the Telco allows +; you to send indications by yourself, normally the Telco sends the +; indications to the remote party. +; +; default: no +; +incoming_early_audio=no + +; uncomment the following to get into s extension at extension conf +; there you can use DigitTimeout if you can't or don't want to use +; isdn overlap dial. +; note: This will jump into the s exten for every exten! +; +; default value: no +; +;always_immediate=no + +; +; set this to yes if you want to generate your own dialtone +; with always_immediate=yes, else chan_misdn generates the dialtone +; +; default value: no +; +nodialtone=no + + +; uncomment the following if you want callers which called exactly the +; base number (so no extension is set) jump to the s extension. +; if the user dials something more it jumps to the correct extension +; instead +; +; default value: no +; +;immediate=no + +; uncomment the following to have hold and retrieve support +; +; default value: no +; +;hold_allowed=yes + +; Pickup and Callgroup +; +; default values: not set = 0 +; range: 0-63 +; +;callgroup=1 +;pickupgroup=1 + +; Named pickup groups and named call groups +; +; give a name to groups and configure any number of groups +; +;namedcallgroup=engineering,sales,netgroup,protgroup +;namedpickupgroup=sales + +; Set the outgoing caller id to the value. +;callerid="name" <number> + +; +; these are the exact isdn screening and presentation indicators +; if -1 is given for either value the presentation indicators are used +; from asterisks CALLERPRES function. +; s=0, p=0 -> callerid presented +; s=1, p=1 -> callerid restricted (the remote end does not see it!) +; +; default values s=-1, p=-1 +presentation=-1 +screen=-1 + +; Incoming calls will have a caller ID tag set to this value +; +;incoming_cid_tag = "asterisk" + +; With this set, you can automatically append the MSN of a party +; to the cid_tag. Incoming calls have the dialed number appended +; to the tag, and outgoing calls have the caller number appended +; to the tag. An '_' is used to separate the tag from the +; MSN. +; Default is no. +; +;append_msn_to_cid_tag = no + +; Select what to do with outgoing COLP information on this port. +; +; 0 - Send out COLP information unaltered. (default) +; 1 - Force COLP to restricted on all outgoing COLP information. +; 2 - Do not send COLP information. +outgoing_colp=0 + +; Put a display ie in the CONNECT message containing the following +; information if it is available (nt port only): +; +; 0 - Do not put the connected line information in the display ie. +; 1 - Put the available connected line name in the display ie. +; 2 - Put the available connected line number in the display ie. +; 3 - Put the available connected line name and number in the display ie. +; +display_connected=0 + +; Put a display ie in the SETUP message containing the following +; information if it is available (nt port only): +; +; 0 - Do not put the caller information in the display ie. +; 1 - Put the available caller name in the display ie. +; 2 - Put the available caller number in the display ie. +; 3 - Put the available caller name and number in the display ie. +; +display_setup=0 + +; This enables echo cancellation with the given number of taps. +; Be aware: Move this setting only to outgoing portgroups! +; A value of zero turns echo cancellation off. +; +; possible values are: 0,32,64,128,256,yes(=128),no(=0) +; +; default value: no +; +;echocancel=no + +; +; chan_misdns jitterbuffer, default 4000 +; +jitterbuffer=4000 + +; +; change this threshold to enable dejitter functionality +; +jitterbuffer_upper_threshold=0 + + +; +; change this to yes, if you want to bridge a mISDN data channel to +; another channel type or to an application. +; +hdlc=no + + +; +; defines the maximum amount of incoming calls per port for +; this group. Calls which exceed the maximum will be marked with +; the channel variable MAX_OVERFLOW. It will contain the amount of +; overflowed calls +; +max_incoming=-1 + +; +; defines the maximum amount of outgoing calls per port for this group +; exceeding calls will be rejected +; +max_outgoing=-1 + +; +; Enable/disable the call-completion retention option support (ptp only). +; +; Note: To use the CCBS/CCNR supplementary service feature and other +; supplementary services using FACILITY messages requires a +; modified version of mISDN from: +; http://svn.digium.com/svn/thirdparty/mISDN/trunk +; http://svn.digium.com/svn/thirdparty/mISDNuser/trunk +; +cc_request_retention=yes + +[intern] +; define your ports, e.g. 1,2 (depends on mISDN-driver loading order) +ports=1,2 +; context where to go to when incoming Call on one of the above ports +context=Intern + +[internPP] +; +; adding the postfix 'ptp' to a port number is obsolete now, chan_misdn +; parses /etc/misdn-init.conf and sets the ptp mode to the corresponding +; configs. For backwards compatibility you can still set ptp here. +; +ports=3 + +[first_extern] +; again port defs +ports=4 +; again a context for incoming calls +context=Extern1 +; msns for te ports, listen on those numbers on the above ports, and +; indicate the incoming calls to asterisk +; here you can give a comma separated list or simply an '*' for +; any msn. +msns=* + +; here an example with given msns +[second_extern] +ports=5 +context=Extern2 +callerid="Asterisk" <1234> +msns=102,144,101,104 diff --git a/configs/samples/modules.conf.sample b/configs/samples/modules.conf.sample new file mode 100644 index 000000000..38e33e1f4 --- /dev/null +++ b/configs/samples/modules.conf.sample @@ -0,0 +1,45 @@ +; +; 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 has been initialized) can be loaded +; using 'preload'. This will frequently be needed if you wish to map all +; module configuration files into Realtime storage, since the Realtime +; driver will need to be loaded before the modules using those configuration +; files are initialized. +; +; An example of loading ODBC support would be: +;preload => res_odbc.so +;preload => res_config_odbc.so +; +; Uncomment the following if you wish to use the Speech Recognition API +;preload => res_speech.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_sip.so +; If you want you can combine with preload +; preload-require = res_odbc.so +; +; If you want, load the GTK console right away. +; +noload => pbx_gtkconsole.so +;load => pbx_gtkconsole.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 +; diff --git a/configs/samples/motif.conf.sample b/configs/samples/motif.conf.sample new file mode 100644 index 000000000..9d5bc808c --- /dev/null +++ b/configs/samples/motif.conf.sample @@ -0,0 +1,99 @@ +; Sample configuration file for chan_motif + +; Transports +; +; There are three different transports and protocol derivatives supported by chan_motif. They are in order of preference: +; Jingle using ICE-UDP, Google Jingle, and Google-V1. +; +; Jingle as defined in XEP-0166 supports the widest range of features. It is referred to as "ice-udp" in this file. This is +; the specification that Jingle clients implement. +; +; Google Jingle follows the Jingle specification for signaling but uses a custom transport for media. It is supported +; by the Google Talk Plug-in in Gmail and by some other Jingle clients. It is referred to as "google" in this file. +; +; Google-V1 is the original Google Talk signaling protocol which uses an initial preliminary version of Jingle. +; It also uses the same custom transport as Google Jingle for media. It is supported by Google Voice, some other Jingle +; clients, and the Windows Google Talk client. It is referred to as "google-v1" in this file. +; +; Incoming sessions will automatically switch to the correct transport once it has been determined. +; +; Outgoing sessions are capable of determining if the target is capable of Jingle or a Google transport if the target is +; in the roster. Unfortunately it is not possible to differentiate between a Google Jingle or Google-V1 capable resource +; until a session initiate attempt occurs. If a resource is determined to use a Google transport it will initially use +; Google Jingle but will fall back to Google-V1 if required. +; +; If an outgoing session attempt fails due to failure to support the given transport chan_motif will fall back in preference +; order listed at the beginning of this document until all transports have been exhausted. +; + +; Dialing and Resource Selection Strategy +; +; Placing a call through an endpoint can be accomplished using the following dial string: +; +; Motif/<endpoint name>/<target> +; +; When placing an outgoing call through an endpoint the requested target is searched for in the roster list. If present +; the first Jingle or Google Jingle capable resource is specifically targetted. Since the capabilities of the resource are +; known the outgoing session initation will disregard the configured transport and use the determined one. +; +; If the target is not found in the roster the target will be used as-is and a session will be initiated using the +; transport specified in this configuration file. If no transport has been specified the endpoint defaults to ice-udp. +; + +; Video Support +; +; Support for video does not need to be explicitly enabled. Configuring any video codec on your endpoint will +; automatically enable it. + +; DTMF +; +; The only supported method for DTMF is RFC2833. This is always enabled on audio streams and negotiated if possible. + +; Incoming Calls +; +; Incoming calls will first look for the extension matching the name of the endpoint in the configured context. If +; no such extension exists the call will automatically fall back to the "s" extension. + +; CallerID +; +; The incoming caller id number is populated with the username of the caller and the name is populated with the full +; identity of the caller. If you would like to perform authentication or filtering of incoming calls it is recommended +; that you use these fields to do so. +; +; Outgoing caller id can *not* be set. +; +; IMPORTANT: Multiple endpoints using the same connection is *NOT* supported. Doing so may result in broken calls. + +; Default template for endpoints, to be included in their definition +[default](!) +disallow=all +allow=ulaw +allow=h264 +context=incoming-motif ; Default context that incoming sessions will land in + +;maxicecandidates = 10 ; Maximum number of ICE candidates we will offer +;maxpayloads = 30 ; Maximum number of payloads we will offer + +; Sample configuration entry for Jingle +;[jingle-endpoint](default) +;transport=ice-udp ; Change the default protocol of outgoing sessions to Jingle ICE-UDP +;allow=g722 ; Add G.722 as an allowed format since the other side may support it +;connection=local-jabber-account ; Connection to accept traffic on and send traffic out +;accountcode=jingle ; Account code for CDR purposes + +; Sample configuration entry for Google Talk +[gtalk-endpoint](default) +;transport=google ; Since this is a Google Talk endpoint we want to offer Google Jingle for outgoing sessions +;connection=gtalk-account + +; Sample configuration entry for Google Voice +;[gvoice](default) +;transport=google-v1 ; Google Voice uses the original Google Talk protocol +;connection=gvoice-account + +; Additional options +; callgroup +; pickupgroup +; language +; musicclass +; parkinglot diff --git a/configs/samples/musiconhold.conf.sample b/configs/samples/musiconhold.conf.sample new file mode 100644 index 000000000..1211c8a6d --- /dev/null +++ b/configs/samples/musiconhold.conf.sample @@ -0,0 +1,89 @@ +; +; 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 + + +; 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 + +;[native-alphabetical] +;mode=files +;directory=moh +;sort=alpha ; Sort the files in alphabetical order. If this option is +; ; not specified, the sort order is undefined. + +; ========= +; 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 + +; 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 diff --git a/configs/samples/muted.conf.sample b/configs/samples/muted.conf.sample new file mode 100644 index 000000000..15c7409d9 --- /dev/null +++ b/configs/samples/muted.conf.sample @@ -0,0 +1,39 @@ +# +# Sample muted configuration file +# +# Copyright (C) 2004 Digium, Inc. +# +# First you have the host, username, and password +# we use to connect to the asterisk system +# +# What is this? Well, haven't you ever wished you could automatically +# turn down the volume on your stereo, CDPlayer, etc, when a call comes in, +# and then return it to normal when the call ends? Well, this is a possible +# mechanism to make this happen! +# You have to fire up the new utils/muted, which runs as a daemon in the +# background. This daemon connects to asterisk via a manager interface, and +# also reads this config file from /etc/muted.conf. when the channels mentioned +# are activated, it tweaks the sound levels on the sound card(s). +# So, depending on the sound card, you may be able to run all your sound +# generating devices thru your sound card, and use this mechanism to quiet +# them down while you are on the phone. If anyone figures out how to make +# this work with kids, please inform!! +# +host localhost +user user +pass pass +# +# List each channel we're supposed to watch +# +channel DAHDI/1 +channel DAHDI/2 +channel SIP/mark +# +# Mute level is the percentage of the current volume we should +# lower the music to. +# +mutelevel 20 +# +# Smooth fade makes the fadein/fadeout nicer sounding +# +smoothfade diff --git a/configs/samples/ooh323.conf.sample b/configs/samples/ooh323.conf.sample new file mode 100644 index 000000000..aeeb02fab --- /dev/null +++ b/configs/samples/ooh323.conf.sample @@ -0,0 +1,208 @@ +; --------------------------------------------------------------------------------- +; --- ******* IMPORTANT NOTE *********** +; --- +; --- This module is currently unsupported. Use it at your own risk. +; --- +; --------------------------------------------------------------------------------- + +; Objective System's H323 Configuration example for Asterisk +; ooh323c driver configuration +; +; [general] section defines global parameters +; +; This is followed by profiles which can be of three types - user/peer/friend +; Name of the user profile should match with the h323id of the user device. +; For peer/friend profiles, host ip address must be provided as "dynamic" is +; not supported as of now. +; +; Syntax for specifying a H323 device in extensions.conf is +; For Registered peers/friends profiles: +; OOH323/name where name is the name of the peer/friend profile. +; +; For unregistered H.323 phones: +; OOH323/ip[:port] OR if gk is used OOH323/alias where alias can be any H323 +; alias +; +; For dialing into another asterisk peer at a specific exten +; OOH323/exten/peer OR OOH323/exten@ip +; +; Domain name resolution is not yet supported. +; +; When a H.323 user calls into asterisk, his H323ID is matched with the profile +; name and context is determined to route the call +; +; The channel driver will register all global aliases and aliases defined in +; peer profiles with the gatekeeper, if one exists. So, that when someone +; outside our pbx (non-user) calls an extension, gatekeeper will route that +; call to our asterisk box, from where it will be routed as per dial plan. + + +[general] +;Define the asetrisk server h323 endpoint + +;The port asterisk should listen for incoming H323 connections. +;Default - 1720 +;port=1720 + +;The dotted IP address asterisk should listen on for incoming H323 +;connections +;Default - tries to find out local ip address on it's own +bindaddr=0.0.0.0 + +;This parameter indicates whether channel driver should register with +;gatekeeper as a gateway or an endpoint. +;Default - no +;gateway=no + +;Whether asterisk should use fast-start and tunneling for H323 connections. +;Default - yes +;faststart=no +;h245tunneling=no + +;Whether media wait for connect +;Default - No +;mediawaitforconnect=yes + +;H323-ID to be used for asterisk server +;Default - Asterisk PBX +h323id=ObjSysAsterisk +e164=100 + +;CallerID to use for calls +;Default - Same as h323id +callerid=asterisk + +; Whether asterisk send back to caller own connected line id on incoming call as called number +; Default - no +aniasdni=no + +;Whether this asterisk server will use gatekeeper. +;Default - DISABLE +;gatekeeper = DISCOVER +;gatekeeper = a.b.c.d +gatekeeper = DISABLE + +;Location for H323 log file +;Default - /var/log/asterisk/h323_log +;logfile=/var/log/asterisk/h323_log + + +;Following values apply to all users/peers/friends defined below, unless +;overridden within their client definition + +;Sets default context all clients will be placed in. +;Default - default +context=default + +;Sets rtptimeout for all clients, unless overridden +;Default - 60 seconds +;rtptimeout=60 ; Terminate call if 60 seconds of no RTP activity + ; when we're not on hold + +;Type of Service +;Default - none (lowdelay, thoughput, reliability, mincost, none) +;tos=lowdelay + +;amaflags = default + +;The account code used by default for all clients. +;accountcode=h3230101 + +;The codecs to be used for all clients.Only ulaw and gsm supported as of now. +;Default - ulaw +; ONLY ulaw, gsm, g729 and g7231 supported as of now +disallow=all ;Note order of disallow/allow is important. +allow=gsm +allow=ulaw + + +; dtmf mode to be used by default for all clients. Supports rfc2833, q931keypad +; h245alphanumeric, h245signal. +;Default - rfc 2833 +dtmfmode=rfc2833 +; +; round trip delay request, default = 0,0 (not send) +; x - count of unreplied requests before hangup, y - interval in sec between requests +; +;roundtrip=x,y + +; +; FAX detection will cause the OOH323 channel to jump to the 'fax' extension (if it exists) +; based one or more events being detected. The events that can be detected are an incoming +; CNG tone or an incoming T.38 RequestMode packet +; +; yes - enable both detection (CNG & T.38) +; no - disable both +; cng - enable CNG detection (default) +; t38 - enable T.38 request detection +; +faxdetect = cng + +; User/peer/friend definitions: +; User config options Peer config options +; ------------------ ------------------- +; context +; disallow disallow +; allow allow +; accountcode accountcode +; amaflags amaflags +; dtmfmode dtmfmode +; rtptimeout ip +; port +; h323id +; email +; url +; e164 +; rtptimeout + +; + +; +; direct rtp between two remote peers, disabled by default +; can be specified globally or per peer/user section +; +directmedia=no +; +; early direct rtp (try to establish direct rtp before asnwer) +; disabled by default, auto enabled by directmedia is enabled +; can be disabled escpecially if directmedia is enabled. +; can be specified globally or per peer/user section +; +; +directrtpsetup=no + +;Define users here +;Section header is extension +[myuser1] +type=user +context=context1 +disallow=all +allow=gsm +allow=ulaw + + + +[mypeer1] +type=peer +context=context2 +ip=a.b.c.d ; UPDATE with appropriate ip address +port=1720 ; UPDATE with appropriate port +e164=101 + + + +[myfriend1] +type=friend +context=default +ip=10.0.0.82 ; UPDATE with appropriate ip address +port=1820 ; UPDATE with appropriate port +disallow=all +allow=ulaw +e164=12345 +rtptimeout=60 +dtmfmode=rfc2833 + + + + + diff --git a/configs/samples/osp.conf.sample b/configs/samples/osp.conf.sample new file mode 100644 index 000000000..e72aa3259 --- /dev/null +++ b/configs/samples/osp.conf.sample @@ -0,0 +1,117 @@ +; +; Open Settlement Protocol Sample Configuration File +; +; This file contains configuration of OSP server providers that are used by the +; Asterisk OSP module. The section "general" is reserved for global options. +; All other sections describe specific OSP Providers. The provider "default" +; is used when no provider is otherwise specified. +; +; The "servicepoint" and "source" parameters must be configured. For most +; implementations the other parameters in this file can be left unchanged. +; +[general] +; +; Enable cryptographic acceleration hardware. +; The default value is no. +; +;accelerate=no +; +; Enable security features. +; If security features are disabled, Asterisk cannot validate signed tokens and +; all certificate file name parameters are ignored. +; The default value is no. +; +;securityfeatures=no +; +; Defines the status of tokens that Asterisk will validate. +; 0 - signed tokens only +; 1 - unsigned tokens only +; 2 - both signed and unsigned +; The default value is 0, i.e. the Asterisk will only validate signed tokens. +; If securityfeatures are disabled, Asterisk cannot validate signed tokens. +; +;tokenformat=0 +; +;[default] +; +; List all service points (OSP servers) for this provider. +; Use either domain name or IP address. Most OSP servers use port 5045. +; +;servicepoint=http://osptestserver.transnexus.com:5045/osp +; +; Define the "source" device for requesting OSP authorization. +; This value is usually the domain name or IP address of the the Asterisk server. +; +;source=domain name or [IP address in brackets] +; +; Define path and file name of crypto files. +; The default path for crypto file is /var/lib/asterisk/keys. If no path is +; defined, crypto files will in /var/lib/asterisk/keys directory. +; +; Specify the private key file name. +; If this parameter is unspecified or not present, the default name will be the +; osp.conf section name followed by "-privatekey.pem" (for example: +; default-privatekey.pem) +; If securityfeatures are disabled, this parameter is ignored. +; +;privatekey=pkey.pem +; +; Specify the local certificate file. +; If this parameter is unspecified or not present, the default name will be the +; osp.conf section name followed by "- localcert.pem " (for example: +; default-localcert.pem) +; If securityfeatures are disabled, this parameter is ignored. +; +;localcert=localcert.pem +; +; Specify one or more Certificate Authority key file names. If none are listed, +; a single Certificate Authority key file name is added with the default name of +; the osp.conf section name followed by "-cacert_0.pem " (for example: +; default-cacert_0.pem) +; If securityfeatures are disabled, this parameter is ignored. +; +;cacert=cacert_0.pem +; +; Configure parameters for OSP communication between Asterisk OSP client and OSP +; servers. +; +; maxconnections: Max number of simultaneous connections to the provider OSP +; server (default=20) +; retrydelay: Extra delay between retries (default=0) +; retrylimit: Max number of retries before giving up (default=2) +; timeout: Timeout for response in milliseconds (default=500) +; +;maxconnections=20 +;retrydelay=0 +;retrylimit=2 +;timeout=500 +; +; Set the authentication policy. +; 0 - NO - Accept all calls. +; 1 - YES - Accept calls with valid token or no token. Block calls with +; invalid token. +; 2 - EXCLUSIVE - Accept calls with valid token. Block calls with invalid token +; or no token. +; Default is 1, +; If securityfeatures are disabled, Asterisk cannot validate signed tokens. +; +;authpolicy=1 +; +; Set the default destination protocol. The OSP module supports SIP, H323, and +; IAX protocols. The default protocol is set to SIP. +; +;defaultprotocol=SIP +; +; Set the work mode. +; 0 - Direct +; 1 - Indirect +; Default is 0, +; +;workmode=0 +; +; Set the service type. +; 0 - Normal voice service +; 1 - Ported number query service +; Default is 0, +; +;servicetype=0 diff --git a/configs/samples/oss.conf.sample b/configs/samples/oss.conf.sample new file mode 100644 index 000000000..c3781a2a2 --- /dev/null +++ b/configs/samples/oss.conf.sample @@ -0,0 +1,153 @@ +; +; Automatically generated from ../channels/chan_oss.c +; + +[general] + ; General config options, with default values shown. + ; You should use one section per device, with [general] being used + ; for the first device and also as a template for other devices. + ; + ; All but 'debug' can go also in the device-specific sections. + ; + ; debug = 0x0 ; misc debug flags, default is 0 + + ; Set the device to use for I/O + ; device = /dev/dsp + + ; Optional mixer command to run upon startup (e.g. to set + ; volume levels, mutes, etc. + ; mixer = + + ; Software mic volume booster (or attenuator), useful for sound + ; cards or microphones with poor sensitivity. The volume level + ; is in dB, ranging from -20.0 to +20.0 + ; boost = n ; mic volume boost in dB + + ; Set the callerid for outgoing calls + ; callerid = John Doe <555-1234> + + ; autoanswer = no ; no autoanswer on call + ; autohangup = yes ; hangup when other party closes + ; extension = s ; default extension to call + ; context = default ; default context for outgoing calls + ; language = "" ; default language + + ; If you set overridecontext to 'yes', then the whole dial string + ; will be interpreted as an extension, which is extremely useful + ; to dial SIP, IAX and other extensions which use the '@' character. + ; The default is 'no' just for backward compatibility, but the + ; suggestion is to change it. + ; overridecontext = no ; if 'no', the last @ will start the context + ; if 'yes' the whole string is an extension. + + ; low level device parameters in case you have problems with the + ; device driver on your operating system. You should not touch these + ; unless you know what you are doing. + ; queuesize = 10 ; frames in device driver + ; frags = 8 ; argument to SETFRAGMENT + + ;------------------------------ JITTER BUFFER CONFIGURATION -------------------------- + ; jbenable = yes ; Enables the use of a jitterbuffer on the receiving side of an + ; OSS channel. Defaults to "no". An enabled jitterbuffer will + ; be used only if the sending side can create and the receiving + ; side can not accept jitter. The OSS channel can't accept jitter, + ; thus an enabled jitterbuffer on the receive OSS side will always + ; be used if the sending side can create jitter. + + ; jbmaxsize = 200 ; Max length of the jitterbuffer in milliseconds. + + ; jbresyncthreshold = 1000 ; Jump in the frame timestamps over which the jitterbuffer is + ; resynchronized. Useful to improve the quality of the voice, with + ; big jumps in/broken timestamps, usually sent from exotic devices + ; and programs. Defaults to 1000. + + ; jbimpl = fixed ; Jitterbuffer implementation, used on the receiving side of an OSS + ; channel. Two implementations are currently available - "fixed" + ; (with size always equals to jbmax-size) and "adaptive" (with + ; variable size, actually the new jb of IAX2). Defaults to fixed. + + ; jbtargetextra = 40 ; This option only affects the jb when 'jbimpl = adaptive' is set. + ; The option represents the number of milliseconds by which the new + ; jitter buffer will pad its size. the default is 40, so without + ; modification, the new jitter buffer will set its size to the jitter + ; value plus 40 milliseconds. increasing this value may help if your + ; network normally has low jitter, but occasionally has spikes. + + ; jblog = no ; Enables jitterbuffer frame logging. Defaults to "no". + ;----------------------------------------------------------------------------------- + +; below is an entry for a second console channel +; [card1] + ; device = /dev/dsp1 ; alternate device + +; Below are the settings to support video. You can include them +; in your general configuration as [general](+,video) +; The parameters are all available through the CLI as "console name value" +; Section names used here are only examples. + +[my_video](!) ; you can just include in your config + videodevice = /dev/video0 ; uses your V4L webcam as video source + videodevice = X11 ; X11 grabber. Dragging on the local display moves the origin. + videocodec = h263 ; also h261, h263p, h264, mpeg4, ... + + ; video_size is the geometry used by the encoder. + ; Depending on the codec your choice is restricted. + video_size = 352x288 ; the format WIDTHxHEIGHT is also ok + video_size = cif ; sqcif, qcif, cif, qvga, vga, ... + + ; You can also set the geometry used for the camera, local display and remote display. + ; The local window is on the right, the remote window is on the left. + ; Right clicking with the mouse on a video window increases the size, + ; center-clicking reduces the size. + camera_size = cif + remote_size = cif + local_size = qcif + + bitrate = 60000 ; rate told to ffmpeg. + fps = 5 ; frames per second from the source. + ; qmin = 3 ; quantizer value passed to the encoder. + +; The keypad is made of an image (in any format supported by SDL_image) +; and some configuration entries indicating the location and function of buttons. +; These entries can also be contained in the comment field of the image, +; which is a lot more convenient to manage. +; E.g. for jpeg you can write them with wrjpgcom (part of libjpeg). +; The format to define keys is +; region = <event> <shape> x0 y0 x1 y1 h +; where <event> is the event to be generated (a digit, pickup, hangup,...) +; <shape> is the shape of the region (currently 'rect' and 'circle' are +; supported, the latter is really an ellipse), x0 y0 x1 y1 are the +; coordinates of the base of the rectangle or main diameter of the ellipse, +; (they can be rotated) while h is the height of the rectangle or the other +; diameter of the ellipse. +; +[my_skin](!) + keypad = /tmp/keypad.jpg + region = 1 rect 19 18 67 18 28 + region = 2 rect 84 18 133 18 28 + region = 3 rect 152 18 201 18 28 + region = 4 rect 19 60 67 60 28 + region = 5 rect 84 60 133 60 28 + region = 6 rect 152 60 201 60 28 + region = 7 rect 19 103 67 103 28 + region = 8 rect 84 103 133 103 28 + region = 9 rect 152 103 201 103 28 + region = * rect 19 146 67 146 28 + region = 0 rect 84 146 133 146 28 + region = # rect 152 146 201 146 28 + region = pickup rect 229 15 267 15 40 + region = hangup rect 230 66 270 64 40 + region = mute circle 232 141 264 141 33 + region = sendvideo circle 235 185 266 185 33 + region = autoanswer rect 228 212 275 212 50 + +; another skin with entries for the keypad and a small font +; to write to the message boards in the skin. +[skin2](!) + keypad = /tmp/kpad2.jpg + keypad_font = /tmp/font.png + +; to add video support, uncomment this and remember to install +; the keypad and keypad_font files to the right place +; [general](+,my_video,skin2) + diff --git a/configs/samples/phone.conf.sample b/configs/samples/phone.conf.sample new file mode 100644 index 000000000..3d4a7c2dd --- /dev/null +++ b/configs/samples/phone.conf.sample @@ -0,0 +1,51 @@ +; +; Linux Telephony Interface +; +; Configuration file +; +[interfaces] +; +; Select a mode, either the phone jack provides dialtone, reads digits, +; then starts PBX with the given extension (dialtone mode), or +; immediately provides the PBX without reading any digits or providing +; any dialtone (this is the immediate mode, the default). Also, you +; can set the mode to "fxo" if you have a linejack to make it operate +; properly. If you are using a Sigma Designs board you may set this to +; "sig". +; +mode=immediate +;mode=dialtone +;mode=fxo +;mode=sig +; +; You can decide which format to use by default, "g723.1", "g729", or "slinear". +; Note that g729 is only supported for Sigma Designs boards. +; XXX Be careful, sometimes the card causes kernel panics when running +; in signed linear mode for some reason... XXX +; +format=slinear +;format=g723.1 +;format=g729 +; +; And set the echo cancellation to "off", "low", "medium", and "high". +; This is not supported on all phones. +; +echocancel=medium +; +; You can optionally use VAD/CNG silence suppression +; +;silencesupression=yes +; +; List all devices we can use. Contexts may also be specified +; +;context=local +; +; You can set txgain and rxgain for each device in the same way as context. +; If you want to change default gain value (1.0 =~ 100%) for device, simple +; add txgain or rxgain line before device line. But remember, if you change +; volume all cards listed below will be affected by these values. You can +; use float values (1.0, 0.5, 2.0) or percentage values (100%, 150%, 50%). +; +;txgain=100% +;rxgain=1.0 +;device => /dev/phone0 diff --git a/configs/samples/phoneprov.conf.sample b/configs/samples/phoneprov.conf.sample new file mode 100644 index 000000000..17d8b1f49 --- /dev/null +++ b/configs/samples/phoneprov.conf.sample @@ -0,0 +1,137 @@ +[general] +; 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. 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 while reading users.conf. + +; 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 + diff --git a/configs/samples/pjsip.conf.sample b/configs/samples/pjsip.conf.sample new file mode 100644 index 000000000..3aa05a96b --- /dev/null +++ b/configs/samples/pjsip.conf.sample @@ -0,0 +1,749 @@ +; PJSIP 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. + +; 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", then you can drill down through the various +; sections and their options. +; + +;========!!!!!!!!!!!!!!!!!!! SECURITY NOTICE !!!!!!!!!!!!!!!!!!!!=========== +; +; At a minimum please read the file "README-SERIOUSLY.bestpractices.txt", +; located in the Asterisk source directory before starting Asterisk. +; Otherwise you risk allowing the security of the Asterisk system to be +; compromised. Beyond that please visit and read the security information on +; the wiki at: https://wiki.asterisk.org/wiki/x/EwFB +; +; A few basics to pay attention to: +; +; Anonymous Calls +; +; By default anonymous inbound calls via PJSIP are not allowed. If you want to +; route anonymous calls you'll need to define an endpoint named "anonymous". +; res_pjsip_endpoint_identifier_anonymous.so handles that functionality so it +; must be loaded. It is not recommended to accept anonymous calls. +; +; Access Control Lists +; +; See the example ACL configuration in this file. Read the configuration help +; for the section and all of its options. Look over the samples in acl.conf +; and documentation at https://wiki.asterisk.org/wiki/x/uA80AQ +; If possible, restrict access to only networks and addresses you trust. +; +; Dialplan Contexts +; +; When defining configuration (such as an endpoint) that links into +; dialplan configuration, be aware of what that dialplan does. It's easy to +; accidentally provide access to internal or outbound dialing extensions which +; could cost you severely. The "context=" line in endpoint configuration +; determines which dialplan context inbound calls will enter into. +; +;============================================================================= + +; Overview of Configuration Section Types Used in the Examples +; +; * Transport "transport" +; * Configures res_pjsip transport layer interaction. +; * Endpoint "endpoint" +; * Configures core SIP functionality related to SIP endpoints. +; * Authentication "auth" +; * Stores inbound or outbound authentication credentials for use by trunks, +; endpoints, registrations. +; * Address of Record "aor" +; * Stores contact information for use by endpoints. +; * Endpoint Identification "identify" +; * Maps a host directly to an endpoint +; * Access Control List "acl" +; * Defines a permission list or references one stored in acl.conf +; * Registration "registration" +; * Contains information about an outbound SIP registration + +; The following sections show example configurations for various scenarios. +; Most require a couple or more configuration types configured in concert. + +;============================================================================= + +; Naming of Configuration Sections +; +; Configuration section names are denoted with enclosing brackets, +; e.g. [6001] +; In most cases, you can name a section whatever makes sense to you. For example +; you might name a transport [transport-udp-nat] to help you remember how that +; section is being used. However, in some cases, ("endpoint" and "aor" types) +; the section name has a relationship to its function. +; +; Depending on the modules loaded, Asterisk can match SIP requests to an +; endpoint or aor in a few ways: +; +; 1) Match a section name for endpoint type sections to the username in the +; "From" header of inbound SIP requests. +; 2) Match a section name for aor type sections to the username in the "To" +; header of inbound SIP REGISTER requests. +; 3) With an identify type section configured, match an inbound SIP request of +; any type to an endpoint or aor based on the IP source address of the +; request. +; +; Note that sections can have the same name as long as their "type" options are +; set to different values. In most cases it makes sense to have associated +; configuration sections use the same name, as you'll see in the examples within +; this file. + +;===============EXAMPLE TRANSPORTS============================================ +; +; A few examples for potential transport options. +; +; For the NAT transport example, be aware that the options starting with +; the prefix "external_" will only apply to communication with addresses +; outside the range set with "local_net=". +; +; IPv6: For endpoints using IPv6, remember to set "rtp_ipv6=yes" so that the RTP +; engine will also be able to bind to an IPv6 address. +; +; You can have more than one of any type of transport, as long as it doesn't +; use the same resources (bind address, port, etc) as the others. + +; Basic UDP transport +; +;[transport-udp] +;type=transport +;protocol=udp ;udp,tcp,tls,ws,wss +;bind=0.0.0.0 + +; UDP transport behind NAT +; +;[transport-udp-nat] +;type=transport +;protocol=udp +;bind=0.0.0.0 +;local_net=192.0.2.0/24 +;external_media_address=203.0.113.1 +;external_signaling_address=203.0.113.1 + +; Basic IPv6 UDP transport +; +;[transport-udp-ipv6] +;type=transport +;protocol=udp +;bind=:: + +; Example IPv4 TLS transport +; +;[transport-tls] +;type=transport +;protocol=tls +;bind=0.0.0.0 +;cert_file=/path/mycert.crt +;priv_key_file=/path/mykey.key +;cipher=ALL +;method=tlsv1 + + +;===============OUTBOUND REGISTRATION WITH OUTBOUND AUTHENTICATION============ +; +; This is a simple registration that works with some SIP trunking providers. +; You'll need to set up the auth example "mytrunk_auth" below to enable outbound +; authentication. Note that we "outbound_auth=" use for outbound authentication +; instead of "auth=", which is for inbound authentication. +; +; If you are registering to a server from behind NAT, be sure you assign a transport +; that is appropriately configured with NAT related settings. See the NAT transport example. +; +; "contact_user=" sets the SIP contact header's user portion of the SIP URI +; this will affect the extension reached in dialplan when the far end calls you at this +; registration. The default is 's'. + +;[mytrunk] +;type=registration +;transport=transport-udp +;outbound_auth=mytrunk_auth +;server_uri=sip:sip.example.com +;client_uri=sip:1234567890@sip.example.com +;contact_user=1234567890 +;retry_interval=60 +;forbidden_retry_interval=600 +;expiration=3600 + +;[mytrunk_auth] +;type=auth +;auth_type=userpass +;password=1234567890 +;username=1234567890 +;realm=sip.example.com + +;===============ENDPOINT CONFIGURED AS A TRUNK, OUTBOUND AUTHENTICATION======= +; +; This is one way to configure an endpoint as a trunk. It is set up with +; "outbound_auth=" to enable authentication when dialing out through this +; endpoint. There is no inbound authentication set up since a provider will +; not normally authenticate when calling you. +; +; The identify configuration enables IP address matching against this endpoint. +; For calls from a trunking provider, the From user may be different every time, +; so we want to match against IP address instead of From user. +; +; If you want the provider of your trunk to know where to send your calls +; you'll need to use an outbound registration as in the example above this +; section. +; +; NAT +; +; At a basic level configure the endpoint with a transport that is set up +; with the appropriate NAT settings. There may be some additional settings you +; need here based on your NAT/Firewall scenario. Look to the CLI config help +; "config show help res_pjsip endpoint" or on the wiki for other NAT related +; options and configuration. We've included a few below. +; +; AOR +; +; Endpoints use one or more AOR sections to store their contact details. +; You can define multiple contact addresses in SIP URI format in multiple +; "contact=" entries. +; + +;[mytrunk] +;type=endpoint +;transport=transport-udp +;context=from-external +;disallow=all +;allow=ulaw +;outbound_auth=mytrunk_auth +;aors=mytrunk +; ;A few NAT relevant options that may come in handy. +;force_rport=yes ;It's a good idea to read the configuration help for each +;direct_media=no ;of these options. +;ice_support=yes + +;[mytrunk] +;type=aor +;contact=sip:198.51.100.1:5060 +;contact=sip:198.51.100.2:5060 + +;[mytrunk] +;type=identify +;endpoint=mytrunk +;match=198.51.100.1 +;match=198.51.100.2 + + +;=============ENDPOINT CONFIGURED AS A TRUNK, INBOUND AUTH AND REGISTRATION=== +; +; Here we are allowing a remote device to register to Asterisk and requiring +; that they authenticate for registration and calls. +; You'll note that this configuration is essentially the same as configuring +; an endpoint for use with a SIP phone. + + +;[7000] +;type=endpoint +;context=from-external +;disallow=all +;allow=ulaw +;transport=transport-udp +;auth=7000 +;aors=7000 + +;[7000] +;type=auth +;auth_type=userpass +;password=7000 +;username=7000 + +;[7000] +;type=aor +;max_contacts=1 + + +;===============ENDPOINT CONFIGURED FOR USE WITH A SIP PHONE================== +; +; This example includes the endpoint, auth and aor configurations. It +; requires inbound authentication and allows registration, as well as references +; a transport that you'll need to uncomment from the previous examples. +; +; Uncomment one of the transport lines to choose which transport you want. If +; not specified then the default transport chosen is the first defined transport +; in the configuration file. +; +; Modify the "max_contacts=" line to change how many unique registrations to allow. +; +; Use the "contact=" line instead of max_contacts= if you want to statically +; define the location of the device. +; +; If using the TLS enabled transport, you may want the "media_encryption=sdes" +; option to additionally enable SRTP, though they are not mutually inclusive. +; +; Use the "rtp_ipv6=yes" option if you want to utilize RTP over an ipv6 transport. +; +; If this endpoint were remote, and it was using a transport configured for NAT +; then you likely want to use "direct_media=no" to prevent audio issues. + + +;[6001] +;type=endpoint +;transport=transport-udp +;context=from-internal +;disallow=all +;allow=ulaw +;allow=gsm +;auth=6001 +;aors=6001 +; +; A few more transports to pick from, and some related options below them. +; +;transport=transport-tls +;media_encryption=sdes +;transport=transport-udp-ipv6 +;rtp_ipv6=yes +;transport=transport-udp-nat +;direct_media=no +; +; MWI related options + +;aggregate_mwi=yes +;mailboxes=6001@default,7001@default +;mwi_from_user=6001 +; +; Extension and Device state options +; +;device_state_busy_at=1 +;allow_subscribe=yes +;sub_min_expiry=30 + +;[6001] +;type=auth +;auth_type=userpass +;password=6001 +;username=6001 + +;[6001] +;type=aor +;max_contacts=1 +;contact=sip:6001@192.0.2.1:5060 + +;===============ENDPOINT BEHIND NAT OR FIREWALL=============================== +; +; This example assumes your transport is configured with a public IP and the +; endpoint itself is behind NAT and maybe a firewall, rather than having +; Asterisk behind NAT. For the sake of simplicity, we'll assume a typical +; VOIP phone. The most important settings to configure are: +; +; * direct_media, to ensure Asterisk stays in the media path +; * rtp_symmetric and force_rport options to help the far-end NAT/firewall +; +; Depending on the settings of your remote SIP device or NAT/firewall device +; you may have to experiment with a combination of these settings. +; +; If both Asterisk and the remote phones are a behind NAT/firewall then you'll +; have to make sure to use a transport with appropriate settings (as in the +; transport-udp-nat example). +; +;[6002] +;type=endpoint +;transport=transport-udp +;context=from-internal +;disallow=all +;allow=ulaw +;auth=6002 +;aors=6002 +;direct_media=no +;rtp_symmetric=yes +;force_rport=yes +;ice_support=yes ;This is specific to clients that support NAT traversal + ;for media via ICE,STUN,TURN. See the wiki at: + ;https://wiki.asterisk.org/wiki/x/D4FHAQ + ;for a deeper explanation of this topic. + +;[6002] +;type=auth +;auth_type=userpass +;password=6002 +;username=6002 + +;[6002] +;type=aor +;max_contacts=2 + + +;============EXAMPLE ACL CONFIGURATION========================================== +; +; The ACL or Access Control List section defines a set of permissions to permit +; or deny access to various address or addresses. Alternatively it references an +; ACL configuration already set in acl.conf. +; +; The ACL configuration is independent of individual endpoint configuration and +; operates on all inbound SIP communication using res_pjsip. + +; Reference an ACL defined in acl.conf. +; +;[acl] +;type=acl +;acl=example_named_acl1 + +; Reference a contactacl specifically. +; +;[acl] +;type=acl +;contact_acl=example_contact_acl1 + +; Define your own ACL here in pjsip.conf and +; permit or deny by IP address or range. +; +;[acl] +;type=acl +;deny=0.0.0.0/0.0.0.0 +;permit=209.16.236.0/24 +;deny=209.16.236.1 + +; Restrict based on Contact Headers rather than IP. +; Define options multiple times for various addresses or use a comma-delimited string. +; +;[acl] +;type=acl +;contact_deny=0.0.0.0/0.0.0.0 +;contact_permit=209.16.236.0/24 +;contact_permit=209.16.236.1 +;contact_permit=209.16.236.2,209.16.236.3 + +; Restrict based on Contact Headers rather than IP and use +; advanced syntax. Note the bang symbol used for "NOT", so we can deny +; 209.16.236.12/32 within the permit= statement. +; +;[acl] +;type=acl +;contact_deny=0.0.0.0/0.0.0.0 +;contact_permit=209.16.236.0 +;permit=209.16.236.0/24, !209.16.236.12/32 + + + +; MODULE PROVIDING BELOW SECTION(S): res_pjsip +;==========================ENDPOINT SECTION OPTIONS========================= +;[endpoint] +; SYNOPSIS: Endpoint +;100rel=yes ; Allow support for RFC3262 provisional ACK tags (default: + ; "yes") +;aggregate_mwi=yes ; (default: "yes") +;allow= ; Media Codec s to allow (default: "") +;aors= ; AoR s to be used with the endpoint (default: "") +;auth= ; Authentication Object s associated with the endpoint (default: "") +;callerid= ; CallerID information for the endpoint (default: "") +;callerid_privacy= ; Default privacy level (default: "") +;callerid_tag= ; Internal id_tag for the endpoint (default: "") +;context=default ; Dialplan context for inbound sessions (default: + ; "default") +;direct_media_glare_mitigation=none ; Mitigation of direct media re INVITE + ; glare (default: "none") +;direct_media_method=invite ; Direct Media method type (default: "invite") +;connected_line_method=invite ; Connected line method type (default: + ; "invite") +;direct_media=yes ; Determines whether media may flow directly between + ; endpoints (default: "yes") +;disable_direct_media_on_nat=no ; Disable direct media session refreshes when + ; NAT obstructs the media session (default: + ; "no") +;disallow= ; Media Codec s to disallow (default: "") +;dtmf_mode=rfc4733 ; DTMF mode (default: "rfc4733") +;media_address= ; IP address used in SDP for media handling (default: "") +;force_rport=yes ; Force use of return port (default: "yes") +;ice_support=no ; Enable the ICE mechanism to help traverse NAT (default: "no") +;identify_by=username ; Way s for Endpoint to be identified (default: + ; "username") +;redirect_method=user ; How redirects received from an endpoint are handled + ; (default: "user") +;mailboxes= ; Mailbox es to be associated with (default: "") +;moh_suggest=default ; Default Music On Hold class (default: "default") +;outbound_auth= ; Authentication object used for outbound requests (default: + ; "") +;outbound_proxy= ; Proxy through which to send requests a full SIP URI + ; must be provided (default: "") +;rewrite_contact=no ; Allow Contact header to be rewritten with the source + ; IP address port (default: "no") +;rtp_ipv6=no ; Allow use of IPv6 for RTP traffic (default: "no") +;rtp_symmetric=no ; Enforce that RTP must be symmetric (default: "no") +;send_diversion=yes ; Send the Diversion header conveying the diversion + ; information to the called user agent (default: "yes") +;send_pai=no ; Send the P Asserted Identity header (default: "no") +;send_rpid=no ; Send the Remote Party ID header (default: "no") +;timers_min_se=90 ; Minimum session timers expiration period (default: + ; "90") +;timers=yes ; Session timers for SIP packets (default: "yes") +;timers_sess_expires=1800 ; Maximum session timer expiration period + ; (default: "1800") +;transport= ; Desired transport configuration (default: "") +;trust_id_inbound=no ; Accept identification information received from this + ; endpoint (default: "no") +;trust_id_outbound=no ; Send private identification details to the endpoint + ; (default: "no") +;type= ; Must be of type endpoint (default: "") +;use_ptime=no ; Use Endpoint s requested packetisation interval (default: + ; "no") +;use_avpf=no ; Determines whether res_pjsip will use and enforce usage of + ; AVPF for this endpoint (default: "no") +;media_encryption=no ; Determines whether res_pjsip will use and enforce + ; usage of media encryption for this endpoint (default: + ; "no") +;inband_progress=no ; Determines whether chan_pjsip will indicate ringing + ; using inband progress (default: "no") +;call_group= ; The numeric pickup groups for a channel (default: "") +;pickup_group= ; The numeric pickup groups that a channel can pickup (default: + ; "") +;named_call_group= ; The named pickup groups for a channel (default: "") +;named_pickup_group= ; The named pickup groups that a channel can pickup + ; (default: "") +;device_state_busy_at=0 ; The number of in use channels which will cause busy + ; to be returned as device state (default: "0") +;t38_udptl=no ; Whether T 38 UDPTL support is enabled or not (default: "no") +;t38_udptl_ec=none ; T 38 UDPTL error correction method (default: "none") +;t38_udptl_maxdatagram=0 ; T 38 UDPTL maximum datagram size (default: + ; "0") +;fax_detect=no ; Whether CNG tone detection is enabled (default: "no") +;t38_udptl_nat=no ; Whether NAT support is enabled on UDPTL sessions + ; (default: "no") +;t38_udptl_ipv6=no ; Whether IPv6 is used for UDPTL Sessions (default: + ; "no") +;tone_zone= ; Set which country s indications to use for channels created + ; for this endpoint (default: "") +;language= ; Set the default language to use for channels created for this + ; endpoint (default: "") +;one_touch_recording=no ; Determines whether one touch recording is allowed for + ; this endpoint (default: "no") +;record_on_feature=automixmon ; The feature to enact when one touch recording + ; is turned on (default: "automixmon") +;record_off_feature=automixmon ; The feature to enact when one touch recording + ; is turned off (default: "automixmon") +;rtp_engine=asterisk ; Name of the RTP engine to use for channels created + ; for this endpoint (default: "asterisk") +;allow_transfer=yes ; Determines whether SIP REFER transfers are allowed + ; for this endpoint (default: "yes") +;sdp_owner=- ; String placed as the username portion of an SDP origin o line + ; (default: "-") +;sdp_session=Asterisk ; String used for the SDP session s line (default: + ; "Asterisk") +;tos_audio=0 ; DSCP TOS bits for audio streams (default: "0") +;tos_video=0 ; DSCP TOS bits for video streams (default: "0") +;cos_audio=0 ; Priority for audio streams (default: "0") +;cos_video=0 ; Priority for video streams (default: "0") +;allow_subscribe=yes ; Determines if endpoint is allowed to initiate + ; subscriptions with Asterisk (default: "yes") +;sub_min_expiry=0 ; The minimum allowed expiry time for subscriptions + ; initiated by the endpoint (default: "0") +;from_user= ; Username to use in From header for requests to this endpoint + ; (default: "") +;mwi_from_user= ; Username to use in From header for unsolicited MWI NOTIFYs to + ; this endpoint (default: "") +;from_domain= ; Domain to user in From header for requests to this endpoint + ; (default: "") +;dtls_verify= ; Verify that the provided peer certificate is valid (default: + ; "") +;dtls_rekey= ; Interval at which to renegotiate the TLS session and rekey + ; the SRTP session (default: "") +;dtls_cert_file= ; Path to certificate file to present to peer (default: + ; "") +;dtls_private_key= ; Path to private key for certificate file (default: + ; "") +;dtls_cipher= ; Cipher to use for DTLS negotiation (default: "") +;dtls_ca_file= ; Path to certificate authority certificate (default: "") +;dtls_ca_path= ; Path to a directory containing certificate authority + ; certificates (default: "") +;dtls_setup= ; Whether we are willing to accept connections connect to the + ; other party or both (default: "") +;srtp_tag_32=no ; Determines whether 32 byte tags should be used instead of 80 + ; byte tags (default: "no") +;set_var= ; Variable set on a channel involving the endpoint. For multiple + ; channel variables specify multiple 'set_var'(s) + +;==========================AUTH SECTION OPTIONS========================= +;[auth] +; SYNOPSIS: Authentication type +;auth_type=userpass ; Authentication type (default: "userpass") +;nonce_lifetime=32 ; Lifetime of a nonce associated with this + ; authentication config (default: "32") +;md5_cred= ; MD5 Hash used for authentication (default: "") +;password= ; PlainText password used for authentication (default: "") +;realm= ; SIP realm for endpoint (default: "") +;type= ; Must be auth (default: "") +;username= ; Username to use for account (default: "") + + +;==========================DOMAIN_ALIAS SECTION OPTIONS========================= +;[domain_alias] +; SYNOPSIS: Domain Alias +;type= ; Must be of type domain_alias (default: "") +;domain= ; Domain to be aliased (default: "") + + +;==========================TRANSPORT SECTION OPTIONS========================= +;[transport] +; SYNOPSIS: SIP Transport +;async_operations=1 ; Number of simultaneous Asynchronous Operations + ; (default: "1") +;bind= ; IP Address and optional port to bind to for this transport (default: + ; "") +;ca_list_file= ; File containing a list of certificates to read TLS ONLY + ; (default: "") +;cert_file= ; Certificate file for endpoint TLS ONLY (default: "") +;cipher= ; Preferred Cryptography Cipher TLS ONLY (default: "") +;domain= ; Domain the transport comes from (default: "") +;external_media_address= ; External IP address to use in RTP handling + ; (default: "") +;external_signaling_address= ; External address for SIP signalling (default: + ; "") +;external_signaling_port=0 ; External port for SIP signalling (default: + ; "0") +;method= ; Method of SSL transport TLS ONLY (default: "") +;local_net= ; Network to consider local used for NAT purposes (default: "") +;password= ; Password required for transport (default: "") +;priv_key_file= ; Private key file TLS ONLY (default: "") +;protocol=udp ; Protocol to use for SIP traffic (default: "udp") +;require_client_cert= ; Require client certificate TLS ONLY (default: "") +;type= ; Must be of type transport (default: "") +;verify_client= ; Require verification of client certificate TLS ONLY (default: + ; "") +;verify_server= ; Require verification of server certificate TLS ONLY (default: + ; "") +;tos=0 ; Enable TOS for the signalling sent over this transport (default: "0") +;cos=0 ; Enable COS for the signalling sent over this transport (default: "0") +;websocket_write_timeout=100 ; Default write timeout to set on websocket + ; transports. 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. + +;==========================CONTACT SECTION OPTIONS========================= +;[contact] +; SYNOPSIS: A way of creating an aliased name to a SIP URI +;type= ; Must be of type contact (default: "") +;uri= ; SIP URI to contact peer (default: "") +;expiration_time= ; Time to keep alive a contact (default: "") +;qualify_frequency=0 ; Interval at which to qualify a contact (default: "0") +;outbound_proxy= ; Outbound proxy used when sending OPTIONS request + ; (default: "") + + +;==========================AOR SECTION OPTIONS========================= +;[aor] +; SYNOPSIS: The configuration for a location of an endpoint +;contact= ; Permanent contacts assigned to AoR (default: "") +;default_expiration=3600 ; Default expiration time in seconds for + ; contacts that are dynamically bound to an AoR + ; (default: "3600") +;mailboxes= ; Mailbox es to be associated with (default: "") +;maximum_expiration=7200 ; Maximum time to keep an AoR (default: "7200") +;max_contacts=0 ; Maximum number of contacts that can bind to an AoR (default: + ; "0") +;minimum_expiration=60 ; Minimum keep alive time for an AoR (default: "60") +;remove_existing=no ; Determines whether new contacts replace existing ones + ; (default: "no") +;type= ; Must be of type aor (default: "") +;qualify_frequency=0 ; Interval at which to qualify an AoR (default: "0") +;authenticate_qualify=no ; Authenticates a qualify request if needed + ; (default: "no") +;outbound_proxy= ; Outbound proxy used when sending OPTIONS request + ; (default: "") + + +;==========================SYSTEM SECTION OPTIONS========================= +;[system] +; SYNOPSIS: Options that apply to the SIP stack as well as other system-wide settings +;timer_t1=500 ; Set transaction timer T1 value milliseconds (default: "500") +;timer_b=32000 ; Set transaction timer B value milliseconds (default: "32000") +;compact_headers=no ; Use the short forms of common SIP header names + ; (default: "no") +;threadpool_initial_size=0 ; Initial number of threads in the res_pjsip + ; threadpool (default: "0") +;threadpool_auto_increment=5 ; The amount by which the number of threads is + ; incremented when necessary (default: "5") +;threadpool_idle_timeout=60 ; Number of seconds before an idle thread + ; should be disposed of (default: "60") +;threadpool_max_size=0 ; Maximum number of threads in the res_pjsip threadpool + ; A value of 0 indicates no maximum (default: "0") +;type= ; Must be of type system (default: "") + +;==========================GLOBAL SECTION OPTIONS========================= +;[global] +; SYNOPSIS: Options that apply globally to all SIP communications +;max_forwards=70 ; Value used in Max Forwards header for SIP requests + ; (default: "70") +;type= ; Must be of type global (default: "") +;user_agent=Asterisk PBX SVN-branch-12-r404375 ; Value used in User Agent + ; header for SIP requests and + ; Server header for SIP + ; responses (default: "Asterisk + ; PBX SVN-branch-12-r404375") +;default_outbound_endpoint=default_outbound_endpoint ; Endpoint to use when + ; sending an outbound + ; request to a URI + ; without a specified + ; endpoint (default: "d + ; efault_outbound_endpo + ; int") +;debug=no ; Enable/Disable SIP debug logging. Valid options include yes|no + ; or a host address (default: "no") + + +; MODULE PROVIDING BELOW SECTION(S): res_pjsip_acl +;==========================ACL SECTION OPTIONS========================= +;[acl] +; SYNOPSIS: Access Control List +;acl= ; List of IP ACL section names in acl conf (default: "") +;contact_acl= ; List of Contact ACL section names in acl conf (default: "") +;contact_deny= ; List of Contact header addresses to deny (default: "") +;contact_permit= ; List of Contact header addresses to permit (default: + ; "") +;deny= ; List of IP addresses to deny access from (default: "") +;permit= ; List of IP addresses to permit access from (default: "") +;type= ; Must be of type acl (default: "") + + + + +; MODULE PROVIDING BELOW SECTION(S): res_pjsip_outbound_registration +;==========================REGISTRATION SECTION OPTIONS========================= +;[registration] +; SYNOPSIS: The configuration for outbound registration +;auth_rejection_permanent=yes ; Determines whether failed authentication + ; challenges are treated as permanent failures + ; (default: "yes") +;client_uri= ; Client SIP URI used when attemping outbound registration + ; (default: "") +;contact_user= ; Contact User to use in request (default: "") +;expiration=3600 ; Expiration time for registrations in seconds + ; (default: "3600") +;max_retries=10 ; Maximum number of registration attempts (default: "10") +;outbound_auth= ; Authentication object to be used for outbound registrations + ; (default: "") +;outbound_proxy= ; Outbound Proxy used to send registrations (default: + ; "") +;retry_interval=60 ; Interval in seconds between retries if outbound + ; registration is unsuccessful (default: "60") +;forbidden_retry_interval=0 ; Interval used when receiving a 403 Forbidden + ; response (default: "0") +;server_uri= ; SIP URI of the server to register against (default: "") +;transport= ; Transport used for outbound authentication (default: "") +;type= ; Must be of type registration (default: "") + + + + +; MODULE PROVIDING BELOW SECTION(S): res_pjsip_endpoint_identifier_ip +;==========================IDENTIFY SECTION OPTIONS========================= +;[identify] +; SYNOPSIS: Identifies endpoints via source IP address +;endpoint= ; Name of Endpoint (default: "") +;match= ; IP addresses or networks to match against (default: "") +;type= ; Must be of type identify (default: "") diff --git a/configs/samples/pjsip_notify.conf.sample b/configs/samples/pjsip_notify.conf.sample new file mode 100644 index 000000000..8224ee1ff --- /dev/null +++ b/configs/samples/pjsip_notify.conf.sample @@ -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 diff --git a/configs/samples/queuerules.conf.sample b/configs/samples/queuerules.conf.sample new file mode 100644 index 000000000..fb2a1ba87 --- /dev/null +++ b/configs/samples/queuerules.conf.sample @@ -0,0 +1,20 @@ +; It is possible to change the value of the QUEUE_MAX_PENALTY and QUEUE_MIN_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. +; +; 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] +; +; 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 + diff --git a/configs/samples/queues.conf.sample b/configs/samples/queues.conf.sample new file mode 100644 index 000000000..bea62e83e --- /dev/null +++ b/configs/samples/queues.conf.sample @@ -0,0 +1,549 @@ +[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) +;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 +; +; If set to yes, just prior to the caller being bridged with a queue member +; the following variables will be set +; 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: +; 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 +; 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 announcment frequency will be timed from the end +; of each announcment rather than from the start of each announcment. 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 +; +; 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] +; +;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 diff --git a/configs/samples/res_config_mysql.conf.sample b/configs/samples/res_config_mysql.conf.sample new file mode 100644 index 000000000..ab8ebf095 --- /dev/null +++ b/configs/samples/res_config_mysql.conf.sample @@ -0,0 +1,43 @@ +; +; Sample configuration for res_config_mysql.c +; +; The value of dbhost may be either a hostname or an IP address. +; If dbhost is commented out or the string "localhost", a connection +; to the local host is assumed and dbsock is used instead of TCP/IP +; to connect to the server. If no dbcharset is specified, the connection +; is made with no extra charset configurations sent to MySQL, leaving all +; configured MySQL charset options and defaults untouched. +; +; Multiple database contexts may be configured, with the caveat that +; all context names should be unique and must not contain the slash ('/') +; character. If you wish to separate reads from writes in your database +; configuration, you specify the database (NOT HERE, in other files) +; separated by a slash, read database first. If your database +; specification does not contain a slash, the implication is that reads +; and writes should be performed to the same database. +; +; For example, in extconfig.conf, you could specify a line like: +; sippeers => mysql,readhost.asterisk/writehost.asterisk,sippeers +; and then define the contexts [readhost.asterisk] and [writehost.asterisk] +; below. +; +; The requirements parameter is available only in Asterisk 1.6.1 and +; later and must be present in all contexts. It specifies the behavior +; when a column name is required by the system. The default behavior is +; "warn" and simply sends a warning to the logger that the column does +; not exist (or is of the wrong type or precision). The other two +; possibilities are "createclose", which adds the column with the right +; type and length, and "createchar", which adds the column as a char +; type, with the appropriate length to accept the data. Note that with +; the MySQL driver, both "createclose" and "createchar" will, on occasion, +; widen a table column width to meet the requirements specified. +; +[general] +;dbhost = 127.0.0.1 +;dbname = asterisk +;dbuser = myuser +;dbpass = mypass +;dbport = 3306 +;dbsock = /tmp/mysql.sock +;dbcharset = latin1 +;requirements=warn ; or createclose or createchar diff --git a/configs/samples/res_config_sqlite.conf.sample b/configs/samples/res_config_sqlite.conf.sample new file mode 100644 index 000000000..04e6ae2e7 --- /dev/null +++ b/configs/samples/res_config_sqlite.conf.sample @@ -0,0 +1,11 @@ +[general] + +; The database file. +dbfile => /var/lib/asterisk/sqlite.db + +; Both config_table and cdr_table are optional. If config_table is omitted, +; you must specify it in extconfig.conf. If it is both provided here and in +; extconfig.conf, the value given here is used. If cdr_table is omitted, CDR +; support is simply disabled. +config_table => ast_config +cdr_table => ast_cdr diff --git a/configs/samples/res_config_sqlite3.conf.sample b/configs/samples/res_config_sqlite3.conf.sample new file mode 100644 index 000000000..5416c809e --- /dev/null +++ b/configs/samples/res_config_sqlite3.conf.sample @@ -0,0 +1,31 @@ +; 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 + diff --git a/configs/samples/res_corosync.conf.sample b/configs/samples/res_corosync.conf.sample new file mode 100644 index 000000000..9a72c1ccd --- /dev/null +++ b/configs/samples/res_corosync.conf.sample @@ -0,0 +1,31 @@ +; +; Sample configuration file for res_corosync. +; +; This module allows events to be shared amongst a local cluster of +; Asterisk servers. Specifically, the types of events that may be +; shared include: +; +; - Device State (for shared presence information) +; +; - Message Waiting Indication, or MWI (to allow Voicemail to live on +; a server that is different from where the phones are registered) +; +; For more information about Corosync, see: http://www.corosync.org/ +; + +[general] + +; +; Publish Message Waiting Indication (MWI) events from this server to the +; cluster. +;publish_event = mwi +; +; Subscribe to MWI events from the cluster. +;subscribe_event = mwi +; +; Publish Device State (presence) events from this server to the cluster. +;publish_event = device_state +; +; Subscribe to Device State (presence) events from the cluster. +;subscribe_event = device_state +; diff --git a/configs/samples/res_curl.conf.sample b/configs/samples/res_curl.conf.sample new file mode 100644 index 000000000..cc472989f --- /dev/null +++ b/configs/samples/res_curl.conf.sample @@ -0,0 +1,8 @@ +; +; CURLOPT global settings (mostly set for realtime) +; +[globals] +;proxy=myproxy.example.com +proxytype=http +proxyport=8001 +;proxyuserpwd=asterisk:asteriskrocks diff --git a/configs/samples/res_fax.conf.sample b/configs/samples/res_fax.conf.sample new file mode 100644 index 000000000..dfaa4ce93 --- /dev/null +++ b/configs/samples/res_fax.conf.sample @@ -0,0 +1,28 @@ +; 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 diff --git a/configs/samples/res_ldap.conf.sample b/configs/samples/res_ldap.conf.sample new file mode 100644 index 000000000..ac345cdd4 --- /dev/null +++ b/configs/samples/res_ldap.conf.sample @@ -0,0 +1,199 @@ +; +; 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) + diff --git a/configs/samples/res_odbc.conf.sample b/configs/samples/res_odbc.conf.sample new file mode 100644 index 000000000..66659ae42 --- /dev/null +++ b/configs/samples/res_odbc.conf.sample @@ -0,0 +1,121 @@ +;;; odbc setup file + +; ENV is a global set of environmental variables that will get set. +; Note that all environmental variables can be seen by all connections, +; so you can't have different values for different connections. +[ENV] +;INFORMIXSERVER => my_special_database +;INFORMIXDIR => /opt/informix +;ORACLE_HOME => /home/oracle + +; All other sections are arbitrary names for database connections. + +; +; The context name is what will be used in other configuration files, such +; as extconfig.conf and func_odbc.conf, to reference this connection. +[asterisk] +; +; Permit disabling sections without needing to comment them out. +; If not specified, it is assumed the section is enabled. +enabled => no +; +; This value should match an entry in /etc/odbc.ini +; (or /usr/local/etc/odbc.ini, on FreeBSD and similar systems). +dsn => asterisk +; +; Username for connecting to the database. The user defaults to the context name if unspecified. +;username => myuser +; +; Password for authenticating the user to the database. The default +; password is blank. +;password => mypass +; +; Build a connection at startup? +pre-connect => yes +; +; What should we execute to ensure that our connection is still alive? The +; statement should return a non-zero value in the first field of its first +; record. The default is "select 1". +;sanitysql => select 1 +; +; On some databases, the connection times out and a reconnection will be +; necessary. This setting configures the amount of time a connection +; may sit idle (in seconds) before a reconnection will be attempted. +;idlecheck => 3600 +; +; Should we use a single connection for all queries? Most databases will +; allow sharing the connection, though Sybase and MS SQL Server will not. +;share_connections => yes +; +; If we aren't sharing connections, what is the maximum number of connections +; that we should attempt? +;limit => 5 +; +; When the channel is destroyed, should any uncommitted open transactions +; automatically be committed? +;forcecommit => no +; +; How should we perceive data in other transactions within the database? +; Possible values are read_uncommitted, read_committed, repeatable_read, +; and serializable. The default is read_committed. +;isolation => repeatable_read +; +; Is the backslash a native escape character? The default is yes, but for +; MS SQL Server, the answer is no. +;backslash_is_escape => yes +; +; How long (in seconds) should we attempt to connect before considering the +; connection dead? The default is 10 seconds, but you may wish to reduce it, +; to increase responsiveness. +;connect_timeout => 10 +; +; When a connection fails, how long (in seconds) should we cache that +; information before we attempt another connection? This increases +; responsiveness, when a database resource is not working. +;negative_connection_cache => 300 + +[mysql2] +enabled => no +dsn => MySQL-asterisk +username => myuser +password => mypass +pre-connect => yes + +; Certain servers, such as MS SQL Server and Sybase use the TDS protocol, which +; limits the number of active queries per connection to 1. By telling res_odbc +; not to share connections, Asterisk can be made to work with these servers. +[sqlserver] +enabled => no +dsn => mickeysoft +share_connections => no +limit => 5 +username => oscar +password => thegrouch +pre-connect => yes +sanitysql => select count(*) from systables +; forcecommit => no ; Default to committing uncommitted transactions? + ; Note: this is NOT the autocommit flag; this + ; determines the end result of transactions which + ; are not explicitly committed or rolled back. By + ; default, such transactions are rolled back if the + ; call ends without an explicit commit. +; isolation => read_committed ; Isolation level; supported levels are: + ; read_uncommitted, read_committed, repeatable_read, + ; serializable. Note that not all databases support + ; all isolation levels (e.g. Postgres only supports + ; repeatable_read and serializable). See database + ; documentation for further information. +; +; Many databases have a default of '\' to escape special characters. MS SQL +; Server does not. +backslash_is_escape => no + +; +; If you are having problems with concurrency, please read this note from the +; mailing lists, regarding UnixODBC: +; +; http://lists.digium.com/pipermail/asterisk-dev/2009-February/036539.html +; +; In summary, try setting "Threading=2" in the relevant section within your +; odbcinst.ini. +; diff --git a/configs/samples/res_parking.conf.sample b/configs/samples/res_parking.conf.sample new file mode 100644 index 000000000..d24be2039 --- /dev/null +++ b/configs/samples/res_parking.conf.sample @@ -0,0 +1,121 @@ +[general] +;parkeddynamic = yes ; Enables dynamically created parkinglots. (default is no) + +; 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) + +;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 + ; PARKINGSLOT - 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. diff --git a/configs/samples/res_pgsql.conf.sample b/configs/samples/res_pgsql.conf.sample new file mode 100644 index 000000000..cc7442fd0 --- /dev/null +++ b/configs/samples/res_pgsql.conf.sample @@ -0,0 +1,30 @@ +; +; Sample configuration for res_config_pgsql +; +; The value of dbhost may be either a hostname or an IP address. +; If dbhost is commented out or the string "localhost", a connection +; to the local host is assumed and dbsock is used instead of TCP/IP +; to connect to the server. +; +[general] +dbhost=127.0.0.1 +dbport=5432 +dbname=asterisk +dbuser=asterisk +dbpass=password +;dbappname=asterisk ; Postgres application_name support (optional). Whitespace not allowed. +; +; dbsock is specified as the directory where the socket file may be found. The +; actual socket is constructed as a combination of dbsock and dbport. For +; example, the values of '/tmp' and '5432', respectively, will specify a socket +; file of '/tmp/.s.PGSQL.5432'. +; +;dbsock=/tmp +; +; 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 diff --git a/configs/samples/res_pktccops.conf.sample b/configs/samples/res_pktccops.conf.sample new file mode 100644 index 000000000..769508db6 --- /dev/null +++ b/configs/samples/res_pktccops.conf.sample @@ -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 +; diff --git a/configs/samples/res_snmp.conf.sample b/configs/samples/res_snmp.conf.sample new file mode 100644 index 000000000..a6e40c8e2 --- /dev/null +++ b/configs/samples/res_snmp.conf.sample @@ -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 diff --git a/configs/samples/res_stun_monitor.conf.sample b/configs/samples/res_stun_monitor.conf.sample new file mode 100644 index 000000000..12d32a4cd --- /dev/null +++ b/configs/samples/res_stun_monitor.conf.sample @@ -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. diff --git a/configs/samples/rtp.conf.sample b/configs/samples/rtp.conf.sample new file mode 100644 index 000000000..c22acaa9f --- /dev/null +++ b/configs/samples/rtp.conf.sample @@ -0,0 +1,60 @@ +; +; 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 source of the RTP stream. 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 disabled by default. +; icesupport=true +; +; 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= +; +; 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= diff --git a/configs/samples/say.conf.sample b/configs/samples/say.conf.sample new file mode 100644 index 000000000..6285dbe1e --- /dev/null +++ b/configs/samples/say.conf.sample @@ -0,0 +1,383 @@ +; +; language configuration +; + +[general] +mode=old ; method for playing numbers and dates + ; old - using asterisk core function + ; new - using this configuration file + +; The new language routines produce strings of the form +; prefix:[format:]data +; that are matched against the rules in this file to produce +; an output. +; +; The data is generally the string to be spelled (either a number, +; an ascii string or a date/time in the format specified below). +; It is available, in the right hand side of a rule, as variable ${SAY}. +; +; The format is optional and normally used only for date/time. +; The prefix is used to select the pronunciation - standard +; prefixes are +; num used for numbers +; enum used for enumerations +; date for dates +; time for times +; datetime for dates and times +; char for character strings +; phonetic for phonetic strings +; digit for digit strings +; +; but others can be used at will. +; +; Processing occurs as follows: +; If the format is empty, or there is no format, the entire +; string is matched against one of the pattern on the left hand side. +; On the first match, the various comma-separated components on the right +; hand side are pronounced, as follows: +; + a component starting with a prefix: (i.e. with a ':' in it) +; is re-processed according to these rules; +; + a component without a ':' in it is considered a filename and +; the corresponding file is played. +; +; If the format is non-empty, the format is split into its components +; (individual characters, or filenames in single quotes), and then +; filenames are played, whereas single characters are used to +; generate a new string format:pat:data to be processed. +; +; DATES/AND TIMES assume that the date info is available in +; the form YYYYMMDDHHmm.ss-dow-doy +; with 4 digits for the year, 2 for month, day, hour, minutes, seconds, +; one digit for the day-of-week, and 3 digits for the day-of-year. +; +; Example: +; datetime::200604172030.00-4-102 +; (typical format for a date) is first matched against the line +; datetime::. => date:AdBY 'digits/at' IMp:${SAY} +; which is normally present with the default format for dates. +; In turn, the format string "AdBY 'digits/at' IMp" results in +; the sequence +; date:A:200604172030.00-4-102 +; date:d:200604172030.00-4-102 +; date:B:200604172030.00-4-102 +; date:Y:200604172030.00-4-102 +; digits/at +; date:I:200604172030.00-4-102 +; date:M:200604172030.00-4-102 +; date:p:200604172030.00-4-102 +; +; +; Remember, normally X Z N are special, and the search is +; case insensitive, so you must use [X] [N] [Z] .. if you +; want exact match. + +; We start with the basic rules that might be more-or-less +; language-independent + +[digit-base](!) ; base rule for digit strings + ; XXX incomplete yet + _digit:[0-9] => digits/${SAY} + _digit:[-] => letters/dash + _digit:[*] => letters/star + _digit:[@] => letters/at + _digit:[0-9]. => digit:${SAY:0:1}, digit:${SAY:1} + +[date-base](!) ; base rules for dates and times + ; the 'SAY' variable contains YYYYMMDDHHmm.ss-dow-doy + ; these rule map the strftime attributes. + _date:Y:. => num:${SAY:0:4} ; year, 19xx + _date:[Bbh]:. => digits/mon-$[${SAY:4:2}-1] ; month name, 0..11 + _date:[Aa]:. => digits/day-${SAY:16:1} ; day of week + _date:[de]:. => num:${SAY:6:2} ; day of month + _date:[H]:. => digits/oh, num:${SAY:8:2} ; hour (oh one, oh two, ..., oh nine, ten, eleven, ..., twenty-three) + _date:[I]:. => num:$[${SAY:8:2} % 12] ; hour 0-12 + _date:[M]:. => num:${SAY:10:2} ; minute + ; XXX too bad the '?' function does not remove the quotes + ; _date:[pP]:. => digits/$[ ${SAY:10:2} > 12 ? "p-m" :: "a-m"] ; am pm + _date:[pP]:. => digits/p-m ; am pm + _date:[S]:. => num:${SAY:13:2} ; seconds + _date:[Ii]:. => num:$[${SAY:8:2} % 12] ; hour 0-12 + _date:[k]:. => num:${SAY:8:2} ; hour (one, two. three, ...,twenty three + _date:[m]:. => num:${SAY:4:2} ; month number + _date:[Q]:. => date:dby ;incompleat ; "today", "yesterday" or ABdY + _date:[q]:. => date:dby ;incompleat ; "" (for today), "yesterday", weekday, or ABdY + _date:[R]:. => date:HM${SAY} ; 24 hour time, including minute + _date:[T]:. => date:HMS${SAY} ; 24 hour, minure, seconds + +[en-base](!) + _[n]um:0. => num:${SAY:1} + _[n]um:X => digits/${SAY} + _[n]um:1X => digits/${SAY} + _[n]um:[2-9]0 => digits/${SAY} + _[n]um:[2-9][1-9] => digits/${SAY:0:1}0, num:${SAY:1} + _[n]um:X00 => num:${SAY:0:1}, digits/hundred + _[n]um:XXX => num:${SAY:0:1}, digits/hundred, num:${SAY:1} + + _[n]um:X000 => num:${SAY:0:1}, digits/thousand + _[n]um:XXXX => num:${SAY:0:1}, digits/thousand, num:${SAY:1} + _[n]um:XX000 => num:${SAY:0:2}, digits/thousand + _[n]um:XXXXX => num:${SAY:0:2}, digits/thousand, num:${SAY:2} + _[n]um:XXX000 => num:${SAY:0:3}, digits/thousand + _[n]um:XXXXXX => num:${SAY:0:3}, digits/thousand, num:${SAY:3} + + _[n]um:X000000 => num:${SAY:0:1}, digits/million + _[n]um:XXXXXXX => num:${SAY:0:1}, digits/million, num:${SAY:1} + _[n]um:XX000000 => num:${SAY:0:2}, digits/million + _[n]um:XXXXXXXX => num:${SAY:0:2}, digits/million, num:${SAY:2} + _[n]um:XXX000000 => num:${SAY:0:3}, digits/million + _[n]um:XXXXXXXXX => num:${SAY:0:3}, digits/million, num:${SAY:3} + + _[n]um:X000000000 => num:${SAY:0:1}, digits/billion + _[n]um:XXXXXXXXXX => num:${SAY:0:1}, digits/billion, num:${SAY:1} + _[n]um:XX000000000 => num:${SAY:0:2}, digits/billion + _[n]um:XXXXXXXXXXX => num:${SAY:0:2}, digits/billion, num:${SAY:2} + _[n]um:XXX000000000 => num:${SAY:0:3}, digits/billion + _[n]um:XXXXXXXXXXXX => num:${SAY:0:3}, digits/billion, num:${SAY:3} + + ; enumeration + _e[n]um:X => digits/h-${SAY} + _e[n]um:1X => digits/h-${SAY} + _e[n]um:[2-9]0 => digits/h-${SAY} + _e[n]um:[2-9][1-9] => num:${SAY:0:1}0, digits/h-${SAY:1} + _e[n]um:[1-9]00 => num:${SAY:0:1}, digits/h-hundred + _e[n]um:[1-9]XX => num:${SAY:0:1}, digits/h-hundred, enum:${SAY:1} + +[en_GB](date-base,digit-base,en-base) + _[n]um:XXX => num:${SAY:0:1}, digits/hundred, vm-and, num:${SAY:1} + +[it](digit-base,date-base) + _[n]um:0. => num:${SAY:1} + _[n]um:X => digits/${SAY} + _[n]um:1X => digits/${SAY} + _[n]um:[2-9]0 => digits/${SAY} + _[n]um:[2-9][1-9] => digits/${SAY:0:1}0, num:${SAY:1} + _[n]um:100 => digits/hundred + _[n]um:1XX => digits/hundred, num:${SAY:1} + _[n]um:[2-9]00 => num:${SAY:0:1}, digits/hundred + _[n]um:[2-9]XX => num:${SAY:0:1}, digits/hundred, num:${SAY:1} + + _[n]um:1000 => digits/thousand + _[n]um:1XXX => digits/thousand, num:${SAY:1} + _[n]um:[2-9]000 => num:${SAY:0:1}, digits/thousands + _[n]um:[2-9]XXX => num:${SAY:0:1}, digits/thousands, num:${SAY:1} + _[n]um:XX000 => num:${SAY:0:2}, digits/thousands + _[n]um:XXXXX => num:${SAY:0:2}, digits/thousands, num:${SAY:2} + _[n]um:XXX000 => num:${SAY:0:3}, digits/thousands + _[n]um:XXXXXX => num:${SAY:0:3}, digits/thousands, num:${SAY:3} + + _[n]um:1000000 => num:${SAY:0:1}, digits/million + _[n]um:1XXXXXX => num:${SAY:0:1}, digits/million, num:${SAY:1} + _[n]um:[2-9]000000 => num:${SAY:0:1}, digits/millions + _[n]um:[2-9]XXXXXX => num:${SAY:0:1}, digits/millions, num:${SAY:1} + _[n]um:XX000000 => num:${SAY:0:2}, digits/millions + _[n]um:XXXXXXXX => num:${SAY:0:2}, digits/millions, num:${SAY:2} + _[n]um:XXX000000 => num:${SAY:0:3}, digits/millions + _[n]um:XXXXXXXXX => num:${SAY:0:3}, digits/millions, num:${SAY:3} + + _[n]um:X000000000 => num:${SAY:0:1}, digits/billion + _[n]um:XXXXXXXXXX => num:${SAY:0:1}, digits/billion, num:${SAY:1} + _[n]um:XX000000000 => num:${SAY:0:2}, digits/billion + _[n]um:XXXXXXXXXXX => num:${SAY:0:2}, digits/billion, num:${SAY:2} + _[n]um:XXX000000000 => num:${SAY:0:3}, digits/billion + _[n]um:XXXXXXXXXXXX => num:${SAY:0:3}, digits/billion, num:${SAY:3} + + _datetime::. => date:AdBY 'digits/at' IMp:${SAY} + _date::. => date:AdBY:${SAY} + _time::. => date:IMp:${SAY} + +[en](en-base,date-base,digit-base) + _datetime::. => date:AdBY 'digits/at' IMp:${SAY} + _date::. => date:AdBY:${SAY} + _time::. => date:IMp:${SAY} + +[de](date-base,digit-base) + _[n]um:0. => num:${SAY:1} + _[n]um:X => digits/${SAY} + _[n]um:1X => digits/${SAY} + _[n]um:[2-9]0 => digits/${SAY} + _[n]um:[2-9][1-9] => digits/${SAY:1}-and, digits/${SAY:0:1}0 + _[n]um:100 => digits/ein, digits/hundred + _[n]um:1XX => digits/ein, digits/hundred, num:${SAY:1} + _[n]um:[2-9]00 => digits/${SAY:0:1}, digits/hundred + _[n]um:[2-9]XX => digits/${SAY:0:1}, digits/hundred, num:${SAY:1} + + _[n]um:1000 => digits/ein, digits/thousand + _[n]um:1XXX => digits/ein, digits/thousand, num:${SAY:1} + _[n]um:[2-9]000 => digits/${SAY:0:1}, digits/thousand + _[n]um:[2-9]XXX => digits/${SAY:0:1}, digits/thousand, num:${SAY:1} + _[n]um:XX000 => num:${SAY:0:2}, digits/thousand + _[n]um:XXXXX => num:${SAY:0:2}, digits/thousand, num:${SAY:2} + _[n]um:XXX000 => num:${SAY:0:3}, digits/thousand + _[n]um:XXXXXX => num:${SAY:0:3}, digits/thousand, num:${SAY:1} + + _[n]um:1000000 => digits/eine, digits/million + _[n]um:1XXXXXX => digits/eine, digits/million, num:${SAY:1} + _[n]um:[2-9]000000 => digits/${SAY:0:1}, digits/millions + _[n]um:[2-9]XXXXXX => digits/${SAY:0:1}, digits/millions, num:${SAY:1} + _[n]um:XX000000 => num:${SAY:0:2}, digits/millions + _[n]um:XXXXXXXX => num:${SAY:0:2}, digits/millions, num:${SAY:2} + _[n]um:XXX000000 => num:${SAY:0:3}, digits/millions + _[n]um:XXXXXXXXX => num:${SAY:0:3}, digits/millions, num:${SAY:3} + + _datetime::. => date:AdBY 'digits/at' IMp:${SAY} + _date::. => date:AdBY:${SAY} + _time::. => date:IMp:${SAY} + +[hu](digit-base,date-base) + _[n]um:0. => num:${SAY:1} + _[n]um:X => digits/${SAY} + _[n]um:1[1-9] => digits/10en, digits/${SAY:1} + _[n]um:2[1-9] => digits/20on, digits/${SAY:1} + _[n]um:[1-9]0 => digits/${SAY} + _[n]um:[3-9][1-9] => digits/${SAY:0:1}0, num:${SAY:1} + _[n]um:XXX => num:${SAY:0:1}, digits/hundred, num:${SAY:1} + + _[n]um:X000 => num:${SAY:0:1}, digits/thousand + _[n]um:XXXX => num:${SAY:0:1}, digits/thousand, num:${SAY:1} + _[n]um:XX000 => num:${SAY:0:2}, digits/thousand + _[n]um:XXXXX => num:${SAY:0:2}, digits/thousand, num:${SAY:2} + _[n]um:XXX000 => num:${SAY:0:3}, digits/thousand + _[n]um:XXXXXX => num:${SAY:0:3}, digits/thousand, num:${SAY:3} + + _[n]um:X000000 => num:${SAY:0:1}, digits/million + _[n]um:XXXXXXX => num:${SAY:0:1}, digits/million, num:${SAY:1} + _[n]um:XX000000 => num:${SAY:0:2}, digits/million + _[n]um:XXXXXXXX => num:${SAY:0:2}, digits/million, num:${SAY:2} + _[n]um:XXX000000 => num:${SAY:0:3}, digits/million + _[n]um:XXXXXXXXX => num:${SAY:0:3}, digits/million, num:${SAY:3} + + _[n]um:X000000000 => num:${SAY:0:1}, digits/billion + _[n]um:XXXXXXXXXX => num:${SAY:0:1}, digits/billion, num:${SAY:1} + _[n]um:XX000000000 => num:${SAY:0:2}, digits/billion + _[n]um:XXXXXXXXXXX => num:${SAY:0:2}, digits/billion, num:${SAY:2} + _[n]um:XXX000000000 => num:${SAY:0:3}, digits/billion + _[n]um:XXXXXXXXXXXX => num:${SAY:0:3}, digits/billion, num:${SAY:3} + + _datetime::. => date:YBdA k 'ora' M 'perc':${SAY} + _date::. => date:YBdA:${SAY} + _time::. => date:k 'ora' M 'perc':${SAY} + +[fr](date-base,digit-base) + _[n]um:0. => num:${SAY:1} + _[n]um:X => digits/${SAY} + _[n]um:1X => digits/${SAY} + _[n]um:[2-9]0 => digits/${SAY} + _[n]um:[2-6]1 => digits/${SAY:0:1}0, vm-and, digits/${SAY:1} + _[n]um:71 => digits/60, vm-and, num:1${SAY:1} + _[n]um:7X => digits/60, num:1${SAY:1} + _[n]um:9X => digits/80, num:1${SAY:1} + _[n]um:[2-9][1-9] => digits/${SAY:0:1}0, num:${SAY:1} + _[n]um:100 => digits/hundred + _[n]um:1XX => digits/hundred, num:${SAY:1} + _[n]um:[2-9]00 => num:${SAY:0:1}, digits/hundred + _[n]um:[2-9]XX => num:${SAY:0:1}, digits/hundred, num:${SAY:1} + + _[n]um:1000 => digits/thousand + _[n]um:1XXX => digits/thousand, num:${SAY:1} + _[n]um:[2-9]000 => num:${SAY:0:1}, digits/thousand + _[n]um:[2-9]XXX => num:${SAY:0:1}, digits/thousand, num:${SAY:1} + _[n]um:XX000 => num:${SAY:0:2}, digits/thousand + _[n]um:XXXXX => num:${SAY:0:2}, digits/thousand, num:${SAY:2} + _[n]um:XXX000 => num:${SAY:0:3}, digits/thousand + _[n]um:XXXXXX => num:${SAY:0:3}, digits/thousand, num:${SAY:3} + + _[n]um:1000000 => num:${SAY:0:1}, digits/million + _[n]um:1XXXXXX => num:${SAY:0:1}, digits/million, num:${SAY:1} + _[n]um:[2-9]000000 => num:${SAY:0:1}, digits/million + _[n]um:[2-9]XXXXXX => num:${SAY:0:1}, digits/million, num:${SAY:1} + _[n]um:XX000000 => num:${SAY:0:2}, digits/million + _[n]um:XXXXXXXX => num:${SAY:0:2}, digits/million, num:${SAY:2} + _[n]um:XXX000000 => num:${SAY:0:3}, digits/million + _[n]um:XXXXXXXXX => num:${SAY:0:3}, digits/million, num:${SAY:3} + + _datetime::. => date:AdBY 'digits/at' H 'hours' M 'perc':${SAY} + _date::. => date:AdBY:${SAY} + _time::. => date:H 'hours' M 'perc':${SAY} + + _pho[n]e:XXXX => num:${SAY:0:2}, num:${SAY:2:2} + _pho[n]e:0[1-9]XXXXXXXX => num:${SAY:0:1}, num:${SAY:1:1}, num:${SAY:2:2}, num:${SAY:4:2}, num:${SAY:6:2}, num:${SAY:8:2} + _pho[n]e:. => digit:${SAY} + +[es](date-base,digit-base) + _[n]um:0. => num:${SAY:1} + _[n]um:X => digits/${SAY} + _[n]um:1X => digits/${SAY} + _[n]um:[2-9]0 => digits/${SAY} + _[n]um:2[1-9] => digits/20-and, digits/${SAY:1} + _[n]um:[3-9][1-9] => digits/${SAY:0:1}0, vm-and, digits/${SAY:1} + _[n]um:100 => digits/hundred + _[n]um:1XX => digits/100-and, num:${SAY:1} + _[n]um:[2-9]00 => digits/${SAY} + _[n]um:[2-9]XX => digits/${SAY:0:1}00, num:${SAY:1} + + _[n]um:1000 => digits/thousand + _[n]um:1XXX => digits/thousand, num:${SAY:1} + _[n]um:[2-9]000 => num:${SAY:0:1}, digits/thousand + _[n]um:[2-9]XXX => num:${SAY:0:1}, digits/thousand, num:${SAY:1} + _[n]um:XX000 => num:${SAY:0:2}, digits/thousand + _[n]um:XXXXX => num:${SAY:0:2}, digits/thousand, num:${SAY:2} + _[n]um:XXX000 => num:${SAY:0:3}, digits/thousand + _[n]um:XXXXXX => num:${SAY:0:3}, digits/thousand, num:${SAY:3} + + _[n]um:1000000 => digits/1M, digits/million + _[n]um:1XXXXXX => digits/1M, digits/million, num:${SAY:1} + _[n]um:[2-9]000000 => num:${SAY:0:1}, digits/millions + _[n]um:[2-9]XXXXXX => num:${SAY:0:1}, digits/millions, num:${SAY:1} + _[n]um:XX000000 => num:${SAY:0:2}, digits/millions + _[n]um:XXXXXXXX => num:${SAY:0:2}, digits/millions, num:${SAY:2} + _[n]um:XXX000000 => num:${SAY:0:3}, digits/millions + _[n]um:XXXXXXXXX => num:${SAY:0:3}, digits/millions, num:${SAY:3} + _[n]um:XXXX000000 => num:${SAY:0:4}, digits/millions + _[n]um:XXXXXXXXXX => num:${SAY:0:4}, digits/millions, num:${SAY:4} + + _datetime::. => date:Ad 'letters/d' B 'letters/d' Y 'digits/at' HMp:${SAY} + _date::. => date:Ad 'letters/d' B 'letters/d' Y:${SAY} + _time::. => date:HMp:${SAY} + +[da](date-base,digit-base) + _[n]um:0. => num:${SAY:1} + _[n]um:X => digits/${SAY} + _[n]um:1X => digits/${SAY} + _[n]um:[2-9]0 => digits/${SAY} + _[n]um:[2-9][1-9] => digits/${SAY:1}-and, digits/${SAY:0:1}0 + _[n]um:100 => digits/1N, digits/hundred + _[n]um:1XX => digits/1N, digits/hundred, num:${SAY:1} + _[n]um:[2-9]00 => digits/${SAY:0:1}, digits/hundred + _[n]um:[2-9]XX => digits/${SAY:0:1}, digits/hundred, num:${SAY:1} + + _[n]um:1000 => digits/1N, digits/thousand + _[n]um:1XXX => digits/1N, digits/thousand, num:${SAY:1} + _[n]um:[2-9]000 => digits/${SAY:0:1}, digits/thousand + _[n]um:[2-9]XXX => digits/${SAY:0:1}, digits/thousand, num:${SAY:1} + _[n]um:XX000 => num:${SAY:0:2}, digits/thousand + _[n]um:XXXXX => num:${SAY:0:2}, digits/thousand, num:${SAY:2} + _[n]um:XXX000 => num:${SAY:0:3}, digits/thousand + _[n]um:XXXXXX => num:${SAY:0:3}, digits/thousand, num:${SAY:3} + + _[n]um:X000000 => digits/${SAY:0:1}, digits/million + _[n]um:XXXXXXX => digits/${SAY:0:1}, digits/million, num:${SAY:1} + _[n]um:XX000000 => num:${SAY:0:2}, digits/millions + _[n]um:XXXXXXXX => num:${SAY:0:2}, digits/millions, num:${SAY:2} + _[n]um:XXX000000 => num:${SAY:0:3}, digits/millions + _[n]um:XXXXXXXXX => num:${SAY:0:3}, digits/millions, num:${SAY:3} + + _[n]um:X000000000 => num:${SAY:0:1}, digits/billion + _[n]um:XXXXXXXXXX => num:${SAY:0:1}, digits/billion, num:${SAY:1} + _[n]um:XX000000000 => num:${SAY:0:2}, digits/billion + _[n]um:XXXXXXXXXXX => num:${SAY:0:2}, digits/billion, num:${SAY:2} + _[n]um:XXX000000000 => num:${SAY:0:3}, digits/billion + _[n]um:XXXXXXXXXXXX => num:${SAY:0:3}, digits/billion, num:${SAY:3} + + _datetime::. => date:AdBY 'digits/at' kM:${SAY} + _date::. => date:AdBY:${SAY} + _time::. => date:HM:${SAY} + + ; enumeration + _e[n]um:X => digits/h-${SAY} + _e[n]um:1X => digits/h-${SAY} + _e[n]um:[2-9]0 => digits/h-${SAY} + _e[n]um:[2-9][1-9] => digits/${SAY:1}-and, digits/h-${SAY:0:1}0 + _e[n]um:100 => digits/1N, digits/h-hundred + _e[n]um:1XX => digits/1N, digits/h-hundred, enum:${SAY:1} + _e[n]um:[2-9]00 => num:${SAY:0:1}, digits/h-hundred + _e[n]um:[2-9]XX => num:${SAY:0:1}, digits/h-hundred, enum:${SAY:1} diff --git a/configs/samples/sip.conf.sample b/configs/samples/sip.conf.sample new file mode 100644 index 000000000..0d81a6b63 --- /dev/null +++ b/configs/samples/sip.conf.sample @@ -0,0 +1,1571 @@ +; +; SIP Configuration example for Asterisk +; +; Note: Please read the security documentation for Asterisk in order to +; understand the risks of installing Asterisk with the sample +; configuration. If your Asterisk is installed on a public +; IP address connected to the Internet, you will want to learn +; about the various security settings BEFORE you start +; Asterisk. +; +; Especially note the following settings: +; - allowguest (default enabled) +; - permit/deny/acl - IP address filters +; - contactpermit/contactdeny/contactacl - IP address filters for registrations +; - context - Which set of services you offer various users +; +; SIP dial strings +;----------------------------------------------------------- +; In the dialplan (extensions.conf) you can use several +; syntaxes for dialing SIP devices. +; SIP/devicename +; SIP/username@domain (SIP uri) +; SIP/username[:password[:md5secret[:authname[:transport]]]]@host[:port] +; SIP/devicename/extension +; SIP/devicename/extension/IPorHost +; SIP/username@domain//IPorHost +; +; +; Devicename +; devicename is defined as a peer in a section below. +; +; username@domain +; Call any SIP user on the Internet +; (Don't forget to enable DNS SRV records if you want to use this) +; +; devicename/extension +; If you define a SIP proxy as a peer below, you may call +; SIP/proxyhostname/user or SIP/user@proxyhostname +; where the proxyhostname is defined in a section below +; This syntax also works with ATA's with FXO ports +; +; SIP/username[:password[:md5secret[:authname]]]@host[:port] +; This form allows you to specify password or md5secret and authname +; without altering any authentication data in config. +; Examples: +; +; SIP/*98@mysipproxy +; SIP/sales:topsecret::account02@domain.com:5062 +; SIP/12345678::bc53f0ba8ceb1ded2b70e05c3f91de4f:myname@192.168.0.1 +; +; IPorHost +; The next server for this call regardless of domain/peer +; +; All of these dial strings specify the SIP request URI. +; In addition, you can specify a specific To: header by adding an +; exclamation mark after the dial string, like +; +; SIP/sales@mysipproxy!sales@edvina.net +; +; A new feature for 1.8 allows one to specify a host or IP address to use +; when routing the call. This is typically used in tandem with func_srv if +; multiple methods of reaching the same domain exist. The host or IP address +; is specified after the third slash in the dialstring. Examples: +; +; SIP/devicename/extension/IPorHost +; SIP/username@domain//IPorHost +; +; CLI Commands +; ------------------------------------------------------------- +; Useful CLI commands to check peers/users: +; sip show peers Show all SIP peers (including friends) +; sip show registry Show status of hosts we register with +; +; sip set debug on Show all SIP messages +; +; sip reload Reload configuration file +; sip show settings Show the current channel configuration +; +;------- Naming devices ------------------------------------------------------ +; +; When naming devices, make sure you understand how Asterisk matches calls +; that come in. +; 1. Asterisk checks the SIP From: address username and matches against +; names of devices with type=user +; The name is the text between square brackets [name] +; 2. Asterisk checks the From: addres and matches the list of devices +; with a type=peer +; 3. Asterisk checks the IP address (and port number) that the INVITE +; was sent from and matches against any devices with type=peer +; +; Don't mix extensions with the names of the devices. Devices need a unique +; name. The device name is *not* used as phone numbers. Phone numbers are +; anything you declare as an extension in the dialplan (extensions.conf). +; +; When setting up trunks, make sure there's no risk that any From: username +; (caller ID) will match any of your device names, because then Asterisk +; might match the wrong device. +; +; Note: The parameter "username" is not the username and in most cases is +; not needed at all. Check below. In later releases, it's renamed +; to "defaultuser" which is a better name, since it is used in +; combination with the "defaultip" setting. +;----------------------------------------------------------------------------- + +; ** Old configuration options ** +; The "call-limit" configuation option is considered old is replaced +; by new functionality. To enable callcounters, you use the new +; "callcounter" setting (for extension states in queue and subscriptions) +; You are encouraged to use the dialplan groupcount functionality +; to enforce call limits instead of using this channel-specific method. +; You can still set limits per device in sip.conf or in a database by using +; "setvar" to set variables that can be used in the dialplan for various limits. + +[general] +context=public ; Default context for incoming calls. Defaults to 'default' +;allowguest=no ; Allow or reject guest calls (default is yes) + ; If your Asterisk is connected to the Internet + ; and you have allowguest=yes + ; you want to check which services you offer everyone + ; out there, by enabling them in the default context (see below). +;match_auth_username=yes ; if available, match user entry using the + ; 'username' field from the authentication line + ; instead of the From: field. +allowoverlap=no ; Disable overlap dialing support. (Default is yes) +;allowoverlap=yes ; Enable RFC3578 overlap dialing support. + ; Can use the Incomplete application to collect the + ; needed digits from an ambiguous dialplan match. +;allowoverlap=dtmf ; Enable overlap dialing support using DTMF delivery + ; methods (inband, RFC2833, SIP INFO) in the early + ; media phase. Uses the Incomplete application to + ; collect the needed digits. +;allowtransfer=no ; Disable all transfers (unless enabled in peers or users) + ; Default is enabled. The Dial() options 't' and 'T' are not + ; related as to whether SIP transfers are allowed or not. +;realm=mydomain.tld ; Realm for digest authentication + ; defaults to "asterisk". If you set a system name in + ; asterisk.conf, it defaults to that system name + ; Realms MUST be globally unique according to RFC 3261 + ; Set this to your host name or domain name +;domainsasrealm=no ; Use domains list as realms + ; You can serve multiple Realms specifying several + ; 'domain=...' directives (see below). + ; In this case Realm will be based on request 'From'/'To' header + ; and should match one of domain names. + ; Otherwise default 'realm=...' will be used. +;recordonfeature=automixmon ; Default feature to use when receiving 'Record: on' header + ; from an INFO message. Defaults to 'automon'. Works with + ; dynamic features. Feature must be usable on requesting + ; channel for it to work. Setting this value to a blank + ; will disable it. +;recordofffeature=automixmon ; Default feature to use when receiving 'Record: off' header + ; from an INFO message. Defaults to 'automon'. Works with + ; dynamic features. Feature must be usable on requesting + ; channel for it to work. Setting this value to a blank + ; will disable it. + +; With the current situation, you can do one of four things: +; a) Listen on a specific IPv4 address. Example: bindaddr=192.0.2.1 +; b) Listen on a specific IPv6 address. Example: bindaddr=2001:db8::1 +; c) Listen on the IPv4 wildcard. Example: bindaddr=0.0.0.0 +; d) Listen on the IPv4 and IPv6 wildcards. Example: bindaddr=:: +; (You can choose independently for UDP, TCP, and TLS, by specifying different values for +; "udpbindaddr", "tcpbindaddr", and "tlsbindaddr".) +; (Note that using bindaddr=:: will show only a single IPv6 socket in netstat. +; IPv4 is supported at the same time using IPv4-mapped IPv6 addresses.) +; +; You may optionally add a port number. (The default is port 5060 for UDP and TCP, 5061 +; for TLS). +; IPv4 example: bindaddr=0.0.0.0:5062 +; IPv6 example: bindaddr=[::]:5062 +; +; The address family of the bound UDP address is used to determine how Asterisk performs +; DNS lookups. In cases a) and c) above, only A records are considered. In case b), only +; AAAA records are considered. In case d), both A and AAAA records are considered. Note, +; however, that Asterisk ignores all records except the first one. In case d), when both A +; and AAAA records are available, either an A or AAAA record will be first, and which one +; depends on the operating system. On systems using glibc, AAAA records are given +; priority. + +udpbindaddr=0.0.0.0 ; IP address to bind UDP listen socket to (0.0.0.0 binds to all) + ; Optionally add a port number, 192.168.1.1:5062 (default is port 5060) + +; When a dialog is started with another SIP endpoint, the other endpoint +; should include an Allow header telling us what SIP methods the endpoint +; implements. However, some endpoints either do not include an Allow header +; or lie about what methods they implement. In the former case, Asterisk +; makes the assumption that the endpoint supports all known SIP methods. +; If you know that your SIP endpoint does not provide support for a specific +; method, then you may provide a comma-separated list of methods that your +; endpoint does not implement in the disallowed_methods option. Note that +; if your endpoint is truthful with its Allow header, then there is no need +; to set this option. This option may be set in the general section or may +; be set per endpoint. If this option is set both in the general section and +; in a peer section, then the peer setting completely overrides the general +; setting (i.e. the result is *not* the union of the two options). +; +; Note also that while Asterisk currently will parse an Allow header to learn +; what methods an endpoint supports, the only actual use for this currently +; is for determining if Asterisk may send connected line UPDATE requests and +; MESSAGE requests. Its use may be expanded in the future. +; +; disallowed_methods = UPDATE + +; +; Note that the TCP and TLS support for chan_sip is currently considered +; experimental. Since it is new, all of the related configuration options are +; subject to change in any release. If they are changed, the changes will +; be reflected in this sample configuration file, as well as in the UPGRADE.txt file. +; +tcpenable=no ; Enable server for incoming TCP connections (default is no) +tcpbindaddr=0.0.0.0 ; IP address for TCP server to bind to (0.0.0.0 binds to all interfaces) + ; Optionally add a port number, 192.168.1.1:5062 (default is port 5060) + +;tlsenable=no ; Enable server for incoming TLS (secure) connections (default is no) +;tlsbindaddr=0.0.0.0 ; IP address for TLS server to bind to (0.0.0.0) binds to all interfaces) + ; Optionally add a port number, 192.168.1.1:5063 (default is port 5061) + ; Remember that the IP address must match the common name (hostname) in the + ; certificate, so you don't want to bind a TLS socket to multiple IP addresses. + ; For details how to construct a certificate for SIP see + ; http://tools.ietf.org/html/draft-ietf-sip-domain-certs + +;tcpauthtimeout = 30 ; tcpauthtimeout 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) + +;tcpauthlimit = 100 ; tcpauthlimit specifies the maximum number of + ; unauthenticated sessions that will be allowed + ; to connect at any given time. (default: 100) + +;websocket_write_timeout = 100 ; Default write timeout to set on websocket transports. + ; 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. + +transport=udp ; Set the default transports. The order determines the primary default transport. + ; If tcpenable=no and the transport set is tcp, we will fallback to UDP. + +srvlookup=yes ; Enable DNS SRV lookups on outbound calls + ; Note: Asterisk only uses the first host + ; in SRV records + ; Disabling DNS SRV lookups disables the + ; ability to place SIP calls based on domain + ; names to some other SIP users on the Internet + ; Specifying a port in a SIP peer definition or + ; when dialing outbound calls will supress SRV + ; lookups for that peer or call. + +;pedantic=yes ; Enable checking of tags in headers, + ; international character conversions in URIs + ; and multiline formatted headers for strict + ; SIP compatibility (defaults to "yes") + +; See https://wiki.asterisk.org/wiki/display/AST/IP+Quality+of+Service for a description of these parameters. +;tos_sip=cs3 ; Sets TOS for SIP packets. +;tos_audio=ef ; Sets TOS for RTP audio packets. +;tos_video=af41 ; Sets TOS for RTP video packets. +;tos_text=af41 ; Sets TOS for RTP text packets. + +;cos_sip=3 ; Sets 802.1p priority for SIP packets. +;cos_audio=5 ; Sets 802.1p priority for RTP audio packets. +;cos_video=4 ; Sets 802.1p priority for RTP video packets. +;cos_text=3 ; Sets 802.1p priority for RTP text packets. + +;maxexpiry=3600 ; Maximum allowed time of incoming registrations (seconds) +;minexpiry=60 ; Minimum length of registrations (default 60) +;defaultexpiry=120 ; Default length of incoming/outgoing registration +;submaxexpiry=3600 ; Maximum allowed time of incoming subscriptions (seconds), default: maxexpiry +;subminexpiry=60 ; Minimum length of subscriptions, default: minexpiry +;mwiexpiry=3600 ; Expiry time for outgoing MWI subscriptions +;maxforwards=70 ; Setting for the SIP Max-Forwards: header (loop prevention) + ; Default value is 70 +;qualifyfreq=60 ; Qualification: How often to check for the host to be up in seconds + ; and reported in milliseconds with sip show settings. + ; Set to low value if you use low timeout for NAT of UDP sessions + ; Default: 60 +;qualifygap=100 ; Number of milliseconds between each group of peers being qualified + ; Default: 100 +;qualifypeers=1 ; Number of peers in a group to be qualified at the same time + ; Default: 1 +;keepalive=60 ; Interval at which keepalive packets should be sent to a peer + ; Valid options are yes (60 seconds), no, or the number of seconds. + ; Default: 0 +;notifymimetype=text/plain ; Allow overriding of mime type in MWI NOTIFY +;buggymwi=no ; Cisco SIP firmware doesn't support the MWI RFC + ; fully. Enable this option to not get error messages + ; when sending MWI to phones with this bug. +;mwi_from=asterisk ; When sending MWI NOTIFY requests, use this setting in + ; the From: header as the "name" portion. Also fill the + ; "user" portion of the URI in the From: header with this + ; value if no fromuser is set + ; Default: empty +;vmexten=voicemail ; dialplan extension to reach mailbox sets the + ; Message-Account in the MWI notify message + ; defaults to "asterisk" + +; Codec negotiation +; +; When Asterisk is receiving a call, the codec will initially be set to the +; first codec in the allowed codecs defined for the user receiving the call +; that the caller also indicates that it supports. But, after the caller +; starts sending RTP, Asterisk will switch to using whatever codec the caller +; is sending. +; +; When Asterisk is placing a call, the codec used will be the first codec in +; the allowed codecs that the callee indicates that it supports. Asterisk will +; *not* switch to whatever codec the callee is sending. +; +;preferred_codec_only=yes ; Respond to a SIP invite with the single most preferred codec + ; rather than advertising all joint codec capabilities. This + ; limits the other side's codec choice to exactly what we prefer. + +;disallow=all ; First disallow all codecs +;allow=ulaw ; Allow codecs in order of preference +;allow=ilbc ; see https://wiki.asterisk.org/wiki/display/AST/RTP+Packetization + ; for framing options +;autoframing=yes ; Set packetization based on the remote endpoint's (ptime) + ; preferences. Defaults to no. +; +; This option specifies a preference for which music on hold class this channel +; should listen to when put on hold if the music class has not been set on the +; channel with Set(CHANNEL(musicclass)=whatever) in the dialplan, and the peer +; channel putting this one on hold did not suggest a music class. +; +; This option may be specified globally, or on a per-user or per-peer basis. +; +;mohinterpret=default +; +; This option specifies which music on hold class to suggest to the peer channel +; when this channel places the peer on hold. It may be specified globally or on +; a per-user or per-peer basis. +; +;mohsuggest=default +; +;parkinglot=plaza ; Sets the default parking lot for call parking + ; This may also be set for individual users/peers + ; Parkinglots are configured in features.conf +;language=en ; Default language setting for all users/peers + ; This may also be set for individual users/peers +;tonezone=se ; Default tonezone for all users/peers + ; This may also be set for individual users/peers + +;relaxdtmf=yes ; Relax dtmf handling +;trustrpid = no ; If Remote-Party-ID should be trusted +;sendrpid = yes ; If Remote-Party-ID should be sent (defaults to no) +;sendrpid = rpid ; Use the "Remote-Party-ID" header + ; to send the identity of the remote party + ; This is identical to sendrpid=yes +;sendrpid = pai ; Use the "P-Asserted-Identity" header + ; to send the identity of the remote party +;rpid_update = no ; In certain cases, the only method by which a connected line + ; change may be immediately transmitted is with a SIP UPDATE request. + ; If communicating with another Asterisk server, and you wish to be able + ; transmit such UPDATE messages to it, then you must enable this option. + ; Otherwise, we will have to wait until we can send a reinvite to + ; transmit the information. +;trust_id_outbound = no ; Controls whether or not we trust this peer with private identity + ; information (when the remote party has callingpres=prohib or equivalent). + ; no - RPID/PAI headers will not be included for private peer information + ; yes - RPID/PAI headers will include the private peer information. Privacy + ; requirements will be indicated in a Privacy header for sendrpid=pai + ; legacy - RPID/PAI will be included for private peer information. In the + ; case of sendrpid=pai, private data that would be included in them + ; will be anonymized. For sendrpid=rpid, private data may be included + ; but the remote party's domain will be anonymized. The way legacy + ; behaves may violate RFC-3325, but it follows historic behavior. + ; This option is set to 'legacy' by default +;prematuremedia=no ; Some ISDN links send empty media frames before + ; the call is in ringing or progress state. The SIP + ; channel will then send 183 indicating early media + ; which will be empty - thus users get no ring signal. + ; Setting this to "yes" will stop any media before we have + ; call progress (meaning the SIP channel will not send 183 Session + ; Progress for early media). Default is "yes". Also make sure that + ; the SIP peer is configured with progressinband=never. + ; + ; In order for "noanswer" applications to work, you need to run + ; the progress() application in the priority before the app. + +;progressinband=never ; If we should generate in-band ringing always + ; use 'never' to never use in-band signalling, even in cases + ; where some buggy devices might not render it + ; Valid values: yes, no, never Default: never +;useragent=Asterisk PBX ; Allows you to change the user agent string + ; The default user agent string also contains the Asterisk + ; version. If you don't want to expose this, change the + ; useragent string. +;promiscredir = no ; If yes, allows 302 or REDIR to non-local SIP address + ; Note that promiscredir when redirects are made to the + ; local system will cause loops since Asterisk is incapable + ; of performing a "hairpin" call. +;usereqphone = no ; If yes, ";user=phone" is added to uri that contains + ; a valid phone number +;dtmfmode = rfc2833 ; Set default dtmfmode for sending DTMF. Default: rfc2833 + ; Other options: + ; info : SIP INFO messages (application/dtmf-relay) + ; shortinfo : SIP INFO messages (application/dtmf) + ; inband : Inband audio (requires 64 kbit codec -alaw, ulaw) + ; auto : Use rfc2833 if offered, inband otherwise + +;compactheaders = yes ; send compact sip headers. +; +;videosupport=yes ; Turn on support for SIP video. You need to turn this + ; on in this section to get any video support at all. + ; You can turn it off on a per peer basis if the general + ; video support is enabled, but you can't enable it for + ; one peer only without enabling in the general section. + ; If you set videosupport to "always", then RTP ports will + ; always be set up for video, even on clients that don't + ; support it. This assists callfile-derived calls and + ; certain transferred calls to use always use video when + ; available. [yes|NO|always] + +;textsupport=no ; Support for ITU-T T.140 realtime text. + ; The default value is "no". + +;maxcallbitrate=384 ; Maximum bitrate for video calls (default 384 kb/s) + ; Videosupport and maxcallbitrate is settable + ; for peers and users as well +;authfailureevents=no ; generate manager "peerstatus" events when peer can't + ; authenticate with Asterisk. Peerstatus will be "rejected". +;alwaysauthreject = yes ; When an incoming INVITE or REGISTER is to be rejected, + ; for any reason, always reject with an identical response + ; equivalent to valid username and invalid password/hash + ; instead of letting the requester know whether there was + ; a matching user or peer for their request. This reduces + ; the ability of an attacker to scan for valid SIP usernames. + ; This option is set to "yes" by default. + +;auth_options_requests = yes ; Enabling this option will authenticate OPTIONS requests just like + ; INVITE requests are. By default this option is disabled. + +;accept_outofcall_message = no ; Disable this option to reject all MESSAGE requests outside of a + ; call. By default, this option is enabled. When enabled, MESSAGE + ; requests are passed in to the dialplan. + +;outofcall_message_context = messages ; Context all out of dialog msgs are sent to. When this + ; option is not set, the context used during peer matching + ; is used. This option can be defined at both the peer and + ; global level. + +;auth_message_requests = yes ; Enabling this option will authenticate MESSAGE requests. + ; By default this option is enabled. However, it can be disabled + ; should an application desire to not load the Asterisk server with + ; doing authentication and implement end to end security in the + ; message body. + +;g726nonstandard = yes ; If the peer negotiates G726-32 audio, use AAL2 packing + ; order instead of RFC3551 packing order (this is required + ; for Sipura and Grandstream ATAs, among others). This is + ; contrary to the RFC3551 specification, the peer _should_ + ; be negotiating AAL2-G726-32 instead :-( +;outboundproxy=proxy.provider.domain ; send outbound signaling to this proxy, not directly to the devices +;outboundproxy=proxy.provider.domain:8080 ; send outbound signaling to this proxy, not directly to the devices +;outboundproxy=proxy.provider.domain,force ; Send ALL outbound signalling to proxy, ignoring route: headers +;outboundproxy=tls://proxy.provider.domain ; same as '=proxy.provider.domain' except we try to connect with tls +;outboundproxy=192.0.2.1 ; IPv4 address literal (default port is 5060) +;outboundproxy=2001:db8::1 ; IPv6 address literal (default port is 5060) +;outboundproxy=192.168.0.2.1:5062 ; IPv4 address literal with explicit port +;outboundproxy=[2001:db8::1]:5062 ; IPv6 address literal with explicit port +; ; (could also be tcp,udp) - defining transports on the proxy line only +; ; applies for the global proxy, otherwise use the transport= option + +;supportpath=yes ; This activates parsing and handling of Path header as defined in RFC 3327. This enables + ; Asterisk to route outgoing out-of-dialog requests via a set of proxies by using a pre-loaded + ; route-set defined by the Path headers in the REGISTER request. + ; NOTE: There are multiple things to consider with this setting: + ; * As this influences routing of SIP requests make sure to not trust Path headers provided + ; by the user's SIP client (the proxy in front of Asterisk should remove existing user + ; provided Path headers). + ; * When a peer has both a path and outboundproxy set, the path will be added to Route: header + ; but routing to next hop is done using the outboundproxy. + ; * If set globally, not only will all peers use the Path header, but outbound REGISTER + ; requests from Asterisk will add path to the Supported header. + +;rtsavepath=yes ; If using dynamic realtime, store the path headers + +;matchexternaddrlocally = yes ; Only substitute the externaddr or externhost setting if it matches + ; your localnet setting. Unless you have some sort of strange network + ; setup you will not need to enable this. + +;dynamic_exclude_static = yes ; Disallow all dynamic hosts from registering + ; as any IP address used for staticly defined + ; hosts. This helps avoid the configuration + ; error of allowing your users to register at + ; the same address as a SIP provider. + +;contactdeny=0.0.0.0/0.0.0.0 ; Use contactpermit and contactdeny to +;contactpermit=172.16.0.0/255.255.0.0 ; restrict at what IPs your users may + ; register their phones. +;contactacl=named_acl_example ; Use named ACLs defined in acl.conf + +;rtp_engine=asterisk ; RTP engine to use when communicating with the device + +; +; If regcontext is specified, Asterisk will dynamically create and destroy a +; NoOp priority 1 extension for a given peer who registers or unregisters with +; us and have a "regexten=" configuration item. +; Multiple contexts may be specified by separating them with '&'. The +; actual extension is the 'regexten' parameter of the registering peer or its +; name if 'regexten' is not provided. If more than one context is provided, +; the context must be specified within regexten by appending the desired +; context after '@'. More than one regexten may be supplied if they are +; separated by '&'. Patterns may be used in regexten. +; +;regcontext=sipregistrations +;regextenonqualify=yes ; Default "no" + ; If you have qualify on and the peer becomes unreachable + ; this setting will enforce inactivation of the regexten + ; extension for the peer +;legacy_useroption_parsing=yes ; Default "no" ; If you have this option enabled and there are semicolons + ; in the user field of a sip URI, the field be truncated + ; at the first semicolon seen. This effectively makes + ; semicolon a non-usable character for peer names, extensions, + ; and maybe other, less tested things. This can be useful + ; for improving compatability with devices that like to use + ; user options for whatever reason. The behavior is similar to + ; how SIP URI's were typically handled in 1.6.2, hence the name. + +;send_diversion=no ; Default "yes" ; Asterisk normally sends Diversion headers with certain SIP + ; invites to relay data about forwarded calls. If this option + ; is disabled, Asterisk won't send Diversion headers unless + ; they are added manually. + +; The shrinkcallerid function removes '(', ' ', ')', non-trailing '.', and '-' not +; in square brackets. For example, the caller id value 555.5555 becomes 5555555 +; when this option is enabled. Disabling this option results in no modification +; of the caller id value, which is necessary when the caller id represents something +; that must be preserved. This option can only be used in the [general] section. +; By default this option is on. +; +;shrinkcallerid=yes ; on by default + + +;use_q850_reason = no ; Default "no" + ; Set to yes add Reason header and use Reason header if it is available. + +; When the Transfer() application sends a REFER SIP message, extra headers specified in +; the dialplan by way of SIPAddHeader are sent out with that message. 1.8 and earlier did not +; add the extra headers. To revert to 1.8- behavior, call SIPRemoveHeader with no arguments +; before calling Transfer() to remove all additional headers from the channel. The setting +; below is for transitional compatibility only. +; +;refer_addheaders=yes ; on by default + +;autocreatepeer=no ; Allow any UAC not explicitly defined to register + ; WITHOUT AUTHENTICATION. Enabling this options poses a high + ; potential security risk and should be avoided unless the + ; server is behind a trusted firewall. + ; If set to "yes", then peers created in this fashion + ; are purged during SIP reloads. + ; When set to "persist", the peers created in this fashion + ; are not purged during SIP reloads. + +; +;------------------------ TLS settings ------------------------------------------------------------ +;tlscertfile=</path/to/certificate.pem> ; Certificate chain (*.pem format only) to use for TLS connections + ; The certificates must be sorted starting with the subject's certificate + ; and followed by intermediate CA certificates if applicable. + ; Default is to look for "asterisk.pem" in current directory + +;tlsprivatekey=</path/to/private.pem> ; Private key file (*.pem format only) for TLS connections. + ; If no tlsprivatekey is specified, tlscertfile is searched for + ; for both public and private key. + +;tlscafile=</path/to/certificate> +; If the server your connecting to uses a self signed certificate +; you should have their certificate installed here so the code can +; verify the authenticity of their certificate. + +;tlscapath=</path/to/ca/dir> +; A directory full of CA certificates. The files must be named with +; the CA subject name hash value. +; (see man SSL_CTX_load_verify_locations for more info) + +;tlsdontverifyserver=[yes|no] +; If set to yes, don't verify the servers certificate when acting as +; a client. If you don't have the server's CA certificate you can +; set this and it will connect without requiring tlscafile to be set. +; Default is no. + +;tlscipher=<SSL cipher string> +; A string specifying which SSL ciphers to use or not use +; A list of valid SSL cipher strings can be found at: +; http://www.openssl.org/docs/apps/ciphers.html#CIPHER_STRINGS +; +;tlsclientmethod=tlsv1 ; values include tlsv1, sslv3, sslv2. + ; Specify protocol for outbound client connections. + ; If left unspecified, the default is sslv2. +; +;--------------------------- SIP timers ---------------------------------------------------- +; These timers are used primarily in INVITE transactions. +; The default for Timer T1 is 500 ms or the measured run-trip time between +; Asterisk and the device if you have qualify=yes for the device. +; +;t1min=100 ; Minimum roundtrip time for messages to monitored hosts + ; Defaults to 100 ms +;timert1=500 ; Default T1 timer + ; Defaults to 500 ms or the measured round-trip + ; time to a peer (qualify=yes). +;timerb=32000 ; Call setup timer. If a provisional response is not received + ; in this amount of time, the call will autocongest + ; Defaults to 64*timert1 + +;--------------------------- RTP timers ---------------------------------------------------- +; These timers are currently used for both audio and video streams. The RTP timeouts +; are only applied to the audio channel. +; The settings are settable in the global section as well as per device +; +;rtptimeout=60 ; Terminate call if 60 seconds of no RTP or RTCP activity + ; on the audio channel + ; when we're not on hold. This is to be able to hangup + ; a call in the case of a phone disappearing from the net, + ; like a powerloss or grandma tripping over a cable. +;rtpholdtimeout=300 ; Terminate call if 300 seconds of no RTP or RTCP activity + ; on the audio channel + ; when we're on hold (must be > rtptimeout) +;rtpkeepalive=<secs> ; Send keepalives in the RTP stream to keep NAT open + ; (default is off - zero) + +;--------------------------- SIP Session-Timers (RFC 4028)------------------------------------ +; SIP Session-Timers provide an end-to-end keep-alive mechanism for active SIP sessions. +; This mechanism can detect and reclaim SIP channels that do not terminate through normal +; signaling procedures. Session-Timers can be configured globally or at a user/peer level. +; The operation of Session-Timers is driven by the following configuration parameters: +; +; * session-timers - Session-Timers feature operates in the following three modes: +; originate : Request and run session-timers always +; accept : Run session-timers only when requested by other UA +; refuse : Do not run session timers in any case +; The default mode of operation is 'accept'. +; * session-expires - Maximum session refresh interval in seconds. Defaults to 1800 secs. +; * session-minse - Minimum session refresh interval in seconds. Defualts to 90 secs. +; * session-refresher - The session refresher (uac|uas). Defaults to 'uas'. +; uac - Default to the caller initially refreshing when possible +; uas - Default to the callee initially refreshing when possible +; +; Note that, due to recommendations in RFC 4028, Asterisk will always honor the other +; endpoint's preference for who will handle refreshes. Asterisk will never override the +; preferences of the other endpoint. Doing so could result in Asterisk and the endpoint +; fighting over who sends the refreshes. This holds true for the initiation of session +; timers and subsequent re-INVITE requests whether Asterisk is the caller or callee, or +; whether Asterisk is currently the refresher or not. +; +;session-timers=originate +;session-expires=600 +;session-minse=90 +;session-refresher=uac +; +;--------------------------- SIP DEBUGGING --------------------------------------------------- +;sipdebug = yes ; Turn on SIP debugging by default, from + ; the moment the channel loads this configuration +;recordhistory=yes ; Record SIP history by default + ; (see sip history / sip no history) +;dumphistory=yes ; Dump SIP history at end of SIP dialogue + ; SIP history is output to the DEBUG logging channel + + +;--------------------------- STATUS NOTIFICATIONS (SUBSCRIPTIONS) ---------------------------- +; You can subscribe to the status of extensions with a "hint" priority +; (See extensions.conf.sample for examples) +; chan_sip support two major formats for notifications: dialog-info and SIMPLE +; +; You will get more detailed reports (busy etc) if you have a call counter enabled +; for a device. +; +; If you set the busylevel, we will indicate busy when we have a number of calls that +; matches the busylevel treshold. +; +; For queues, you will need this level of detail in status reporting, regardless +; if you use SIP subscriptions. Queues and manager use the same internal interface +; for reading status information. +; +; Note: Subscriptions does not work if you have a realtime dialplan and use the +; realtime switch. +; +;allowsubscribe=no ; Disable support for subscriptions. (Default is yes) +;subscribecontext = default ; Set a specific context for SUBSCRIBE requests + ; Useful to limit subscriptions to local extensions + ; Settable per peer/user also +;notifyringing = no ; Control whether subscriptions already INUSE get sent + ; RINGING when another call is sent (default: yes) +;notifyhold = yes ; Notify subscriptions on HOLD state (default: no) + ; Turning on notifyringing and notifyhold will add a lot + ; more database transactions if you are using realtime. +;notifycid = yes ; Control whether caller ID information is sent along with + ; dialog-info+xml notifications (supported by snom phones). + ; Note that this feature will only work properly when the + ; incoming call is using the same extension and context that + ; is being used as the hint for the called extension. This means + ; that it won't work when using subscribecontext for your sip + ; user or peer (if subscribecontext is different than context). + ; This is also limited to a single caller, meaning that if an + ; extension is ringing because multiple calls are incoming, + ; only one will be used as the source of caller ID. Specify + ; 'ignore-context' to ignore the called context when looking + ; for the caller's channel. The default value is 'no.' Setting + ; notifycid to 'ignore-context' also causes call-pickups attempted + ; via SNOM's NOTIFY mechanism to set the context for the call pickup + ; to PICKUPMARK. +;callcounter = yes ; Enable call counters on devices. This can be set per + ; device too. + +;----------------------------------------- T.38 FAX SUPPORT ---------------------------------- +; +; This setting is available in the [general] section as well as in device configurations. +; Setting this to yes enables T.38 FAX (UDPTL) on SIP calls; it defaults to off. +; +; t38pt_udptl = yes ; Enables T.38 with FEC error correction. +; t38pt_udptl = yes,fec ; Enables T.38 with FEC error correction. +; t38pt_udptl = yes,redundancy ; Enables T.38 with redundancy error correction. +; t38pt_udptl = yes,none ; Enables T.38 with no error correction. +; +; In some cases, T.38 endpoints will provide a T38FaxMaxDatagram value (during T.38 setup) that +; is based on an incorrect interpretation of the T.38 recommendation, and results in failures +; because Asterisk does not believe it can send T.38 packets of a reasonable size to that +; endpoint (Cisco media gateways are one example of this situation). In these cases, during a +; T.38 call you will see warning messages on the console/in the logs from the Asterisk UDPTL +; stack complaining about lack of buffer space to send T.38 FAX packets. If this occurs, you +; can set an override (globally, or on a per-device basis) to make Asterisk ignore the +; T38FaxMaxDatagram value specified by the other endpoint, and use a configured value instead. +; This can be done by appending 'maxdatagram=<value>' to the t38pt_udptl configuration option, +; like this: +; +; t38pt_udptl = yes,fec,maxdatagram=400 ; Enables T.38 with FEC error correction and overrides +; ; the other endpoint's provided value to assume we can +; ; send 400 byte T.38 FAX packets to it. +; +; FAX detection will cause the SIP channel to jump to the 'fax' extension (if it exists) +; based one or more events being detected. The events that can be detected are an incoming +; CNG tone or an incoming T.38 re-INVITE request. +; +; faxdetect = yes ; Default 'no', 'yes' enables both CNG and T.38 detection +; faxdetect = cng ; Enables only CNG detection +; faxdetect = t38 ; Enables only T.38 detection +; +;----------------------------------------- OUTBOUND SIP REGISTRATIONS ------------------------ +; Asterisk can register as a SIP user agent to a SIP proxy (provider) +; Format for the register statement is: +; register => [peer?][transport://]user[@domain][:secret[:authuser]]@host[:port][/extension][~expiry] +; +; +; +; domain is either +; - domain in DNS +; - host name in DNS +; - the name of a peer defined below or in realtime +; The domain is where you register your username, so your SIP uri you are registering to +; is username@domain +; +; If no extension is given, the 's' extension is used. The extension needs to +; be defined in extensions.conf to be able to accept calls from this SIP proxy +; (provider). +; +; A similar effect can be achieved by adding a "callbackextension" option in a peer section. +; this is equivalent to having the following line in the general section: +; +; register => username:secret@host/callbackextension +; +; and more readable because you don't have to write the parameters in two places +; (note that the "port" is ignored - this is a bug that should be fixed). +; +; Note that a register= line doesn't mean that we will match the incoming call in any +; other way than described above. If you want to control where the call enters your +; dialplan, which context, you want to define a peer with the hostname of the provider's +; server. If the provider has multiple servers to place calls to your system, you need +; a peer for each server. +; +; Beginning with Asterisk version 1.6.2, the "user" portion of the register line may +; contain a port number. Since the logical separator between a host and port number is a +; ':' character, and this character is already used to separate between the optional "secret" +; and "authuser" portions of the line, there is a bit of a hoop to jump through if you wish +; to use a port here. That is, you must explicitly provide a "secret" and "authuser" even if +; they are blank. See the third example below for an illustration. +; +; +; Examples: +; +;register => 1234:password@mysipprovider.com +; +; This will pass incoming calls to the 's' extension +; +; +;register => 2345:password@sip_proxy/1234 +; +; Register 2345 at sip provider 'sip_proxy'. Calls from this provider +; connect to local extension 1234 in extensions.conf, default context, +; unless you configure a [sip_proxy] section below, and configure a +; context. +; Tip 1: Avoid assigning hostname to a sip.conf section like [provider.com] +; Tip 2: Use separate inbound and outbound sections for SIP providers +; (instead of type=friend) if you have calls in both directions +; +;register => 3456@mydomain:5082::@mysipprovider.com +; +; Note that in this example, the optional authuser and secret portions have +; been left blank because we have specified a port in the user section +; +;register => tls://username:xxxxxx@sip-tls-proxy.example.org +; +; The 'transport' part defaults to 'udp' but may also be 'tcp', 'tls', 'ws', or 'wss'. +; Using 'udp://' explicitly is also useful in case the username part +; contains a '/' ('user/name'). + +;registertimeout=20 ; retry registration calls every 20 seconds (default) +;registerattempts=10 ; Number of registration attempts before we give up + ; 0 = continue forever, hammering the other server + ; until it accepts the registration + ; Default is 0 tries, continue forever +;register_retry_403=yes ; Treat 403 responses to registrations as if they were + ; 401 responses and continue retrying according to normal + ; retry rules. + +;----------------------------------------- OUTBOUND MWI SUBSCRIPTIONS ------------------------- +; Asterisk can subscribe to receive the MWI from another SIP server and store it locally for retrieval +; by other phones. At this time, you can only subscribe using UDP as the transport. +; Format for the mwi register statement is: +; mwi => user[:secret[:authuser]]@host[:port]/mailbox +; +; Examples: +;mwi => 1234:password@mysipprovider.com/1234 +;mwi => 1234:password@myportprovider.com:6969/1234 +;mwi => 1234:password:authuser@myauthprovider.com/1234 +;mwi => 1234:password:authuser@myauthportprovider.com:6969/1234 +; +; MWI received will be stored in the 1234 mailbox of the SIP_Remote context. +; It can be used by other phones by following the below: +; mailbox=1234@SIP_Remote +;----------------------------------------- NAT SUPPORT ------------------------ +; +; WARNING: SIP operation behind a NAT is tricky and you really need +; to read and understand well the following section. +; +; When Asterisk is behind a NAT device, the "local" address (and port) that +; a socket is bound to has different values when seen from the inside or +; from the outside of the NATted network. Unfortunately this address must +; be communicated to the outside (e.g. in SIP and SDP messages), and in +; order to determine the correct value Asterisk needs to know: +; +; + whether it is talking to someone "inside" or "outside" of the NATted network. +; This is configured by assigning the "localnet" parameter with a list +; of network addresses that are considered "inside" of the NATted network. +; IF LOCALNET IS NOT SET, THE EXTERNAL ADDRESS WILL NOT BE SET CORRECTLY. +; Multiple entries are allowed, e.g. a reasonable set is the following: +; +; localnet=192.168.0.0/255.255.0.0 ; RFC 1918 addresses +; localnet=10.0.0.0/255.0.0.0 ; Also RFC1918 +; localnet=172.16.0.0/12 ; Another RFC1918 with CIDR notation +; localnet=169.254.0.0/255.255.0.0 ; Zero conf local network +; +; + the "externally visible" address and port number to be used when talking +; to a host outside the NAT. This information is derived by one of the +; following (mutually exclusive) config file parameters: +; +; a. "externaddr = hostname[:port]" specifies a static address[:port] to +; be used in SIP and SDP messages. +; The hostname is looked up only once, when [re]loading sip.conf . +; If a port number is not present, use the port specified in the "udpbindaddr" +; (which is not guaranteed to work correctly, because a NAT box might remap the +; port number as well as the address). +; This approach can be useful if you have a NAT device where you can +; configure the mapping statically. Examples: +; +; externaddr = 12.34.56.78 ; use this address. +; externaddr = 12.34.56.78:9900 ; use this address and port. +; externaddr = mynat.my.org:12600 ; Public address of my nat box. +; externtcpport = 9900 ; The externally mapped tcp port, when Asterisk is behind a static NAT or PAT. +; ; externtcpport will default to the externaddr or externhost port if either one is set. +; externtlsport = 12600 ; The externally mapped tls port, when Asterisk is behind a static NAT or PAT. +; ; externtlsport port will default to the RFC designated port of 5061. +; +; b. "externhost = hostname[:port]" is similar to "externaddr" except +; that the hostname is looked up every "externrefresh" seconds +; (default 10s). This can be useful when your NAT device lets you choose +; the port mapping, but the IP address is dynamic. +; Beware, you might suffer from service disruption when the name server +; resolution fails. Examples: +; +; externhost=foo.dyndns.net ; refreshed periodically +; externrefresh=180 ; change the refresh interval +; +; Note that at the moment all these mechanism work only for the SIP socket. +; The IP address discovered with externaddr/externhost is reused for +; media sessions as well, but the port numbers are not remapped so you +; may still experience problems. +; +; NOTE 1: in some cases, NAT boxes will use different port numbers in +; the internal<->external mapping. In these cases, the "externaddr" and +; "externhost" might not help you configure addresses properly. +; +; NOTE 2: when using "externaddr" or "externhost", the address part is +; also used as the external address for media sessions. Thus, the port +; information in the SDP may be wrong! +; +; In addition to the above, Asterisk has an additional "nat" parameter to +; address NAT-related issues in incoming SIP or media sessions. +; In particular, depending on the 'nat= ' settings described below, Asterisk +; may override the address/port information specified in the SIP/SDP messages, +; and use the information (sender address) supplied by the network stack instead. +; However, this is only useful if the external traffic can reach us. +; The following settings are allowed (both globally and in individual sections): +; +; nat = no ; Do no special NAT handling other than RFC3581 +; nat = force_rport ; Pretend there was an rport parameter even if there wasn't +; nat = comedia ; Send media to the port Asterisk received it from regardless +; ; of where the SDP says to send it. +; nat = auto_force_rport ; Set the force_rport option if Asterisk detects NAT (default) +; nat = auto_comedia ; Set the comedia option if Asterisk detects NAT +; +; The nat settings can be combined. For example, to set both force_rport and comedia +; one would set nat=force_rport,comedia. If any of the comma-separated options is 'no', +; Asterisk will ignore any other settings and set nat=no. If one of the "auto" settings +; is used in conjunction with its non-auto counterpart (nat=comedia,auto_comedia), then +; the non-auto option will be ignored. +; +; The RFC 3581-defined 'rport' parameter allows a client to request that Asterisk send +; SIP responses to it via the source IP and port from which the request originated +; instead of the address/port listed in the top-most Via header. This is useful if a +; client knows that it is behind a NAT and therefore cannot guess from what address/port +; its request will be sent. Asterisk will always honor the 'rport' parameter if it is +; sent. The force_rport setting causes Asterisk to always send responses back to the +; address/port from which it received requests; even if the other side doesn't support +; adding the 'rport' parameter. +; +; 'comedia RTP handling' refers to the technique of sending RTP to the port that the +; the other endpoint's RTP arrived from, and means 'connection-oriented media'. This is +; only partially related to RFC 4145 which was referred to as COMEDIA while it was in +; draft form. This method is used to accomodate endpoints that may be located behind +; NAT devices, and as such the address/port they tell Asterisk to send RTP packets to +; for their media streams is not the actual address/port that will be used on the nearer +; side of the NAT. +; +; IT IS IMPORTANT TO NOTE that if the nat setting in the general section differs from +; the nat setting in a peer definition, then the peer username will be discoverable +; by outside parties as Asterisk will respond to different ports for defined and +; undefined peers. For this reason it is recommended to ONLY DEFINE NAT SETTINGS IN THE +; GENERAL SECTION. Specifically, if nat=force_rport in one section and nat=no in the +; other, then valid peers with settings differing from those in the general section will +; be discoverable. +; +; In addition to these settings, Asterisk *always* uses 'symmetric RTP' mode as defined by +; RFC 4961; Asterisk will always send RTP packets from the same port number it expects +; to receive them on. +; +; The IP address used for media (audio, video, and text) in the SDP can also be overridden by using +; the media_address configuration option. This is only applicable to the general section and +; can not be set per-user or per-peer. +; +; media_address = 172.16.42.1 +; +; Through the use of the res_stun_monitor module, Asterisk has the ability to detect when the +; perceived external network address has changed. When the stun_monitor is installed and +; configured, chan_sip will renew all outbound registrations when the monitor detects any sort +; of network change has occurred. By default this option is enabled, but only takes effect once +; res_stun_monitor is configured. If res_stun_monitor is enabled and you wish to not +; generate all outbound registrations on a network change, use the option below to disable +; this feature. +; +; subscribe_network_change_event = yes ; on by default +; +; ICE/STUN/TURN usage can be enabled globally or on a per-peer basis using the icesupport +; configuration option. When set to yes ICE support is enabled. When set to no it is disabled. +; It is disabled by default. +; +; icesupport = yes + +;----------------------------------- MEDIA HANDLING -------------------------------- +; By default, Asterisk tries to re-invite media streams to an optimal path. If there's +; no reason for Asterisk to stay in the media path, the media will be redirected. +; This does not really work well in the case where Asterisk is outside and the +; clients are on the inside of a NAT. In that case, you want to set directmedia=nonat. +; +;directmedia=yes ; Asterisk by default tries to redirect the + ; RTP media stream to go directly from + ; the caller to the callee. Some devices do not + ; support this (especially if one of them is behind a NAT). + ; The default setting is YES. If you have all clients + ; behind a NAT, or for some other reason want Asterisk to + ; stay in the audio path, you may want to turn this off. + + ; This setting also affect direct RTP + ; at call setup (a new feature in 1.4 - setting up the + ; call directly between the endpoints instead of sending + ; a re-INVITE). + + ; Additionally this option does not disable all reINVITE operations. + ; It only controls Asterisk generating reINVITEs for the specific + ; purpose of setting up a direct media path. If a reINVITE is + ; needed to switch a media stream to inactive (when placed on + ; hold) or to T.38, it will still be done, regardless of this + ; setting. Note that direct T.38 is not supported. + +;directmedia=nonat ; An additional option is to allow media path redirection + ; (reinvite) but only when the peer where the media is being + ; sent is known to not be behind a NAT (as the RTP core can + ; determine it based on the apparent IP address the media + ; arrives from). + +;directmedia=update ; Yet a third option... use UPDATE for media path redirection, + ; instead of INVITE. This can be combined with 'nonat', as + ; 'directmedia=update,nonat'. It implies 'yes'. + +;directmedia=outgoing ; When sending directmedia reinvites, do not send an immediate + ; reinvite on an incoming call leg. This option is useful when + ; peered with another SIP user agent that is known to send + ; immediate direct media reinvites upon call establishment. Setting + ; the option in this situation helps to prevent potential glares. + ; Setting this option implies 'yes'. + +;directrtpsetup=yes ; Enable the new experimental direct RTP setup. This sets up + ; the call directly with media peer-2-peer without re-invites. + ; Will not work for video and cases where the callee sends + ; RTP payloads and fmtp headers in the 200 OK that does not match the + ; callers INVITE. This will also fail if directmedia is enabled when + ; the device is actually behind NAT. + +;directmediadeny=0.0.0.0/0 ; Use directmediapermit and directmediadeny to restrict +;directmediapermit=172.16.0.0/16; which peers should be able to pass directmedia to each other + ; (There is no default setting, this is just an example) + ; Use this if some of your phones are on IP addresses that + ; can not reach each other directly. This way you can force + ; RTP to always flow through asterisk in such cases. +;directmediaacl=acl_example ; Use named ACLs defined in acl.conf + +;ignoresdpversion=yes ; By default, Asterisk will honor the session version + ; number in SDP packets and will only modify the SDP + ; session if the version number changes. This option will + ; force asterisk to ignore the SDP session version number + ; and treat all SDP data as new data. This is required + ; for devices that send us non standard SDP packets + ; (observed with Microsoft OCS). By default this option is + ; off. + +;sdpsession=Asterisk PBX ; Allows you to change the SDP session name string, (s=) + ; Like the useragent parameter, the default user agent string + ; also contains the Asterisk version. +;sdpowner=root ; Allows you to change the username field in the SDP owner string, (o=) + ; This field MUST NOT contain spaces +;encryption=no ; Whether to offer SRTP encrypted media (and only SRTP encrypted media) + ; on outgoing calls to a peer. Calls will fail with HANGUPCAUSE=58 if + ; the peer does not support SRTP. Defaults to no. +;encryption_taglen=80 ; Set the auth tag length offered in the INVITE either 32/80 default 80 +; +;avpf=yes ; Enable inter-operability with media streams using the AVPF RTP profile. + ; This will cause all offers and answers to use AVPF (or SAVPF). This + ; option may be specified at the global or peer scope. +;force_avp=yes ; Force 'RTP/AVP', 'RTP/AVPF', 'RTP/SAVP', and 'RTP/SAVPF' to be used for + ; media streams when appropriate, even if a DTLS stream is present. +;----------------------------------------- REALTIME SUPPORT ------------------------ +; For additional information on ARA, the Asterisk Realtime Architecture, +; please read https://wiki.asterisk.org/wiki/display/AST/Realtime+Database+Configuration +; +;rtcachefriends=yes ; Cache realtime friends by adding them to the internal list + ; just like friends added from the config file only on a + ; as-needed basis? (yes|no) + +;rtsavesysname=yes ; Save systemname in realtime database at registration + ; Default= no + +;rtupdate=yes ; Send registry updates to database using realtime? (yes|no) + ; If set to yes, when a SIP UA registers successfully, the ip address, + ; the origination port, the registration period, and the username of + ; the UA will be set to database via realtime. + ; If not present, defaults to 'yes'. Note: realtime peers will + ; probably not function across reloads in the way that you expect, if + ; you turn this option off. +;rtautoclear=yes ; Auto-Expire friends created on the fly on the same schedule + ; as if it had just registered? (yes|no|<seconds>) + ; If set to yes, when the registration expires, the friend will + ; vanish from the configuration until requested again. If set + ; to an integer, friends expire within this number of seconds + ; instead of the registration interval. + +;ignoreregexpire=yes ; Enabling this setting has two functions: + ; + ; For non-realtime peers, when their registration expires, the + ; information will _not_ be removed from memory or the Asterisk database + ; if you attempt to place a call to the peer, the existing information + ; will be used in spite of it having expired + ; + ; For realtime peers, when the peer is retrieved from realtime storage, + ; the registration information will be used regardless of whether + ; it has expired or not; if it expires while the realtime peer + ; is still in memory (due to caching or other reasons), the + ; information will not be removed from realtime storage + +;----------------------------------------- SIP DOMAIN SUPPORT ------------------------ +; Incoming INVITE and REFER messages can be matched against a list of 'allowed' +; domains, each of which can direct the call to a specific context if desired. +; By default, all domains are accepted and sent to the default context or the +; context associated with the user/peer placing the call. +; REGISTER to non-local domains will be automatically denied if a domain +; list is configured. +; +; Domains can be specified using: +; domain=<domain>[,<context>] +; Examples: +; domain=myasterisk.dom +; domain=customer.com,customer-context +; +; In addition, all the 'default' domains associated with a server should be +; added if incoming request filtering is desired. +; autodomain=yes +; +; To disallow requests for domains not serviced by this server: +; allowexternaldomains=no + +;domain=mydomain.tld,mydomain-incoming + ; Add domain and configure incoming context + ; for external calls to this domain +;domain=1.2.3.4 ; Add IP address as local domain + ; You can have several "domain" settings +;allowexternaldomains=no ; Disable INVITE and REFER to non-local domains + ; Default is yes +;autodomain=yes ; Turn this on to have Asterisk add local host + ; name and local IP to domain list. + +; fromdomain=mydomain.tld ; When making outbound SIP INVITEs to + ; non-peers, use your primary domain "identity" + ; for From: headers instead of just your IP + ; address. This is to be polite and + ; it may be a mandatory requirement for some + ; destinations which do not have a prior + ; account relationship with your server. + +;------------------------------ Advice of Charge CONFIGURATION -------------------------- +; snom_aoc_enabled = yes; ; This options turns on and off support for sending AOC-D and + ; AOC-E to snom endpoints. This option can be used both in the + ; peer and global scope. The default for this option is off. + + +;------------------------------ JITTER BUFFER CONFIGURATION -------------------------- +; jbenable = yes ; Enables the use of a jitterbuffer on the receiving side of a + ; SIP channel. Defaults to "no". An enabled jitterbuffer will + ; be used only if the sending side can create and the receiving + ; side can not accept jitter. The SIP channel can accept jitter, + ; thus a jitterbuffer on the receive SIP side will be used only + ; if it is forced and enabled. + +; jbforce = no ; Forces the use of a jitterbuffer on the receive side of a SIP + ; channel. Defaults to "no". + +; jbmaxsize = 200 ; Max length of the jitterbuffer in milliseconds. + +; jbresyncthreshold = 1000 ; Jump in the frame timestamps over which the jitterbuffer is + ; resynchronized. Useful to improve the quality of the voice, with + ; big jumps in/broken timestamps, usually sent from exotic devices + ; and programs. Defaults to 1000. + +; jbimpl = fixed ; Jitterbuffer implementation, used on the receiving side of a SIP + ; channel. Two implementations are currently available - "fixed" + ; (with size always equals to jbmaxsize) and "adaptive" (with + ; variable size, actually the new jb of IAX2). Defaults to fixed. + +; jbtargetextra = 40 ; This option only affects the jb when 'jbimpl = adaptive' is set. + ; The option represents the number of milliseconds by which the new jitter buffer + ; will pad its size. the default is 40, so without modification, the new + ; jitter buffer will set its size to the jitter value plus 40 milliseconds. + ; increasing this value may help if your network normally has low jitter, + ; but occasionally has spikes. + +; jblog = no ; Enables jitterbuffer frame logging. Defaults to "no". + +;----------------------------------------------------------------------------------- + +[authentication] +; Global credentials for outbound calls, i.e. when a proxy challenges your +; Asterisk server for authentication. These credentials override +; any credentials in peer/register definition if realm is matched. +; +; This way, Asterisk can authenticate for outbound calls to other +; realms. We match realm on the proxy challenge and pick an set of +; credentials from this list +; Syntax: +; auth = <user>:<secret>@<realm> +; auth = <user>#<md5secret>@<realm> +; Example: +;auth=mark:topsecret@digium.com +; +; You may also add auth= statements to [peer] definitions +; Peer auth= override all other authentication settings if we match on realm + +;------------------------------------------------------------------------------ +; DEVICE CONFIGURATION +; +; SIP entities have a 'type' which determines their roles within Asterisk. +; * For entities with 'type=peer': +; Peers handle both inbound and outbound calls and are matched by ip/port, so for +; The case of incoming calls from the peer, the IP address must match in order for +; The invitation to work. This means calls made from either direction won't work if +; The peer is unregistered while host=dynamic or if the host is otherise not set to +; the correct IP of the sender. +; * For entities with 'type=user': +; Asterisk users handle inbound calls only (meaning they call Asterisk, Asterisk can't +; call them) and are matched by their authorization information (authname and secret). +; Asterisk doesn't rely on their IP and will accept calls regardless of the host setting +; as long as the incoming SIP invite authorizes successfully. +; * For entities with 'type=friend': +; Asterisk will create the entity as both a friend and a peer. Asterisk will accept +; calls from friends like it would for users, requiring only that the authorization +; matches rather than the IP address. Since it is also a peer, a friend entity can +; be called as long as its IP is known to Asterisk. In the case of host=dynamic, +; this means it is necessary for the entity to register before Asterisk can call it. +; +; Use remotesecret for outbound authentication, and secret for authenticating +; inbound requests. For historical reasons, if no remotesecret is supplied for an +; outbound registration or call, the secret will be used. +; +; For device names, we recommend using only a-z, numerics (0-9) and underscore +; +; For local phones, type=friend works most of the time +; +; If you have one-way audio, you probably have NAT problems. +; If Asterisk is on a public IP, and the phone is inside of a NAT device +; you will need to configure nat option for those phones. +; Also, turn on qualify=yes to keep the nat session open +; +; Configuration options available +; -------------------- +; context +; callingpres +; permit +; deny +; secret +; md5secret +; remotesecret +; transport +; dtmfmode +; directmedia +; nat +; callgroup +; pickupgroup +; language +; allow +; disallow +; autoframing +; insecure +; trustrpid +; trust_id_outbound +; progressinband +; promiscredir +; useclientcode +; accountcode +; setvar +; callerid +; amaflags +; callcounter +; busylevel +; allowoverlap +; allowsubscribe +; allowtransfer +; ignoresdpversion +; subscribecontext +; template +; videosupport +; maxcallbitrate +; rfc2833compensate +; Note: app_voicemail mailboxes must be in the form of mailbox@context. +; mailbox +; session-timers +; session-expires +; session-minse +; session-refresher +; t38pt_usertpsource +; regexten +; fromdomain +; fromuser +; host +; port +; qualify +; keepalive +; defaultip +; defaultuser +; rtptimeout +; rtpholdtimeout +; sendrpid +; outboundproxy +; rfc2833compensate +; callbackextension +; timert1 +; timerb +; qualifyfreq +; t38pt_usertpsource +; contactpermit ; Limit what a host may register as (a neat trick +; contactdeny ; is to register at the same IP as a SIP provider, +; contactacl ; then call oneself, and get redirected to that +; ; same location). +; directmediapermit +; directmediadeny +; directmediaacl +; unsolicited_mailbox +; use_q850_reason +; maxforwards +; encryption +; description ; Used to provide a description of the peer in console output +; dtlsenable +; dtlsverify +; dtlsrekey +; dtlscertfile +; dtlsprivatekey +; dtlscipher +; dtlscafile +; dtlscapath +; dtlssetup +; dtlsfingerprint +; ignore_requested_pref ; Ignore the requested codec and determine the preferred codec +; ; from the peer's configuration. +; + +;------------------------------------------------------------------------------ +; DTLS-SRTP CONFIGURATION +; +; DTLS-SRTP support is available if the underlying RTP engine in use supports it. +; +; dtlsenable = yes ; Enable or disable DTLS-SRTP support +; dtlsverify = yes ; Verify that provided peer certificate and fingerprint are valid +; ; A value of 'yes' will perform both certificate and fingerprint verification +; ; A value of 'no' will perform no certificate or fingerprint verification +; ; A value of 'fingerprint' will perform ONLY fingerprint verification +; ; A value of 'certificate' will perform ONLY certficiate verification +; dtlsrekey = 60 ; Interval at which to renegotiate the TLS session and rekey the SRTP session +; ; If this is not set or the value provided is 0 rekeying will be disabled +; dtlscertfile = file ; Path to certificate file to present +; dtlsprivatekey = file ; Path to private key for certificate file +; dtlscipher = <SSL cipher string> ; Cipher to use for TLS negotiation +; ; A list of valid SSL cipher strings can be found at: +; ; http://www.openssl.org/docs/apps/ciphers.html#CIPHER_STRINGS +; dtlscafile = file ; Path to certificate authority certificate +; dtlscapath = path ; Path to a directory containing certificate authority certificates +; dtlssetup = actpass ; Whether we are willing to accept connections, connect to the other party, or both. +; ; Valid options are active (we want to connect to the other party), passive (we want to +; ; accept connections only), and actpass (we will do both). This value will be used in +; ; the outgoing SDP when offering and for incoming SDP offers when the remote party sends +; ; actpass +; dtlsfingerprint = sha-1 ; The hash to use for the fingerprint in SDP (valid options are sha-1 and sha-256) + +;[sip_proxy] +; For incoming calls only. Example: FWD (Free World Dialup) +; We match on IP address of the proxy for incoming calls +; since we can not match on username (caller id) +;type=peer +;context=from-fwd +;host=fwd.pulver.com + +;[sip_proxy-out] +;type=peer ; we only want to call out, not be called +;remotesecret=guessit ; Our password to their service +;defaultuser=yourusername ; Authentication user for outbound proxies +;fromuser=yourusername ; Many SIP providers require this! +;fromdomain=provider.sip.domain +;host=box.provider.com +;transport=udp,tcp ; This sets the default transport type to udp for outgoing, and will +; ; accept both tcp and udp. The default transport type is only used for +; ; outbound messages until a Registration takes place. During the +; ; peer Registration the transport type may change to another supported +; ; type if the peer requests so. + +;usereqphone=yes ; This provider requires ";user=phone" on URI +;callcounter=yes ; Enable call counter +;busylevel=2 ; Signal busy at 2 or more calls +;outboundproxy=proxy.provider.domain ; send outbound signaling to this proxy, not directly to the peer +;port=80 ; The port number we want to connect to on the remote side + ; Also used as "defaultport" in combination with "defaultip" settings + +;--- sample definition for a provider +;[provider1] +;type=peer +;host=sip.provider1.com +;fromuser=4015552299 ; how your provider knows you +;remotesecret=youwillneverguessit ; The password we use to authenticate to them +;secret=gissadetdu ; The password they use to contact us +;callbackextension=123 ; Register with this server and require calls coming back to this extension +;transport=udp,tcp ; This sets the transport type to udp for outgoing, and will +; ; accept both tcp and udp. Default is udp. The first transport +; ; listed will always be used for outgoing connections. +;unsolicited_mailbox=4015552299 ; If the remote SIP server sends an unsolicited MWI NOTIFY message the new/old +; ; message count will be stored in the configured virtual mailbox. It can be used +; ; by any device supporting MWI by specifying <configured value>@SIP_Remote as the +; ; mailbox. + +; +; Because you might have a large number of similar sections, it is generally +; convenient to use templates for the common parameters, and add them +; the the various sections. Examples are below, and we can even leave +; the templates uncommented as they will not harm: + +[basic-options](!) ; a template + dtmfmode=rfc2833 + context=from-office + type=friend + +[natted-phone](!,basic-options) ; another template inheriting basic-options + directmedia=no + host=dynamic + +[public-phone](!,basic-options) ; another template inheriting basic-options + directmedia=yes + +[my-codecs](!) ; a template for my preferred codecs + disallow=all + allow=ilbc + allow=g729 + allow=gsm + allow=g723 + allow=ulaw + ; Or, more simply: + ;allow=!all,ilbc,g729,gsm,g723,ulaw + +[ulaw-phone](!) ; and another one for ulaw-only + disallow=all + allow=ulaw + ; Again, more simply: + ;allow=!all,ulaw + +; and finally instantiate a few phones +; +; [2133](natted-phone,my-codecs) +; secret = peekaboo +; [2134](natted-phone,ulaw-phone) +; secret = not_very_secret +; [2136](public-phone,ulaw-phone) +; secret = not_very_secret_either +; ... +; + +; Standard configurations not using templates look like this: +; +;[grandstream1] +;type=friend +;context=from-sip ; Where to start in the dialplan when this phone calls +;recordonfeature=dynamicfeature1 ; Feature to use when INFO with Record: on is received. +;recordofffeature=dynamicfeature2 ; Feature to use when INFO with Record: off is received. +;callerid=John Doe <1234> ; Full caller ID, to override the phones config + ; on incoming calls to Asterisk +;description=Courtesy Phone ; Description of the peer. Shown when doing 'sip show peers'. +;host=192.168.0.23 ; we have a static but private IP address + ; No registration allowed +;directmedia=yes ; allow RTP voice traffic to bypass Asterisk +;dtmfmode=info ; either RFC2833 or INFO for the BudgeTone +;call-limit=1 ; permit only 1 outgoing call and 1 incoming call at a time + ; from the phone to asterisk (deprecated) + ; 1 for the explicit peer, 1 for the explicit user, + ; remember that a friend equals 1 peer and 1 user in + ; memory + ; There is no combined call counter for a "friend" + ; so there's currently no way in sip.conf to limit + ; to one inbound or outbound call per phone. Use + ; the group counters in the dial plan for that. + ; +;mailbox=1234@default ; mailbox 1234 in voicemail context "default" +;disallow=all ; need to disallow=all before we can use allow= +;allow=ulaw ; Note: In user sections the order of codecs + ; listed with allow= does NOT matter! +;allow=alaw +;allow=g723.1 ; Asterisk only supports g723.1 pass-thru! +;allow=g729 ; Pass-thru only unless g729 license obtained +;callingpres=allowed_passed_screen ; Set caller ID presentation + ; See function CALLERPRES documentation for possible + ; values. + +;[xlite1] +; Turn off silence suppression in X-Lite ("Transmit Silence"=YES)! +; Note that Xlite sends NAT keep-alive packets, so qualify=yes is not needed +;type=friend +;regexten=1234 ; When they register, create extension 1234 +;callerid="Jane Smith" <5678> +;host=dynamic ; This device needs to register +;directmedia=no ; Typically set to NO if behind NAT +;disallow=all +;allow=gsm ; GSM consumes far less bandwidth than ulaw +;allow=ulaw +;allow=alaw +;mailbox=1234@default,1233@default ; Subscribe to status of multiple mailboxes +;registertrying=yes ; Send a 100 Trying when the device registers. + +;[snom] +;type=friend ; Friends place calls and receive calls +;context=from-sip ; Context for incoming calls from this user +;secret=blah +;subscribecontext=localextensions ; Only allow SUBSCRIBE for local extensions +;language=de ; Use German prompts for this user +;host=dynamic ; This peer register with us +;dtmfmode=inband ; Choices are inband, rfc2833, or info +;defaultip=192.168.0.59 ; IP used until peer registers +;mailbox=1234@context,2345@context ; Mailbox(-es) for message waiting indicator +;subscribemwi=yes ; Only send notifications if this phone + ; subscribes for mailbox notification +;vmexten=voicemail ; dialplan extension to reach mailbox + ; sets the Message-Account in the MWI notify message + ; defaults to global vmexten which defaults to "asterisk" +;disallow=all +;allow=ulaw ; dtmfmode=inband only works with ulaw or alaw! + + +;[polycom] +;type=friend ; Friends place calls and receive calls +;context=from-sip ; Context for incoming calls from this user +;secret=blahpoly +;host=dynamic ; This peer register with us +;dtmfmode=rfc2833 ; Choices are inband, rfc2833, or info +;defaultuser=polly ; Username to use in INVITE until peer registers +;defaultip=192.168.40.123 + ; Normally you do NOT need to set this parameter +;disallow=all +;allow=ulaw ; dtmfmode=inband only works with ulaw or alaw! +;progressinband=no ; Polycom phones don't work properly with "never" + + +;[pingtel] +;type=friend +;secret=blah +;host=dynamic +;insecure=port ; Allow matching of peer by IP address without + ; matching port number +;insecure=invite ; Do not require authentication of incoming INVITEs +;insecure=port,invite ; (both) +;qualify=1000 ; Consider it down if it's 1 second to reply + ; Helps with NAT session + ; qualify=yes uses default value +;qualifyfreq=60 ; Qualification: How often to check for the + ; host to be up in seconds + ; Set to low value if you use low timeout for + ; NAT of UDP sessions +; +; Call group and Pickup group should be in the range from 0 to 63 +; +;callgroup=1,3-4 ; We are in caller groups 1,3,4 +;pickupgroup=1,3-5 ; We can do call pick-p for call group 1,3,4,5 +;namedcallgroup=engineering,sales,netgroup,protgroup ; We are in named call groups engineering,sales,netgroup,protgroup +;namedpickupgroup=sales ; We can do call pick-p for named call group sales +;defaultip=192.168.0.60 ; IP address to use if peer has not registered +;deny=0.0.0.0/0.0.0.0 ; ACL: Control access to this account based on IP address +;permit=192.168.0.60/255.255.255.0 +;permit=192.168.0.60/24 ; we can also use CIDR notation for subnet masks +;permit=2001:db8::/32 ; IPv6 ACLs can be specified if desired. IPv6 ACLs + ; apply only to IPv6 addresses, and IPv4 ACLs apply + ; only to IPv4 addresses. +;acl=named_acl_example ; Use named ACLs defined in acl.conf + +;[cisco1] +;type=friend +;secret=blah +;qualify=200 ; Qualify peer is no more than 200ms away +;host=dynamic ; This device registers with us +;directmedia=no ; Asterisk by default tries to redirect the + ; RTP media stream (audio) to go directly from + ; the caller to the callee. Some devices do not + ; support this (especially if one of them is + ; behind a NAT). +;defaultip=192.168.0.4 ; IP address to use until registration +;defaultuser=goran ; Username to use when calling this device before registration + ; Normally you do NOT need to set this parameter +;setvar=CUSTID=5678 ; Channel variable to be set for all calls from or to this device +;setvar=ATTENDED_TRANSFER_COMPLETE_SOUND=beep ; This channel variable will + ; cause the given audio file to + ; be played upon completion of + ; an attended transfer to the + ; target of the transfer. + +;[pre14-asterisk] +;type=friend +;secret=digium +;host=dynamic +;rfc2833compensate=yes ; Compensate for pre-1.4 DTMF transmission from another Asterisk machine. + ; You must have this turned on or DTMF reception will work improperly. +;t38pt_usertpsource=yes ; Use the source IP address of RTP as the destination IP address for UDPTL packets + ; if the nat option is enabled. If a single RTP packet is received Asterisk will know the + ; external IP address of the remote device. If port forwarding is done at the client side + ; then UDPTL will flow to the remote device. diff --git a/configs/samples/sip_notify.conf.sample b/configs/samples/sip_notify.conf.sample new file mode 100644 index 000000000..8224ee1ff --- /dev/null +++ b/configs/samples/sip_notify.conf.sample @@ -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 diff --git a/configs/samples/skinny.conf.sample b/configs/samples/skinny.conf.sample new file mode 100644 index 000000000..be88dc230 --- /dev/null +++ b/configs/samples/skinny.conf.sample @@ -0,0 +1,208 @@ +; +; Skinny Configuration for Asterisk +; +[general] +bindaddr=0.0.0.0 ; Address to bind to +bindport=2000 ; Port to bind to, default tcp/2000 +dateformat=M-D-Y ; M,D,Y in any order (6 chars max) + ; "A" may also be used, but it must be at the end. + ; Use M for month, D for day, Y for year, A for 12-hour time. +keepalive=120 + +;authtimeout = 30 ; 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) + +;authlimit = 50 ; authlimit specifies the maximum number of + ; unauthenticated sessions that will be allowed to + ; connect at any given time. (default: 50) + +;vmexten=8500 ; Systemwide voicemailmain pilot number + ; It must be in the same context as the calling + ; device/line + +; If regcontext is specified, Asterisk will dynamically create and destroy a +; NoOp priority 1 extension for a given line which registers or unregisters with +; us and have a "regexten=" configuration item. +; Multiple contexts may be specified by separating them with '&'. The +; actual extension is the 'regexten' parameter of the registering line or its +; name if 'regexten' is not provided. If more than one context is provided, +; the context must be specified within regexten by appending the desired +; context after '@'. More than one regexten may be supplied if they are +; separated by '&'. Patterns may be used in regexten. +; +;regcontext=skinnyregistrations + +;allow=all ; see https://wiki.asterisk.org/wiki/display/AST/RTP+Packetization + ; for framing options +;disallow= + +; The imeddialkey option allows for a key to be used to immediately dial the already +; entered number. This is useful where the dialplan includes variable length pattern +; matching. Valid options are '#' and '*'. On devices with soft buttons, a button will +; be available to immediately dial when a pattern than can be dialed has been entered. +; Default is unset, that is no immediated dial key (softbutton still exists). +; +;immeddialkey=# + +; See https://wiki.asterisk.org/wiki/display/AST/IP+Quality+of+Service for a description of these parameters. +;tos=cs3 ; Sets TOS for signaling packets. +;tos_audio=ef ; Sets TOS for RTP audio packets. +;tos_video=af41 ; Sets TOS for RTP video packets. +;cos=3 ; Sets 802.1p priority for signaling packets. +;cos_audio=5 ; Sets 802.1p priority for RTP audio packets. +;cos_video=4 ; Sets 802.1p priority for RTP video packets. + +;------------------------------ JITTER BUFFER CONFIGURATION -------------------------- +;jbenable = yes ; Enables the use of a jitterbuffer on the receiving side of a + ; skinny channel. Defaults to "no". An enabled jitterbuffer will + ; be used only if the sending side can create and the receiving + ; side can not accept jitter. The skinny channel can accept + ; jitter, thus a jitterbuffer on the receive skinny side will be + ; used only if it is forced and enabled. + +;jbforce = no ; Forces the use of a jitterbuffer on the receive side of a skinny + ; channel. Defaults to "no". + +;jbmaxsize = 200 ; Max length of the jitterbuffer in milliseconds. + +;jbresyncthreshold = 1000 ; Jump in the frame timestamps over which the jitterbuffer is + ; resynchronized. Useful to improve the quality of the voice, with + ; big jumps in/broken timestamps, usually sent from exotic devices + ; and programs. Defaults to 1000. + +;jbimpl = fixed ; Jitterbuffer implementation, used on the receiving side of a + ; skinny channel. Two implementations are currently available + ; - "fixed" (with size always equals to jbmaxsize) + ; - "adaptive" (with variable size, actually the new jb of IAX2). + ; Defaults to fixed. + +;jblog = no ; Enables jitterbuffer frame logging. Defaults to "no". +;----------------------------------------------------------------------------------- + +[lines] +;----------------------------------- LINES SECTION -------------------------------- +; Options set under [lines] apply to all lines unless explicitly set for a particular +; device. The options that can be set under lines are specified in GENERAL LINE OPTIONS. +; These options can also be set for each individual device as well as those under SPECIFIC +; LINE OPTIONS. +; +; Each label below [lines] in [] is a new line with the specific options specified below +; it. Config stops reading new lines when one of the following is found: [general], [devices] +; or the end of skinny.conf. +; +; Where options are common to both lines and devices, the results typically take that of +; the least permission. ie if a no is set for either line or device, the call will not be +; able to use that permission +;-------------------------------- GENERAL LINE OPTIONS ----------------------------- +;earlyrtp=1 ; whether audio signalling should be provided by asterisk +; ; (earlyrtp=1) or device generated (earlyrtp=0). default=yes +;transfer=1 ; whether the device is allowed to transfer. default=yes +;context=default ; context to use for this line. +;callfwdtimeout=20000 ; ms before cfwd_noans occurs (default 20 secs) +;------------------------------- SPECIFIC LINE OPTIONS ----------------------------- +;setvar= ; allows for the setting of chanvars. +;----------------------------------------------------------------------------------- + +;[100] +;nat=yes +;callerid="Customer Support" <810-234-1212> +; Note: app_voicemail mailboxes must be in the form of mailbox@context. +;mailbox=100 +;vmexten=8500 ; Device level voicemailmain pilot number +;regexten=100 +;context=inbound +;linelabel="Support Line" ; Displays next to the line + ; button on 7940's and 7960s +;[110] +;callerid="John Chambers" <408-526-4000> +;context=did +;regexten=110 +;linelabel="John" +;mailbox=110 + +;[120] +;Nothing set, so all the defaults are used + +;[500] +;nat=yes +;callerid="George W. Bush" <202-456-1414> +;setvar=CUSTID=5678 ; Channel variable to be set for all calls from this device +;setvar=ATTENDED_TRANSFER_COMPLETE_SOUND=beep ; This channel variable will + ; cause the given audio file to + ; be played upon completion of + ; an attended transfer to the + ; target of the transfer. +;mailbox=500 +;callwaiting=yes +;transfer=yes +;threewaycalling=yes +;context=default +;mohinterpret=default ; This option specifies a default music on hold class to + ; use when put on hold if the channel's moh class was not + ; explicitly set with Set(CHANNEL(musicclass)=whatever) and + ; the peer channel did not suggest a class to use. +;mohsuggest=default ; This option specifies which music on hold class to suggest to the peer channel + ; when this channel places the peer on hold. It may be specified globally or on + ; a per-user or per-peer basis. + + +[devices] +;---------------------------------- DEVICES SECTION ------------------------------- +; Options set under [devices] apply to all devices unless explicitly set for a particular +; device. The options that can be set under devices are specified in GENERAL DEVICE OPTIONS. +; These options can also be set for each individual device as well as those under SPECIFIC +; DEVICE OPTIONS. +; +; Each label below [devices] in [] is a new device with the specific options specified below +; it. Config stop reading new devices when one of the following is found: [general], [lines] +; or the end of skinny.conf. +; +; Where options are common to both lines and devices, the results typically take that of +; the least permission. ie if a no is set for either line or device, the call will not be +; able to use that permission +;------------------------------- GENERAL DEVICE OPTIONS ---------------------------- +;earlyrtp=1 ; whether audio signalling should be provided by asterisk +; ; (earlyrtp=1) or device generated (earlyrtp=0). default=yes +;transfer=1 ; whether the device is allowed to transfer. default=yes +;------------------------------ SPECIFIC DEVICE OPTIONS ---------------------------- +;device="SEPxxxxxxxxxxxx ; id of the device. Must be set. +;version=P002G204 ; firmware version to be loaded. If this version is different +; ; to the one on the device, the device will try to load this +; ; version from the tftp server. Set to device firmware version. +;----------------------------------------------------------------------------------- + +; Typical config for 12SP+ +;[florian] +;device=SEP00D0BA847E6B +;version=P002G204 ; Thanks critch +;context=did +;directmedia=yes ; Allow media to go directly between two RTP endpoints. +;line=120 ; Dial(Skinny/120@florian) + +; Service URLs attached to line buttons (eg phone directory) +; See http://www.voip-info.org/wiki/view/Asterisk+Cisco+79XX+XML+Services +; for intro to xml structure. +;serviceurl=Directory,http://host/file.xml + + +; Typical config for a 7910 +;[duba] ; Device name +;device=SEP0007EB463101 ; Official identifier +;version=P002F202 ; Firmware version identifier +;host=192.168.1.144 +;permit=192.168.0/24 ; Optional, used for authentication +;line=500 + + +; Typical config for a 7940 with dual 7914s +;[support] +;device=SEP0007EB463121 +;line=100 +;line=110 +;speeddial => 111,Jack Smith ; Adds a speeddial button to a device. +;speeddial => 112@hints,Bob Peterson ; When a context is specified, the speeddial watches a dialplan hint. +;addon => 7914 +;addon => 7914 + diff --git a/configs/samples/sla.conf.sample b/configs/samples/sla.conf.sample new file mode 100644 index 000000000..b5e1ef614 --- /dev/null +++ b/configs/samples/sla.conf.sample @@ -0,0 +1,151 @@ +; +; Configuration for Shared Line Appearances (SLA). +; +; See http://wiki.asterisk.org or doc/AST.pdf for more information. +; + +; ---- General Options ---------------- +[general] + +;attemptcallerid=no ; Attempt CallerID handling. The default value for this + ; is "no" because CallerID handling with an SLA setup is + ; known to not work properly in some situations. However, + ; feel free to enable it if you would like. If you do, and + ; you find problems, please do not report them. +; ------------------------------------- + + +; ******************************** +; **** Configuration Ordering **** +; ******************************** + +; Note that SLA configuration processing assumes that *all* trunk declarations are +; listed in the configuration file before any stations. + +; ******************************** +; ******************************** + + +; ---- Trunk Declarations ------------- +; +;[line1] ; Provide a name for this trunk. + +;type=trunk ; This line is what marks this entry as a trunk. + +;device=DAHDI/3 ; Map this trunk declaration to a specific device. + ; NOTE: You can not just put any type of channel here. + ; DAHDI channels can be directly used. IP trunks + ; require some indirect configuration which is + ; described in + ; https://wiki.asterisk.org/wiki/display/AST/SLA+Trunk+Configuration + +;autocontext=line1 ; This supports automatic generation of the dialplan entries + ; if the autocontext option is used. Each trunk should have + ; a unique context name. Then, in chan_dahdi.conf, this device + ; should be configured to have incoming calls go to this context. + +;ringtimeout=30 ; Set how long to allow this trunk to ring on an inbound call before hanging + ; it up as an unanswered call. The value is in seconds. + +;barge=no ; If this option is set to "no", then no station will be + ; allowed to join a call that is in progress. The default + ; value is "yes". + +;hold=private ; This option configure hold permissions for this trunk. + ; "open" - This means that any station can put this trunk + ; on hold, and any station can retrieve it from + ; hold. This is the default. + ; "private" - This means that once a station puts the + ; trunk on hold, no other station will be + ; allowed to retrieve the call from hold. + +;[line2] +;type=trunk +;device=DAHDI/4 +;autocontext=line2 + +;[line3] +;type=trunk +;device=DAHDI/3 +;autocontext=line3 + +;[line4] +;type=trunk +;device=Local/disa@line4_outbound ; A Local channel in combination with the Disa + ; application can be used to support IP trunks. + ; See https://wiki.asterisk.org/wiki/display/AST/SLA+Trunk+Configuration +;autocontext=line4 +; -------------------------------------- + + +; ---- Station Declarations ------------ + +;[station1] ; Define a name for this station. + +;type=station ; This line indicates that this entry is a station. + +;device=SIP/station1 ; Each station must be mapped to a device. + +;autocontext=sla_stations ; This supports automatic generation of the dialplan entries if + ; the autocontext option is used. All stations can use the same + ; context without conflict. The device for this station should + ; have its context configured to the same one listed here. + +;ringtimeout=10 ; Set a timeout for how long to allow the station to ring for an + ; incoming call, in seconds. + +;ringdelay=10 ; Set a time for how long to wait before beginning to ring this station + ; once there is an incoming call, in seconds. + +;hold=private ; This option configure hold permissions for this station. Note + ; that if private hold is set in the trunk entry, that will override + ; anything here. However, if a trunk has open hold access, but this + ; station is set to private hold, then the private hold will be in + ; effect. + ; "open" - This means that once this station puts a call + ; on hold, any other station is allowed to retrieve + ; it. This is the default. + ; "private" - This means that once this station puts a + ; call on hold, no other station will be + ; allowed to retrieve the call from hold. + + +;trunk=line1 ; Individually list all of the trunks that will appear on this station. This + ; order is significant. It should be the same order as they appear on the + ; phone. The order here defines the order of preference that the trunks will + ; be used. +;trunk=line2 +;trunk=line3,ringdelay=5 ; A ring delay for the station can also be specified for a specific trunk. + ; If a ring delay is specified both for the whole station and for a specific + ; trunk on a station, the setting for the specific trunk will take priority. + ; This value is in seconds. + +;trunk=line4,ringtimeout=5 ; A ring timeout for the station can also be specified for a specific trunk. + ; If a ring timeout is specified both for the whole station and for a specific + ; trunk on a station, the setting for the specific trunk will take priority. + ; This value is in seconds. + + +;[station](!) ; When there are a lot of stations that are configured the same way, + ; it is convenient to use a configuration template like this so that + ; the common settings stay in one place. +;type=station +;autocontext=sla_stations +;trunk=line1 +;trunk=line2 +;trunk=line3 +;trunk=line4 + +;[station2](station) ; Define a station that uses the configuration from the template "station". +;device=SIP/station2 +; +;[station3](station) +;device=SIP/station3 +; +;[station4](station) +;device=SIP/station4 +; +;[station5](station) +;device=SIP/station5 +; -------------------------------------- + diff --git a/configs/samples/smdi.conf.sample b/configs/samples/smdi.conf.sample new file mode 100644 index 000000000..cca0a5cb9 --- /dev/null +++ b/configs/samples/smdi.conf.sample @@ -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 diff --git a/configs/samples/sorcery.conf.sample b/configs/samples/sorcery.conf.sample new file mode 100644 index 000000000..7406214fb --- /dev/null +++ b/configs/samples/sorcery.conf.sample @@ -0,0 +1,67 @@ +; 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 +;identify=realtime,ps_endpoint_id_ips diff --git a/configs/samples/ss7.timers.sample b/configs/samples/ss7.timers.sample new file mode 100644 index 000000000..9cf9bd1ab --- /dev/null +++ b/configs/samples/ss7.timers.sample @@ -0,0 +1,65 @@ +;;;;; ITU-T Q.707 timers + +;mtp3_timer.q707_t1 = 4000 +;mtp3_timer.q707_t2 = 30000 + +;;;;; MTP3 timers as specified in ITU-T Q.704 or ANSI T1.111-2001 + +mtp3_timer.t1 = 500 +mtp3_timer.t2 = 700 +mtp3_timer.t3 = 500 +mtp3_timer.t4 = 500 +mtp3_timer.t5 = 500 +mtp3_timer.t6 = 500 +mtp3_timer.t7 = 1000 + +mtp3_timer.t10 = 60000 + +mtp3_timer.t12 = 800 +mtp3_timer.t13 = 800 +mtp3_timer.t14 = 2000 + +; enable for ITU only. Timers after T17 are defined differently for ANSI +;mtp3_timer.t19 = 67000 +;mtp3_timer.t21 = 63000 +; +;mtp3_timer.t22 = 300000 +;mtp3_timer.t23 = 300000 + + +;;;;; ISUP timers as specified in ITU-T Q.764 or ANSI T1.113-2000 + +isup_timer.t1 = 15000 +;isup_timer.t2 = 180000 ; ITU only + +;isup_timer.t5 = 300000 ; for ITU +;isup_timer.t5 = 60000 ; for ANSI +isup_timer.t6 = 30000 +isup_timer.t7 = 20000 +isup_timer.t8 = 10000 + +;isup_timer.t10 = 4000 ; ITU only + +isup_timer.t12 = 15000 +;isup_timer.t13 = 300000 ; for ITU +;isup_timer.t13 = 60000 ; for ANSI +isup_timer.t14 = 15000 +;isup_timer.t15 = 300000 ; for ITU +;isup_timer.t15 = 60000 ; for ANSI +isup_timer.t16 = 15000 +;isup_timer.t17 = 300000 ; for ITU +;isup_timer.t17 = 60000 ; for ANSI +isup_timer.t18 = 15000 +;isup_timer.t19 = 300000 ; for ITU +;isup_timer.t19 = 60000 ; for ANSI +isup_timer.t20 = 15000 +;isup_timer.t21 = 300000 ; for ITU +;isup_timer.t21 = 60000 ; for ANSI +isup_timer.t22 = 15000 +;isup_timer.t23 = 300000 ; for ITU +;isup_timer.t23 = 60000 ; for ANSI + +isup_timer.t27 = 240000 + +isup_timer.t33 = 12000 +;isup_timer.t35 = 15000 ; ITU only diff --git a/configs/samples/statsd.conf.sample b/configs/samples/statsd.conf.sample new file mode 100644 index 000000000..806097300 --- /dev/null +++ b/configs/samples/statsd.conf.sample @@ -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) diff --git a/configs/samples/telcordia-1.adsi b/configs/samples/telcordia-1.adsi new file mode 100644 index 000000000..1486aa95e --- /dev/null +++ b/configs/samples/telcordia-1.adsi @@ -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 diff --git a/configs/samples/test_sorcery.conf.sample b/configs/samples/test_sorcery.conf.sample new file mode 100644 index 000000000..c465dbf74 --- /dev/null +++ b/configs/samples/test_sorcery.conf.sample @@ -0,0 +1,14 @@ +; This is a res_sorcery_config compatible file for the sorcery unit tests + +[hey] +bob=98 +joe=41 + +[hey2] +type=zombies +bob=97 +joe=40 + +[hey3] +bob=96 +joe=39 diff --git a/configs/samples/udptl.conf.sample b/configs/samples/udptl.conf.sample new file mode 100644 index 000000000..1d635da5c --- /dev/null +++ b/configs/samples/udptl.conf.sample @@ -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 diff --git a/configs/samples/unistim.conf.sample b/configs/samples/unistim.conf.sample new file mode 100644 index 000000000..c33426b0c --- /dev/null +++ b/configs/samples/unistim.conf.sample @@ -0,0 +1,88 @@ +; +; chan_unistim configuration file. +; + +[general] +port=5000 ; UDP port +; +; See https://wiki.asterisk.org/wiki/display/AST/IP+Quality+of+Service for a description of these parameters. +;tos=cs3 ; Sets TOS for signaling packets. +;tos_audio=ef ; Sets TOS for RTP audio packets. +;cos=3 ; Sets 802.1p priority for signaling packets. +;cos_audio=5 ; Sets 802.1p priority for RTP audio packets. +; +;debug=yes ; Enable debug (default no) +;keepalive=120 ; in seconds, default = 120 +;public_ip= ; if asterisk is behind a nat, specify your public IP +;autoprovisioning=no ; Allow undeclared phones to register an extension. See README for important + ; informations. no (default), yes, tn. +;mohsuggest=default +;------------------------------ JITTER BUFFER CONFIGURATION -------------------------- +; jbenable = yes ; Enables the use of a jitterbuffer on the receiving side of a + ; SIP channel. Defaults to "no". An enabled jitterbuffer will + ; be used only if the sending side can create and the receiving + ; side can not accept jitter. The SIP channel can accept jitter, + ; thus a jitterbuffer on the receive SIP side will be used only + ; if it is forced and enabled. + +; jbforce = no ; Forces the use of a jitterbuffer on the receive side of a SIP + ; channel. Defaults to "no". + +; jbmaxsize = 200 ; Max length of the jitterbuffer in milliseconds. + +; jbresyncthreshold = 1000 ; Jump in the frame timestamps over which the jitterbuffer is + ; resynchronized. Useful to improve the quality of the voice, with + ; big jumps in/broken timestamps, usually sent from exotic devices + ; and programs. Defaults to 1000. + +; jbimpl = fixed ; Jitterbuffer implementation, used on the receiving side of a SIP + ; channel. Two implementations are currently available - "fixed" + ; (with size always equals to jbmaxsize) and "adaptive" (with + ; variable size, actually the new jb of IAX2). Defaults to fixed. + +; jblog = no ; Enables jitterbuffer frame logging. Defaults to "no". +;----------------------------------------------------------------------------------- + + +;[black] ; name of the device +;device=000ae4012345 ; mac address of the phone +;rtp_port=10000 ; RTP port used by the phone, default = 10000. RTCP = rtp_port+1 +;rtp_method=0 ; If you don't have sound, you can try 1, 2 or 3, default = 0 + ; value 3 works on newer i2004, 1120E and 1140E +;status_method=0 ; If you don't see status text, try 1, default = 0 + ; value 1 works on 1120E and 1140E +;titledefault=Asterisk ; default = "TimeZone (your time zone)". 12 characters max +;height=3 ; default = 3, the number of display lines the device can show + ; For example on a Nortel I2001 or I2002, set this to 1 +;maintext0="you can insert" ; default = "Welcome", 24 characters max +;maintext1="a custom text" ; default = the name of the device, 24 characters max +;maintext2="(main page)" ; default = the public IP of the phone, 24 characters max +;dateformat=0 ; 0 (default) = 31Jan, 1 = Jan31, 2 = month/day, 3 = day/month +;timeformat=1 ; 0 = 0:00am ; 1 (default) = 0h00, 2 = 0:00 +;contrast=8 ; define the contrast of the LCD. From 0 to 15. Default = 8 +;country=us ; country (ccTLD) for dial tone frequency. See README, default = us +;language=ru ; language used for audio files and onscreen messages translate +;ringvolume=2 ; ring volume : 0,1,2,3, can be overrided by Dial(), default = 2 +;ringstyle=3 ; ring style : 0 to 7, can be overrided by Dial(), default = 3 +;cwvolume=2 ; ring volume : 0,1,2,3, default = 0 +;cwstyle=3 ; ring style : 0 to 7, default = 2 +;sharpdial=1 ; dial number by pressing #, default = 0 +;dtmf_duration=0 ; DTMF playback duration (in milliseconds) 0..150 (0 = off (default), 150 = maximum) +;interdigit_timer=4000 ; timer for automatic dial after several digits of number entered (in ms, 0 is off) +;callhistory=1 ; 0 = disable, 1 = enable call history, default = 1 +;callerid="Customer Support" <555-234-5678> +;context=default ; context, default="default" +;mailbox=1234 ; Specify the mailbox number. Used by Message Waiting Indication +;linelabel="Support" ; Softkey label for the next line=> entry, 9 char max. +;extension=none ; Add an extension into the dialplan. Only valid in context specified previously. + ; none=don't add (default), ask=prompt user, line=use the line number +;line => 100 ; Any number of lines can be defined in any order with bookmarks +;line => 200 ; After line defined it placed in next available slot +;bookmark=Hans C.@123 ; Use a softkey to dial 123. Name : 9 char max +;bookmark=Mailbox@011@54 ; 54 shows a mailbox icon. See #define FAV_ICON_ for other values (32 to 63) +;bookmark=Test@*@USTM/violet ; Display an icon if violet is connected (dynamic), only for unistim device +;bookmark=4@Pager@54321@51 ; Display a pager icon and dial 54321 when softkey 4 is pressed + +;[violet] +;device=006038abcdef +;line => 102 diff --git a/configs/samples/users.conf.sample b/configs/samples/users.conf.sample new file mode 100644 index 000000000..50b80a1c5 --- /dev/null +++ b/configs/samples/users.conf.sample @@ -0,0 +1,114 @@ +; +; 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 + diff --git a/configs/samples/voicemail.conf.sample b/configs/samples/voicemail.conf.sample new file mode 100644 index 000000000..f3d7d4f44 --- /dev/null +++ b/configs/samples/voicemail.conf.sample @@ -0,0 +1,469 @@ +; +; Voicemail Configuration +; + +; ********* NOTICE ************************************************************ +; +; NOTE: Asterisk has to edit this file to change a user's password. This does +; not currently work with the "#include <file>" directive for Asterisk +; configuration files, nor when using realtime static configuration. +; Do not use them with this configuration file. +; +; NOTE: Mailboxes defined by app_voicemail MUST be referenced by the rest +; of the system as mailbox@context. The rest of the system cannot add +; @default to mailbox identifiers for app_voicemail that do not specify a +; context any longer. It is a mailbox identifier format that should only +; be interpreted by app_voicemail. +; +; ********* NOTICE ************************************************************ + +[general] +; Formats for writing Voicemail. Note that when using IMAP storage for +; voicemail, only the first format specified will be used. +;format=g723sf|wav49|wav +format=wav49|gsm|wav +; +; WARNING: +; If you change the list of formats that you record voicemail in +; when you have mailboxes that contain messages, you _MUST_ absolutely +; manually go through those mailboxes and convert/delete/add the +; the message files so that they appear to have been stored using +; your new format list. If you don't do this, very unpleasant +; things may happen to your users while they are retrieving and +; manipulating their voicemail. +; +; In other words: don't change the format list on a production system +; unless you are _VERY_ sure that you know what you are doing and are +; prepared for the consequences. +; +; Who the e-mail notification should appear to come from +serveremail=asterisk +;serveremail=asterisk@linux-support.net +; Should the email contain the voicemail as an attachment +attach=yes +; Maximum number of messages per folder. If not specified, a default value +; (100) is used. Maximum value for this option is 9999. If set to 0, a +; mailbox will be greetings-only. +;maxmsg=100 +; Maximum length of a voicemail message in seconds +;maxsecs=180 +; Minimum length of a voicemail message in seconds for the message to be kept +; The default is no minimum. +;minsecs=3 +; Maximum length of greetings in seconds +;maxgreet=60 +; How many milliseconds to skip forward/back when rew/ff in message playback +skipms=3000 +; 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 +; Max number of failed login attempts +maxlogins=3 +; +; Move heard messages to the 'Old' folder automagically. Defaults to on. +;moveheard=yes +; +; Forward an urgent message as an urgent message. Defaults to no so +; sender can set the urgency on the envelope of the forwarded message. +;forward_urgent_auto=no +; +; User context is where entries from users.conf are registered. The +; default value is 'default' +; +;userscontext=default +; +; If you need to have an external program, i.e. /usr/bin/myapp +; called when a voicemail is left, delivered, or your voicemailbox +; is checked, uncomment this. +;externnotify=/usr/bin/myapp + +; If you would also like to enable SMDI notification then set smdienable to yes. +; You will also need to make sure smdiport is set to a valid port as specified in +; smdi.conf. +;smdienable=yes +;smdiport=/dev/ttyS0 + +; If you need to have an external program, i.e. /usr/bin/myapp +; called when a voicemail password is changed, uncomment this. The +; arguments passed to the application are: <context> <mailbox> <newpassword> +; Note: If this is set, the password will NOT be changed in voicemail.conf +; If you would like to also change the password in voicemail.conf, use +; the externpassnotify option below instead. +;externpass=/usr/bin/myapp +;externpassnotify=/usr/bin/myapp + +; If you would like to have an external program called when a user changes the +; voicemail password for the purpose of doing validation on the new password, +; then use this option. The script can decide whether or not the new password +; meets minimum password strength requirements before the Voicemail application +; accepts the password. If the script decides that the password is not acceptable, +; the user will be informed that the new password does not meet minimum password +; requirements, and they will be asked to enter another password. +; +; The arguments passed to this script are <mailbox> <context> <old pw> <new pw>. +; +; The script should print "VALID" to stdout to indicate that the new password +; is acceptable. If the password is considered too weak, the script should print +; "INVALID" to stdout. +; +; There is an example script in the contrib/scripts/ directory, voicemailpwcheck.py, +; which implements some basic password checking, and can be used as a starting point +; for use with this option. +; +;externpasscheck=/usr/local/bin/voicemailpwcheck.py + +; For the directory, you can override the intro file if you want +;directoryintro=dir-intro +; The character set for voicemail messages can be specified here +; default: ISO-8859-1 +;charset=UTF-8 +; The ADSI feature descriptor number to download to +;adsifdn=0000000F +; The ADSI security lock code +;adsisec=9BDBF7AC +; The ADSI voicemail application version number. +;adsiver=1 +; Skip the "[PBX]:" string from the message title +;pbxskip=yes +; Change the From: string +;fromstring=The Asterisk PBX +; Permit finding entries for forward/compose from the directory +;usedirectory=yes +; Voicemail can be stored in a database using the ODBC driver. +; The value of odbcstorage is the database connection configured +; in res_odbc.conf. +;odbcstorage=asterisk +; The default table for ODBC voicemail storage is voicemessages. +;odbctable=voicemessages +; +; Change the from, body and/or subject, variables: +; VM_NAME, VM_DUR, VM_MSGNUM, VM_MAILBOX, VM_CALLERID, VM_CIDNUM, +; VM_CIDNAME, VM_DATE +; Additionally, on forwarded messages, you have the variables: +; ORIG_VM_CALLERID, ORIG_VM_CIDNUM, ORIG_VM_CIDNAME, ORIG_VM_DATE +; You can select between two variables by using dialplan functions, e.g. +; ${IF(${ISNULL(${ORIG_VM_DATE})}?${VM_DATE}:${ORIG_VM_DATE})} +; +; Note: The emailbody config row can only be up to 512 characters due to a +; limitation in the Asterisk configuration subsystem. +;emailsubject=[PBX]: New message ${VM_MSGNUM} 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 ${VM_NAME}:\n\n\tjust wanted to let you know you were just left a ${VM_DUR} long message (number ${VM_MSGNUM})\nin mailbox ${VM_MAILBOX} from ${VM_CALLERID}, on ${VM_DATE}, so you might\nwant to check it when you get a chance. Thanks!\n\n\t\t\t\t--Asterisk\n +; +; Note: ${IF()} strips spacing at the beginning and end of its true and false +; values, so a newline cannot be placed at either location. The word 'so' is +; therefore duplicated, in order for the newline to be interpreted correctly. +;emailbody=Dear ${VM_NAME}:\n\n\tjust wanted to let you know you were just ${IF($["${VM_CIDNUM}" = "${ORIG_VM_CIDNUM}"]?left:forwarded)} a ${VM_DUR} long message (number ${VM_MSGNUM})\nin mailbox ${VM_MAILBOX} from ${VM_CALLERID}, on ${VM_DATE},\n${IF($["${VM_CIDNUM}" = "${ORIG_VM_CIDNUM}"]?so:(originally sent by ${ORIG_VM_CALLERID} on ${ORIG_VM_DATE})\nso)} you might want to check it when you get a chance. Thanks!\n\n\t\t\t\t--Asterisk\n +; +; 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 +;pagerbody=New ${VM_DUR} long msg in box ${VM_MAILBOX}\nfrom ${VM_CALLERID}, on ${VM_DATE} +; +; 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 for pager use +pagerdateformat=%A, %B %d, %Y at %r +; Short 24h date format for pager use +;pagerdateformat=%T %D +; +; Using the mailcmd option, you can specify what command is called for +; outbound E-mail. The default is shown below. +; +;mailcmd=/usr/sbin/sendmail -t +; +;pollmailboxes=no ; If mailboxes are changed anywhere outside of app_voicemail, +; ; then this option must be enabled for MWI to work. This +; ; enables polling mailboxes for changes. Normally, it will +; ; expect that changes are only made when someone called in +; ; to one of the voicemail applications. +; ; Examples of situations that would require this option are +; ; web interfaces to voicemail or an email client in the case +; ; of using IMAP storage. +; ; Default: no +;pollfreq=30 ; If the "pollmailboxes" option is enabled, this option +; ; sets the polling frequency. The default is once every +; ; 30 seconds. +; + +; ----------------------------------------------------------------------------- +; IMAP configuration settings only +; These settings are only applicable when Asterisk is compiled with IMAP support. +; +;imapgreetings=no ; If using IMAP storage, specify whether voicemail greetings + ; should be stored via IMAP. If no, then greetings are stored + ; as if IMAP storage were not enabled. +;greetingsfolder=INBOX ; If imapgreetings=yes, then specify which folder to store + ; your greetings in. If you do not specify a folder, then INBOX + ; will be used +;imapparentfolder=INBOX ; Some IMAP server implementations store folders under INBOX + ; instead of using a top level folder (ex. INBOX/Friends). In + ; this case, user imapparentfolder to set the parent folder. For + ; example, Cyrus IMAP does NOT use INBOX as the parent. Default + ; is to have no parent folder set. +;imapserver=localhost ; The address of the IMAP server +;imapport=143 ; The port of the IMAP server +;imapflags=ssl ; Optional flags to pass to the IMAP server in the IMAP mailbox + ; name. For example, setting this to 'ssl' will enable OpenSSL + ; encryption, assuming the IMAP libraries were compiled with + ; OpenSSL support. +;imapfolder=INBOX ; The folder in which to store voicemail messages on the IMAP + ; server. By default, they are stored in INBOX. +;authuser=user ; The master user to use for connecting to the IMAP server, if + ; the server is configured with a single user that has access to + ; all mailboxes +;authpassword=password ; The password for the authuser, if used +;imapopentimeout=60 ; The TCP open timeout (in seconds) +;imapclosetimeout=60 ; The TCP close timeout (in seconds) +;imapreadtimeout=60 ; The TCP read timeout (in seconds) +;imapwritetimeout=60 ; The TCP write timeout (in seconds) + +; ----------------------------------------------------------------------------- +; + +; Each mailbox is listed in the form <mailbox>=<password>,<name>,<email>,<pager_email>,<options> +; if the e-mail is specified, a message will be sent when a message is +; received, to the given mailbox. If pager is specified, a message will be +; sent there as well. If the password is prefixed by '-', then it is +; considered to be unchangeable. +; +; Advanced options example is extension 4069 +; NOTE: All options can be expressed globally in the general section, and +; overridden in the per-mailbox settings, unless listed otherwise. +; +; tz=central ; Timezone from zonemessages below. Irrelevant if envelope=no. +; locale=de_DE.UTF-8 ; set the locale for generation of the date/time strings (make + ; sure the locales are installed in your operating system; e.g + ; on Debian Linux you can use "dpkg-reconfigure locales"). + ; If you use UTF-8 locales, make sure to set the "charset" option + ; to UTF-8 too. If you mix different locales for different users + ; you should avoid words in the emaildateformat specification, e.g.: + ; emaildateformat=%A, %d %B %Y, %H:%M:%S +; attach=yes ; Attach the voicemail to the notification email *NOT* the pager email +; attachfmt=wav49 ; Which format to attach to the email. Normally this is the + ; first format specified in the format parameter above, but this + ; option lets you customize the format sent to particular mailboxes. + ; Useful if Windows users want wav49, but Linux users want gsm. + ; [per-mailbox only] +; saycid=yes ; Say the caller id information before the message. If not described, + ; or set to no, it will be in the envelope. When enabled, if a recorded file + ; with the same name as the caller id exists in + ; <astspooldir>/recordings/callerids, then that file will be played as a name + ; rather than saying each digit as a phone number. +; cidinternalcontexts=intern ; Internal Context for Name Playback instead of + ; extension digits when saying caller id. +; sayduration=no ; Turn on/off the duration information before the message. [ON by default] +; saydurationm=2 ; Specify the minimum duration to say. Default is 2 minutes +; dialout=fromvm ; Context to dial out from [option 4 from mailbox's advanced menu]. + ; If not specified, option 4 will not be listed and dialing out + ; from within VoiceMailMain() will not be permitted. +sendvoicemail=yes ; Allow the user to compose and send a voicemail while inside + ; VoiceMailMain() [option 5 from mailbox's advanced menu]. + ; If set to 'no', option 5 will not be listed. +; searchcontexts=yes ; Current default behavior is to search only the default context + ; if one is not specified. The older behavior was to search all contexts. + ; This option restores the old behavior [DEFAULT=no] + ; Note: If you have this option enabled, then you will be required to have + ; unique mailbox names across all contexts. Otherwise, an ambiguity is created + ; since it is impossible to know which mailbox to retrieve when one is requested. +; callback=fromvm ; Context to call back from + ; if not listed, calling the sender back will not be permitted +; exitcontext=fromvm ; Context to go to on user exit such as * or 0 + ; The default is the current context. +; review=yes ; Allow sender to review/rerecord their message before saving it [OFF by default +; operator=yes ; Allow sender to hit 0 before/after/during leaving a voicemail to + ; reach an operator. This option REQUIRES an 'o' extension in the + ; same context (or in exitcontext, if set), as that is where the + ; 0 key will send you. [OFF by default] +; envelope=no ; Turn on/off envelope playback before message playback. [ON by default] + ; This does NOT affect option 3,3 from the advanced options menu +; delete=yes ; After notification, the voicemail is deleted from the server. [per-mailbox only] + ; This is intended for use with users who wish to receive their + ; voicemail ONLY by email. Note: "deletevoicemail" is provided as an + ; equivalent option for Realtime configuration. +; alias=Bongo ; Use this additional string for comparison while looking + ; for a match in the Directory application. This option + ; may be specified multiple times to specify additional + ; strings [per-mailbox only] +; volgain=0.0 ; Emails bearing the voicemail may arrive in a volume too + ; quiet to be heard. This parameter allows you to specify how + ; much gain to add to the message when sending a voicemail. + ; NOTE: sox must be installed for this option to work. +; nextaftercmd=yes ; Skips to the next message after hitting 7 or 9 to delete/save current message. +; forcename=yes ; Forces a new user to record their name. A new user is + ; determined by the password being the same as + ; the mailbox number. The default is "no". +; forcegreetings=no ; This is the same as forcename, except for recording + ; greetings. The default is "no". +; hidefromdir=yes ; Hide this mailbox from the directory produced by app_directory + ; The default is "no". +; tempgreetwarn=yes ; Remind the user that their temporary greeting is set + +; passwordlocation=spooldir + ; Usually the voicemail password (vmsecret) is stored in + ; this configuration file. By setting this option you can + ; specify where Asterisk should read/write the vmsecret. + ; Supported options: + ; voicemail.conf: + ; This is the default option. The secret is read from + ; and written to voicemail.conf (or users.conf). + ; spooldir: + ; The secret is stored in a separate file in the user's + ; voicemail spool directory in a file named secret.conf. + ; Please ensure that normal Linux users are not + ; permitted to access Asterisk's spool directory as the + ; secret is stored in plain text. If a secret is not + ; found in this directory, the password in + ; voicemail.conf (or users.conf) will be used. + ; Note that this option does not affect password storage for + ; realtime users, which are still stored in the realtime + ; backend. +; messagewrap=no ; Enable next/last message to wrap around to + ; first (from last) and last (from first) message + ; The default is "no". +; minpassword=0 ; Enforce minimum password length + +; vm-password=custom_sound + ; Customize which sound file is used instead of the default + ; prompt that says: "password" +; vm-newpassword=custom_sound + ; Customize which sound file is used instead of the default + ; prompt that says: "Please enter your new password followed by + ; the pound key." +; vm-passchanged=custom_sound + ; Customize which sound file is used instead of the default + ; prompt that says: "Your password has been changed." +; vm-reenterpassword=custom_sound + ; Customize which sound file is used instead of the default + ; prompt that says: "Please re-enter your password followed by + ; the pound key" +; vm-mismatch=custom_sound + ; Customize which sound file is used instead of the default + ; prompt that says: "The passwords you entered and re-entered + ; did not match." +; vm-invalid-password=custom_sound + ; Customize which sound file is used instead of the default + ; prompt that says: ... +; vm-pls-try-again=custom_sound + ; Customize which sound file is used instead of the + ; default prompt that says "Please try again." +; vm-prepend-timeout=custom_sound + ; Customize which sound file is used when the user + ; times out while recording a prepend message instead + ; of the default prompt that says "then press pound" + ; note that this will currently follow vm-pls-try-again. + ; this behavior is subject to change in the near future. +; listen-control-forward-key=# ; Customize the key that fast-forwards message playback +; listen-control-reverse-key=* ; Customize the key that rewinds message playback +; listen-control-pause-key=0 ; Customize the key that pauses/unpauses message playback +; listen-control-restart-key=2 ; Customize the key that restarts message playback +; listen-control-stop-key=13456789 ; Customize the keys that interrupt message playback, probably all keys not set above + +; Maximum number of messages allowed in the 'Deleted' folder. If set to 0 +; or no then no deleted messages will be moved. If non-zero (max 9999) then up +; to this number of messages will be automagically saved when they are +; 'deleted' on a FIFO basis. +; defaults to being off +; backupdeleted=100 + + +[zonemessages] +; 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 +; +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' +european=Europe/Copenhagen|'vm-received' a d b 'digits/at' HM + + + +[default] +; Note: The rest of the system must reference mailboxes defined here as mailbox@default. + +1234 => 4242,Example Mailbox,root@localhost +;4200 => 9855,Mark Spencer,markster@linux-support.net,mypager@digium.com,attach=no|serveremail=myaddy@digium.com|tz=central|maxmsg=10 +;4300 => 3456,Ben Rigas,ben@american-computer.net +;4310 => -5432,Sales,sales@marko.net +;4069 => 6522,Matt Brooks,matt@marko.net,,|tz=central|attach=yes|saycid=yes|dialout=fromvm|callback=fromvm|review=yes|operator=yes|envelope=yes|moveheard=yes|sayduration=yes|saydurationm=1 +;4073 => 1099,Bianca Paige,bianca@biancapaige.com,,delete=1|emailsubject=You have a new voicemail.|emailbody=Click on the attachment to listen.|rip=2010-06-04 +;4110 => 3443,Rob Flynn,rflynn@blueridge.net +;4235 => 1234,Jim Holmes,jim@astricon.ips,,Tz=european + + +; +; Mailboxes may be organized into multiple contexts for +; voicemail virtualhosting +; + +[other] +;The intro can be customized on a per-context basis +;directoryintro=dir-company2 +1234 => 5678,Company2 User,root@localhost + +; example for our acme compartmentalized company +; +; Pete telecommutes from Chicago, so we'll customize timestamps for him. +; +;[acme] +;111 => 7383,Pete,pete@acme-widgets.com,,tz=central +;112 => 6262,Nancy,nancy@acme-widgets.com +; + +; --------------------------------------------------------------------------- +; IMAP user settings and overrides. These are only applicable when Asterisk is +; compiled with IMAP support. +; +; imapuser=username ; The IMAP username of the mailbox to access +; imappassword=password ; The IMAP password of the user +; imapvmshareid=xxxx ; A shared mailbox ID to use for the IMAP mailbox + ; login, as opposed to the mailbox dialed +; imapfolder ; Overrides the global imapfolder setting +; imapserver ; Overrides the global imapserver setting +; imapport ; Overrides the global imapport setting +; imapflags ; Overrides the global imapflags setting + +; +;[imapvm] +;4324 => 7764,Ellis Redding,red@buxton.us,,imapuser=eredding|imappassword=g3tbusy|imapfolder=notinbox +;4325 => 2392,Andrew Dufresne,andy@dufresne.info,,imapuser=adufresne|imappassword=rockh@mmer diff --git a/configs/samples/vpb.conf.sample b/configs/samples/vpb.conf.sample new file mode 100644 index 000000000..fecb3ec59 --- /dev/null +++ b/configs/samples/vpb.conf.sample @@ -0,0 +1,248 @@ +; +; Voicetronix Voice Processing Board (VPB) telephony interface +; +; Configuration file +; + +[general] +; +; Total number of Voicetronix cards in this machine +; +cards=0 + +; +; Which indication functions to use +; 1 = use Asterisk functions +; 0 = use VPB functions +; +indication=1 + +; +; Echo Canceller suppression threshold +; 0 = no suppression threshold +; 2048 = -18dB +; 4096 = -24dB +; +;ecsuppthres=0 + +; +; Inter-digit delay timeout, used when collecting DTMF tones for dialling +; from a station port. Measured in milliseconds. +; +dtmfidd=3000 + +; +; How to play DTMF tones +; any value = use Asterisk functions +; commented out = use VPB functions +; +;ast-dtmf=1 + +; +; How to detect DTMF tones +; any value = use Asterisk functions +; commented out = use VPB functions +; +; NOTE: this setting is currently broken, and uncommenting it will +; stop dialling from working. Any volunteers to fix it? +;ast-dtmf-det=1 + +; +; Use relaxed DTMF detection (ignored unless ast-dtmf-det is set) +; +relaxdtmf=1 + +; +; When we do a native bridge between two VPB channels: +; yes = only break the connection for '#' and '*' +; no = break the connection for any DTMF +; +; NOTE: this is currently broken, and setting to no will segfault +; Asterisk while dialling. Any volunteers to fix it? +; +break-for-dtmf=yes + +; +; The maximum period between received rings. Measures in milliseconds. +; +timer_period_ring=4000 + + +[interfaces] +; +; Default language +; +language=en + +; +; Default context +; +context=public + +; +; Echo cancellation +; off = no not use echo cancellation +; on = use echo cancellation +; +echocancel=off + +; +; Caller ID routines/signalling +; For FXO ports, select one of: +; on = collect caller ID between 1st/2nd rings using VPB routines +; off = do not use caller ID +; bell = bell202 as used in US, using Asterisk's caller ID routines +; v23 = v23 as used in the UK, using Asterisk's caller ID routines +; For FXS ports, set the channel's CID in '"name" <number>' format +; +; NOTE that other caller ID standards are supported in Asterisk, but are +; not yet active in chan_vpb. It should be reasonably trivial to add +; support for the other standards (see the default chan_dahdi.conf for a +; list of them) that Asterisk already handles. +; +callerid=bell + +; +; Use a polarity reversal as the trigger for the start of caller ID, +; rather than triggering after the first ring. +; +usepolaritycid=0 + +; +; Use loop drop to detect the end of a call. On by default, but if you +; experience unexpected hangups, try turning it off. +; +useloopdrop=1 + +; +; Use in-kernel bridging. This will generally give lower delay audio if +; bridging between two VPB channels. It will not affect bridging +; between VPB channels and other technologies. +; +usenativebridge=1 + +; +; Software transmit and receive gain. Adjusting these will change the +; volume of audio files that are played (tx) and recorded (rx). It will +; _not_ affect audio between channels in a native bridge. It will, +; however, affect the volume of audio between VPB channels and channels +; using other technologies (such as VoIP channels). Usually it's best to +; leave these as they are. If you're looking to get rid of echo, the +; first thing to do is match your line impedance with the bal1/bal2/bal3 +; settings. +; +;txgain=0.0 +;rxgain=0.0 + +; +; Hardware transmit and receive gain. Adjusting these will change the +; volume of all audio on a channel. The allowed range of settings is +; -12.0 to 12.0 (measured in dB). +; +;txhwgain=0.0 +;rxhwgain=0.0 + +; +; Balance register settings, for matching the impedance of the card to +; that of the connected equipment. Only relevant for OpenLine and +; OpenSwitch series cards. Values should be in the range 0 - 255. +; +; We (Voicetronix) have determined the best codec balance values for +; standard interfaces based on their US, Australian and European +; specifications, shown below. +; +; US (600 ohm) +;bal1=0xf8 +;bal2=0x1a +;bal3=0x0c +; +; Australia (complex impedance) +;bal1=0xf0 +;bal2=0x5d +;bal3=0x79 +; +; Europe (CTR-21) +;bal1=0xf0 +;bal2=0x6e +;bal3=0x75 + +; +; Logical groups can be assigned to allow outgoing rollover. Groups range +; from 0 to 63, and multiple groups can be specified. +; +group=1 + +; +; Ring groups (a.k.a. call groups) and pickup groups. If a phone is +; ringing and it is a member of a group which is one of your pickup +; groups, then you can answer it by picking up and dialling *8#. For +; simple offices, just make these both the same. Groups range from 0 to +; 63. +; +callgroup=1 +pickupgroup=1 + +; +; If we haven't had a "grunt" (voice activity detection) for this many +; seconds, then we hang up the line due to inactivity. Default is one +; hour. +; +grunttimeout=3600 + +; +; Type of line and line handling. This setting will usually be overridden +; on a per channel basis. Valid settings are: +; fxo = this is an FXO port +; immediate = this is an FXS port, with no dialtone or dialling +; required (ie it is a "hotline") +; dialtone = this is an FXS port, providing dialtone and dialling +; +mode=immediate + +;------------------------------------------------------------------------- +; Channel definitions +; +; Each channel inherits the settings specified above, unless the are +; overridden. As a minimum, the board number and channel number must be +; set, starting from 0 for the first board, and for the channels on each +; board. For example, board 0, channels 0 to 11, then board 1, channels +; 0 to 11 for two OpenSwitch12 cards. +; + +; +; First board is an OpenSwitch12 card (jumpers at factory defaults) +; +;board=0 +; +;mode=dialtone +;context=from-handset +;group=1 +;channel=0 +;channel=1 +;channel=2 +;channel=3 +;channel=4 +;channel=5 +;channel=6 +;channel=7 +; +;mode=fxo +;context=from-pstn +;group=2 +;channel=8 +;channel=9 +;channel=10 +;channel=11 + +; +; Second board is an OpenLine4 +; +;board=1 +; +;mode=fxo +;group=2 +;context=from-pstn +;channel=0 +;channel=1 +;channel=2 +;channel=3 diff --git a/configs/samples/xmpp.conf.sample b/configs/samples/xmpp.conf.sample new file mode 100644 index 000000000..dad0f79ef --- /dev/null +++ b/configs/samples/xmpp.conf.sample @@ -0,0 +1,42 @@ +[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 +;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= + |