test 1
This commit is contained in:
commit
d8beadf3d1
17
test1/Dockerfile
Executable file
17
test1/Dockerfile
Executable file
@ -0,0 +1,17 @@
|
|||||||
|
FROM andrius/asterisk:edge
|
||||||
|
|
||||||
|
# Add edge/testing repository
|
||||||
|
# RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories && \
|
||||||
|
RUN apk update && \
|
||||||
|
apk upgrade && \
|
||||||
|
apk add asterisk-odbc && \
|
||||||
|
apk add unixodbc && \
|
||||||
|
apk add unixodbc-dev && \
|
||||||
|
apk add mariadb-connector-odbc
|
||||||
|
# apk add --no-cache unixodbc unixodbc-dev mariadb-connector-odbc
|
||||||
|
|
||||||
|
# Copy custom Asterisk config files
|
||||||
|
#COPY asterisk_config/ /etc/asterisk/
|
||||||
|
|
||||||
|
# Start Asterisk in verbose mode
|
||||||
|
CMD ["asterisk", "-fvvvvv"]
|
||||||
84
test1/Script-1.sql
Executable file
84
test1/Script-1.sql
Executable file
@ -0,0 +1,84 @@
|
|||||||
|
USE asterisk_db;
|
||||||
|
|
||||||
|
CREATE TABLE ps_endpoints (
|
||||||
|
id VARCHAR(40) NOT NULL PRIMARY KEY,
|
||||||
|
transport VARCHAR(40) NULL,
|
||||||
|
aors VARCHAR(200) NULL UNIQUE,
|
||||||
|
auth VARCHAR(40) NULL UNIQUE,
|
||||||
|
context VARCHAR(40) NULL,
|
||||||
|
disallow VARCHAR(200) NULL,
|
||||||
|
allow VARCHAR(200) NULL,
|
||||||
|
direct_media VARCHAR(40) NULL,
|
||||||
|
connected_line_method VARCHAR(40) NULL,
|
||||||
|
callerid VARCHAR(40) NULL,
|
||||||
|
dtmf_mode VARCHAR(40) NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE ps_auths (
|
||||||
|
id VARCHAR(40) NOT NULL PRIMARY KEY,
|
||||||
|
auth_type VARCHAR(40) NOT NULL,
|
||||||
|
username VARCHAR(40) NULL UNIQUE,
|
||||||
|
password VARCHAR(40) NULL,
|
||||||
|
md5_cred VARCHAR(40) NULL,
|
||||||
|
realm VARCHAR(40) NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE ps_aors (
|
||||||
|
id VARCHAR(40) NOT NULL PRIMARY KEY,
|
||||||
|
max_contacts INTEGER NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE extensions_table (
|
||||||
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
context VARCHAR(50) NOT NULL,
|
||||||
|
exten VARCHAR(50) NOT NULL UNIQUE,
|
||||||
|
priority INT NOT NULL,
|
||||||
|
app VARCHAR(50) NOT NULL,
|
||||||
|
appdata VARCHAR(100)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
INSERT INTO ps_endpoints (id, transport, aors, auth, context, disallow, allow)
|
||||||
|
VALUES ('1001', 'transport-udp', '1001', '1001', 'default', 'all', 'ulaw,alaw');
|
||||||
|
|
||||||
|
INSERT INTO ps_auths (id, auth_type, username, password)
|
||||||
|
VALUES ('1001', 'userpass', '1001', 'mypassword');
|
||||||
|
|
||||||
|
INSERT INTO ps_aors (id, max_contacts)
|
||||||
|
VALUES ('1001', 1);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- Add Authentication for 1002
|
||||||
|
INSERT INTO ps_auths (id, auth_type, username, password)
|
||||||
|
VALUES ('1002', 'userpass', '1002', 'securepass');
|
||||||
|
|
||||||
|
-- Add Endpoint for 1002
|
||||||
|
INSERT INTO ps_endpoints (id, transport, aors, auth, context, disallow, allow, direct_media)
|
||||||
|
VALUES ('1002', 'transport-udp', '1002', '1002', 'default', 'all', 'ulaw,alaw', 'no');
|
||||||
|
|
||||||
|
-- Add AOR (Address of Record) for 1002
|
||||||
|
INSERT INTO ps_aors (id, max_contacts)
|
||||||
|
VALUES ('1002', 2);
|
||||||
|
|
||||||
|
|
||||||
|
INSERT INTO extensions_table (context, exten, priority, app, appdata)
|
||||||
|
VALUES
|
||||||
|
('default', '1001', 1, 'Dial', 'PJSIP/1001,20'),
|
||||||
|
('default', '1002', 1, 'Dial', 'PJSIP/1002,20');
|
||||||
|
|
||||||
|
SELECT * FROM extensions_table;
|
||||||
|
|
||||||
|
|
||||||
|
SELECT * FROM ps_auths;
|
||||||
|
SELECT * FROM ps_endpoints;
|
||||||
|
SELECT * FROM ps_aors;
|
||||||
|
|
||||||
|
-- DROP TABLE `extensions_table`;
|
||||||
|
|
||||||
|
SELECT * FROM extensions_table WHERE context='default';
|
||||||
|
|
||||||
|
SHOW TABLES;
|
||||||
|
|
||||||
80
test1/conf/asterisk/acl.conf
Executable file
80
test1/conf/asterisk/acl.conf
Executable file
@ -0,0 +1,80 @@
|
|||||||
|
;
|
||||||
|
; Named Access Control Lists (ACLs)
|
||||||
|
;
|
||||||
|
; A convenient way to share acl definitions
|
||||||
|
;
|
||||||
|
; This configuration file is read on startup
|
||||||
|
;
|
||||||
|
; CLI Commands
|
||||||
|
; -----------------------------------------------------------
|
||||||
|
; acl show Show all named ACLs configured
|
||||||
|
; acl show <name> Show contents of a particular named ACL
|
||||||
|
; reload acl Reload configuration file
|
||||||
|
;
|
||||||
|
; Any configuration that uses ACLs which has been made to be able to use named
|
||||||
|
; ACLs will specify a named ACL with the 'acl' option in its configuration in
|
||||||
|
; a similar fashion to the usual 'permit' and 'deny' options. Example:
|
||||||
|
; acl=my_named_acl
|
||||||
|
;
|
||||||
|
; Multiple named ACLs can be applied by either comma separating the arguments or
|
||||||
|
; just by adding additional ACL lines. Example:
|
||||||
|
; acl=my_named_acl
|
||||||
|
; acl=my_named_acl2
|
||||||
|
;
|
||||||
|
; or
|
||||||
|
;
|
||||||
|
; acl=my_named_acl,my_named_acl2
|
||||||
|
;
|
||||||
|
; ACLs specified by name are evaluated independently from the ACL specified via
|
||||||
|
; permit/deny. In order for an address to pass a given ACL, it must pass both
|
||||||
|
; the ACL specified by permit/deny for a given item as well as any named ACLs
|
||||||
|
; that were specified.
|
||||||
|
;
|
||||||
|
;[example_named_acl1]
|
||||||
|
;deny=0.0.0.0/0.0.0.0
|
||||||
|
;permit=209.16.236.0
|
||||||
|
;permit=209.16.236.1
|
||||||
|
;
|
||||||
|
;[example_named_acl2]
|
||||||
|
;permit=0.0.0.0/0.0.0.0
|
||||||
|
;deny=10.24.20.171
|
||||||
|
;deny=10.24.20.103
|
||||||
|
;deny=209.16.236.1
|
||||||
|
;
|
||||||
|
; example_named_acl1 above shows an example of whitelisting. When whitelisting, the
|
||||||
|
; named ACLs should follow a deny that blocks everything (like deny=0.0.0.0/0.0.0.0)
|
||||||
|
; The following example explains how combining the ACLs works:
|
||||||
|
; <in another configuration>
|
||||||
|
; [example_item_with_acl]
|
||||||
|
; acl=example_named_acl1
|
||||||
|
; acl=example_named_acl2
|
||||||
|
;
|
||||||
|
; Suppose 209.16.236.0 tries to communicate and the ACL for that example is applied to it...
|
||||||
|
; First, example_named_acl1 is evaluated. The address is allowed by that ACL.
|
||||||
|
; Next, example_named_acl2 is evaluated. The address isn't blocked by example_named_acl2
|
||||||
|
; either, so it passes.
|
||||||
|
;
|
||||||
|
; Suppose instead 209.16.236.1 tries to communicate and the same ACL is applied.
|
||||||
|
; First, example_named_acl1 is evaluated and the address is allowed.
|
||||||
|
; However, it is blocked by example_named_acl2, so the address is blocked from the combined
|
||||||
|
; ACL.
|
||||||
|
;
|
||||||
|
; Similarly, the permits/denies in specific configurations that make up an ACL definition
|
||||||
|
; are also treated as a separate ACL for evaluation. So if we change the example above to:
|
||||||
|
; <in another configuration>
|
||||||
|
; [example_item_with_acl]
|
||||||
|
; acl=example_named_acl1
|
||||||
|
; acl=example_named_acl2
|
||||||
|
; deny=209.16.236.0
|
||||||
|
;
|
||||||
|
; Then 209.16.236.0 will be rejected by the non-named component of the combined ACL even
|
||||||
|
; though it passes the two named components.
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; Named ACLs can use ipv6 addresses just like normal ACLs.
|
||||||
|
;[ipv6_example_1]
|
||||||
|
;deny = ::/0
|
||||||
|
;permit = ::1/128
|
||||||
|
;
|
||||||
|
;[ipv6_example_2]
|
||||||
|
;permit = fe80::21d:bad:fad:2323
|
||||||
8
test1/conf/asterisk/adsi.conf
Executable file
8
test1/conf/asterisk/adsi.conf
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
;
|
||||||
|
; Sample ADSI Configuration file
|
||||||
|
;
|
||||||
|
[intro]
|
||||||
|
alignment = center
|
||||||
|
greeting => Welcome to the
|
||||||
|
greeting => Asterisk
|
||||||
|
greeting => Open Source PBX
|
||||||
21
test1/conf/asterisk/aeap.conf
Executable file
21
test1/conf/asterisk/aeap.conf
Executable file
@ -0,0 +1,21 @@
|
|||||||
|
;
|
||||||
|
; This file is used by the res_aeap module to configure parameters
|
||||||
|
; used for AEAP applications.
|
||||||
|
;
|
||||||
|
;[myclient]
|
||||||
|
;
|
||||||
|
; type must be "client".
|
||||||
|
;type=client
|
||||||
|
;
|
||||||
|
; URL used to connect to a server. It must be a websocket URL (ws or wss).
|
||||||
|
;url=ws://127.0.0.1:9099
|
||||||
|
;
|
||||||
|
; codecs is comma separated string of allowed/disallowed codec names.
|
||||||
|
;codecs=!all,ulaw,alaw,opus
|
||||||
|
;
|
||||||
|
; protocol is the implementation specific sub-protocol
|
||||||
|
;protocol=speech_to_text
|
||||||
|
;
|
||||||
|
; "@" parameters can be specified and are used to to set custom values to
|
||||||
|
; be passed as "params" in the initial "setup" request.
|
||||||
|
;@language=en-US
|
||||||
70
test1/conf/asterisk/agents.conf
Executable file
70
test1/conf/asterisk/agents.conf
Executable file
@ -0,0 +1,70 @@
|
|||||||
|
;
|
||||||
|
; Agent pool configuration
|
||||||
|
;
|
||||||
|
|
||||||
|
[general]
|
||||||
|
; The general section of this config is not currently used, but reserved
|
||||||
|
; for future use.
|
||||||
|
|
||||||
|
;[agent-id]
|
||||||
|
; Define ackcall to require the agent to give a DTMF acknowledgement
|
||||||
|
; when the agent receives a call.
|
||||||
|
; The channel variable AGENTACKCALL overrides on agent login.
|
||||||
|
; Default is "no".
|
||||||
|
;ackcall=no
|
||||||
|
;
|
||||||
|
; Set what DTMF key sequence the agent should use to acknowledge a call.
|
||||||
|
; The channel variable AGENTACCEPTDTMF overrides on agent login.
|
||||||
|
; This option is ignored unless ackcall is enabled.
|
||||||
|
; Default is "#".
|
||||||
|
;acceptdtmf=##
|
||||||
|
;
|
||||||
|
; Set how many seconds a call for the agent has to wait for the agent to
|
||||||
|
; acknowledge the call before the agent is automatically logged off. If
|
||||||
|
; set to zero then the call will wait forever for the agent to acknowledge.
|
||||||
|
; The channel variable AGENTAUTOLOGOFF overrides on agent login.
|
||||||
|
; This option is ignored unless ackcall is enabled.
|
||||||
|
; Default is 0.
|
||||||
|
;autologoff=15
|
||||||
|
;
|
||||||
|
; Set the minimum amount of time after disconnecting a call before
|
||||||
|
; the agent can receive a new call in milliseconds.
|
||||||
|
; The channel variable AGENTWRAPUPTIME overrides on agent login.
|
||||||
|
; Default is 0.
|
||||||
|
;wrapuptime=5000
|
||||||
|
;
|
||||||
|
; Set the musiconhold class for the agent.
|
||||||
|
; Default is "default".
|
||||||
|
;musiconhold=default
|
||||||
|
;
|
||||||
|
; Enable recording calls the agent takes automatically by invoking the
|
||||||
|
; DTMF automixmon feature when the agent connects to a caller.
|
||||||
|
; See features.conf.sample for information about the automixmon feature.
|
||||||
|
; Default is "no".
|
||||||
|
;recordagentcalls=yes
|
||||||
|
;
|
||||||
|
; The sound file played to alert the agent when a call is present.
|
||||||
|
; Default is "beep".
|
||||||
|
;custom_beep=beep
|
||||||
|
;
|
||||||
|
; A friendly name for the agent used in log messages.
|
||||||
|
; Default is "".
|
||||||
|
;fullname=Mark Spencer
|
||||||
|
;
|
||||||
|
; --------------------------------------------------
|
||||||
|
;
|
||||||
|
; This section contains example agent definitions:
|
||||||
|
;
|
||||||
|
; Define a template called my-agents:
|
||||||
|
;[my-agents](!)
|
||||||
|
;autologoff=15
|
||||||
|
;ackcall=yes
|
||||||
|
;acceptdtmf=##
|
||||||
|
;
|
||||||
|
; Define agent 1001 using the my-agents template:
|
||||||
|
;[1001](my-agents)
|
||||||
|
;fullname=Mark Spencer
|
||||||
|
;
|
||||||
|
; Define agent 1002 using the my-agents template:
|
||||||
|
;[1002](my-agents)
|
||||||
|
;fullname=Will Meadows
|
||||||
91
test1/conf/asterisk/alarmreceiver.conf
Executable file
91
test1/conf/asterisk/alarmreceiver.conf
Executable file
@ -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
|
||||||
|
;
|
||||||
77
test1/conf/asterisk/alsa.conf
Executable file
77
test1/conf/asterisk/alsa.conf
Executable file
@ -0,0 +1,77 @@
|
|||||||
|
;
|
||||||
|
; 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".
|
||||||
|
; ----------------------------------------------------------------------------------
|
||||||
32
test1/conf/asterisk/amd.conf
Executable file
32
test1/conf/asterisk/amd.conf
Executable file
@ -0,0 +1,32 @@
|
|||||||
|
;
|
||||||
|
; Answering Machine Detection Configuration
|
||||||
|
;
|
||||||
|
|
||||||
|
[general]
|
||||||
|
total_analysis_time = 5000 ; Maximum time allowed for the algorithm to decide
|
||||||
|
; on whether the audio represents a HUMAN, or a MACHINE
|
||||||
|
silence_threshold = 256 ; If the average level of noise in a sample does not reach
|
||||||
|
; this value, from a scale of 0 to 32767, then we will consider
|
||||||
|
; it to be silence.
|
||||||
|
;playback_file = ; Audio file to play while AMD is running, so the caller
|
||||||
|
; does not just hear silence. Note that specifying this here
|
||||||
|
; will apply to ALL AMD runs, so you may wish to set it
|
||||||
|
; in the dialplan as an argument to AMD() instead.
|
||||||
|
; Default is no audio file (not to play anything).
|
||||||
|
|
||||||
|
; Greeting ;
|
||||||
|
initial_silence = 2500 ; Maximum silence duration before the greeting.
|
||||||
|
; If exceeded, then the result is detection as a MACHINE.
|
||||||
|
after_greeting_silence = 800 ; Silence after detecting a greeting.
|
||||||
|
; If exceeded, then the result is detection as a HUMAN
|
||||||
|
greeting = 1500 ; Maximum length of a greeting. If exceeded, then the
|
||||||
|
; result is detection as a MACHINE.
|
||||||
|
|
||||||
|
; Word detection ;
|
||||||
|
min_word_length = 100 ; Minimum duration of Voice to considered as a word
|
||||||
|
maximum_word_length = 5000 ; Maximum duration of a single Voice utterance allowed.
|
||||||
|
between_words_silence = 50 ; Minimum duration of silence after a word to consider
|
||||||
|
; the audio what follows as a new word
|
||||||
|
|
||||||
|
maximum_number_of_words = 2 ; Maximum number of words in the greeting
|
||||||
|
; If exceeded, then the result is detection as a MACHINE
|
||||||
27
test1/conf/asterisk/app_skel.conf
Executable file
27
test1/conf/asterisk/app_skel.conf
Executable file
@ -0,0 +1,27 @@
|
|||||||
|
[general]
|
||||||
|
games=3
|
||||||
|
cheat=no
|
||||||
|
|
||||||
|
[sounds]
|
||||||
|
prompt=please-enter-your,number,queue-less-than
|
||||||
|
wrong_guess=vm-pls-try-again
|
||||||
|
right_guess=auth-thankyou
|
||||||
|
too_high=high
|
||||||
|
too_low=low
|
||||||
|
lose=vm-goodbye
|
||||||
|
|
||||||
|
[easy]
|
||||||
|
max_number=10
|
||||||
|
max_guesses=4
|
||||||
|
|
||||||
|
[medium]
|
||||||
|
max_number=100
|
||||||
|
max_guesses=6
|
||||||
|
|
||||||
|
[hard]
|
||||||
|
max_number=1000
|
||||||
|
max_guesses=7
|
||||||
|
|
||||||
|
[nightmare]
|
||||||
|
max_number=1000
|
||||||
|
max_guesses=1
|
||||||
37
test1/conf/asterisk/ari.conf
Executable file
37
test1/conf/asterisk/ari.conf
Executable file
@ -0,0 +1,37 @@
|
|||||||
|
[general]
|
||||||
|
enabled = yes ; When set to no, ARI support is disabled.
|
||||||
|
;pretty = no ; When set to yes, responses from ARI are
|
||||||
|
; ; formatted to be human readable.
|
||||||
|
;allowed_origins = ; Comma separated list of allowed origins, for
|
||||||
|
; ; Cross-Origin Resource Sharing. May be set to * to
|
||||||
|
; ; allow all origins.
|
||||||
|
;auth_realm = ; Realm to use for authentication. Defaults to Asterisk
|
||||||
|
; ; REST Interface.
|
||||||
|
;
|
||||||
|
; Default write timeout to set on websockets. This value may need to be adjusted
|
||||||
|
; for connections where Asterisk must write a substantial amount of data and the
|
||||||
|
; receiving clients are slow to process the received information. Value is in
|
||||||
|
; milliseconds; default is 100 ms.
|
||||||
|
;websocket_write_timeout = 100
|
||||||
|
;
|
||||||
|
; Display certain channel variables every time a channel-oriented
|
||||||
|
; event is emitted:
|
||||||
|
;
|
||||||
|
; Note that this does incur a performance penalty and should be avoided if possible.
|
||||||
|
;
|
||||||
|
;channelvars = var1,var2,var3
|
||||||
|
|
||||||
|
;[username]
|
||||||
|
;type = user ; Specifies user configuration
|
||||||
|
;read_only = no ; When set to yes, user is only authorized for
|
||||||
|
; ; read-only requests.
|
||||||
|
;
|
||||||
|
;password = ; Crypted or plaintext password (see password_format).
|
||||||
|
;
|
||||||
|
; password_format may be set to plain (the default) or crypt. When set to crypt,
|
||||||
|
; crypt(3) is used to validate the password. A crypted password can be generated
|
||||||
|
; using mkpasswd -m sha-512.
|
||||||
|
;
|
||||||
|
; When set to plain, the password is in plaintext.
|
||||||
|
;
|
||||||
|
;password_format = plain
|
||||||
72
test1/conf/asterisk/ast_debug_tools.conf
Executable file
72
test1/conf/asterisk/ast_debug_tools.conf
Executable file
@ -0,0 +1,72 @@
|
|||||||
|
#
|
||||||
|
# This file is used by the Asterisk debug tools.
|
||||||
|
# Unlike other Asterisk config files, this one is
|
||||||
|
# "sourced" by bash and must adhere to bash semantics.
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# The following settings are used by ast_coredumper
|
||||||
|
#
|
||||||
|
|
||||||
|
# COREDUMPS is a a list of coredumps and/or coredump
|
||||||
|
# search patterns.
|
||||||
|
#
|
||||||
|
# Bash extended globs are enabled and any resulting files
|
||||||
|
# that aren't actually coredumps are silently ignored
|
||||||
|
# so you can be liberal with the globs.
|
||||||
|
#
|
||||||
|
# If your patterns contain spaces be sure to only quote
|
||||||
|
# the portion of the pattern that DOESN'T contain wildcard
|
||||||
|
# expressions. If you quote the whole pattern, it won't
|
||||||
|
# be expanded and the glob characters will be treated as
|
||||||
|
# literals.
|
||||||
|
#
|
||||||
|
# The exclusion of files ending ".txt" is just for
|
||||||
|
# demonstration purposes as non-asterisk-coredumps will be
|
||||||
|
# ignored anyway.
|
||||||
|
COREDUMPS=( /tmp/core!(*.txt) )
|
||||||
|
|
||||||
|
# OUTPUTDIR is the directory to contain output files and
|
||||||
|
# work directories.
|
||||||
|
# For output from existing core files, the default is the
|
||||||
|
# directory that the core file is found in. For core files
|
||||||
|
# produced from a running process, the default is /tmp.
|
||||||
|
OUTPUTDIR=/tmp
|
||||||
|
|
||||||
|
# DATEOPTS is passed to the 'date' utility and is
|
||||||
|
# used to set the timestamp used to create the
|
||||||
|
# name of the output files and to rename the coredump.
|
||||||
|
#
|
||||||
|
# Beware of colons in the output as you can't upload
|
||||||
|
# files with colons in the name to Jira.
|
||||||
|
# The preferred timestamp format is readable GMT.
|
||||||
|
#
|
||||||
|
# Readable GMT
|
||||||
|
DATEOPTS='-u +%FT%H-%M-%SZ'
|
||||||
|
#
|
||||||
|
# Unix timestamp
|
||||||
|
#DATEOPTS='+%s.%N'
|
||||||
|
#
|
||||||
|
# Readable Local time
|
||||||
|
#DATEOPTS='+%FT%H-%M-%S%z'
|
||||||
|
|
||||||
|
#
|
||||||
|
# The following settings are used by ast_loggrabber
|
||||||
|
#
|
||||||
|
|
||||||
|
# A list of log files and/or log file search patterns using the
|
||||||
|
# same syntax as COREDUMPS.
|
||||||
|
#
|
||||||
|
LOGFILES=(/var/log/asterisk/messages* /var/log/asterisk/queue* \
|
||||||
|
/var/log/asterisk/debug* /var/log/asterisk/security*)
|
||||||
|
|
||||||
|
# ast_loggrabber converts POSIX timestamps to readable format
|
||||||
|
# using this Python strftime format string. If not specified
|
||||||
|
# or an empty string, no format covnersion is done.
|
||||||
|
LOG_DATEFORMAT="%m/%d-%H:%M:%S.%f"
|
||||||
|
|
||||||
|
# The timezone to use when converting POSIX timestamps to
|
||||||
|
# readable format. It can be specified in "<continent>/<city>"
|
||||||
|
# format or in abbreviation format such as "CST6CDT". If not
|
||||||
|
# specified, the "local" timezone is used.
|
||||||
|
# LOG_TIMEZONE=
|
||||||
158
test1/conf/asterisk/asterisk.adsi
Executable file
158
test1/conf/asterisk/asterisk.adsi
Executable file
@ -0,0 +1,158 @@
|
|||||||
|
;
|
||||||
|
; Asterisk default ADSI script
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; Begin with the preamble requirements
|
||||||
|
;
|
||||||
|
DESCRIPTION "Asterisk PBX" ; Name of vendor
|
||||||
|
VERSION 0x00 ; Version of stuff
|
||||||
|
;SECURITY "_AST" ; Security code
|
||||||
|
SECURITY 0X9BDBF7AC ; Security code
|
||||||
|
FDN 0x0000000F ; Descriptor number
|
||||||
|
|
||||||
|
;
|
||||||
|
; Flags
|
||||||
|
;
|
||||||
|
FLAG "nocallwaiting"
|
||||||
|
|
||||||
|
;
|
||||||
|
; Predefined strings
|
||||||
|
;
|
||||||
|
DISPLAY "titles" IS "** Asterisk PBX **"
|
||||||
|
DISPLAY "talkingto" IS "Call active." JUSTIFY LEFT
|
||||||
|
DISPLAY "callname" IS "$Call1p" JUSTIFY LEFT
|
||||||
|
DISPLAY "callnum" IS "$Call1s" JUSTIFY LEFT
|
||||||
|
DISPLAY "incoming" IS "Incoming call!" JUSTIFY LEFT
|
||||||
|
DISPLAY "ringing" IS "Calling... " JUSTIFY LEFT
|
||||||
|
DISPLAY "callended" IS "Call ended." JUSTIFY LEFT
|
||||||
|
DISPLAY "missedcall" IS "Missed call." JUSTIFY LEFT
|
||||||
|
DISPLAY "busy" IS "Busy." JUSTIFY LEFT
|
||||||
|
DISPLAY "reorder" IS "Reorder." JUSTIFY LEFT
|
||||||
|
DISPLAY "cwdisabled" IS "Callwait disabled"
|
||||||
|
DISPLAY "empty" IS "asdf"
|
||||||
|
|
||||||
|
;
|
||||||
|
; Begin soft key definitions
|
||||||
|
;
|
||||||
|
KEY "callfwd" IS "CallFwd" OR "Call Forward"
|
||||||
|
OFFHOOK
|
||||||
|
VOICEMODE
|
||||||
|
WAITDIALTONE
|
||||||
|
SENDDTMF "*60"
|
||||||
|
GOTO "offHook"
|
||||||
|
ENDKEY
|
||||||
|
|
||||||
|
KEY "vmail_OH" IS "VMail" OR "Voicemail"
|
||||||
|
OFFHOOK
|
||||||
|
VOICEMODE
|
||||||
|
WAITDIALTONE
|
||||||
|
SENDDTMF "8500"
|
||||||
|
ENDKEY
|
||||||
|
|
||||||
|
KEY "vmail" IS "VMail" OR "Voicemail"
|
||||||
|
SENDDTMF "8500"
|
||||||
|
ENDKEY
|
||||||
|
|
||||||
|
KEY "backspace" IS "BackSpc" OR "Backspace"
|
||||||
|
BACKSPACE
|
||||||
|
ENDKEY
|
||||||
|
|
||||||
|
KEY "cwdisable" IS "CWDsble" OR "Disable Call Wait"
|
||||||
|
SENDDTMF "*70"
|
||||||
|
SETFLAG "nocallwaiting"
|
||||||
|
SHOWDISPLAY "cwdisabled" AT 4
|
||||||
|
TIMERCLEAR
|
||||||
|
TIMERSTART 1
|
||||||
|
ENDKEY
|
||||||
|
|
||||||
|
KEY "cidblock" IS "CIDBlk" OR "Block Callerid"
|
||||||
|
SENDDTMF "*67"
|
||||||
|
SETFLAG "nocallwaiting"
|
||||||
|
ENDKEY
|
||||||
|
|
||||||
|
;
|
||||||
|
; Begin main subroutine
|
||||||
|
;
|
||||||
|
|
||||||
|
SUB "main" IS
|
||||||
|
IFEVENT NEARANSWER THEN
|
||||||
|
CLEAR
|
||||||
|
SHOWDISPLAY "titles" AT 1 NOUPDATE
|
||||||
|
SHOWDISPLAY "talkingto" AT 2 NOUPDATE
|
||||||
|
SHOWDISPLAY "callname" AT 3
|
||||||
|
SHOWDISPLAY "callnum" AT 4
|
||||||
|
GOTO "stableCall"
|
||||||
|
ENDIF
|
||||||
|
IFEVENT OFFHOOK THEN
|
||||||
|
CLEAR
|
||||||
|
CLEARFLAG "nocallwaiting"
|
||||||
|
CLEARDISPLAY
|
||||||
|
SHOWDISPLAY "titles" AT 1
|
||||||
|
SHOWKEYS "vmail"
|
||||||
|
SHOWKEYS "cidblock"
|
||||||
|
SHOWKEYS "cwdisable" UNLESS "nocallwaiting"
|
||||||
|
GOTO "offHook"
|
||||||
|
ENDIF
|
||||||
|
IFEVENT IDLE THEN
|
||||||
|
CLEAR
|
||||||
|
SHOWDISPLAY "titles" AT 1
|
||||||
|
SHOWKEYS "vmail_OH"
|
||||||
|
ENDIF
|
||||||
|
IFEVENT CALLERID THEN
|
||||||
|
CLEAR
|
||||||
|
; SHOWDISPLAY "titles" AT 1 NOUPDATE
|
||||||
|
; SHOWDISPLAY "incoming" AT 2 NOUPDATE
|
||||||
|
SHOWDISPLAY "callname" AT 3 NOUPDATE
|
||||||
|
SHOWDISPLAY "callnum" AT 4
|
||||||
|
ENDIF
|
||||||
|
IFEVENT RING THEN
|
||||||
|
CLEAR
|
||||||
|
SHOWDISPLAY "titles" AT 1 NOUPDATE
|
||||||
|
SHOWDISPLAY "incoming" AT 2
|
||||||
|
ENDIF
|
||||||
|
IFEVENT ENDOFRING THEN
|
||||||
|
SHOWDISPLAY "missedcall" AT 2
|
||||||
|
CLEAR
|
||||||
|
SHOWDISPLAY "titles" AT 1
|
||||||
|
SHOWKEYS "vmail_OH"
|
||||||
|
ENDIF
|
||||||
|
IFEVENT TIMER THEN
|
||||||
|
CLEAR
|
||||||
|
SHOWDISPLAY "empty" AT 4
|
||||||
|
ENDIF
|
||||||
|
ENDSUB
|
||||||
|
|
||||||
|
SUB "offHook" IS
|
||||||
|
IFEVENT FARRING THEN
|
||||||
|
CLEAR
|
||||||
|
SHOWDISPLAY "titles" AT 1 NOUPDATE
|
||||||
|
SHOWDISPLAY "ringing" AT 2 NOUPDATE
|
||||||
|
SHOWDISPLAY "callname" at 3 NOUPDATE
|
||||||
|
SHOWDISPLAY "callnum" at 4
|
||||||
|
ENDIF
|
||||||
|
IFEVENT FARANSWER THEN
|
||||||
|
CLEAR
|
||||||
|
SHOWDISPLAY "talkingto" AT 2
|
||||||
|
GOTO "stableCall"
|
||||||
|
ENDIF
|
||||||
|
IFEVENT BUSY THEN
|
||||||
|
CLEAR
|
||||||
|
SHOWDISPLAY "titles" AT 1 NOUPDATE
|
||||||
|
SHOWDISPLAY "busy" AT 2 NOUPDATE
|
||||||
|
SHOWDISPLAY "callname" at 3 NOUPDATE
|
||||||
|
SHOWDISPLAY "callnum" at 4
|
||||||
|
ENDIF
|
||||||
|
IFEVENT REORDER THEN
|
||||||
|
CLEAR
|
||||||
|
SHOWDISPLAY "titles" AT 1 NOUPDATE
|
||||||
|
SHOWDISPLAY "reorder" AT 2 NOUPDATE
|
||||||
|
SHOWDISPLAY "callname" at 3 NOUPDATE
|
||||||
|
SHOWDISPLAY "callnum" at 4
|
||||||
|
ENDIF
|
||||||
|
ENDSUB
|
||||||
|
|
||||||
|
SUB "stableCall" IS
|
||||||
|
IFEVENT REORDER THEN
|
||||||
|
SHOWDISPLAY "callended" AT 2
|
||||||
|
ENDIF
|
||||||
|
ENDSUB
|
||||||
141
test1/conf/asterisk/asterisk.conf
Executable file
141
test1/conf/asterisk/asterisk.conf
Executable file
@ -0,0 +1,141 @@
|
|||||||
|
[directories](!)
|
||||||
|
astcachedir => /var/cache/asterisk
|
||||||
|
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
|
||||||
|
;trace = 0 ; Set the trace level.
|
||||||
|
;refdebug = yes ; Enable reference count debug logging.
|
||||||
|
;alwaysfork = yes ; Same as -F at startup.
|
||||||
|
;nofork = yes ; Same as -f at startup.
|
||||||
|
;quiet = yes ; Same as -q at startup.
|
||||||
|
;timestamp = yes ; Same as -T at startup.
|
||||||
|
;execincludes = yes ; Support #exec in config files.
|
||||||
|
;console = yes ; Run as console (same as -c at startup).
|
||||||
|
;highpriority = yes ; Run realtime priority (same as -p at
|
||||||
|
; startup).
|
||||||
|
;initcrypto = yes ; Initialize crypto keys (same as -i at
|
||||||
|
; startup).
|
||||||
|
;nocolor = yes ; Disable console colors.
|
||||||
|
;dontwarn = yes ; Disable some warnings.
|
||||||
|
;dumpcore = yes ; Dump core on crash (same as -g at startup).
|
||||||
|
;languageprefix = yes ; Use the new sound prefix path syntax.
|
||||||
|
;systemname = my_system_name ; Prefix uniqueid with a system name for
|
||||||
|
; Global uniqueness issues.
|
||||||
|
;autosystemname = yes ; Automatically set systemname to hostname,
|
||||||
|
; uses 'localhost' on failure, or systemname if
|
||||||
|
; set.
|
||||||
|
;mindtmfduration = 80 ; Set minimum DTMF duration in ms (default 80 ms)
|
||||||
|
; If we get shorter DTMF messages, these will be
|
||||||
|
; changed to the minimum duration
|
||||||
|
;maxcalls = 10 ; Maximum amount of calls allowed.
|
||||||
|
;maxload = 0.9 ; Asterisk stops accepting new calls if the
|
||||||
|
; load average exceed this limit.
|
||||||
|
;maxfiles = 1000 ; Maximum amount of openfiles.
|
||||||
|
;minmemfree = 1 ; In MBs, Asterisk stops accepting new calls if
|
||||||
|
; the amount of free memory falls below this
|
||||||
|
; watermark.
|
||||||
|
;cache_media_frames = yes ; Cache media frames for performance
|
||||||
|
; Disable this option to help track down media frame
|
||||||
|
; mismanagement when using valgrind or MALLOC_DEBUG.
|
||||||
|
; The cache gets in the way of determining if the
|
||||||
|
; frame is used after being freed and who freed it.
|
||||||
|
; NOTE: This option has no effect when Asterisk is
|
||||||
|
; compiled with the LOW_MEMORY compile time option
|
||||||
|
; enabled because the cache code does not exist.
|
||||||
|
; Default yes
|
||||||
|
;cache_record_files = yes ; Cache recorded sound files to another
|
||||||
|
; directory during recording.
|
||||||
|
;record_cache_dir = /tmp ; Specify cache directory (used in conjunction
|
||||||
|
; with cache_record_files).
|
||||||
|
;transmit_silence = yes ; Transmit silence while a channel is in a
|
||||||
|
; waiting state, a recording only state, or
|
||||||
|
; when DTMF is being generated. Note that the
|
||||||
|
; silence internally is generated in raw signed
|
||||||
|
; linear format. This means that it must be
|
||||||
|
; transcoded into the native format of the
|
||||||
|
; channel before it can be sent to the device.
|
||||||
|
; It is for this reason that this is optional,
|
||||||
|
; as it may result in requiring a temporary
|
||||||
|
; codec translation path for a channel that may
|
||||||
|
; not otherwise require one.
|
||||||
|
;transcode_via_sln = yes ; Build transcode paths via SLINEAR, instead of
|
||||||
|
; directly.
|
||||||
|
;runuser = asterisk ; The user to run as.
|
||||||
|
;rungroup = asterisk ; The group to run as.
|
||||||
|
;lightbackground = yes ; If your terminal is set for a light-colored
|
||||||
|
; background.
|
||||||
|
;forceblackbackground = yes ; Force the background of the terminal to be
|
||||||
|
; black, in order for terminal colors to show
|
||||||
|
; up properly.
|
||||||
|
;defaultlanguage = en ; Default language
|
||||||
|
documentation_language = en_US ; Set the language you want documentation
|
||||||
|
; displayed in. Value is in the same format as
|
||||||
|
; locale names.
|
||||||
|
;hideconnect = yes ; Hide messages displayed when a remote console
|
||||||
|
; connects and disconnects.
|
||||||
|
;lockconfdir = no ; Protect the directory containing the
|
||||||
|
; configuration files (/etc/asterisk) with a
|
||||||
|
; lock.
|
||||||
|
;stdexten = gosub ; How to invoke the extensions.conf stdexten.
|
||||||
|
; macro - Invoke the stdexten using a macro as
|
||||||
|
; done by legacy Asterisk versions.
|
||||||
|
; gosub - Invoke the stdexten using a gosub as
|
||||||
|
; documented in extensions.conf.sample.
|
||||||
|
; Default gosub.
|
||||||
|
;live_dangerously = no ; Enable the execution of 'dangerous' dialplan
|
||||||
|
; functions and configuration file access from
|
||||||
|
; external sources (AMI, etc.) These functions
|
||||||
|
; (such as SHELL) are considered dangerous
|
||||||
|
; because they can allow privilege escalation.
|
||||||
|
; Configuration files are considered dangerous
|
||||||
|
; if they exist outside of the Asterisk
|
||||||
|
; configuration directory.
|
||||||
|
; Default no
|
||||||
|
;entityid=00:11:22:33:44:55 ; Entity ID.
|
||||||
|
; This is in the form of a MAC address.
|
||||||
|
; It should be universally unique.
|
||||||
|
; It must be unique between servers communicating
|
||||||
|
; with a protocol that uses this value.
|
||||||
|
; This is currently is used by DUNDi and
|
||||||
|
; Exchanging Device and Mailbox State
|
||||||
|
; using protocols: XMPP, Corosync and PJSIP.
|
||||||
|
;rtp_use_dynamic = yes ; When set to "yes" RTP dynamic payload types
|
||||||
|
; are assigned dynamically per RTP instance vs.
|
||||||
|
; allowing Asterisk to globally initialize them
|
||||||
|
; to pre-designated numbers (defaults to "yes").
|
||||||
|
;rtp_pt_dynamic = 35 ; Normally the Dynamic RTP Payload Type numbers
|
||||||
|
; are 96-127, which allow just 32 formats. The
|
||||||
|
; starting point 35 enables the range 35-63 and
|
||||||
|
; allows 29 additional formats. When you use
|
||||||
|
; more than 32 formats in the dynamic range and
|
||||||
|
; calls are not accepted by a remote
|
||||||
|
; implementation, please report this and go
|
||||||
|
; back to value 96.
|
||||||
|
;hide_messaging_ami_events = no; This option, if enabled, will
|
||||||
|
; suppress all of the Message/ast_msg_queue channel's
|
||||||
|
; housekeeping AMI and ARI channel events. This can
|
||||||
|
; reduce the load on the manager and ARI applications
|
||||||
|
; when the Digium Phone Module for Asterisk is in use.
|
||||||
|
;sounds_search_custom_dir = no; This option, if enabled, will
|
||||||
|
; cause Asterisk to search for sounds files in
|
||||||
|
; AST_DATA_DIR/sounds/custom before searching the
|
||||||
|
; normal directories like AST_DATA_DIR/sounds/<lang>.
|
||||||
|
|
||||||
|
; Changing the following lines may compromise your security.
|
||||||
|
;[files]
|
||||||
|
;astctlpermissions = 0660
|
||||||
|
;astctlowner = root
|
||||||
|
;astctlgroup = apache
|
||||||
|
;astctl = asterisk.ctl
|
||||||
111
test1/conf/asterisk/calendar.conf
Executable file
111
test1/conf/asterisk/calendar.conf
Executable file
@ -0,0 +1,111 @@
|
|||||||
|
;[calendar1]
|
||||||
|
;type = ical ; type of calendar--currently supported: ical, caldav, exchange, or ews
|
||||||
|
;url = https://example.com/home/jdoe/Calendar/ ; URL to shared calendar (Zimbra example)
|
||||||
|
;user = jdoe ; web username
|
||||||
|
;secret = supersecret ; web password
|
||||||
|
;refresh = 15 ; refresh calendar every n minutes
|
||||||
|
;timeframe = 60 ; number of minutes of calendar data to pull for each refresh period
|
||||||
|
; ; should always be >= refresh
|
||||||
|
;fetch_again_at_reload = no ; to reload the calendar content when the module is reloaded
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; You can set up res_calendar to execute a call upon an upcoming busy status
|
||||||
|
; The following fields are available from the ${CALENDAR_EVENT(<field>)} dialplan function:
|
||||||
|
;
|
||||||
|
; summary : The VEVENT Summary property or Exchange subject
|
||||||
|
; description : The text description of the vent
|
||||||
|
; organizer : The organizer of the event
|
||||||
|
; location : The location field of the event
|
||||||
|
; calendar : The name of the calendar tied to the event
|
||||||
|
; uid : The unique ID for this event
|
||||||
|
; start : Start time of the event
|
||||||
|
; end : The end time of the event
|
||||||
|
; busystate : 0=FREE, 1=TENTATIVE, 2=BUSY
|
||||||
|
;
|
||||||
|
;autoreminder = 10 ; Override event-defined reminder before each busy status (in mins)
|
||||||
|
;
|
||||||
|
;channel = SIP/60001 ; Channel to dial
|
||||||
|
;context = default ; Context to connect to on answer
|
||||||
|
;extension = 123 ; Extension to connect to on answer
|
||||||
|
;
|
||||||
|
; or
|
||||||
|
;
|
||||||
|
;app = Playback ; Application to execute on answer (instead of context/extension)
|
||||||
|
;appdata = tt-weasels ; Data part of application to execute on answer
|
||||||
|
;
|
||||||
|
;waittime = 30 ; How long to wait for an answer, defaults to 30 seconds
|
||||||
|
;
|
||||||
|
; Channel variables can be set on the notification channel. The format is
|
||||||
|
; setvar=name=value. Variable subsitution is done on the value to allow the use of dialplan
|
||||||
|
; functions like CALENDAR_EVENT. The variables are set in order, so one can use the value
|
||||||
|
; of earlier variables in the definition of later ones.
|
||||||
|
;
|
||||||
|
;setvar = CALLERID(name)=${CALENDAR_EVENT(summary)}
|
||||||
|
|
||||||
|
;[calendar2]
|
||||||
|
; Note: Support for Exchange Server 2003
|
||||||
|
;
|
||||||
|
;type = exchange ; type of calendar--currently supported: ical, caldav, exchange, or ews
|
||||||
|
;url = https://example.com/exchange/jdoe ; URL to MS Exchange OWA for user (usually includes exchange/user)
|
||||||
|
;user = jdoe ; Exchange username
|
||||||
|
;secret = mysecret ; Exchange password
|
||||||
|
;refresh = 15 ; refresh calendar every n minutes
|
||||||
|
;timeframe = 60 ; number of minutes of calendar data to pull for each refresh period
|
||||||
|
; ; should always be >= refresh
|
||||||
|
;
|
||||||
|
; You can set up res_calendar to execute a call upon an upcoming busy status
|
||||||
|
;autoreminder = 10 ; Override event-defined reminder before each busy status (in mins)
|
||||||
|
;
|
||||||
|
;channel = SIP/1234 ; Channel to dial
|
||||||
|
;context = default ; Context to connect to on answer
|
||||||
|
;extension = 1234 ; Extension to connect to on answer
|
||||||
|
;
|
||||||
|
; or
|
||||||
|
;
|
||||||
|
;[calendar3]
|
||||||
|
; Note: Support for Exchange Server 2007+
|
||||||
|
;
|
||||||
|
;type = ews ; type of calendar--currently supported: ical, caldav, exchange, or ews
|
||||||
|
;url = https://example.com/ews/Exchange.asmx ; URL to MS Exchange EWS
|
||||||
|
;user = jdoe ; Exchange username
|
||||||
|
;secret = mysecret ; Exchange password
|
||||||
|
;refresh = 15 ; refresh calendar every n minutes
|
||||||
|
;timeframe = 60 ; number of minutes of calendar data to pull for each refresh period
|
||||||
|
; ; should always be >= refresh
|
||||||
|
;
|
||||||
|
; You can set up res_calendar to execute a call upon an upcoming busy status
|
||||||
|
;autoreminder = 10 ; Override event-defined reminder before each busy status (in mins)
|
||||||
|
;
|
||||||
|
;channel = SIP/1234 ; Channel to dial
|
||||||
|
;context = default ; Context to connect to on answer
|
||||||
|
;extension = 1234 ; Extension to connect to on answer
|
||||||
|
;
|
||||||
|
; or
|
||||||
|
;
|
||||||
|
;app = Playback ; Application to execute on answer (instead of context/extension)
|
||||||
|
;appdata = tt-weasels ; Data part of application to execute on answer
|
||||||
|
;
|
||||||
|
;waittime = 30 ; How long to wait for an answer, defaults to 30 seconds
|
||||||
|
|
||||||
|
;[calendar4]
|
||||||
|
;type = caldav ; type of calendar--currently supported: ical, caldav, exchange, or ews
|
||||||
|
;url = https://www.google.com/calendar/dav/username@gmail.com/events/ ; Main GMail calendar (the trailing slash is significant!)
|
||||||
|
;user = jdoe@gmail.com ; username
|
||||||
|
;secret = mysecret ; password
|
||||||
|
;refresh = 15 ; refresh calendar every n minutes
|
||||||
|
;timeframe = 60 ; number of minutes of calendar data to pull for each refresh period
|
||||||
|
; ; should always be >= refresh
|
||||||
|
;
|
||||||
|
; You can set up res_calendar to execute a call upon an upcoming busy status
|
||||||
|
;autoreminder = 10 ; Override event-defined reminder before each busy status (in mins)
|
||||||
|
;
|
||||||
|
;channel = SIP/1234 ; Channel to dial
|
||||||
|
;context = default ; Context to connect to on answer
|
||||||
|
;extension = 1234 ; Extension to connect to on answer
|
||||||
|
;
|
||||||
|
; or
|
||||||
|
;
|
||||||
|
;app = Playback ; Application to execute on answer (instead of context/extension)
|
||||||
|
;appdata = tt-weasels ; Data part of application to execute on answer
|
||||||
|
;
|
||||||
|
;waittime = 30 ; How long to wait for an answer, defaults to 30 seconds
|
||||||
205
test1/conf/asterisk/ccss.conf
Executable file
205
test1/conf/asterisk/ccss.conf
Executable file
@ -0,0 +1,205 @@
|
|||||||
|
;
|
||||||
|
; --- Call Completion Supplementary Services ---
|
||||||
|
;
|
||||||
|
; For more information about CCSS, see the CCSS user documentation
|
||||||
|
; https://docs.asterisk.org/Deployment/PSTN-Connectivity/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=
|
||||||
180
test1/conf/asterisk/cdr.conf
Executable file
180
test1/conf/asterisk/cdr.conf
Executable file
@ -0,0 +1,180 @@
|
|||||||
|
;
|
||||||
|
; 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 use CDR logging on new channels by default.
|
||||||
|
; Setting this to "no" will disable CDR on channels unless it is explicitly
|
||||||
|
; enabled. Default is "yes".
|
||||||
|
;channeldefaultenabled=yes
|
||||||
|
|
||||||
|
; Define whether or not to log unanswered calls that don't involve an outgoing
|
||||||
|
; party. Setting this to "yes" will make calls to extensions that don't answer
|
||||||
|
; and don't set a B side channel (such as by using the Dial application)
|
||||||
|
; receive CDR log entries. If this option is set to "no", then those log
|
||||||
|
; entries will not be created. Unanswered Calls which get offered to an
|
||||||
|
; outgoing line will always receive log entries regardless of this option, and
|
||||||
|
; that is the intended behaviour.
|
||||||
|
;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
|
||||||
|
|
||||||
|
; Define whether or not to ignore bridging changes in CDRs. This prevents
|
||||||
|
; bridging changes from resulting in multiple CDRs for different parts of
|
||||||
|
; a call. Default is "no". This setting cannot be changed on a reload.
|
||||||
|
;ignorestatechanges = no
|
||||||
|
|
||||||
|
; Define whether or not to ignore dial updates in CDRs. This prevents
|
||||||
|
; dial updates from resulting in multiple CDRs for different parts of
|
||||||
|
; a call. The last disposition on the channel will be used for the CDR.
|
||||||
|
; Use with caution. Default is "no".
|
||||||
|
;ignoredialchanges = 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
|
||||||
|
; (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 database 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"
|
||||||
|
;newcdrcolumns=yes ; Enable logging of post-1.8 CDR columns (peeraccount, linkedid, sequence).
|
||||||
|
; Default is "no".
|
||||||
|
|
||||||
|
;[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
|
||||||
62
test1/conf/asterisk/cdr_adaptive_odbc.conf
Executable file
62
test1/conf/asterisk/cdr_adaptive_odbc.conf
Executable file
@ -0,0 +1,62 @@
|
|||||||
|
; 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
|
||||||
|
;
|
||||||
|
; Add quoted indentifiers for table and columns names.
|
||||||
|
;quoted_identifiers=" ; Default to null
|
||||||
20
test1/conf/asterisk/cdr_beanstalkd.conf
Executable file
20
test1/conf/asterisk/cdr_beanstalkd.conf
Executable file
@ -0,0 +1,20 @@
|
|||||||
|
;
|
||||||
|
; Asterisk Call Management CDR via Beanstalkd job queue
|
||||||
|
;
|
||||||
|
; Beanstalkd is a simple job queue server, that is highly versatile and simple to use.
|
||||||
|
; Beanstalkd includes the capability of using multiple queues at the same time, with priorities.
|
||||||
|
;
|
||||||
|
; This module requires that your server has the beanstalk-client library installed. The library
|
||||||
|
; can be downloaded from - https://github.com/deepfryed/beanstalk-client
|
||||||
|
;
|
||||||
|
|
||||||
|
[general]
|
||||||
|
;enabled = yes
|
||||||
|
|
||||||
|
;host = 127.0.0.1 ; Specify the remote IP address of the Beanstalkd server
|
||||||
|
;port = 11300 ; Specify the remote PORT of the the Beanstalkd server
|
||||||
|
;tube = asterisk-cdr ; Specify the default CDR job queue to use
|
||||||
|
;priority = 99 ; Specify the default job priority for the queue. This parameter is useful when building
|
||||||
|
; platform with multiple Asterisk servers, that are used for different functions. For example,
|
||||||
|
; none billable CDR records can be inserted with a priority of 99, while billable ones be
|
||||||
|
; inserted with a priority of 1
|
||||||
19
test1/conf/asterisk/cdr_custom.conf
Executable file
19
test1/conf/asterisk/cdr_custom.conf
Executable file
@ -0,0 +1,19 @@
|
|||||||
|
;
|
||||||
|
; 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.
|
||||||
|
;
|
||||||
|
; Alternatively, you can also specify the location of your CSV file using an
|
||||||
|
; absolute path, e.g.:
|
||||||
|
;
|
||||||
|
; /srv/pbx/cdr/Master.csv => ${CSV_QUOTE(${CDR(clid)})},...
|
||||||
|
;
|
||||||
|
;[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)})}
|
||||||
15
test1/conf/asterisk/cdr_manager.conf
Executable file
15
test1/conf/asterisk/cdr_manager.conf
Executable file
@ -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
|
||||||
12
test1/conf/asterisk/cdr_odbc.conf
Executable file
12
test1/conf/asterisk/cdr_odbc.conf
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
;
|
||||||
|
; 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
|
||||||
|
;newcdrcolumns=yes ; Enable logging of post-1.8 CDR columns (peeraccount, linkedid, sequence)
|
||||||
16
test1/conf/asterisk/cdr_pgsql.conf
Executable file
16
test1/conf/asterisk/cdr_pgsql.conf
Executable file
@ -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
|
||||||
11
test1/conf/asterisk/cdr_sqlite3_custom.conf
Executable file
11
test1/conf/asterisk/cdr_sqlite3_custom.conf
Executable file
@ -0,0 +1,11 @@
|
|||||||
|
;
|
||||||
|
; 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)}'
|
||||||
|
;busy_timeout => 1000
|
||||||
|
|
||||||
|
;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)}'
|
||||||
77
test1/conf/asterisk/cdr_tds.conf
Executable file
77
test1/conf/asterisk/cdr_tds.conf
Executable file
@ -0,0 +1,77 @@
|
|||||||
|
;
|
||||||
|
; 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
|
||||||
116
test1/conf/asterisk/cel.conf
Executable file
116
test1/conf/asterisk/cel.conf
Executable file
@ -0,0 +1,116 @@
|
|||||||
|
;
|
||||||
|
; Asterisk Channel Event Logging (CEL)
|
||||||
|
;
|
||||||
|
|
||||||
|
; Channel Event Logging is a mechanism to provide fine-grained event information
|
||||||
|
; that can be used to generate billing information. Such event information can
|
||||||
|
; be recorded to various backend modules.
|
||||||
|
;
|
||||||
|
|
||||||
|
[general]
|
||||||
|
|
||||||
|
; CEL Activation
|
||||||
|
;
|
||||||
|
; Use the 'enable' keyword to turn CEL on or off.
|
||||||
|
;
|
||||||
|
; Accepted values: yes and no
|
||||||
|
; Default value: no
|
||||||
|
|
||||||
|
;enable=yes
|
||||||
|
|
||||||
|
; Application Tracking
|
||||||
|
;
|
||||||
|
; Use the 'apps' keyword to specify the list of applications for which you want
|
||||||
|
; to receive CEL events. This is a comma separated list of Asterisk dialplan
|
||||||
|
; applications, such as Dial, Queue, and Park.
|
||||||
|
;
|
||||||
|
; Accepted values: A comma separated list of Asterisk dialplan applications
|
||||||
|
; Default value: none
|
||||||
|
;
|
||||||
|
; Note: You may also use 'all' which will result in CEL events being reported
|
||||||
|
; for all Asterisk applications. This may affect Asterisk's performance
|
||||||
|
; significantly.
|
||||||
|
|
||||||
|
apps=dial,park
|
||||||
|
|
||||||
|
; Event Tracking
|
||||||
|
;
|
||||||
|
; Use the 'events' keyword to specify the list of events which you want to be
|
||||||
|
; raised when they occur. This is a comma separated list of the values in the
|
||||||
|
; table below.
|
||||||
|
;
|
||||||
|
; Accepted values: A comma separated list of one or more of the following:
|
||||||
|
; ALL -- Generate entries on all events
|
||||||
|
; CHAN_START -- The time a channel was created
|
||||||
|
; CHAN_END -- The time a channel was terminated
|
||||||
|
; ANSWER -- The time a channel was answered (ie, phone taken off-hook)
|
||||||
|
; HANGUP -- The time at which a hangup occurred
|
||||||
|
; BRIDGE_ENTER -- The time a channel was connected into a conference room
|
||||||
|
; BRIDGE_EXIT -- The time a channel was removed from a conference room
|
||||||
|
; APP_START -- The time a tracked application was started
|
||||||
|
; APP_END -- the time a tracked application ended
|
||||||
|
; PARK_START -- The time a call was parked
|
||||||
|
; PARK_END -- Unpark event
|
||||||
|
; BLINDTRANSFER -- When a blind transfer is initiated
|
||||||
|
; ATTENDEDTRANSFER -- When an attended transfer is initiated
|
||||||
|
; PICKUP -- This channel picked up the specified channel
|
||||||
|
; FORWARD -- This channel is being forwarded somewhere else
|
||||||
|
; LINKEDID_END -- The last channel with the given linkedid is retired
|
||||||
|
; USER_DEFINED -- Triggered from the dialplan, and has a name given by the
|
||||||
|
; user
|
||||||
|
; LOCAL_OPTIMIZE -- A local channel pair is optimizing away.
|
||||||
|
;
|
||||||
|
; Default value: none
|
||||||
|
; (Track no events)
|
||||||
|
|
||||||
|
events=APP_START,CHAN_START,CHAN_END,ANSWER,HANGUP,BRIDGE_ENTER,BRIDGE_EXIT
|
||||||
|
|
||||||
|
; Date Format
|
||||||
|
;
|
||||||
|
; Use the 'dateformat' keyword to specify the date format used when CEL events
|
||||||
|
; are raised.
|
||||||
|
;
|
||||||
|
; Accepted values: A strftime format string (see man strftime)
|
||||||
|
;
|
||||||
|
; Example: "%F %T"
|
||||||
|
; -> This gives the date and time in the format "2009-06-23 17:02:35"
|
||||||
|
;
|
||||||
|
; If this option is not specified, the default format is "<seconds>.<microseconds>"
|
||||||
|
; since epoch. The microseconds field will always be 6 digits in length, meaning it
|
||||||
|
; may have leading zeros.
|
||||||
|
;
|
||||||
|
;dateformat = %F %T
|
||||||
|
|
||||||
|
;
|
||||||
|
; Asterisk Manager Interface (AMI) CEL Backend
|
||||||
|
;
|
||||||
|
[manager]
|
||||||
|
|
||||||
|
; AMI Backend Activation
|
||||||
|
;
|
||||||
|
; Use the 'enable' keyword to turn CEL logging to the Asterisk Manager Interface
|
||||||
|
; on or off.
|
||||||
|
;
|
||||||
|
; Accepted values: yes and no
|
||||||
|
; Default value: no
|
||||||
|
;enabled=yes
|
||||||
|
|
||||||
|
; Use 'show_user_defined' to put "USER_DEFINED" in the EventName header,
|
||||||
|
; instead of (by default) just putting the user defined event name there.
|
||||||
|
; When enabled the UserDefType header is added for user defined events to
|
||||||
|
; provide the user defined event name.
|
||||||
|
;
|
||||||
|
;show_user_defined=yes
|
||||||
|
|
||||||
|
;
|
||||||
|
; RADIUS CEL Backend
|
||||||
|
;
|
||||||
|
[radius]
|
||||||
|
;
|
||||||
|
; Log date/time in GMT
|
||||||
|
;usegmtime=yes
|
||||||
|
;
|
||||||
|
; Set this to the location of the radiusclient-ng configuration file
|
||||||
|
; The default is /etc/radiusclient-ng/radiusclient.conf
|
||||||
|
;radiuscfg => /usr/local/etc/radiusclient-ng/radiusclient.conf
|
||||||
|
;
|
||||||
21
test1/conf/asterisk/cel_beanstalkd.conf
Executable file
21
test1/conf/asterisk/cel_beanstalkd.conf
Executable file
@ -0,0 +1,21 @@
|
|||||||
|
;
|
||||||
|
; Beanstalkd Job Queue Server CEL Backend
|
||||||
|
;
|
||||||
|
[general]
|
||||||
|
|
||||||
|
; Backend Activation
|
||||||
|
;
|
||||||
|
; Use the 'enabled' keyword to turn CEL logging
|
||||||
|
; on or off.
|
||||||
|
;
|
||||||
|
; Accepted values: yes and no
|
||||||
|
; Default value: no
|
||||||
|
;enabled = yes
|
||||||
|
|
||||||
|
;host = 127.0.0.1 ; Specify the remote IP address of the Beanstalkd server
|
||||||
|
;port = 11300 ; Specify the remote PORT of the the Beanstalkd server
|
||||||
|
;tube = asterisk-cel ; Specify the default CDR job queue to use
|
||||||
|
;priority = 99 ; Specify the default job priority for the queue. This parameter is useful when building
|
||||||
|
; platform with multiple Asterisk servers, that are used for different functions. For example,
|
||||||
|
; none billable CDR records can be inserted with a priority of 99, while billable ones be
|
||||||
|
; inserted with a priority of 1
|
||||||
40
test1/conf/asterisk/cel_custom.conf
Executable file
40
test1/conf/asterisk/cel_custom.conf
Executable file
@ -0,0 +1,40 @@
|
|||||||
|
;
|
||||||
|
; 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.
|
||||||
|
;
|
||||||
|
; Alternatively, you can also specify the location of your CSV file using an
|
||||||
|
; absolute path, e.g.:
|
||||||
|
;
|
||||||
|
; /srv/pbx/cel/Master.csv => ${CSV_QUOTE(${eventtype})},...
|
||||||
|
;
|
||||||
|
|
||||||
|
;
|
||||||
|
; 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})}
|
||||||
108
test1/conf/asterisk/cel_odbc.conf
Executable file
108
test1/conf/asterisk/cel_odbc.conf
Executable file
@ -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
|
||||||
73
test1/conf/asterisk/cel_pgsql.conf
Executable file
73
test1/conf/asterisk/cel_pgsql.conf
Executable file
@ -0,0 +1,73 @@
|
|||||||
|
;
|
||||||
|
; 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
|
||||||
|
|
||||||
|
; Log date/time in GMT. The default of this option is 'no'.
|
||||||
|
;usegmtime=yes
|
||||||
|
|
||||||
|
;hostname=localhost
|
||||||
|
;port=5432
|
||||||
|
;dbname=asterisk
|
||||||
|
;password=password
|
||||||
|
;user=postgres
|
||||||
|
;table=cel ;SQL table where CEL's will be inserted
|
||||||
|
;schema=public ;Schema where CEL's table is located. Optional parameter.
|
||||||
|
;If schema support is present the default value used will be current_schema().
|
||||||
|
;appname=asterisk ; Postgres application_name support (optional). Whitespace not allowed.
|
||||||
25
test1/conf/asterisk/cel_sqlite3_custom.conf
Executable file
25
test1/conf/asterisk/cel_sqlite3_custom.conf
Executable file
@ -0,0 +1,25 @@
|
|||||||
|
;
|
||||||
|
; 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}'
|
||||||
|
;busy_timeout => 1000
|
||||||
69
test1/conf/asterisk/cel_tds.conf
Executable file
69
test1/conf/asterisk/cel_tds.conf
Executable file
@ -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
|
||||||
1798
test1/conf/asterisk/chan_dahdi.conf
Executable file
1798
test1/conf/asterisk/chan_dahdi.conf
Executable file
File diff suppressed because it is too large
Load Diff
69
test1/conf/asterisk/chan_mobile.conf
Executable file
69
test1/conf/asterisk/chan_mobile.conf
Executable file
@ -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
|
||||||
12
test1/conf/asterisk/cli.conf
Executable file
12
test1/conf/asterisk/cli.conf
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
;
|
||||||
|
; Asterisk CLI configuration
|
||||||
|
;
|
||||||
|
|
||||||
|
[startup_commands]
|
||||||
|
;
|
||||||
|
; Any commands listed in this section will get automatically executed
|
||||||
|
; when Asterisk starts as a daemon or foreground process (-c).
|
||||||
|
;
|
||||||
|
;sip set debug on = yes
|
||||||
|
;core set verbose 3 = yes
|
||||||
|
;core set debug 1 = yes
|
||||||
203
test1/conf/asterisk/cli_aliases.conf
Executable file
203
test1/conf/asterisk/cli_aliases.conf
Executable file
@ -0,0 +1,203 @@
|
|||||||
|
;
|
||||||
|
; CLI Aliases configuration
|
||||||
|
;
|
||||||
|
; This module also registers a "cli show aliases" CLI command to list
|
||||||
|
; configured CLI aliases.
|
||||||
|
|
||||||
|
[general]
|
||||||
|
; Here you define what alias templates you want to use. You can also define
|
||||||
|
; multiple templates to use as well. If you do, and there is a conflict, then
|
||||||
|
; the first alias defined will win.
|
||||||
|
;
|
||||||
|
template = friendly ; By default, include friendly aliases
|
||||||
|
;template = asterisk_1dot2 ; Asterisk 1.2 style syntax
|
||||||
|
;template = asterisk_1dot4 ; Asterisk 1.4 style syntax
|
||||||
|
;template = individual_custom ; see [individual_custom] example below which
|
||||||
|
; includes a list of aliases from an external
|
||||||
|
; file
|
||||||
|
|
||||||
|
|
||||||
|
; Because the Asterisk CLI syntax follows a "module verb argument" syntax,
|
||||||
|
; sometimes we run into an issue between being consistant with this format
|
||||||
|
; in the core system, and maintaining system friendliness. In order to get
|
||||||
|
; around this we're providing some useful aliases by default.
|
||||||
|
;
|
||||||
|
[friendly]
|
||||||
|
hangup request=channel request hangup
|
||||||
|
originate=channel originate
|
||||||
|
help=core show help
|
||||||
|
pri intense debug span=pri set debug intense span
|
||||||
|
reload=module reload
|
||||||
|
pjsip reload=module reload res_pjsip.so res_pjsip_authenticator_digest.so res_pjsip_endpoint_identifier_ip.so res_pjsip_mwi.so res_pjsip_notify.so res_pjsip_outbound_publish.so res_pjsip_publish_asterisk.so res_pjsip_outbound_registration.so
|
||||||
|
|
||||||
|
; CLI Alias Templates
|
||||||
|
; -------------------
|
||||||
|
;
|
||||||
|
; You can define several alias templates.
|
||||||
|
; It works with context templates like all other configuration files
|
||||||
|
;
|
||||||
|
;[asterisk](!)
|
||||||
|
; To create an alias you simply set the variable name as the alias and variable
|
||||||
|
; value as the real CLI command you want executed
|
||||||
|
;
|
||||||
|
;die die die=stop now
|
||||||
|
|
||||||
|
;[asterisk_1dot6](asterisk)
|
||||||
|
; Alias for making voicemail reload actually do module reload app_voicemail.so
|
||||||
|
;voicemail reload=module reload app_voicemail.so
|
||||||
|
; This will make the CLI command "mr" behave as though it is "module reload".
|
||||||
|
;mr=module reload
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; In addition, you could also include a flat file of aliases which is loaded by
|
||||||
|
; the [individual_custom] template in the [general] section.
|
||||||
|
;
|
||||||
|
;[individual_custom]
|
||||||
|
;#include "/etc/asterisk/aliases"
|
||||||
|
|
||||||
|
; Implemented CLI Alias Templates
|
||||||
|
; -------------------------------
|
||||||
|
;
|
||||||
|
; Below here we have provided you with some templates, easily allowing you to
|
||||||
|
; utilize previous Asterisk CLI commands with any version of Asterisk. In this
|
||||||
|
; way you will be able to use Asterisk 1.2 and 1.4 style CLI syntax with any
|
||||||
|
; version Asterisk going forward into the future.
|
||||||
|
;
|
||||||
|
; We have also separated out the vanilla syntax into a context template which
|
||||||
|
; allows you to keep your custom changes separate of the standard templates
|
||||||
|
; we have provided you. In this way you can clearly see your custom changes,
|
||||||
|
; and also allowing you to combine various templates as you see fit.
|
||||||
|
;
|
||||||
|
; The naming scheme we have used is recommended, but certainly is not enforced
|
||||||
|
; by Asterisk. If you wish to use the provided templates, simply define the
|
||||||
|
; context name which does not utilize the '_tpl' at the end. For example,
|
||||||
|
; if you would like to use the Asterisk 1.2 style syntax, define in the
|
||||||
|
; [general] section
|
||||||
|
|
||||||
|
[asterisk_1dot2_tpl](!)
|
||||||
|
show channeltypes=core show channeltypes
|
||||||
|
show channeltype=core show channeltype
|
||||||
|
show manager command=manager show command
|
||||||
|
show manager commands=manager show commands
|
||||||
|
show manager connected=manager show connected
|
||||||
|
show manager eventq=manager show eventq
|
||||||
|
rtp no debug=rtp set debug off
|
||||||
|
rtp rtcp debug ip=rtcp debug ip
|
||||||
|
rtp rtcp debug=rtcp debug
|
||||||
|
rtp rtcp no debug=rtcp debug off
|
||||||
|
rtp rtcp stats=rtcp stats
|
||||||
|
rtp rtcp no stats=rtcp stats off
|
||||||
|
stun no debug=stun debug off
|
||||||
|
udptl no debug=udptl debug off
|
||||||
|
show image formats=core show image formats
|
||||||
|
show file formats=core show file formats
|
||||||
|
show applications=core show applications
|
||||||
|
show functions=core show functions
|
||||||
|
show switches=core show switches
|
||||||
|
show hints=core show hints
|
||||||
|
show globals=core show globals
|
||||||
|
show function=core show function
|
||||||
|
show application=core show application
|
||||||
|
set global=core set global
|
||||||
|
show dialplan=dialplan show
|
||||||
|
show codecs=core show codecs
|
||||||
|
show audio codecs=core show audio codecs
|
||||||
|
show video codecs=core show video codecs
|
||||||
|
show image codecs=core show image codecs
|
||||||
|
show codec=core show codec
|
||||||
|
moh classes show=moh show classes
|
||||||
|
moh files show=moh show files
|
||||||
|
agi no debug=agi debug off
|
||||||
|
show agi=agi show
|
||||||
|
dump agihtml=agi dumphtml
|
||||||
|
show features=feature show
|
||||||
|
show indications=indication show
|
||||||
|
answer=console answer
|
||||||
|
hangup=console hangup
|
||||||
|
flash=console flash
|
||||||
|
dial=console dial
|
||||||
|
mute=console mute
|
||||||
|
unmute=console unmute
|
||||||
|
transfer=console transfer
|
||||||
|
send text=console send text
|
||||||
|
autoanswer=console autoanswer
|
||||||
|
oss boost=console boost
|
||||||
|
console=console active
|
||||||
|
save dialplan=dialplan save
|
||||||
|
add extension=dialplan add extension
|
||||||
|
remove extension=dialplan remove extension
|
||||||
|
add ignorepat=dialplan add ignorepat
|
||||||
|
remove ignorepat=dialplan remove ignorepat
|
||||||
|
include context=dialplan add include
|
||||||
|
dont include=dialplan remove include
|
||||||
|
extensions reload=dialplan reload
|
||||||
|
show translation=core show translation
|
||||||
|
convert=file convert
|
||||||
|
show queue=queue show
|
||||||
|
add queue member=queue add member
|
||||||
|
remove queue member=queue remove member
|
||||||
|
ael no debug=ael nodebug
|
||||||
|
sip debug=sip set debug
|
||||||
|
sip no debug=sip set debug off
|
||||||
|
show voicemail users=voicemail show users
|
||||||
|
show voicemail zones=voicemail show zones
|
||||||
|
iax2 trunk debug=iax2 set debug trunk
|
||||||
|
iax2 jb debug=iax2 set debug jb
|
||||||
|
iax2 no debug=iax2 set debug off
|
||||||
|
iax2 no trunk debug=iax2 set debug trunk off
|
||||||
|
iax2 no jb debug=iax2 set debug jb off
|
||||||
|
show agents=agent show
|
||||||
|
show agents online=agent show online
|
||||||
|
show memory allocations=memory show allocations
|
||||||
|
show memory summary=memory show summary
|
||||||
|
show version=core show version
|
||||||
|
show version files=core show file version
|
||||||
|
show profile=core show profile
|
||||||
|
clear profile=core clear profile
|
||||||
|
soft hangup=channel request hangup
|
||||||
|
|
||||||
|
[asterisk_1dot2](asterisk_1dot2_tpl)
|
||||||
|
; add any additional custom commands you want below here, for example:
|
||||||
|
;die quickly=stop now
|
||||||
|
|
||||||
|
[asterisk_1dot4_tpl](!)
|
||||||
|
cdr status=cdr show status
|
||||||
|
rtp debug=rtp set debug on
|
||||||
|
rtcp debug=rtcp set debug on
|
||||||
|
rtcp stats=rtcp set stats on
|
||||||
|
stun debug=stun set debug on
|
||||||
|
udptl debug=udptl set debug on
|
||||||
|
core show globals=dialplan show globals
|
||||||
|
core set global=dialplan set global
|
||||||
|
core set chanvar=dialplan set chanvar
|
||||||
|
agi dumphtml=agi dump html
|
||||||
|
ael debug=ael set debug
|
||||||
|
funcdevstate list=devstate list
|
||||||
|
sip history=sip set history on
|
||||||
|
skinny debug=skinny set debug on
|
||||||
|
mgcp set debug=mgcp set debug on
|
||||||
|
abort shutdown=core abort shutdown
|
||||||
|
stop now=core stop now
|
||||||
|
stop gracefully=core stop gracefully
|
||||||
|
stop when convenient=core stop when convenient
|
||||||
|
restart now=core restart now
|
||||||
|
restart gracefully=core restart gracefully
|
||||||
|
restart when convenient=core restart when convenient
|
||||||
|
soft hangup=channel request hangup
|
||||||
|
|
||||||
|
[asterisk_1dot4](asterisk_1dot4_tpl)
|
||||||
|
; add any additional custom commands you want below here.
|
||||||
|
|
||||||
|
[asterisk_11_tpl](!)
|
||||||
|
jabber list nodes=xmpp list nodes
|
||||||
|
jabber purge nodes=xmpp purge nodes
|
||||||
|
jabber delete node=xmpp delete node
|
||||||
|
jabber create collection=xmpp create collection
|
||||||
|
jabber create leaf=xmpp create leaf
|
||||||
|
jabber set debug=xmpp set debug
|
||||||
|
jabber show connections=xmpp show connections
|
||||||
|
jabber show buddies=xmpp show buddies
|
||||||
|
features reload=module reload features
|
||||||
|
|
||||||
|
[asterisk_11](asterisk_11_tpl)
|
||||||
|
; add any additional custom commands you want below here.
|
||||||
82
test1/conf/asterisk/cli_permissions.conf
Executable file
82
test1/conf/asterisk/cli_permissions.conf
Executable file
@ -0,0 +1,82 @@
|
|||||||
|
;
|
||||||
|
; CLI permissions configuration example for Asterisk
|
||||||
|
;
|
||||||
|
; All the users that you want to connect with asterisk using
|
||||||
|
; rasterisk, should have write/read access to the
|
||||||
|
; asterisk socket (asterisk.ctl). You could change the permissions
|
||||||
|
; of this file in 'asterisk.conf' config parameter: 'astctlpermissions' (0666)
|
||||||
|
; found on the [files] section.
|
||||||
|
;
|
||||||
|
; general options:
|
||||||
|
;
|
||||||
|
; default_perm = permit | deny
|
||||||
|
; This is the default permissions to apply for a user that
|
||||||
|
; does not has a permissions defined.
|
||||||
|
;
|
||||||
|
; user options:
|
||||||
|
; permit = <command name> | all ; allow the user to run 'command' |
|
||||||
|
; ; allow the user to run 'all' the commands
|
||||||
|
; deny = <command name> | all ; disallow the user to run 'command' |
|
||||||
|
; ; disallow the user to run 'all' commands.
|
||||||
|
;
|
||||||
|
|
||||||
|
[general]
|
||||||
|
|
||||||
|
default_perm=permit ; To leave asterisk working as normal
|
||||||
|
; we should set this parameter to 'permit'
|
||||||
|
;
|
||||||
|
; Follows the per-users permissions configs.
|
||||||
|
;
|
||||||
|
; This list is read in the sequence that is being written, so
|
||||||
|
; In this example the user 'eliel' is allow to run only the following
|
||||||
|
; commands:
|
||||||
|
; sip show peer
|
||||||
|
; core set debug
|
||||||
|
; core set verbose
|
||||||
|
; If the user is not specified, the default_perm option will be apply to
|
||||||
|
; every command.
|
||||||
|
;
|
||||||
|
; Notice that you can also use regular expressions to allow or deny access to a
|
||||||
|
; certain command like: 'core show application D*'. In this example the user will be
|
||||||
|
; allowed to view the documentation for all the applications starting with 'D'.
|
||||||
|
; Another regular expression could be: 'channel originate SIP/[0-9]* extension *'
|
||||||
|
; allowing the user to use 'channel originate' on a sip channel and with the 'extension'
|
||||||
|
; parameter and avoiding the use of the 'application' parameter.
|
||||||
|
;
|
||||||
|
; We can also use the templates syntax:
|
||||||
|
; [supportTemplate](!)
|
||||||
|
; deny=all
|
||||||
|
; permit=sip show ; all commands starting with 'sip show' will be allowed
|
||||||
|
; permit=core show
|
||||||
|
;
|
||||||
|
; You can specify permissions for a local group instead of a user,
|
||||||
|
; just put a '@' and we will know that is a group.
|
||||||
|
; IMPORTANT NOTE: Users permissions overwrite group permissions.
|
||||||
|
;
|
||||||
|
;[@adm]
|
||||||
|
;deny=all
|
||||||
|
;permit=sip
|
||||||
|
;permit=core
|
||||||
|
;
|
||||||
|
;
|
||||||
|
;[eliel]
|
||||||
|
;deny=all
|
||||||
|
;permit=sip show peer
|
||||||
|
;deny=sip show peers
|
||||||
|
;permit=core set
|
||||||
|
;
|
||||||
|
;
|
||||||
|
;User 'tommy' inherits from template 'supportTemplate':
|
||||||
|
; deny=all
|
||||||
|
; permit=sip show
|
||||||
|
; permit=core show
|
||||||
|
;[tommy](supportTemplate)
|
||||||
|
;permit=core set debug
|
||||||
|
;permit=dialplan show
|
||||||
|
;
|
||||||
|
;
|
||||||
|
;[mark]
|
||||||
|
;deny=all
|
||||||
|
;permit=all
|
||||||
|
;
|
||||||
|
;
|
||||||
214
test1/conf/asterisk/codecs.conf
Executable file
214
test1/conf/asterisk/codecs.conf
Executable file
@ -0,0 +1,214 @@
|
|||||||
|
[speex]
|
||||||
|
; CBR encoding quality [0..10]
|
||||||
|
; used only when vbr = false
|
||||||
|
quality => 3
|
||||||
|
|
||||||
|
; codec complexity [0..10]
|
||||||
|
; tradeoff between cpu/quality
|
||||||
|
complexity => 2
|
||||||
|
|
||||||
|
; perceptual enhancement [true / false]
|
||||||
|
; improves clarity of decoded speech
|
||||||
|
enhancement => true
|
||||||
|
|
||||||
|
; voice activity detection [true / false]
|
||||||
|
; reduces bitrate when no voice detected, used only for CBR
|
||||||
|
; (implicit in VBR/ABR)
|
||||||
|
vad => true
|
||||||
|
|
||||||
|
; variable bit rate [true / false]
|
||||||
|
; uses bit rate proportionate to voice complexity
|
||||||
|
vbr => true
|
||||||
|
|
||||||
|
; available bit rate [bps, 0 = off]
|
||||||
|
; encoding quality modulated to match this target bit rate
|
||||||
|
; not recommended with dtx or pp_vad - may cause bandwidth spikes
|
||||||
|
abr => 0
|
||||||
|
|
||||||
|
; VBR encoding quality [0-10]
|
||||||
|
; floating-point values allowed
|
||||||
|
vbr_quality => 4
|
||||||
|
|
||||||
|
; discontinuous transmission [true / false]
|
||||||
|
; stops transmitting completely when silence is detected
|
||||||
|
; pp_vad is far more effective but more CPU intensive
|
||||||
|
dtx => false
|
||||||
|
|
||||||
|
; preprocessor configuration
|
||||||
|
; these options only affect Speex v1.1.8 or newer
|
||||||
|
|
||||||
|
; enable preprocessor [true / false]
|
||||||
|
; allows dsp functionality below but incurs CPU overhead
|
||||||
|
preprocess => false
|
||||||
|
|
||||||
|
; preproc voice activity detection [true / false]
|
||||||
|
; more advanced equivalent of DTX, based on voice frequencies
|
||||||
|
pp_vad => false
|
||||||
|
|
||||||
|
; preproc automatic gain control [true / false]
|
||||||
|
pp_agc => false
|
||||||
|
pp_agc_level => 8000
|
||||||
|
|
||||||
|
; preproc denoiser [true / false]
|
||||||
|
pp_denoise => false
|
||||||
|
|
||||||
|
; preproc dereverb [true / false]
|
||||||
|
pp_dereverb => false
|
||||||
|
pp_dereverb_decay => 0.4
|
||||||
|
pp_dereverb_level => 0.3
|
||||||
|
|
||||||
|
; experimental bitrate changes depending on RTCP feedback [true / false]
|
||||||
|
experimental_rtcp_feedback => false
|
||||||
|
|
||||||
|
|
||||||
|
[plc]
|
||||||
|
; for all codecs which do not support native PLC
|
||||||
|
; this determines whether to perform generic PLC
|
||||||
|
; there is a minor performance penalty for this.
|
||||||
|
; By default plc is applied only when the 2 codecs
|
||||||
|
; in a channel are different.
|
||||||
|
genericplc => true
|
||||||
|
; Apply generic plc to channels even if the 2 codecs
|
||||||
|
; are the same. This forces transcoding via slin so
|
||||||
|
; the performance impact should be considered.
|
||||||
|
; Ignored if genericplc is not also enabled.
|
||||||
|
genericplc_on_equal_codecs => false
|
||||||
|
|
||||||
|
; Generate custom formats for formats requiring attributes.
|
||||||
|
; After defining the custom format, the name used in defining
|
||||||
|
; the format can be used throughout Asterisk in the format 'allow'
|
||||||
|
; and 'disallow' options.
|
||||||
|
;
|
||||||
|
; Example: silk8 is a predefined custom format in this config file.
|
||||||
|
; Once this config file is loaded, silk8 can be used anywhere a
|
||||||
|
; peer's codec capabilities are defined.
|
||||||
|
;
|
||||||
|
; In sip.conf 'silk8' can be defined as a capability for a peer.
|
||||||
|
; [peer1]
|
||||||
|
; type=peer
|
||||||
|
; host=dynamic
|
||||||
|
; disallow=all
|
||||||
|
; allow=silk8 ;custom codec defined in codecs.conf
|
||||||
|
;
|
||||||
|
; LIMITATIONS
|
||||||
|
; Custom formats can only be defined at startup. Any changes to this
|
||||||
|
; file made after startup will not take into effect until after Asterisk
|
||||||
|
; is restarted.
|
||||||
|
;
|
||||||
|
|
||||||
|
; Default Custom SILK format definitions, only one custom SILK format per
|
||||||
|
; sample rate is allowed.
|
||||||
|
[silk8]
|
||||||
|
type=silk
|
||||||
|
samprate=8000
|
||||||
|
fec=true ; turn on or off encoding with forward error correction.
|
||||||
|
; On recommended, off by default.
|
||||||
|
packetloss_percentage=10 ; Estimated packet loss percentage in uplink direction. This
|
||||||
|
; affects how much redundancy is built in when using fec.
|
||||||
|
; The higher the percentage, the larger amount of bandwidth is
|
||||||
|
; used. Default is 0%, 10% is recommended when fec is in use.
|
||||||
|
|
||||||
|
maxbitrate=10000 ; Use the table below to make sure a useful bitrate is choosen
|
||||||
|
; for maxbitrate. If not set or value is not within the bounds
|
||||||
|
; of the encoder, a default value is chosen.
|
||||||
|
;
|
||||||
|
; sample rate | bitrate range
|
||||||
|
; 8khz | 5000 - 20000 bps
|
||||||
|
; 12khz | 7000 - 25000 bps
|
||||||
|
; 16khz | 8000 - 30000 bps
|
||||||
|
; 24khz | 20000- 40000 bps
|
||||||
|
;
|
||||||
|
;dtx=true ; Encode using discontinuous transmission mode or not. Turning this
|
||||||
|
; on will save bandwidth during periods of silence at the cost of
|
||||||
|
; increased computational complexity. Off by default.
|
||||||
|
|
||||||
|
[silk12]
|
||||||
|
type=silk
|
||||||
|
samprate=12000
|
||||||
|
maxbitrate=12000
|
||||||
|
fec=true
|
||||||
|
packetloss_percentage=10;
|
||||||
|
|
||||||
|
[silk16]
|
||||||
|
type=silk
|
||||||
|
samprate=16000
|
||||||
|
maxbitrate=20000
|
||||||
|
fec=true
|
||||||
|
packetloss_percentage=10;
|
||||||
|
|
||||||
|
[silk24]
|
||||||
|
type=silk
|
||||||
|
samprate=24000
|
||||||
|
maxbitrate=30000
|
||||||
|
fec=true
|
||||||
|
packetloss_percentage=10;
|
||||||
|
|
||||||
|
|
||||||
|
; Default custom CELT codec definitions. Only one custom CELT definition is allowed
|
||||||
|
; per a sample rate.
|
||||||
|
;[celt44]
|
||||||
|
;type=celt
|
||||||
|
;samprate=44100 ; The samplerate in hz. This option is required.
|
||||||
|
;framesize=480 ; The framesize option represents the duration of each frame in samples.
|
||||||
|
; This must be a factor of 2. This option is only advertised in an SDP
|
||||||
|
; when it is set. Otherwise a default of framesize of 480 is assumed
|
||||||
|
; internally
|
||||||
|
|
||||||
|
;[celt48]
|
||||||
|
;type=celt
|
||||||
|
;samprate=48000
|
||||||
|
|
||||||
|
;[celt32]
|
||||||
|
;type=celt
|
||||||
|
;samprate=32000
|
||||||
|
|
||||||
|
;============================ OPUS Section Options ============================
|
||||||
|
;
|
||||||
|
; NOTE: Accurate documentation corresponding to your downloaded version of
|
||||||
|
; codec_opus is available from Asterisk's CLI:
|
||||||
|
;
|
||||||
|
; *CLI> config show help codec_opus opus
|
||||||
|
;
|
||||||
|
;[opus]
|
||||||
|
;type= ; Must be of type "opus" (default: "")
|
||||||
|
;packet_loss= ; Encoder's packet loss percentage. Can be any number between 0
|
||||||
|
; and 100, inclusive. A higher value results in more loss
|
||||||
|
; resistance. (default: 0)
|
||||||
|
;complexity= ; Encoder's computational complexity. Can be any number between 0
|
||||||
|
; and 10, inclusive. Note, 10 equals the highest complexity.
|
||||||
|
; (default: 10)
|
||||||
|
;max_bandwidth= ; Encoder's maximum bandwidth allowed. Sets an upper bandwidth
|
||||||
|
; bound on the encoder. Can be any of the following: narrow,
|
||||||
|
; medium, wide, super_wide, full. (default: full)
|
||||||
|
;signal= ; Encoder's signal type. Aids in mode selection on the encoder: Can
|
||||||
|
; be any of the following: auto, voice, music. (default: auto)
|
||||||
|
;application= ; Encoder's application type. Can be any of the following: voip,
|
||||||
|
; audio, low_delay. (default: voip)
|
||||||
|
;max_playback_rate= ; Override the maximum playback rate in the offer's SDP.
|
||||||
|
; Any value between 8000 and 48000 (inclusive) is valid,
|
||||||
|
; however typically it should match one of the usual opus
|
||||||
|
; bandwidths. (default: 48000)
|
||||||
|
;bitrate= ; Override the maximum average bitrate in the offer's SDP. Any value
|
||||||
|
; between 500 and 512000 is valid. The following values are also
|
||||||
|
; allowed: auto, max. (default: auto)
|
||||||
|
;cbr= ; Override the constant bit rate parameter in the offer's SDP. A value of
|
||||||
|
; 0/false/no represents a variable bit rate whereas 1/true/yes represents
|
||||||
|
; a constant bit rate. (default: no)
|
||||||
|
;fec= ; Override the use inband fec parameter in the offer's SDP. A value of
|
||||||
|
; 0/false/no represents disabled whereas 1/true/yes represents enabled.
|
||||||
|
; (default: yes)
|
||||||
|
;dtx= ; Override the use dtx parameter in the offer's SDP. A value of 0/false/no
|
||||||
|
; represents disabled whereas 1/true/yes represents enabled. (default: no)
|
||||||
|
|
||||||
|
;=============================== OPUS Examples ================================
|
||||||
|
;
|
||||||
|
;[opus]
|
||||||
|
;type=opus
|
||||||
|
;max_playback_rate=8000 ; Limit the maximum playback rate on the encoder
|
||||||
|
;fec=no ; No inband fec
|
||||||
|
|
||||||
|
;[myopus]
|
||||||
|
;type=opus
|
||||||
|
;max_bandwidth=wide ; Maximum encoded bandwidth set to wide band (0-8000 Hz
|
||||||
|
; ; audio bandwidth at 16Khz sample rate)
|
||||||
|
;cbr=yes ; Negotiate a constant bit rate
|
||||||
461
test1/conf/asterisk/confbridge.conf
Executable file
461
test1/conf/asterisk/confbridge.conf
Executable file
@ -0,0 +1,461 @@
|
|||||||
|
[general]
|
||||||
|
; The general section of this config
|
||||||
|
; is not currently used, but reserved
|
||||||
|
; for future use.
|
||||||
|
|
||||||
|
;
|
||||||
|
; --- Default Information ---
|
||||||
|
; The default_user and default_bridge sections are applied
|
||||||
|
; automatically to all ConfBridge instances invoked without
|
||||||
|
; a user, or bridge argument. No menu is applied by default.
|
||||||
|
;
|
||||||
|
; Note that while properties of the default_user or default_bridge
|
||||||
|
; profile can be overridden, if removed, they will be automatically
|
||||||
|
; added and made available to the dialplan upon module load.
|
||||||
|
;
|
||||||
|
|
||||||
|
; --- ConfBridge User Profile Options ---
|
||||||
|
[default_user]
|
||||||
|
type=user
|
||||||
|
;admin=yes ; Sets if the user is an admin or not. Off by default.
|
||||||
|
|
||||||
|
;send_events=no ; If events are enabled for this bridge and this option is
|
||||||
|
; set, users will receive events like join, leave, talking,
|
||||||
|
; etc. via text messages. For users accessing the bridge
|
||||||
|
; via chan_pjsip, this means in-dialog MESSAGE messages.
|
||||||
|
; This is most useful for WebRTC participants where the
|
||||||
|
; browser application can use the messages to alter the user
|
||||||
|
; interface.
|
||||||
|
;echo_events=yes ; If events are enabled for this user and this option is set,
|
||||||
|
; the user will receive events they trigger, talking, mute, etc.
|
||||||
|
; If not set, they will not receive their own events.
|
||||||
|
|
||||||
|
;marked=yes ; Sets if this is a marked user or not. Off by default.
|
||||||
|
;startmuted=yes; Sets if all users should start out muted. Off by default
|
||||||
|
;music_on_hold_when_empty=yes ; Sets whether MOH should be played when only
|
||||||
|
; one person is in the conference or when the
|
||||||
|
; the user is waiting on a marked user to enter
|
||||||
|
; the conference. Off by default.
|
||||||
|
;music_on_hold_class=default ; The MOH class to use for this user.
|
||||||
|
;quiet=yes ; When enabled enter/leave prompts and user intros are not played.
|
||||||
|
; There are some prompts, such as the prompt to enter a PIN number,
|
||||||
|
; that must be played regardless of what this option is set to.
|
||||||
|
; Off by default
|
||||||
|
;hear_own_join_sound=yes ; Sets if a user joining the conference should hear the sound_join
|
||||||
|
; audio sound when they enter the conference. If set to 'no' the
|
||||||
|
; user will not hear the sound_join audio but the other participants
|
||||||
|
; in the conference will still hear the audio. If set to 'yes'
|
||||||
|
; everyone hears the sound_join audio when this user enters the conference.
|
||||||
|
; On 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 non-marked user with this option set in their
|
||||||
|
; user profile after the last marked user exits the conference.
|
||||||
|
;end_marked_any=no ; This option will kick every user with this option set in
|
||||||
|
; their user profile after any marked user exits the conference.
|
||||||
|
; Additionally, note that unlike end_marked, this includes marked users.
|
||||||
|
|
||||||
|
;dsp_drop_silence=yes ; This option drops what Asterisk detects as silence from
|
||||||
|
; entering into the bridge. Enabling this option will drastically
|
||||||
|
; improve performance and help remove the buildup of background
|
||||||
|
; noise from the conference. Highly recommended for large conferences
|
||||||
|
; due to its performance enhancements.
|
||||||
|
|
||||||
|
;dsp_talking_threshold=128 ; Average magnitude threshold to determine talking.
|
||||||
|
;
|
||||||
|
; The minimum average magnitude per sample in a frame for the
|
||||||
|
; DSP to consider talking/noise present. A value below this
|
||||||
|
; level is considered silence. This value affects several
|
||||||
|
; operations and should not be changed unless the impact on
|
||||||
|
; call quality is fully understood.
|
||||||
|
;
|
||||||
|
; What this value affects internally:
|
||||||
|
;
|
||||||
|
; 1. Audio is only mixed out of a user's incoming audio
|
||||||
|
; stream if talking is detected. If this value is set too
|
||||||
|
; high the user will hear himself talking.
|
||||||
|
;
|
||||||
|
; 2. When talk detection AMI events are enabled, this value
|
||||||
|
; determines when talking has begun which results in an
|
||||||
|
; AMI event to fire. If this value is set too low AMI
|
||||||
|
; events may be falsely triggered by variants in room
|
||||||
|
; noise.
|
||||||
|
;
|
||||||
|
; 3. The 'drop_silence' option depends on this value to
|
||||||
|
; determine when the user's audio should be mixed into the
|
||||||
|
; bridge after periods of silence. If this value is too
|
||||||
|
; high the user's speech will get discarded as they will
|
||||||
|
; be considered silent.
|
||||||
|
;
|
||||||
|
; Valid values are 1 through 2^15.
|
||||||
|
; By default this value is 160.
|
||||||
|
|
||||||
|
;dsp_silence_threshold=2000 ; The number of milliseconds of silence necessary to declare
|
||||||
|
; talking stopped.
|
||||||
|
;
|
||||||
|
; The time in milliseconds of sound falling below the
|
||||||
|
; 'dsp_talking_threshold' option when a user is considered to
|
||||||
|
; stop talking. This value affects several operations and
|
||||||
|
; should not be changed unless the impact on call quality is
|
||||||
|
; fully understood.
|
||||||
|
;
|
||||||
|
; What this value affects internally:
|
||||||
|
;
|
||||||
|
; 1. When talk detection AMI events are enabled, this value
|
||||||
|
; determines when the user has stopped talking after a
|
||||||
|
; period of talking. If this value is set too low AMI
|
||||||
|
; events indicating the user has stopped talking may get
|
||||||
|
; falsely sent out when the user briefly pauses during mid
|
||||||
|
; sentence.
|
||||||
|
;
|
||||||
|
; 2. The 'drop_silence' option depends on this value to
|
||||||
|
; determine when the user's audio should begin to be
|
||||||
|
; dropped from the conference bridge after the user stops
|
||||||
|
; talking. If this value is set too low the user's audio
|
||||||
|
; stream may sound choppy to the other participants. This
|
||||||
|
; is caused by the user transitioning constantly from
|
||||||
|
; silence to talking during mid sentence.
|
||||||
|
;
|
||||||
|
; The best way to approach this option is to set it slightly
|
||||||
|
; above the maximum amount of milliseconds of silence a user
|
||||||
|
; may generate during natural speech.
|
||||||
|
;
|
||||||
|
; Valid values are 1 through 2^31.
|
||||||
|
; By default this value is 2500ms.
|
||||||
|
|
||||||
|
;talk_detection_events=yes ; This option sets whether or not notifications of when a user
|
||||||
|
; begins and ends talking should be sent out as events over AMI.
|
||||||
|
; By default this option is off.
|
||||||
|
|
||||||
|
;denoise=yes ; Sets whether or not a denoise filter should be applied
|
||||||
|
; to the audio before mixing or not. Off by default. Requires
|
||||||
|
; func_speex to be built and installed. Do not confuse this option
|
||||||
|
; with drop_silence. Denoise is useful if there is a lot of background
|
||||||
|
; noise for a user as it attempts to remove the noise while preserving
|
||||||
|
; the speech. This option does NOT remove silence from being mixed into
|
||||||
|
; the conference and does come at the cost of a slight performance hit.
|
||||||
|
|
||||||
|
;jitterbuffer=yes ; Enabling this option places a jitterbuffer on the user's audio stream
|
||||||
|
; before audio mixing is performed. This is highly recommended but will
|
||||||
|
; add a slight delay to the audio. This option is using the JITTERBUFFER
|
||||||
|
; dialplan function's default adaptive jitterbuffer. For a more fine tuned
|
||||||
|
; jitterbuffer, disable this option and use the JITTERBUFFER dialplan function
|
||||||
|
; on the user before entering the ConfBridge application.
|
||||||
|
|
||||||
|
;pin=1234 ; Sets if this user must enter a PIN number before entering
|
||||||
|
; the conference. The PIN will be prompted for.
|
||||||
|
;announce_join_leave=yes ; When enabled, this option will prompt the user for a
|
||||||
|
; name when entering the conference. After the name is
|
||||||
|
; recorded, it will be played as the user enters and exists
|
||||||
|
; the conference. This option is off by default.
|
||||||
|
;announce_join_leave_review=yes ; When enabled, implies announce_join_leave, but the user
|
||||||
|
; will be prompted to review their recording before
|
||||||
|
; entering the conference. During this phase, the recording
|
||||||
|
; may be listened to, re-recorded, or accepted as is. This
|
||||||
|
; option is off by default.
|
||||||
|
;dtmf_passthrough=yes ; Sets whether or not DTMF should pass through the conference.
|
||||||
|
; This option is off by default.
|
||||||
|
;announcement=</path/to/file> ; Play a sound file to the user when they join the conference.
|
||||||
|
|
||||||
|
;timeout=3600 ; When set non-zero, this specifies the number of seconds that the participant
|
||||||
|
; may stay in the conference before being automatically ejected. When the user
|
||||||
|
; is ejected from the conference, the user's channel will have the CONFBRIDGE_RESULT
|
||||||
|
; variable set to "TIMEOUT". A value of 0 indicates that there is no timeout.
|
||||||
|
; Default: 0
|
||||||
|
;text_messaging=yes ; When set to yes text messages will be sent to this user. Text messages
|
||||||
|
; may occur as a result of events or can be received from other participants.
|
||||||
|
; When set to no text messages will not be sent to this user.
|
||||||
|
;answer_channel=yes ; Sets if the channel should be answered if it hasn't been already.
|
||||||
|
; On by default.
|
||||||
|
|
||||||
|
; --- ConfBridge Bridge Profile Options ---
|
||||||
|
[default_bridge]
|
||||||
|
type=bridge
|
||||||
|
;max_members=50 ; This option limits the number of participants for a single
|
||||||
|
; conference to a specific number. By default conferences
|
||||||
|
; have no participant limit. After the limit is reached, the
|
||||||
|
; conference will be locked until someone leaves. Note however
|
||||||
|
; that an Admin user will always be alowed to join the conference
|
||||||
|
; regardless if this limit is reached or not.
|
||||||
|
|
||||||
|
;record_conference=yes ; Records the conference call starting when the first user
|
||||||
|
; enters the room, and ending when the last user exits the room.
|
||||||
|
; The default recorded filename is
|
||||||
|
; 'confbridge-<name of conference bridge>-<start time>.wav
|
||||||
|
; and the default format is 8khz slinear. This file will be
|
||||||
|
; located in the configured monitoring directory in asterisk.conf.
|
||||||
|
|
||||||
|
;record_file=</path/to/file> ; When record_conference is set to yes, the specific name of the
|
||||||
|
; record file can be set using this option. Note that since multiple
|
||||||
|
; conferences may use the same bridge profile, this may cause issues
|
||||||
|
; depending on the configuration. It is recommended to only use this
|
||||||
|
; option dynamically with the CONFBRIDGE() dialplan function. This
|
||||||
|
; allows the record name to be specified and a unique name to be chosen.
|
||||||
|
; By default, the record_file is stored in Asterisk's spool/monitor directory
|
||||||
|
; with a unique filename starting with the 'confbridge' prefix.
|
||||||
|
|
||||||
|
;record_file_append=yes ; Append record file when starting/stopping on same conference recording.
|
||||||
|
;record_file_timestamp=yes ; Append the start time to the record file name.
|
||||||
|
|
||||||
|
;record_options= ; Pass additional options to MixMonitor.
|
||||||
|
;record_command=</path/to/command> ; Command to execute when recording finishes.
|
||||||
|
|
||||||
|
;internal_sample_rate=auto ; Sets the internal native sample rate the
|
||||||
|
; conference is mixed at. This is set to automatically
|
||||||
|
; adjust the sample rate to the best quality by default.
|
||||||
|
; Other values can be anything from 8000-192000. If a
|
||||||
|
; sample rate is set that Asterisk does not support, the
|
||||||
|
; closest sample rate Asterisk does support to the one requested
|
||||||
|
; will be used.
|
||||||
|
|
||||||
|
;maximum_sample_rate=none ; Sets the maximum sample rate the conference
|
||||||
|
; is mixed at. This is set to no maximum by default.
|
||||||
|
; Values can be anything from 8000-192000.
|
||||||
|
|
||||||
|
;mixing_interval=40 ; Sets the internal mixing interval in milliseconds for the bridge. This
|
||||||
|
; number reflects how tight or loose the mixing will be for the conference.
|
||||||
|
; In order to improve performance a larger mixing interval such as 40ms may
|
||||||
|
; be chosen. Using a larger mixing interval comes at the cost of introducing
|
||||||
|
; larger amounts of delay into the bridge. Valid values here are 10, 20, 40,
|
||||||
|
; or 80. By default 20ms is used.
|
||||||
|
|
||||||
|
;video_mode = follow_talker; Sets how confbridge handles video distribution to the conference participants.
|
||||||
|
; Note that participants wanting to view and be the source of a video feed
|
||||||
|
; _MUST_ be sharing the same video codec. Also, using video in conjunction with
|
||||||
|
; with the jitterbuffer currently results in the audio being slightly out of sync
|
||||||
|
; with the video. This is a result of the jitterbuffer only working on the audio
|
||||||
|
; stream. It is recommended to disable the jitterbuffer when video is used.
|
||||||
|
;
|
||||||
|
; --- MODES ---
|
||||||
|
; none: No video sources are set by default in the conference. It is still
|
||||||
|
; possible for a user to be set as a video source via AMI or DTMF action
|
||||||
|
; at any time.
|
||||||
|
;
|
||||||
|
; follow_talker: The video feed will follow whoever is talking and providing video.
|
||||||
|
;
|
||||||
|
; last_marked: The last marked user to join the conference with video capabilities
|
||||||
|
; will be the single source of video distributed to all participants.
|
||||||
|
; If multiple marked users are capable of video, the last one to join
|
||||||
|
; is always the source, when that user leaves it goes to the one who
|
||||||
|
; joined before them.
|
||||||
|
;
|
||||||
|
; first_marked: The first marked user to join the conference with video capabilities
|
||||||
|
; is the single source of video distribution among all participants. If
|
||||||
|
; that user leaves, the marked user to join after them becomes the source.
|
||||||
|
;
|
||||||
|
; sfu: Selective Forwarding Unit - Sets multi-stream operation
|
||||||
|
; for a multi-party video conference.
|
||||||
|
|
||||||
|
;language=en ; Set the language used for announcements to the conference.
|
||||||
|
; Default is en (English).
|
||||||
|
|
||||||
|
;regcontext=conferences ; The name of the context into which to register conference names as extensions.
|
||||||
|
;video_update_discard=2000 ; Amount of time (in milliseconds) to discard video update requests after sending a video
|
||||||
|
; update request. Default is 2000. A video update request is a request for a full video
|
||||||
|
; intra-frame. Clients can request this if they require a full frame in order to decode
|
||||||
|
; the video stream. Since a full frame can be large limiting how often they occur can
|
||||||
|
; reduce bandwidth usage at the cost of increasing how long it may take a newly joined
|
||||||
|
; channel to receive the video stream.
|
||||||
|
;remb_send_interval=1000 ; Interval (in milliseconds) at which a combined REMB frame will be sent to sources of video.
|
||||||
|
; A REMB frame contains receiver estimated maximum bitrate information. By creating a combined
|
||||||
|
; frame and sending it to the sources of video the sender can be influenced on what bitrate
|
||||||
|
; they choose allowing a better experience for the receivers. This defaults to 0, or disabled.
|
||||||
|
;remb_behavior=average ; How the combined REMB report for an SFU video bridge is constructed. If set to "average" then
|
||||||
|
; the estimated maximum bitrate of each receiver is used to construct an average bitrate. If
|
||||||
|
; set to "lowest" the lowest maximum bitrate is forwarded to the sender. If set to "highest"
|
||||||
|
; the highest maximum bitrate is forwarded to the sender. If set to "average_all" a single average
|
||||||
|
; is generated from every receiver and the same value is sent to every sender. If set to
|
||||||
|
; "lowest_all" the lowest maximum bitrate of all receivers is sent to every sender. If set to
|
||||||
|
; "highest_all" the highest maximum bitrate of all receivers is sent to every sender.
|
||||||
|
; When set to "force", the value set in remb_estimated_bitrate is sent to every sender.
|
||||||
|
; This defaults to "average".
|
||||||
|
;remb_estimated_bitrate=0 ; When remb_behavior is set to 'force', this options sets the estimated bitrate
|
||||||
|
; (in bits per second) sent to each participant in REMB reports.
|
||||||
|
|
||||||
|
;enable_events=no ; If enabled, recipients who joined the bridge via a channel driver
|
||||||
|
; that supports Enhanced Messaging (currently only chan_pjsip) will
|
||||||
|
; receive in-dialog messages containing a JSON body describing the
|
||||||
|
; event. The Content-Type header will be
|
||||||
|
; "text/x-ast-confbridge-event".
|
||||||
|
; This feature must also be enabled in user profiles.
|
||||||
|
|
||||||
|
; All sounds in the conference are customizable using the bridge profile options below.
|
||||||
|
; Simply state the option followed by the filename or full path of the filename after
|
||||||
|
; the option. Example: sound_had_joined=conf-hasjoin This will play the conf-hasjoin
|
||||||
|
; sound file found in the sounds directory when announcing someone's name is joining the
|
||||||
|
; conference.
|
||||||
|
|
||||||
|
;sound_join ; The sound played to everyone when someone enters the conference.
|
||||||
|
;sound_leave ; The sound played to everyone when someone leaves the conference.
|
||||||
|
;sound_has_joined ; The sound played before announcing someone's name has
|
||||||
|
; joined the conference. This is used for user intros.
|
||||||
|
; Example "_____ has joined the conference"
|
||||||
|
;sound_has_left ; The sound played when announcing someone's name has
|
||||||
|
; left the conference. This is used for user intros.
|
||||||
|
; Example "_____ has left the conference"
|
||||||
|
;sound_kicked ; The sound played to a user who has been kicked from the conference.
|
||||||
|
;sound_muted ; The sound played when the mute option is toggled on using DTMF menu.
|
||||||
|
;sound_unmuted ; The sound played when the mute option is toggled off using DTMF menu.
|
||||||
|
;sound_only_person ; The sound played when the user is the only person in the conference.
|
||||||
|
;sound_only_one ; The sound played to a user when there is only one other
|
||||||
|
; person is in the conference.
|
||||||
|
;sound_there_are ; The sound played when announcing how many users there
|
||||||
|
; are in a conference.
|
||||||
|
;sound_other_in_party; ; This file is used in conjunction with 'sound_there_are"
|
||||||
|
; when announcing how many users there are in the conference.
|
||||||
|
; The sounds are stringed together like this.
|
||||||
|
; "sound_there_are" <number of participants> "sound_other_in_party"
|
||||||
|
;sound_place_into_conference ; The sound played when someone is placed into the conference
|
||||||
|
; after waiting for a marked user. This sound is now deprecated
|
||||||
|
; since it was only ever used improperly and correcting that bug
|
||||||
|
; made it completely unused.
|
||||||
|
;sound_wait_for_leader ; The sound played when a user is placed into a conference that
|
||||||
|
; can not start until a marked user enters.
|
||||||
|
;sound_leader_has_left ; The sound played when the last marked user leaves the conference.
|
||||||
|
;sound_get_pin ; The sound played when prompting for a conference pin number.
|
||||||
|
;sound_invalid_pin ; The sound played when an invalid pin is entered too many times.
|
||||||
|
;sound_locked ; The sound played to a user trying to join a locked conference.
|
||||||
|
;sound_locked_now ; The sound played to an admin after toggling the conference to locked mode.
|
||||||
|
;sound_unlocked_now; The sound played to an admin after toggling the conference to unlocked mode.
|
||||||
|
;sound_error_menu ; The sound played when an invalid menu option is entered.
|
||||||
|
;sound_begin ; The sound played to the conference when the first marked user enters the conference.
|
||||||
|
;sound_binaural_on ; The sound played when binaural audio is turned on
|
||||||
|
;sound_binaural_off ; The sound played when binaural audio is turned off
|
||||||
|
|
||||||
|
; --- ConfBridge Menu Options ---
|
||||||
|
; The ConfBridge application also has the ability to
|
||||||
|
; apply custom DTMF menus to each channel using the
|
||||||
|
; application. Like the User and Bridge profiles
|
||||||
|
; a menu is passed in to ConfBridge as an argument in
|
||||||
|
; the dialplan.
|
||||||
|
;
|
||||||
|
; Below is a list of menu actions that can be assigned
|
||||||
|
; to a DTMF sequence.
|
||||||
|
;
|
||||||
|
; To have the first DTMF digit in a sequence be the '#' character, you need to
|
||||||
|
; escape it. If it is not escaped then normal config file processing will
|
||||||
|
; think it is a directive like #include. For example:
|
||||||
|
; \#1=toggle_mute ; Pressing #1 will toggle the mute setting.
|
||||||
|
;
|
||||||
|
; A single DTMF sequence can have multiple actions associated with it. This is
|
||||||
|
; accomplished by stringing the actions together and using a ',' as the delimiter.
|
||||||
|
; Example: Both listening and talking volume is reset when '5' is pressed.
|
||||||
|
; 5=reset_talking_volume, reset_listening_volume
|
||||||
|
;
|
||||||
|
; playback(<name of audio file>&<name of audio file>)
|
||||||
|
; Playback will play back an audio file to a channel
|
||||||
|
; and then immediately return to the conference.
|
||||||
|
; This file can not be interupted by DTMF.
|
||||||
|
; Mutliple files can be chained together using the
|
||||||
|
; '&' character.
|
||||||
|
; playback_and_continue(<name of playback prompt>&<name of playback prompt>)
|
||||||
|
; playback_and_continue will
|
||||||
|
; play back a prompt while continuing to
|
||||||
|
; collect the dtmf sequence. This is useful
|
||||||
|
; when using a menu prompt that describes all
|
||||||
|
; the menu options. Note however that any DTMF
|
||||||
|
; during this action will terminate the prompts
|
||||||
|
; playback. Prompt files can be chained together
|
||||||
|
; using the '&' character as a delimiter.
|
||||||
|
; toggle_mute ; Toggle turning on and off mute. Mute will make the user silent
|
||||||
|
; to everyone else, but the user will still be able to listen in.
|
||||||
|
; toggle_binaural ; Toggle on or off binaural audio processing.
|
||||||
|
|
||||||
|
; no_op ; This action does nothing (No Operation). Its only real purpose exists for
|
||||||
|
; being able to reserve a sequence in the config as a menu exit sequence.
|
||||||
|
; decrease_listening_volume ; Decreases the channel's listening volume.
|
||||||
|
; increase_listening_volume ; Increases the channel's listening volume.
|
||||||
|
; reset_listening_volume ; Reset channel's listening volume to default level.
|
||||||
|
|
||||||
|
; decrease_talking_volume ; Decreases the channel's talking volume.
|
||||||
|
; increase_talking_volume ; Icreases the channel's talking volume.
|
||||||
|
; reset_talking_volume ; Reset channel's talking volume to default level.
|
||||||
|
;
|
||||||
|
; dialplan_exec(context,exten,priority) ; The dialplan_exec action allows a user
|
||||||
|
; to escape from the conference and execute
|
||||||
|
; commands in the dialplan. Once the dialplan
|
||||||
|
; exits the user will be put back into the
|
||||||
|
; conference. The possibilities are endless!
|
||||||
|
; leave_conference ; This action allows a user to exit the conference and continue
|
||||||
|
; execution in the dialplan.
|
||||||
|
;
|
||||||
|
; admin_kick_last ; This action allows an Admin to kick the last participant from the
|
||||||
|
; conference. This action will only work for admins which allows
|
||||||
|
; a single menu to be used for both users and admins.
|
||||||
|
;
|
||||||
|
; admin_toggle_conference_lock ; This action allows an Admin to toggle locking and
|
||||||
|
; unlocking the conference. Non admins can not use
|
||||||
|
; this action even if it is in their menu.
|
||||||
|
|
||||||
|
; set_as_single_video_src ; This action allows any user to set themselves as the
|
||||||
|
; single video source distributed to all participants.
|
||||||
|
; This will make the video feed stick to them regardless
|
||||||
|
; of what the video_mode is set to.
|
||||||
|
|
||||||
|
; release_as_single_video_src ; This action allows a user to release themselves as
|
||||||
|
; the video source. If video_mode is not set to "none"
|
||||||
|
; this action will result in the conference returning to
|
||||||
|
; whatever video mode the bridge profile is using.
|
||||||
|
;
|
||||||
|
; Note that this action will have no effect if the user
|
||||||
|
; is not currently the video source. Also, the user is
|
||||||
|
; not guaranteed by using this action that they will not
|
||||||
|
; become the video source again. The bridge will return
|
||||||
|
; to whatever operation the video_mode option is set to
|
||||||
|
; upon release of the video src.
|
||||||
|
|
||||||
|
; admin_toggle_mute_participants ; This action allows an administrator to toggle the mute
|
||||||
|
; state for all non-admins within a conference.
|
||||||
|
; Subsequent non-admins joining a muted conference will
|
||||||
|
; start muted. All admin users are unaffected by this
|
||||||
|
; option. Note that all users, regardless of their admin
|
||||||
|
; status, are notified that the conference is muted when
|
||||||
|
; the state is toggled.
|
||||||
|
|
||||||
|
; participant_count ; This action plays back the number of participants currently
|
||||||
|
; in a conference
|
||||||
|
|
||||||
|
[sample_user_menu]
|
||||||
|
type=menu
|
||||||
|
*=playback_and_continue(conf-usermenu)
|
||||||
|
*1=toggle_mute
|
||||||
|
1=toggle_mute
|
||||||
|
*4=decrease_listening_volume
|
||||||
|
4=decrease_listening_volume
|
||||||
|
*6=increase_listening_volume
|
||||||
|
6=increase_listening_volume
|
||||||
|
*7=decrease_talking_volume
|
||||||
|
7=decrease_talking_volume
|
||||||
|
*8=leave_conference
|
||||||
|
8=leave_conference
|
||||||
|
*9=increase_talking_volume
|
||||||
|
9=increase_talking_volume
|
||||||
|
|
||||||
|
[sample_admin_menu]
|
||||||
|
type=menu
|
||||||
|
*=playback_and_continue(conf-adminmenu)
|
||||||
|
*1=toggle_mute
|
||||||
|
1=toggle_mute
|
||||||
|
*2=admin_toggle_conference_lock ; only applied to admin users
|
||||||
|
2=admin_toggle_conference_lock ; only applied to admin users
|
||||||
|
*3=admin_kick_last ; only applied to admin users
|
||||||
|
3=admin_kick_last ; only applied to admin users
|
||||||
|
*4=decrease_listening_volume
|
||||||
|
4=decrease_listening_volume
|
||||||
|
*6=increase_listening_volume
|
||||||
|
6=increase_listening_volume
|
||||||
|
*7=decrease_talking_volume
|
||||||
|
7=decrease_talking_volume
|
||||||
|
*8=no_op
|
||||||
|
8=no_op
|
||||||
|
*9=increase_talking_volume
|
||||||
|
9=increase_talking_volume
|
||||||
46
test1/conf/asterisk/config_test.conf
Executable file
46
test1/conf/asterisk/config_test.conf
Executable file
@ -0,0 +1,46 @@
|
|||||||
|
; 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
|
||||||
|
timelenopt1=1ms
|
||||||
|
timelenopt2=1s
|
||||||
|
timelenopt3=1m
|
||||||
|
timelenopt4=1h
|
||||||
|
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
|
||||||
|
timelenopt1=1
|
||||||
|
timelenopt2=1
|
||||||
|
timelenopt3=1
|
||||||
|
timelenopt4=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]
|
||||||
97
test1/conf/asterisk/console.conf
Executable file
97
test1/conf/asterisk/console.conf
Executable file
@ -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.
|
||||||
34
test1/conf/asterisk/dbsep.conf
Executable file
34
test1/conf/asterisk/dbsep.conf
Executable file
@ -0,0 +1,34 @@
|
|||||||
|
#
|
||||||
|
# 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
|
||||||
5
test1/conf/asterisk/dnsmgr.conf
Executable file
5
test1/conf/asterisk/dnsmgr.conf
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
[general]
|
||||||
|
;enable=yes ; enable creation of managed DNS lookups
|
||||||
|
; default is 'no'
|
||||||
|
;refreshinterval=1200 ; refresh managed DNS lookups every <n> seconds
|
||||||
|
; default is 300 (5 minutes)
|
||||||
42
test1/conf/asterisk/dsp.conf
Executable file
42
test1/conf/asterisk/dsp.conf
Executable file
@ -0,0 +1,42 @@
|
|||||||
|
[default]
|
||||||
|
;
|
||||||
|
; Length of sound (in milliseconds) before a period of silence is considered
|
||||||
|
; to be a change from talking to silence or a period of noise converts silence
|
||||||
|
; to talking. [default=256]
|
||||||
|
;
|
||||||
|
;silencethreshold=256
|
||||||
|
|
||||||
|
; DTMF Reverse Twist and Normal Twist is the difference in power between the row and column energies.
|
||||||
|
;
|
||||||
|
; Normal Twist is where the row energy is greater than the column energy.
|
||||||
|
; Reverse Twist is where the column energy is greater.
|
||||||
|
;
|
||||||
|
; Power level difference between frequencies for different Administrations/RPOAs
|
||||||
|
; Power Gain equiv
|
||||||
|
; normal reverse dB's
|
||||||
|
; AT&T(default) 6.31 2.51 8dB(normal), 4dB(reverse)
|
||||||
|
; NTT 3.16 3.16 Max. 5dB
|
||||||
|
; Danish 3.98 3.98 Max. 6dB
|
||||||
|
; Australian 10.0 10.0 Max. 10dB
|
||||||
|
; Brazilian 7.94 7.94 Max. 9dB
|
||||||
|
; ETSI 3.98 3.98 Max. 6dB
|
||||||
|
|
||||||
|
;previous version compatible AT&T values
|
||||||
|
; RADIO_RELAX disabled, and relaxdtmf=no
|
||||||
|
; 6.30 2.50 7.99dB(normal), 3.98dB(reverse)
|
||||||
|
; RADIO_RELAX disabled, and relaxdtmf=yes
|
||||||
|
; 6.30 4.00 7.99dB(normal), 6.02dB(reverse)
|
||||||
|
; RADIO_RELAX enabled, and relaxdtmf=no
|
||||||
|
; 6.30 2.50 7.99dB(normal), 3.984dB(reverse)
|
||||||
|
; RADIO_RELAX enabled, and relaxdtmf=yes
|
||||||
|
; 6.30 6.50 7.99dB(normal), 8.13dB(reverse)
|
||||||
|
|
||||||
|
;If you don't know what these mean, don't change them.
|
||||||
|
;dtmf_normal_twist=6.31
|
||||||
|
;dtmf_reverse_twist=2.51
|
||||||
|
;relax_dtmf_normal_twist=6.31
|
||||||
|
;relax_dtmf_reverse_twist=3.98
|
||||||
|
|
||||||
|
;successive number hits/misses of 12.75ms before a digit/nodigit is considered valid
|
||||||
|
;dtmf_hits_to_begin=2
|
||||||
|
;dtmf_misses_to_end=3
|
||||||
289
test1/conf/asterisk/dundi.conf
Executable file
289
test1/conf/asterisk/dundi.conf
Executable file
@ -0,0 +1,289 @@
|
|||||||
|
;
|
||||||
|
; 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. IPv6 addresses are accepted. Default is 0.0.0.0
|
||||||
|
; You can specify 'bindaddr2' to bind to another address however
|
||||||
|
; 'bindaddr and 'bindaddr2' need to be different IP protocols.
|
||||||
|
; Specify port number. Default is 4520.
|
||||||
|
;
|
||||||
|
;bindaddr=0.0.0.0
|
||||||
|
;port=4520
|
||||||
|
;
|
||||||
|
; See https://docs.asterisk.org/Configuration/Channel-Drivers/IP-Quality-of-Service for a description of the tos parameter.
|
||||||
|
;tos=ef
|
||||||
|
;
|
||||||
|
; Our entity identifier. (It 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
|
||||||
|
; in seconds. Default is 3600.
|
||||||
|
;
|
||||||
|
;cachetime=3600
|
||||||
|
;
|
||||||
|
; This defines the max depth (hops) 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 on' and 'dundi store history off') 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
|
||||||
|
;
|
||||||
|
; Channel technology to use for outgoing calls using SIP (Session Initiation Protocol).
|
||||||
|
; Options are 'SIP' for chan_sip and 'PJSIP' for chan_pjsip. Default is 'PJSIP'.
|
||||||
|
; If specified, all outgoing SIP calls using DUNDi will use the specified channel tech.
|
||||||
|
;
|
||||||
|
;outgoing_sip_tech=pjsip
|
||||||
|
;
|
||||||
|
; Name of endpoint from pjsip.conf to use for outgoing calls from this system,
|
||||||
|
; when using the PJSIP technology to complete a call to a SIP-based destination.
|
||||||
|
; (Required for PJSIP, since PJSIP calls must specify an endpoint explicitly).
|
||||||
|
;
|
||||||
|
;pjsip_outgoing_endpoint=outgoing
|
||||||
|
|
||||||
|
[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 (IAX2, SIP, H323)
|
||||||
|
;
|
||||||
|
; 'dest' is the Dial application's channel technology resource 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 IAX2 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.
|
||||||
|
;
|
||||||
|
;empty_context =>
|
||||||
|
;
|
||||||
|
;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}
|
||||||
|
|
||||||
|
;
|
||||||
|
; 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 should 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 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 specifies the peer's entityid. You can specify which
|
||||||
|
; DUNDi contexts with which you want the trust to be established.
|
||||||
|
;
|
||||||
|
; inkey - What key they will be authenticating to us with
|
||||||
|
;
|
||||||
|
; outkey - What key we use to authenticate to them
|
||||||
|
;
|
||||||
|
; host - What their host is (DNS name, IP address, or dynamic)
|
||||||
|
;
|
||||||
|
; port - The port where their host is listening (default: 4520)
|
||||||
|
;
|
||||||
|
; ustothem - Explicitly specify the entityid we use with this peer.
|
||||||
|
;
|
||||||
|
; 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 - Excludes 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 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.
|
||||||
|
;
|
||||||
|
; qualify - Enable qualifying the peer to determine reachable status.
|
||||||
|
; Set to yes, no, or number of milliseconds for qualifying
|
||||||
|
; the peer's reachable status.
|
||||||
|
;
|
||||||
|
; register - Enable registering with the peer. This presupposes that the
|
||||||
|
; peer's host option for us is dynamic. (yes/no value)
|
||||||
|
;
|
||||||
|
; 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
|
||||||
|
|
||||||
|
;[*]
|
||||||
|
;
|
||||||
22
test1/conf/asterisk/enum.conf
Executable file
22
test1/conf/asterisk/enum.conf
Executable file
@ -0,0 +1,22 @@
|
|||||||
|
;
|
||||||
|
; ENUM Configuration for resolving phone numbers over DNS
|
||||||
|
;
|
||||||
|
; Sample config for Asterisk
|
||||||
|
; This file is reloaded at "module reload enum" in the CLI
|
||||||
|
;
|
||||||
|
[general]
|
||||||
|
;
|
||||||
|
; The search list for domains may be customized. Domains are searched
|
||||||
|
; in the order they are listed here.
|
||||||
|
;
|
||||||
|
search => e164.arpa
|
||||||
|
;
|
||||||
|
; If you'd like to use the E.164.org public ENUM registry in addition
|
||||||
|
; to the official e164.arpa one, uncomment the following line
|
||||||
|
;
|
||||||
|
;search => e164.org
|
||||||
|
;
|
||||||
|
; As there are more H323 drivers available you have to select to which
|
||||||
|
; drive a H323 URI will map. Default is "H323".
|
||||||
|
;
|
||||||
|
h323driver => H323
|
||||||
137
test1/conf/asterisk/extconfig.conf
Executable file
137
test1/conf/asterisk/extconfig.conf
Executable file
@ -0,0 +1,137 @@
|
|||||||
|
;
|
||||||
|
; Static and realtime external configuration
|
||||||
|
; engine configuration
|
||||||
|
;
|
||||||
|
; See https://docs.asterisk.org/Fundamentals/Asterisk-Configuration/Database-Support-Configuration/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
|
||||||
|
; 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 backend configures the database used in their
|
||||||
|
; respective configuration files and ignore the database name configured in
|
||||||
|
; this file.
|
||||||
|
;
|
||||||
|
;iaxusers => odbc,asterisk
|
||||||
|
;iaxpeers => odbc,asterisk
|
||||||
|
;sippeers => odbc,asterisk
|
||||||
|
;sipregs => odbc,asterisk ; (avoid sipregs if possible, e.g. by using a view)
|
||||||
|
;ps_endpoints => odbc,asterisk
|
||||||
|
;ps_auths => odbc,asterisk
|
||||||
|
;ps_aors => odbc,asterisk
|
||||||
|
;ps_domain_aliases => odbc,asterisk
|
||||||
|
;ps_endpoint_id_ips => odbc,asterisk
|
||||||
|
;ps_outbound_publishes => odbc,asterisk
|
||||||
|
;ps_inbound_publications = odbc,asterisk
|
||||||
|
;ps_asterisk_publications = odbc,asterisk
|
||||||
|
;stir_tn => odbc,asterisk
|
||||||
|
;voicemail => odbc,asterisk
|
||||||
|
;extensions => odbc,asterisk
|
||||||
|
;meetme => mysql,general
|
||||||
|
;queues => odbc,asterisk
|
||||||
|
;queue_members => odbc,asterisk
|
||||||
|
;queue_rules => odbc,asterisk
|
||||||
|
;acls => odbc,asterisk
|
||||||
|
;musiconhold => mysql,general
|
||||||
|
;musiconhold_entry => 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.
|
||||||
|
|
||||||
|
;[settings]e
|
||||||
|
;sippeers => odbc,asterisk,sip_buddies
|
||||||
|
;sipusers => odbc,asterisk,sip_buddies
|
||||||
|
|
||||||
|
|
||||||
|
; [settings]
|
||||||
|
; sippeers => odbc,asterisk_db,ps_endpoints
|
||||||
|
; ps_endpoints => odbc,asterisk_db,ps_endpoints
|
||||||
|
; ps_auths => odbc,asterisk_db,ps_auths
|
||||||
|
; ps_aors => odbc,asterisk_db,ps_aors
|
||||||
|
|
||||||
|
;[settings]
|
||||||
|
;ps_aors => odbc,asterisk
|
||||||
|
;ps_auths => odbc,asterisk
|
||||||
|
;ps_endpoints => odbc,asterisk
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
ps_endpoints => odbc,asterisk,ps_endpoints
|
||||||
|
ps_auths => odbc,asterisk,ps_auths
|
||||||
|
ps_aors => odbc,asterisk,ps_aors
|
||||||
|
extensions => odbc,asterisk,extensions_table
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
443
test1/conf/asterisk/extensions.ael
Executable file
443
test1/conf/asterisk/extensions.ael
Executable file
@ -0,0 +1,443 @@
|
|||||||
|
//
|
||||||
|
// 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;
|
||||||
|
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;
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
// 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 severely 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 and toll-free calls only
|
||||||
|
//
|
||||||
|
ignorepat => 9;
|
||||||
|
includes {
|
||||||
|
ael-default;
|
||||||
|
ael-trunklocal;
|
||||||
|
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.
|
||||||
|
//
|
||||||
|
}
|
||||||
778
test1/conf/asterisk/extensions.conf
Executable file
778
test1/conf/asterisk/extensions.conf
Executable file
@ -0,0 +1,778 @@
|
|||||||
|
|
||||||
|
[general]
|
||||||
|
switch => Realtime
|
||||||
|
;
|
||||||
|
; 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://github.com/asterisk/asterisk/issues. 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
|
||||||
|
TRUNK=DAHDI/G2 ; Trunk interface
|
||||||
|
;
|
||||||
|
; Note the 'G2' in the TRUNK variable above. It specifies which group (defined
|
||||||
|
; in chan_dahdi.conf) to dial, i.e. group 2, and how to choose a channel to use
|
||||||
|
; in the specified group. The four possible options are:
|
||||||
|
;
|
||||||
|
; g: select the lowest-numbered non-busy DAHDI channel
|
||||||
|
; (aka. ascending sequential hunt group).
|
||||||
|
; G: select the highest-numbered non-busy DAHDI channel
|
||||||
|
; (aka. descending sequential hunt group).
|
||||||
|
; r: use a round-robin search, starting at the next highest channel than last
|
||||||
|
; time (aka. ascending rotary hunt group).
|
||||||
|
; R: use a round-robin search, starting at the next lowest channel than last
|
||||||
|
; time (aka. descending rotary hunt group).
|
||||||
|
;
|
||||||
|
TRUNKMSD=1 ; MSD digits to strip (usually 1 or 0)
|
||||||
|
;TRUNK=IAX2/user:pass@provider
|
||||||
|
|
||||||
|
;FREENUMDOMAIN=mydomain.com ; domain to send on outbound
|
||||||
|
; freenum calls (uses outbound-freenum
|
||||||
|
; context)
|
||||||
|
|
||||||
|
;
|
||||||
|
; WARNING WARNING WARNING WARNING
|
||||||
|
; If you load any other extension configuration engine, such as pbx_ael.so,
|
||||||
|
; your global variables may be overridden by that file. Please take care to
|
||||||
|
; use only one location to set global variables, and you will likely save
|
||||||
|
; yourself a ton of grief.
|
||||||
|
; WARNING WARNING WARNING WARNING
|
||||||
|
;
|
||||||
|
; Any category other than "General" and "Globals" represent
|
||||||
|
; extension contexts, which are collections of extensions.
|
||||||
|
;
|
||||||
|
; Extension names may be numbers, letters, or combinations
|
||||||
|
; thereof. If an extension name is prefixed by a '_'
|
||||||
|
; character, it is interpreted as a pattern rather than a
|
||||||
|
; literal. In patterns, some characters have special meanings:
|
||||||
|
;
|
||||||
|
; X - any digit from 0-9
|
||||||
|
; Z - any digit from 1-9
|
||||||
|
; N - any digit from 2-9
|
||||||
|
; [1235-9] - any digit in the brackets (in this example, 1,2,3,5,6,7,8,9)
|
||||||
|
; . - wildcard, matches anything remaining (e.g. _9011. matches
|
||||||
|
; anything starting with 9011 excluding 9011 itself)
|
||||||
|
; ! - wildcard, causes the matching process to complete as soon as
|
||||||
|
; it can unambiguously determine that no other matches are possible
|
||||||
|
;
|
||||||
|
; For example, the extension _NXXXXXX would match normal 7 digit dialings,
|
||||||
|
; while _1NXXNXXXXXX would represent an area code plus phone number
|
||||||
|
; preceded by a one.
|
||||||
|
;
|
||||||
|
; Each step of an extension is ordered by priority, which must always start
|
||||||
|
; with 1 to be considered a valid extension. The priority "next" or "n" means
|
||||||
|
; the previous priority plus one, regardless of whether the previous priority
|
||||||
|
; was associated with the current extension or not. The priority "same" or "s"
|
||||||
|
; means the same as the previously specified priority, again regardless of
|
||||||
|
; whether the previous entry was for the same extension. Priorities may be
|
||||||
|
; immediately followed by a plus sign and another integer to add that amount
|
||||||
|
; (most useful with 's' or 'n'). Priorities may then also have an alias, or
|
||||||
|
; label, in parentheses after their name which can be used in goto situations.
|
||||||
|
;
|
||||||
|
; Contexts contain several lines, one for each step of each extension. One may
|
||||||
|
; include another context in the current one as well, optionally with a date
|
||||||
|
; and time. Included contexts are included in the order they are listed.
|
||||||
|
; Switches may also be included within a context. The order of matching within
|
||||||
|
; a context is always exact extensions, pattern match extensions, includes, and
|
||||||
|
; switches. Includes are always processed depth-first. So for example, if you
|
||||||
|
; would like a switch "A" to match before context "B", simply put switch "A" in
|
||||||
|
; an included context "C", where "C" is included in your original context
|
||||||
|
; before "B".
|
||||||
|
;
|
||||||
|
;[context]
|
||||||
|
;
|
||||||
|
;autohints = yes
|
||||||
|
; If enabled for a context, a device state hint will be automatically created in
|
||||||
|
; the context with the name of the device and updated with device state changes.
|
||||||
|
;
|
||||||
|
;exten => someexten,{priority|label{+|-}offset}[(alias)],application(arg1,arg2,...)
|
||||||
|
;
|
||||||
|
; Timing list for includes is
|
||||||
|
;
|
||||||
|
; <time range>,<days of week>,<days of month>,<months>[,<timezone>]
|
||||||
|
;
|
||||||
|
; Note that ranges may be specified to wrap around the ends. Also, minutes are
|
||||||
|
; fine-grained only down to the closest even minute.
|
||||||
|
;
|
||||||
|
;include => daytime,9:00-17:00,mon-fri,*,*
|
||||||
|
;include => weekend,*,sat-sun,*,*
|
||||||
|
;include => weeknights,17:02-8:58,mon-fri,*,*
|
||||||
|
;
|
||||||
|
; ignorepat can be used to instruct drivers to not cancel dialtone upon receipt
|
||||||
|
; of a particular pattern. The most commonly used example is of course '9'
|
||||||
|
; like this:
|
||||||
|
;
|
||||||
|
;ignorepat => 9
|
||||||
|
;
|
||||||
|
; so that dialtone remains even after dialing a 9. Please note that ignorepat
|
||||||
|
; only works with channels which receive dialtone from the PBX, such as DAHDI,
|
||||||
|
; Phone, and VPB. Other channels, such as IAX2, PJSIP, SIP and MGCP, which generate
|
||||||
|
; 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})
|
||||||
|
;exten => _125642861XX,1,Dial(IAX2/user@example.com/${EXTEN:7})
|
||||||
|
;exten => _125642862XX,1,Dial(IAX2/user:secret@example.com/${EXTEN:7})
|
||||||
|
;exten => _125642863XX,1,Dial(IAX2/user:secret:[outkey]@example.com/${EXTEN:7})
|
||||||
|
|
||||||
|
[dundi-e164-customers]
|
||||||
|
;
|
||||||
|
; If you are an ITSP or Reseller, list your customers here.
|
||||||
|
;
|
||||||
|
;exten => _12564286000,1,Dial(PJSIP/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 subroutine instead of using
|
||||||
|
; the Local channel driver.
|
||||||
|
;
|
||||||
|
[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 is how to make a call to another Asterisk server using the IAX2 protocol
|
||||||
|
;
|
||||||
|
[iax2-trunk]
|
||||||
|
exten => _555XXXX,1,Dial(IAX2/username:secret@example.com/${EXTEN}@some-dialplan-context)
|
||||||
|
|
||||||
|
;
|
||||||
|
; 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 severely delayed.
|
||||||
|
;
|
||||||
|
[iaxprovider]
|
||||||
|
;switch => IAX2/user:[key]@myserver/mycontext
|
||||||
|
|
||||||
|
[trunkint]
|
||||||
|
;
|
||||||
|
; International long distance through trunk
|
||||||
|
;
|
||||||
|
exten => _9011.,1,Gosub(dundi-e164,s,1(${EXTEN:4}))
|
||||||
|
; same => n,Hangup()
|
||||||
|
exten => _9011.,n,Dial(${GLOBAL(TRUNK)}/${FILTER(0-9,${EXTEN:${GLOBAL(TRUNKMSD)}})})
|
||||||
|
|
||||||
|
[trunkld]
|
||||||
|
;
|
||||||
|
; Long distance context accessed through trunk
|
||||||
|
;
|
||||||
|
exten => _91NXXNXXXXXX,1,Gosub(dundi-e164,s,1(${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 and toll-free calls only
|
||||||
|
;
|
||||||
|
ignorepat => 9
|
||||||
|
include => default
|
||||||
|
include => trunklocal
|
||||||
|
include => iax2-trunk
|
||||||
|
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()
|
||||||
|
|
||||||
|
[trunkdial]
|
||||||
|
;
|
||||||
|
; Standard trunk dial subroutine (hangs up on a dialstatus that should
|
||||||
|
; terminate call)
|
||||||
|
; ${ARG1} - What to dial
|
||||||
|
;
|
||||||
|
exten => s,1,StackPop()
|
||||||
|
same => n,Dial(${ARG1})
|
||||||
|
exten => s,n,Goto(s-${DIALSTATUS},1)
|
||||||
|
exten => s-NOANSWER,1,Hangup()
|
||||||
|
exten => s-BUSY,1,PlayTones(busy)
|
||||||
|
same => n,Wait(60)
|
||||||
|
same => n,Hangup()
|
||||||
|
exten => s-CHANUNAVAIL,1,PlayTones(congestion)
|
||||||
|
same => n,Wait(60)
|
||||||
|
same => n,Hangup()
|
||||||
|
exten => s-CONGESTION,1,PlayTones(congestion)
|
||||||
|
same => n,Wait(60)
|
||||||
|
same => n,Hangup()
|
||||||
|
exten => _s-.,1,NoOp(${DIALSTATUS})
|
||||||
|
same => n,Hangup()
|
||||||
|
|
||||||
|
[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)
|
||||||
|
same => n,Set(LOCAL(ext)=${EXTEN})
|
||||||
|
same => n,Set(LOCAL(dev)=${ARG1})
|
||||||
|
same => n,Set(LOCAL(cntx)=${ARG2})
|
||||||
|
same => n,Set(LOCAL(mbx)=${ext}${IF($[!${ISNULL(${cntx})}]?@${cntx})})
|
||||||
|
same => n,Dial(${dev},20) ; Ring the interface, 20 seconds maximum
|
||||||
|
same => 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
|
||||||
|
same => n,Return() ; If they press #, return to start
|
||||||
|
|
||||||
|
exten => stdexten-BUSY,1,VoiceMail(${mbx},b) ; If busy, send to voicemail w/ busy announce
|
||||||
|
same => 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)
|
||||||
|
same => n,Set(LOCAL(ext)=${ARG1})
|
||||||
|
same => n,Set(LOCAL(dev)=${ARG2})
|
||||||
|
same => n,Set(LOCAL(dontcntx)=${ARG3})
|
||||||
|
same => n,Set(LOCAL(tortcntx)=${ARG4})
|
||||||
|
same => n,Set(LOCAL(cntx)=${ARG5})
|
||||||
|
|
||||||
|
exten => _X.,n,Set(LOCAL(mbx)="${ext}"$["${cntx}" ? "@${cntx}" :: ""])
|
||||||
|
same => n,Dial(${dev},20,p) ; Ring the interface, 20 seconds maximum, call screening
|
||||||
|
; option (or use P for databased call _X.screening)
|
||||||
|
same => 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
|
||||||
|
same => n,NoOp(Finish stdPrivacyexten NOANSWER)
|
||||||
|
same => n,Return() ; If they press #, return to start
|
||||||
|
|
||||||
|
exten => stdexten-BUSY,1,VoiceMail(${mbx},b) ; If busy, send to voicemail w/ busy announce
|
||||||
|
same => n,NoOp(Finish stdPrivacyexten BUSY)
|
||||||
|
same => 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
|
||||||
|
same => n,Return()
|
||||||
|
|
||||||
|
[sub-page]
|
||||||
|
;
|
||||||
|
; Paging subroutine:
|
||||||
|
;
|
||||||
|
; 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
|
||||||
|
same => n,GotoIf($["${AVAILSTATUS}" = "1"]?autoanswer:fail)
|
||||||
|
same => n(autoanswer),Set(_ALERT_INFO="RA") ; This is for the PolyComs
|
||||||
|
same => n,SIPAddHeader(Call-Info: Answer-After=0) ; This is for the Grandstream, Snoms, and Others
|
||||||
|
same => n,NoOp() ; Add others here and Post on the Docs!!!!
|
||||||
|
same => n,Dial(${ARG1})
|
||||||
|
same => 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
|
||||||
|
same => n,Answer() ; Answer the line
|
||||||
|
same => n,Set(TIMEOUT(digit)=5) ; Set Digit Timeout to 5 seconds
|
||||||
|
same => n,Set(TIMEOUT(response)=10) ; Set Response Timeout to 10 seconds
|
||||||
|
same => n(restart),BackGround(demo-congrats) ; Play a congratulatory message
|
||||||
|
same => n(instruct),BackGround(demo-instruct) ; Play some instructions
|
||||||
|
same => n,WaitExten() ; Wait for an extension to be dialed.
|
||||||
|
|
||||||
|
exten => 2,1,BackGround(demo-moreinfo) ; Give some more information.
|
||||||
|
exten => 2,n,Goto(s,instruct)
|
||||||
|
|
||||||
|
exten => 3,1,Set(CHANNEL(language)=fr) ; Set language to french
|
||||||
|
same => 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)
|
||||||
|
same => n,Gosub(${EXTEN},stdexten(${GLOBAL(CONSOLE)}))
|
||||||
|
same => n,Goto(default,s,1) ; exited Voicemail
|
||||||
|
|
||||||
|
exten => 1235,1,VoiceMail(1234,u) ; Right to voicemail
|
||||||
|
|
||||||
|
exten => 1236,1,Dial(Console/dsp) ; Ring forever
|
||||||
|
same => n,VoiceMail(1234,b) ; Unless busy
|
||||||
|
|
||||||
|
;
|
||||||
|
; # for when they're done with the demo
|
||||||
|
;
|
||||||
|
exten => #,1,Playback(demo-thanks) ; "Thanks for trying the demo"
|
||||||
|
same => 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, 600, for evaluating echo latency.
|
||||||
|
;
|
||||||
|
exten => 600,1,Playback(demo-echotest) ; Let them know what's going on
|
||||||
|
same => n,Echo() ; Do the echo test
|
||||||
|
same => n,Playback(demo-echodone) ; Let them know it's over
|
||||||
|
same => n,Goto(s,6) ; Start over
|
||||||
|
|
||||||
|
;
|
||||||
|
; You can use the page subroutine to intercom a individual user
|
||||||
|
exten => 76245,1,Gosub(page,s,1(SIP/Grandstream1))
|
||||||
|
; or if your peernames are the same as extensions
|
||||||
|
exten => _7XXX,1,Gosub(page,s,1(SIP/${EXTEN}))
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; System Wide Page at extension 7999
|
||||||
|
;
|
||||||
|
exten => 7999,1,Set(TIMEOUT(absolute)=60)
|
||||||
|
same => n,Page(Local/Grandstream1@page&Local/Xlite1@page&Local/1234@page/n,d)
|
||||||
|
|
||||||
|
; Give voicemail at extension 8500
|
||||||
|
;
|
||||||
|
exten => 8500,1,VoiceMailMain()
|
||||||
|
same => n,Goto(s,6)
|
||||||
|
;
|
||||||
|
; Here's what a phone entry would look like (IXJ for example)
|
||||||
|
;
|
||||||
|
;exten => 1265,1,Dial(Phone/phone0,15)
|
||||||
|
; same => n,Goto(s,5)
|
||||||
|
|
||||||
|
;
|
||||||
|
; The page context calls up the sub-page subroutine 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,Gosub(sub-page,s,1(SIP/${EXTEN}))
|
||||||
|
same => n,Hangup()
|
||||||
|
|
||||||
|
;[mainmenu]
|
||||||
|
;
|
||||||
|
; Example "main menu" context with submenu
|
||||||
|
;
|
||||||
|
;exten => s,1,Answer
|
||||||
|
; same => n,Background(thanks) ; "Thanks for calling press 1 for sales, 2 for support, ..."
|
||||||
|
; same => 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
|
||||||
|
; same => n,Wait,2
|
||||||
|
; same => n,Background(submenuopts) ; "Thanks for calling the sales department. Press 1 for steve, 2 for..."
|
||||||
|
; same => 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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[time]
|
||||||
|
exten => _X.,30000(time),NoOp(Time: ${EXTEN} ${timezone})
|
||||||
|
same => n,Wait(0.25)
|
||||||
|
same => 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.
|
||||||
|
same => n,Set(FUTURETIME=$[${EPOCH} + 12])
|
||||||
|
same => n,SayUnixTime(${FUTURETIME},Zulu,HNS)
|
||||||
|
same => n,SayPhonetic(z)
|
||||||
|
; use the timezone associated with the extension (sip only), or system-wide
|
||||||
|
; default if one hasn't been set.
|
||||||
|
same => n,SayUnixTime(${FUTURETIME},${timezone},HNS)
|
||||||
|
same => n,Playback(spy-local)
|
||||||
|
same => n,WaitUntil(${FUTURETIME})
|
||||||
|
same => n,Playback(beep)
|
||||||
|
same => n,Return()
|
||||||
|
|
||||||
|
;
|
||||||
|
; ANI context: use in the same way as "time" above
|
||||||
|
;
|
||||||
|
|
||||||
|
[ani]
|
||||||
|
exten => _X.,40000(ani),NoOp(ANI: ${EXTEN})
|
||||||
|
same => n,Wait(0.25)
|
||||||
|
same => n,Answer()
|
||||||
|
same => n,Playback(vm-from)
|
||||||
|
same => n,SayDigits(${CALLERID(ani)})
|
||||||
|
same => n,Wait(1.25)
|
||||||
|
same => n,SayDigits(${CALLERID(ani)}) ; playback again in case of missed digit
|
||||||
|
same => 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.
|
||||||
|
|
||||||
|
; Examples using PJSIPNotify application.
|
||||||
|
;[generate-notify]
|
||||||
|
;
|
||||||
|
; Send a NOTIFY with the following headers inside the SIP dialog for the current channel:
|
||||||
|
;
|
||||||
|
; Event: Test
|
||||||
|
; X-Data: Fun
|
||||||
|
;
|
||||||
|
;exten => 6880,1,noOp()
|
||||||
|
; same => n,Answer()
|
||||||
|
; same => n,PJSIPNotify(,&Event=Test&X-Data=Fun)
|
||||||
|
; same => n,Wait(1)
|
||||||
|
; same => n,Hangup()
|
||||||
|
;
|
||||||
|
; Send a NOTIFY with the following headers to bob's custom uri. This requries a
|
||||||
|
; default outbound endpoint to be configured in pjsip.conf.
|
||||||
|
;
|
||||||
|
; Event: Test
|
||||||
|
; X-Data: Over
|
||||||
|
;
|
||||||
|
;exten => 6881,1,noOp()
|
||||||
|
; same => n,Answer()
|
||||||
|
; same => n,PJSIPNotify(<sip:bob@127.0.0.1:5260>,&Event=Test&X-Data=Over)
|
||||||
|
; same => n,Wait(1)
|
||||||
|
; same => n,Hangup()
|
||||||
|
;
|
||||||
|
; Send a NOTIFY with the the custom headers defined in pjsip_notify.conf under
|
||||||
|
; 'custom-notify-1' inside the SIP dialog for the current channel.
|
||||||
|
;
|
||||||
|
;exten => 6882,1,noOp()
|
||||||
|
; same => n,Answer()
|
||||||
|
; same => n,PJSIPNotify(,custom-notify-1)
|
||||||
|
; same => n,Wait(1)
|
||||||
|
; same => n,Hangup()
|
||||||
|
; Send a NOTIFY with the following headers and body to bob's custom uri. This
|
||||||
|
; requries a default outbound endpoint to be configured in pjsip.conf.
|
||||||
|
;
|
||||||
|
; Event: Custom
|
||||||
|
;
|
||||||
|
; Content-Type: application/voicemail
|
||||||
|
; Content-Length: 14
|
||||||
|
;
|
||||||
|
; check-messages
|
||||||
|
;
|
||||||
|
;exten => 6882,1,noOp()
|
||||||
|
; same => n,Answer()
|
||||||
|
; same => n,PJSIPNotify(,&Event=Custom&Content-type=application/voicemail&Content=check-messages&Content=)
|
||||||
|
; same => n,Wait(1)
|
||||||
|
; same => n,Hangup()
|
||||||
|
|
||||||
|
|
||||||
|
;[default]
|
||||||
|
;exten => _1XX,1,Dial(PJSIP/${EXTEN},20)
|
||||||
|
;exten => _1XX,n,Hangup()
|
||||||
|
|
||||||
|
;added a second time
|
||||||
|
;[settings]
|
||||||
|
;ps_endpoints => odbc,asterisk,ps_endpoints
|
||||||
|
;ps_auths => odbc,asterisk,ps_auths
|
||||||
|
;ps_aors => odbc,asterisk,ps_aors
|
||||||
|
;extensions => odbc,asterisk,extensions
|
||||||
|
;extensions => odbc,asterisk,extensions_table
|
||||||
|
|
||||||
|
|
||||||
|
[default]
|
||||||
|
switch => Realtime/default@extensions
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
237
test1/conf/asterisk/extensions.lua
Executable file
237
test1/conf/asterisk/extensions.lua
Executable file
@ -0,0 +1,237 @@
|
|||||||
|
|
||||||
|
|
||||||
|
CONSOLE = "Console/dsp" -- Console interface for demo
|
||||||
|
--CONSOLE = "DAHDI/1"
|
||||||
|
--CONSOLE = "Phone/phone0"
|
||||||
|
|
||||||
|
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 through 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 causes 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";
|
||||||
|
};
|
||||||
|
}
|
||||||
156
test1/conf/asterisk/extensions_minivm.conf
Executable file
156
test1/conf/asterisk/extensions_minivm.conf
Executable file
@ -0,0 +1,156 @@
|
|||||||
|
; MINI-VOICEMAIL dialplan example
|
||||||
|
; ---------------------------------------------------------------------------------------
|
||||||
|
;
|
||||||
|
; This is an example on how to use the Mini-Voicemail system to build
|
||||||
|
; voicemail systems.
|
||||||
|
;
|
||||||
|
;.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
|
||||||
|
; A macro to test the MINIVMACCOUNT dialplan function
|
||||||
|
; Currently, accountcode and pincode is not used in the application
|
||||||
|
; They where added to be used in dialplan scripting
|
||||||
|
;
|
||||||
|
;
|
||||||
|
[macro-minivmfunctest]
|
||||||
|
exten => s,1,set(account=${ARGV1})
|
||||||
|
exten => minivm,n,verbose(1,-------------------- Minivm Function test - Accoutn ${account} -------------)
|
||||||
|
exten => s,n,verbose(1,---- Has account: ${MINIVMACCOUNT(${account}:hasaccount)})
|
||||||
|
exten => s,n,verbose(1,---- Fullname: ${MINIVMACCOUNT(${account}:fullname)})
|
||||||
|
exten => s,n,verbose(1,---- Email: ${MINIVMACCOUNT(${account}:email)})
|
||||||
|
exten => s,n,verbose(1,---- Pager: ${MINIVMACCOUNT(${account}:pager)})
|
||||||
|
exten => s,n,verbose(1,---- E-mail template: ${MINIVMACCOUNT(${account}:etemplate)})
|
||||||
|
exten => s,n,verbose(1,---- Pager template: ${MINIVMACCOUNT(${account}:ptemplate)})
|
||||||
|
exten => s,n,verbose(1,---- Account code: ${MINIVMACCOUNT(${account}:accountcode)})
|
||||||
|
exten => s,n,verbose(1,---- Path: ${MINIVMACCOUNT(${account}:path)})
|
||||||
|
exten => s,n,verbose(1,---- Pincode: ${MINIVMACCOUNT(${account}:pincode)})
|
||||||
|
exten => s,n,verbose(1,---- Time zone: ${MINIVMACCOUNT(${account}:timezone)})
|
||||||
|
exten => s,n,verbose(1,---- Language: ${MINIVMACCOUNT(${account}:language)})
|
||||||
|
; This requires setvar=customerclass=gold in the account configuration
|
||||||
|
exten => s,n,verbose(1,---- Var:customerclass: ${MINIVMACCOUNT(${account}:customerclass)})
|
||||||
|
|
||||||
|
[minivm-scenario1]
|
||||||
|
; minivmtest tests the dialplan function MINIVMACCOUNT
|
||||||
|
; Check the output in the console with verbose set
|
||||||
|
exten => minivmtest,1,answer
|
||||||
|
exten => minivmtest,n,wait(0.5)
|
||||||
|
exten => minivmtest,n,set(ACCOUNT=do-not-spam-me@example.com)
|
||||||
|
exten => minivmtest,n,macro(minivmfunctest, ${ACCOUNT})
|
||||||
|
exten => minivmtest,n,playback(beep)
|
||||||
|
exten => minivmtest,n,hangup
|
||||||
|
|
||||||
|
;.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
|
||||||
|
; "minivm" tests a full scenario
|
||||||
|
; Remember that users may hangup
|
||||||
|
; This works both for users with accounts in minivm.conf and by just giving an e-mail address
|
||||||
|
; without configuring an account
|
||||||
|
exten => minivm,1,answer
|
||||||
|
exten => minivm,n,wait(0.5) ; Wait for Voip channels to settle
|
||||||
|
exten => minivm,n,set(account=oej@example.com)
|
||||||
|
exten => minivm,n,noop(------------------------------------------- Minivm Greet -------------)
|
||||||
|
exten => minivm,n,minivmgreet(${account})
|
||||||
|
exten => minivm,n,verbose(1,-- MINIVM_GREET_STATUS = ${MINIVM_GREET_STATUS} )
|
||||||
|
exten => minivm,n,noop(------------------------------------------- Minivm Record -------------)
|
||||||
|
exten => minivm,n,minivmRecord(${account},b)
|
||||||
|
exten => minivm,n,goto(minivmcleanup,1)
|
||||||
|
|
||||||
|
; Cleanup after recording or hangup
|
||||||
|
exten => minivmcleanup,1,noop(------------------------------------------- Minivm Notify -------------)
|
||||||
|
;Increment voicemail counter with 1. The counter will be used in the e-mail message
|
||||||
|
;and in the filename
|
||||||
|
exten => minivmcleanup,n,gotoif($[${MINIVM_RECORD_STATUS} != SUCCESS]?minivmrecordfailure,1)
|
||||||
|
exten => minivmcleanup,n,set(MINIVMCOUNTER(${account}:voicemailcounter:inc)=1)
|
||||||
|
exten => minivmcleanup,n,set(MVM_COUNTER = ${MINIVMCOUNTER(${account}:voicemailcounter)})
|
||||||
|
exten => minivmcleanup,n,minivmNotify(${account})
|
||||||
|
exten => minivmcleanup,n,verbose(1,-- MINIVM_NOTIFY_STATUS = ${MINIVM_NOTIFY_STATUS} )
|
||||||
|
; Now, clean up after sending voicemail
|
||||||
|
exten => minivmcleanup,n,noop(------------------------------------------- Minivm Delete -------------)
|
||||||
|
exten => minivmcleanup,n,minivmdelete()
|
||||||
|
exten => minivmcleanup,n,verbose(1,-- MINIVM_DELETE_STATUS = ${MINIVM_DELETE_STATUS} )
|
||||||
|
|
||||||
|
;Recording failed
|
||||||
|
exten => minivmrecordfailure,1,playback(vm-sorry)
|
||||||
|
exten => minivmrecordfailure,n,wait(1)
|
||||||
|
exten => minivmrecordfailure,n,hangup
|
||||||
|
|
||||||
|
; If the user hangs up during the recording, we need to clean up
|
||||||
|
; And send notifications
|
||||||
|
exten => h,1,gotoif($[x${MINIVM_DELETE_STATUS} != x] ?h,stop)
|
||||||
|
exten => h,n,noop(------------------------------------------- HANGUP during voicemail recording -------------)
|
||||||
|
exten => h,n,goto(minivmcleanup,1)
|
||||||
|
exten => h,n(stop),noop(---Minivm DONE----)
|
||||||
|
|
||||||
|
;.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
|
||||||
|
; Extension to record a greeting message
|
||||||
|
; Call this like:
|
||||||
|
; macro(recordgreetings,alice@atlanta.example.com)
|
||||||
|
;
|
||||||
|
[macro-recordgreetings]
|
||||||
|
exten => s,1,answer
|
||||||
|
exten => s,n,wait(0.5)
|
||||||
|
exten => s,n,set(account=${ARGV1])
|
||||||
|
; This file give extra options not available here, needs to be edited
|
||||||
|
; Change of password does not work
|
||||||
|
exten => s,n(menu),background(vm-options)
|
||||||
|
exten => 1,1,setvar(option=u)
|
||||||
|
exten => 1,n,macro(minivmrec,${account},${option})
|
||||||
|
exten => 1,n,goto(menu)
|
||||||
|
exten => 2,1,setvar(option=b)
|
||||||
|
exten => 2,n,macro(minivmrec,${account},${option})
|
||||||
|
exten => 2,n,goto(menu)
|
||||||
|
exten => 3,1,setvar(option=n)
|
||||||
|
exten => 3,n,macro(minivmrec,${account},${option})
|
||||||
|
exten => 3,n,goto(menu)
|
||||||
|
exten => 4,1,setvar(option=t)
|
||||||
|
exten => 4,n,macro(minivmrec,${account},${option})
|
||||||
|
exten => 4,n,goto(menu)
|
||||||
|
exten => *,1,playback(vm-thankyou)
|
||||||
|
exten => *,n,wait(1)
|
||||||
|
exten => *,n,hangup
|
||||||
|
|
||||||
|
exten => i,1,playback(invalid)
|
||||||
|
exten => i,n,goto(menu)
|
||||||
|
|
||||||
|
[macro-minivmrec]
|
||||||
|
exten => s,1,gotoif(${MINIVMACCOUNT(${account}:hasaccount)}?record)
|
||||||
|
; Account is not configured in minivm.conf or realtime
|
||||||
|
; Phony message, add something useful here
|
||||||
|
exten => s,n,playback(privacy-incorrect)
|
||||||
|
exten => s,n,macroreturn
|
||||||
|
exten => record,1,minivmappmess(${ARGV1},${ARGV2})
|
||||||
|
exten => record,n,noop(Recording status: ${MINIVM_APPMESS_STATUS})
|
||||||
|
exten => record,n,macroreturn
|
||||||
|
|
||||||
|
;.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
|
||||||
|
; To set a counter and use a template for voicemail to users without accounts
|
||||||
|
; 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))
|
||||||
127
test1/conf/asterisk/features.conf
Executable file
127
test1/conf/asterisk/features.conf
Executable file
@ -0,0 +1,127 @@
|
|||||||
|
;
|
||||||
|
; Sample Call Features (transfer, monitor/mixmonitor, etc) configuration
|
||||||
|
;
|
||||||
|
|
||||||
|
; Note: From Asterisk 12 - All parking lot configuration is now done in res_parking.conf
|
||||||
|
|
||||||
|
[general]
|
||||||
|
;transferdigittimeout => 3 ; Number of seconds to wait between digits when transferring a call
|
||||||
|
; (default is 3 seconds). If the TRANSFER_EXTEN dialplan variable has been set
|
||||||
|
; on the channel of the user that is invoking the transfer feature, then
|
||||||
|
; this option is not used as the user is transferred directly to the extension
|
||||||
|
; specified by TRANSFER_EXTEN (the transfer context remains the context specified
|
||||||
|
; by TRANSFER_CONTEXT, if set, and otherwise the default context).
|
||||||
|
;xfersound = beep ; to indicate an attended transfer is complete
|
||||||
|
;xferfailsound = beeperr ; to indicate a failed transfer
|
||||||
|
;pickupexten = *8 ; Configure the pickup extension. (default is *8)
|
||||||
|
;pickupsound = beep ; to indicate a successful pickup (default: no sound)
|
||||||
|
;pickupfailsound = beeperr ; to indicate that the pickup failed (default: no sound)
|
||||||
|
;featuredigittimeout = 1000 ; Max time (ms) between digits for
|
||||||
|
; feature activation (default is 1000 ms)
|
||||||
|
;recordingfailsound = beeperr ; indicates that a one-touch monitor or one-touch mixmonitor feature failed
|
||||||
|
; to be applied to the call. (default: no sound)
|
||||||
|
;atxfernoanswertimeout = 15 ; Timeout for answer on attended transfer default is 15 seconds.
|
||||||
|
;atxferdropcall = no ; If someone does an attended transfer, then hangs up before the transfer
|
||||||
|
; target answers, then by default, the system will try to call back the
|
||||||
|
; person that did the transfer. If this is set to "yes", the ringing
|
||||||
|
; transfer target is immediately transferred to the transferee.
|
||||||
|
;atxferloopdelay = 10 ; Number of seconds to sleep between retries (if atxferdropcall = no)
|
||||||
|
;atxfercallbackretries = 2 ; Number of times to attempt to send the call back to the transferer.
|
||||||
|
; By default, this is 2.
|
||||||
|
;transferdialattempts = 3 ; Number of times that a transferer may attempt to dial an extension before
|
||||||
|
; being kicked back to the original call.
|
||||||
|
;transferannouncesound = beep ; Sound to play to a transferer to indicate transfer process has begun. If empty, no sound will be played.
|
||||||
|
;transferretrysound = beep ; Sound to play when a transferer fails to dial a valid extension.
|
||||||
|
;transferinvalidsound = beeperr ; Sound to play when a transferer fails to dial a valid extension and is out of retries.
|
||||||
|
;atxferabort = *1 ; cancel the attended transfer
|
||||||
|
;atxfercomplete = *2 ; complete the attended transfer, dropping out of the call
|
||||||
|
;atxferthreeway = *3 ; complete the attended transfer, but stay in the call. This will turn the call into a multi-party bridge
|
||||||
|
;atxferswap = *4 ; swap to the other party. Once an attended transfer has begun, this option may be used multiple times
|
||||||
|
|
||||||
|
; Note that the DTMF features listed below only work when two channels have answered and are bridged together.
|
||||||
|
; They can not be used while the remote party is ringing or in progress. If you require this feature you can use
|
||||||
|
; chan_local in combination with Answer to accomplish it.
|
||||||
|
|
||||||
|
[featuremap]
|
||||||
|
;blindxfer => #1 ; Blind transfer (default is #) -- Make sure to set the T and/or t option in the Dial() or Queue() app call!
|
||||||
|
;disconnect => *0 ; Disconnect (default is *) -- Make sure to set the H and/or h option in the Dial() or Queue() app call!
|
||||||
|
;automon => *1 ; One Touch Record a.k.a. Touch Monitor -- Make sure to set the W and/or w option in the Dial() or Queue() app call!
|
||||||
|
;atxfer => *2 ; Attended transfer -- Make sure to set the T and/or t option in the Dial() or Queue() app call!
|
||||||
|
;parkcall => #72 ; Park call (one step parking) -- Make sure to set the K and/or k option in the Dial() app call!
|
||||||
|
;automixmon => *3 ; One Touch Record a.k.a. Touch MixMonitor -- Make sure to set the X and/or x option in the Dial() or Queue() app call!
|
||||||
|
|
||||||
|
[applicationmap]
|
||||||
|
; Note that the DYNAMIC_FEATURES channel variable must be set to use the features
|
||||||
|
; defined here. The value of DYNAMIC_FEATURES should be the names of the features
|
||||||
|
; to allow the channel to use separated by '#'. For example:
|
||||||
|
;
|
||||||
|
; Set(__DYNAMIC_FEATURES=myfeature1#myfeature2#myfeature3)
|
||||||
|
;
|
||||||
|
; (Note: The two leading underscores allow these feature settings to be set
|
||||||
|
; on the outbound channels, as well. Otherwise, only the original channel
|
||||||
|
; will have access to these features.)
|
||||||
|
;
|
||||||
|
; The syntax for declaring a dynamic feature is any of the following:
|
||||||
|
;
|
||||||
|
;<FeatureName> => <DTMF_sequence>,<ActivateOn>[/<ActivatedBy>],<Application>[,<AppArguments>[,MOH_Class]]
|
||||||
|
;<FeatureName> => <DTMF_sequence>,<ActivateOn>[/<ActivatedBy>],<Application>[,"<AppArguments>"[,MOH_Class]]
|
||||||
|
;<FeatureName> => <DTMF_sequence>,<ActivateOn>[/<ActivatedBy>],<Application>([<AppArguments>])[,MOH_Class]
|
||||||
|
|
||||||
|
;
|
||||||
|
; FeatureName -> This is the name of the feature used when setting the
|
||||||
|
; DYNAMIC_FEATURES variable to enable usage of this feature.
|
||||||
|
; DTMF_sequence -> This is the key sequence used to activate this feature.
|
||||||
|
; ActivateOn -> This is the channel of the call that the application will be executed
|
||||||
|
; on. Valid values are "self" and "peer". "self" means run the
|
||||||
|
; application on the same channel that activated the feature. "peer"
|
||||||
|
; means run the application on the opposite channel from the one that
|
||||||
|
; has activated the feature.
|
||||||
|
; ActivatedBy -> ActivatedBy is no longer honored. The feature is activated by which
|
||||||
|
; channel DYNAMIC_FEATURES includes the feature is on. Use a pre-dial
|
||||||
|
; handler to set different values for DYNAMIC_FEATURES on the channels.
|
||||||
|
; Historic values are: "caller", "callee", and "both".
|
||||||
|
; Application -> This is the application to execute.
|
||||||
|
; AppArguments -> These are the arguments to be passed into the application. If you need
|
||||||
|
; commas in your arguments, you should use either the second or third
|
||||||
|
; syntax, above.
|
||||||
|
; MOH_Class -> This is the music on hold class to play while the idle
|
||||||
|
; channel waits for the feature to complete. If left blank,
|
||||||
|
; no music will be played.
|
||||||
|
;
|
||||||
|
|
||||||
|
;
|
||||||
|
; IMPORTANT NOTE: The applicationmap is not intended to be used for all Asterisk
|
||||||
|
; applications. When applications are used in extensions.conf, they are executed
|
||||||
|
; by the PBX core. In this case, these applications are executed outside of the
|
||||||
|
; PBX core, so it does *not* make sense to use any application which has any
|
||||||
|
; concept of dialplan flow. Examples of this would be things like Goto,
|
||||||
|
; Background, WaitExten, and many more. The exceptions to this are Gosub and
|
||||||
|
; Macro routines which must complete for the call to continue.
|
||||||
|
;
|
||||||
|
; Enabling these features means that the PBX needs to stay in the media flow and
|
||||||
|
; media will not be re-directed if DTMF is sent in the media stream.
|
||||||
|
;
|
||||||
|
; Example Usage:
|
||||||
|
;
|
||||||
|
;testfeature => #9,peer,Playback,tt-monkeys ;Allow both the caller and callee to play
|
||||||
|
; ;tt-monkeys to the opposite channel
|
||||||
|
;
|
||||||
|
; Set arbitrary channel variables, based upon CALLERID number (Note that the application
|
||||||
|
; argument contains commas)
|
||||||
|
;retrieveinfo => #8,peer,Set(ARRAY(CDR(mark),CDR(name))=${ODBC_FOO(${CALLERID(num)})})
|
||||||
|
;
|
||||||
|
;pauseMonitor => #1,self/callee,Pausemonitor ;Allow the callee to pause monitoring
|
||||||
|
; ;on their channel
|
||||||
|
;unpauseMonitor => #3,self/callee,UnPauseMonitor ;Allow the callee to unpause monitoring
|
||||||
|
; ;on their channel
|
||||||
|
|
||||||
|
; Dynamic Feature Groups:
|
||||||
|
; Dynamic feature groups are groupings of features defined in [applicationmap]
|
||||||
|
; that can have their own custom key mappings. To give a channel access to a dynamic
|
||||||
|
; feature group, add the group name to the value of the DYNAMIC_FEATURES variable.
|
||||||
|
;
|
||||||
|
; example:
|
||||||
|
; [myGroupName] ; defines the group named myGroupName
|
||||||
|
; testfeature => #9 ; associates testfeature with the group and the keycode '#9'.
|
||||||
|
; pauseMonitor => ; associates pauseMonitor with the group and uses the keycode specified
|
||||||
|
; ; in the [applicationmap].
|
||||||
34
test1/conf/asterisk/festival.conf
Executable file
34
test1/conf/asterisk/festival.conf
Executable file
@ -0,0 +1,34 @@
|
|||||||
|
;
|
||||||
|
; Festival Configuration
|
||||||
|
;
|
||||||
|
[general]
|
||||||
|
;
|
||||||
|
; Host which runs the festival server (default : localhost);
|
||||||
|
;
|
||||||
|
;host=localhost
|
||||||
|
;
|
||||||
|
; Port on host where the festival server runs (default : 1314)
|
||||||
|
;
|
||||||
|
;port=1314
|
||||||
|
;
|
||||||
|
; Use cache (yes, no - defaults to no)
|
||||||
|
;
|
||||||
|
;usecache=yes
|
||||||
|
;
|
||||||
|
; If usecache=yes, a directory to store waveform cache files.
|
||||||
|
; The cache is never cleared (yet), so you must take care of cleaning it
|
||||||
|
; yourself (just delete any or all files from the cache).
|
||||||
|
; THIS DIRECTORY *MUST* EXIST and must be writable from the asterisk process.
|
||||||
|
; Defaults to /tmp/
|
||||||
|
;
|
||||||
|
;cachedir=/var/lib/asterisk/festivalcache/
|
||||||
|
;
|
||||||
|
; Festival command to send to the server.
|
||||||
|
; Defaults to: (tts_textasterisk "%s" 'file)(quit)\n
|
||||||
|
; %s is replaced by the desired text to say. The command MUST end with a
|
||||||
|
; (quit) directive, or the cache handling mechanism will hang. Do not
|
||||||
|
; forget the \n at the end.
|
||||||
|
;
|
||||||
|
;festivalcommand=(tts_textasterisk "%s" 'file)(quit)\n
|
||||||
|
;
|
||||||
|
;
|
||||||
107
test1/conf/asterisk/followme.conf
Executable file
107
test1/conf/asterisk/followme.conf
Executable file
@ -0,0 +1,107 @@
|
|||||||
|
; Find-Me / Follow-Me Configuration File
|
||||||
|
[general]
|
||||||
|
;
|
||||||
|
featuredigittimeout=>5000
|
||||||
|
; The number of ms to wait for a digit input for the callee on whether to take the call or
|
||||||
|
; not before we consider them "done" entering digits.
|
||||||
|
;
|
||||||
|
enable_callee_prompt=>true
|
||||||
|
; Enable prompting a callee to either accept or reject the forwarded call.
|
||||||
|
; If disabled, the optional prompting for caller name (option 'a') is
|
||||||
|
; likewise disabled. Enabled by default.
|
||||||
|
;
|
||||||
|
takecall=>1
|
||||||
|
; The global default keypress for the callee to take taking the current call. This can be
|
||||||
|
; a single digit or multiple digits. Default is "1".
|
||||||
|
; Note this string must not be a substring of declinecall.
|
||||||
|
;
|
||||||
|
declinecall=>2
|
||||||
|
; The global default keypress for the callee to decline taking the current call. This can
|
||||||
|
; be a single digit or multiple digits. Default is "2".
|
||||||
|
; Note this string must not be a substring of takecall.
|
||||||
|
;
|
||||||
|
call_from_prompt=>followme/call-from
|
||||||
|
; The global default for the 'Incoming call from' message.
|
||||||
|
;
|
||||||
|
norecording_prompt=>followme/no-recording
|
||||||
|
; The global default for the 'You have an incoming call' message when the caller elects
|
||||||
|
; not to leave their name or the option isn't set for them to do so.
|
||||||
|
;
|
||||||
|
options_prompt=>followme/options
|
||||||
|
; The global default for the 'Press 1 to accept this call or press 2 to decline it' message.
|
||||||
|
;
|
||||||
|
pls_hold_prompt=>followme/pls-hold-while-try
|
||||||
|
; The global default for 'Please hold while we try and connect your call' message.
|
||||||
|
;
|
||||||
|
status_prompt=>followme/status
|
||||||
|
; The global default for 'The party you're calling isn't at their desk' message.
|
||||||
|
;
|
||||||
|
sorry_prompt=>followme/sorry
|
||||||
|
; The global default for 'I'm sorry, but we were unable to locate your party' message.
|
||||||
|
;
|
||||||
|
connecting_prompt=>
|
||||||
|
; The global default sound file name for 'Please say hello to the caller' message.
|
||||||
|
; Setting to an empty string skips playing the prompt. The default is no prompt
|
||||||
|
; file name.
|
||||||
|
|
||||||
|
[default]
|
||||||
|
musicclass=>default
|
||||||
|
; The moh class that should be used for the caller while they are waiting to be connected.
|
||||||
|
context=>default
|
||||||
|
; The context to dial the numbers from
|
||||||
|
number=>01233456,25
|
||||||
|
; The a follow-me number to call. The format is:
|
||||||
|
; number=> <number to call[&2nd #[&...]]>[,<timeout value in seconds>[,<order in follow-me>]]
|
||||||
|
; You can specify as many of these numbers as you like. They will be dialed in the
|
||||||
|
; order that you specify them in the config file OR as specified with the order field
|
||||||
|
; on the number prompt. As you can see from the example, forked dialing of multiple
|
||||||
|
; numbers in the same step is supported with this application if you'd like to dial
|
||||||
|
; multiple numbers in the same followme step.
|
||||||
|
;
|
||||||
|
; The timeout value is the amount of time allowed between the time the dialing step
|
||||||
|
; starts and the callee answers. The callee then has until the timeout of the last
|
||||||
|
; step to make a choice on whether to take the call or not. That being the case,
|
||||||
|
; you may want to make the timeout on the last step longer to give enough time to
|
||||||
|
; make the choice to accept or not.
|
||||||
|
enable_callee_prompt=>true
|
||||||
|
; Enable prompting the callee to accept the forwarded call. The default
|
||||||
|
; is the global value.
|
||||||
|
takecall=>1
|
||||||
|
; The keypress for the callee to take taking the current call. This can be
|
||||||
|
; a single digit or multiple digits. Default is the global default.
|
||||||
|
; Note this string must not be a substring of declinecall.
|
||||||
|
;
|
||||||
|
declinecall=>2
|
||||||
|
; The keypress for the callee to decline taking the current call. This can
|
||||||
|
; be a single digit or multiple digits. Default is the global default.
|
||||||
|
; Note this string must not be a substring of takecall.
|
||||||
|
;
|
||||||
|
call_from_prompt=>followme/call-from
|
||||||
|
; The 'Incoming call from' message prompt. Default is the global default.
|
||||||
|
;
|
||||||
|
norecording_prompt=>followme/no-recording
|
||||||
|
; The 'You have an incoming call' message prompt when the caller elects
|
||||||
|
; not to leave their name or the option isn't set for them to do so. Default
|
||||||
|
; is the global default.
|
||||||
|
;
|
||||||
|
options_prompt=>followme/options
|
||||||
|
; The 'Press 1 to accept this call or press 2 to decline it' message prompt.
|
||||||
|
; Default is the global default.
|
||||||
|
;
|
||||||
|
pls_hold_prompt=>followme/pls-hold-while-try
|
||||||
|
; The 'Please hold while we try and connect your call' message prompt.
|
||||||
|
; Default is the global default.
|
||||||
|
;
|
||||||
|
status_prompt=>followme/status
|
||||||
|
; The 'The party you're calling isn't at their desk' message prompt.
|
||||||
|
; Default is the global default.
|
||||||
|
;
|
||||||
|
sorry_prompt=>followme/sorry
|
||||||
|
; The 'I'm sorry, but we were unable to locate your party' message prompt. Default
|
||||||
|
; is the global default.
|
||||||
|
;
|
||||||
|
connecting_prompt=>
|
||||||
|
; The sound file name for 'Please say hello to the caller' message. Default is the
|
||||||
|
; global default.
|
||||||
|
;
|
||||||
|
|
||||||
127
test1/conf/asterisk/func_odbc.conf
Executable file
127
test1/conf/asterisk/func_odbc.conf
Executable file
@ -0,0 +1,127 @@
|
|||||||
|
;
|
||||||
|
; func_odbc.conf
|
||||||
|
;
|
||||||
|
[general]
|
||||||
|
;
|
||||||
|
; Asterisk uses separate connections for every database operation.
|
||||||
|
; If single_db_connection is enabled then func_odbc will use a single
|
||||||
|
; database connection per DSN.
|
||||||
|
; This option exists for those who expect that a second func_odbc call
|
||||||
|
; works on the same connection. That allows you to do a LAST_INSERT_ID()
|
||||||
|
; in a second func_odbc call.
|
||||||
|
; Note that you'll need additional dialplan locks for this behaviour to work.
|
||||||
|
; There are better ways: using stored procedures/functions instead.
|
||||||
|
; This option is disabled by default.
|
||||||
|
;single_db_connection=no
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; 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.
|
||||||
|
;
|
||||||
|
; Additionally you can use ${ARGC} to determine the number of arguments that
|
||||||
|
; was actually passed (or risk using leaked ARGn variables from the channel).
|
||||||
|
; Also reference the minargs configuration option.
|
||||||
|
;
|
||||||
|
; 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.
|
||||||
|
;
|
||||||
|
; If you have data which may potentially contain backslashes, you may wish to
|
||||||
|
; use the dialplan function SQL_ESC_BACKSLASHES() to escape the backslashes.
|
||||||
|
; Note that not all databases may require escaping of the backslashes.
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; The following options are available in this configuration file:
|
||||||
|
;
|
||||||
|
; dsn An alias for "writehandle."
|
||||||
|
; 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.
|
||||||
|
; 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>'
|
||||||
|
; syntax Appears in the syntax 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().
|
||||||
|
; minargs The minimum number of ARGUMENTS that has to be passed to the
|
||||||
|
; function. If fewer arguments than this is passed, then the call
|
||||||
|
; will fail. It is important to note that unlike Gosub() and friends,
|
||||||
|
; func_odbc will not mask out ARGn variables that it's not actively
|
||||||
|
; using, as such, without this, it's entirely possible to use say
|
||||||
|
; ARG2 from the Gosub() inside func_odbc when the intent was to
|
||||||
|
; use an argument passed to func_odbc, but it simply was never passed.
|
||||||
|
|
||||||
|
|
||||||
|
; ODBC_SQL - Allow an SQL statement to be built entirely in the dialplan
|
||||||
|
[SQL]
|
||||||
|
writehandle=mysql1
|
||||||
|
readsql=${ARG1}
|
||||||
|
|
||||||
|
; ODBC_ANTISOLICIT - A blacklist for known solicitors.
|
||||||
|
[ANTISOLICIT]
|
||||||
|
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 known_solicitors WHERE callerid='${SQL_ESC(${ARG1})}'
|
||||||
|
syntax=<callerid>
|
||||||
|
synopsis=Check if a specified callerid is contained in the known solicitors database
|
||||||
|
|
||||||
|
; ODBC_PRESENCE - Retrieve and update presence
|
||||||
|
[PRESENCE]
|
||||||
|
writehandle=mysql1
|
||||||
|
readsql=SELECT location FROM presence WHERE id='${SQL_ESC(${ARG1})}'
|
||||||
|
writesql=UPDATE presence SET location='${SQL_ESC(${VAL1})}' WHERE id='${SQL_ESC(${ARG1})}'
|
||||||
318
test1/conf/asterisk/geolocation.conf
Executable file
318
test1/conf/asterisk/geolocation.conf
Executable file
@ -0,0 +1,318 @@
|
|||||||
|
;--
|
||||||
|
Geolocation Profile Sample Configuration
|
||||||
|
|
||||||
|
Please see https://docs.asterisk.org/Deployment/Geolocation/
|
||||||
|
for the most current information.
|
||||||
|
--;
|
||||||
|
|
||||||
|
;--
|
||||||
|
=======================================================================
|
||||||
|
Overview
|
||||||
|
=======================================================================
|
||||||
|
|
||||||
|
Geolocation information is actually comprised of two objects, a
|
||||||
|
Location object, and a Profile object.
|
||||||
|
|
||||||
|
Location objects must contain one of the following:
|
||||||
|
|
||||||
|
- Location information specified in Geographic Markup Language
|
||||||
|
(GML) or civicAddress formats.
|
||||||
|
|
||||||
|
- A URI that points to externally hosted location information.
|
||||||
|
|
||||||
|
Profile objects contain instructions for the disposition of location
|
||||||
|
information, an optional reference to a Location object, and updates or
|
||||||
|
overrides to that Location object if specified.
|
||||||
|
|
||||||
|
Channel drivers and the dialplan functions are responsible for
|
||||||
|
associating Profiles to endpoints/devices and calls. Normally, two
|
||||||
|
profiles would be assigned to an endpoint to control behavior in each
|
||||||
|
direction and to optionally specify location information. One for
|
||||||
|
incoming calls (Asterisk is the UAS) and and one for outgoing calls
|
||||||
|
(Asterisk is the UAC).
|
||||||
|
|
||||||
|
NOTE:
|
||||||
|
|
||||||
|
See https://docs.asterisk.org/Deployment/Geolocation/ for the most
|
||||||
|
complete and up-to-date information on valid values for the object
|
||||||
|
parameters and a full list of references.
|
||||||
|
|
||||||
|
GENERAL CAUTION: You must coordinate with your partners with regards
|
||||||
|
to what location information is expected by each party and how it should
|
||||||
|
be formatted. An outgoing configuration mismatch for instance, could
|
||||||
|
result in misinformation or no information being sent to an emergency
|
||||||
|
response center or even call failure for which you are solely responsible.
|
||||||
|
--;
|
||||||
|
|
||||||
|
|
||||||
|
;--
|
||||||
|
=======================================================================
|
||||||
|
Location Object Description
|
||||||
|
=======================================================================
|
||||||
|
[<location_id>]
|
||||||
|
|
||||||
|
-- type (required) ----------------------------------------------------
|
||||||
|
Defines the object type.
|
||||||
|
type = location
|
||||||
|
|
||||||
|
Must be "location" to identify this configuration section as a
|
||||||
|
Geolocation Location object.
|
||||||
|
|
||||||
|
-- format (required) --------------------------------------------------
|
||||||
|
Sets the format used to express the location.
|
||||||
|
format = < civicAddress | GML | URI >
|
||||||
|
|
||||||
|
Values:
|
||||||
|
civicAddress: [RFC4119] [RFC5139] [RFC5491]
|
||||||
|
The location information will be placed in an XML document
|
||||||
|
conforming to the PIDF-LO standard.
|
||||||
|
For chan_pjsip, this will be placed in the body of
|
||||||
|
outgoing INVITE messages in addition to any SDP.
|
||||||
|
|
||||||
|
GML: [RFC4119] [RFC5491] [GeoShape]
|
||||||
|
The location information will be placed in an XML document
|
||||||
|
conforming to the PIDF-LO standard.
|
||||||
|
For chan_pjsip, this will be placed in the body of
|
||||||
|
outgoing INVITE messages in addition to any SDP.
|
||||||
|
|
||||||
|
URI: [RFC6442]
|
||||||
|
The external URI at which the the location information
|
||||||
|
can be found. For chan_pjsip, this URI will be placed
|
||||||
|
in a "Geolocation" header in outgoing INVITE messages.
|
||||||
|
|
||||||
|
There is no default.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
format = civicAddress
|
||||||
|
|
||||||
|
-- location_info (required) -------------------------------------------
|
||||||
|
The location-format-specific information describing the location.
|
||||||
|
location_info = <location_format_specific_description>
|
||||||
|
|
||||||
|
For readability, multiple "location" parameters can be specified and
|
||||||
|
they will be concatenated into one specification. The description may
|
||||||
|
contain replacement variables which may be the names of common channel
|
||||||
|
variables like ${EXTEN}, channel variables you may have added in the
|
||||||
|
dialplan, or variables you may have specified in the profile that
|
||||||
|
references this location object.
|
||||||
|
|
||||||
|
NOTE: See https://docs.asterisk.org/Deployment/Geolocation/ for the
|
||||||
|
most complete and up-to-date information on valid values for the object
|
||||||
|
parameters and a full list of references.
|
||||||
|
|
||||||
|
WARNING: Asterisk can only validate that a particular sub-parameter
|
||||||
|
name is valid for a particular format. It can't validate the actual
|
||||||
|
value of the sub-parameter.
|
||||||
|
|
||||||
|
Example for civicAddress:
|
||||||
|
|
||||||
|
location_info = country=US
|
||||||
|
location_info = A1="New York", A3="New York", A4=Manhattan,
|
||||||
|
location_info = HNO=1633, PRD=W, RD=46th, STS=Street
|
||||||
|
location_info = PC=10222
|
||||||
|
|
||||||
|
Example for GML with replacement variables:
|
||||||
|
|
||||||
|
location_info = type=Point, crs=2d, pos="${mylat} ${mylon}"
|
||||||
|
|
||||||
|
Example for URI with replacement variables:
|
||||||
|
location_info = URI=https://some.company.com?number=${phone_number}
|
||||||
|
|
||||||
|
-- method (optional) --------------------------------------------------
|
||||||
|
The method used to determine the location_info
|
||||||
|
method = <"GPS" | "A-GPS" | "Manual" | "DHCP"
|
||||||
|
| "Triangulation" | "Cell" | "802.11">
|
||||||
|
|
||||||
|
Example:
|
||||||
|
method = Manual
|
||||||
|
|
||||||
|
-- location_source (optional) -----------------------------------------
|
||||||
|
Original source of the location-info.
|
||||||
|
location_source = < FQDN >
|
||||||
|
|
||||||
|
The value MUST be a FQDN. IP addresses are specifically not
|
||||||
|
allowed. See RFC8787.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
location_source = sip1.myserver.net
|
||||||
|
|
||||||
|
-- confidence (optional) -----------------------------------------
|
||||||
|
The confidence in the location specified.
|
||||||
|
confidence = pdf=[ unknown | normal | rectangular ], value=<percent_confident>
|
||||||
|
|
||||||
|
Please see RFC7459 for the exact description of this parameter.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
confidence = pdf=normal, value=75
|
||||||
|
|
||||||
|
|
||||||
|
-- Location Example ---------------------------------------------------
|
||||||
|
|
||||||
|
[mylocation]
|
||||||
|
type = location
|
||||||
|
format = civicAddress
|
||||||
|
location_info = country=US
|
||||||
|
location_info = A1="New York", A3="New York", A4=Manhattan
|
||||||
|
location_info = HNO=1633, PRD=W, RD=46th, STS=Street
|
||||||
|
location_info = PC=10222
|
||||||
|
method = Manual
|
||||||
|
location_source = sip1.myserver.net
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
--;
|
||||||
|
|
||||||
|
|
||||||
|
;--
|
||||||
|
=======================================================================
|
||||||
|
Profile Object Descriptions
|
||||||
|
=======================================================================
|
||||||
|
[<profile_id>]
|
||||||
|
|
||||||
|
-- type (required) ----------------------------------------------------
|
||||||
|
Defines the object type.
|
||||||
|
type = profile
|
||||||
|
|
||||||
|
-- profile_precedence (optional) --------------------------------------
|
||||||
|
Sets how to reconcile incoming and configured profiles.
|
||||||
|
|
||||||
|
profile_precedence = < prefer_incoming | prefer_config | discard_incoming
|
||||||
|
| discard_config >
|
||||||
|
|
||||||
|
On an incoming call leg, "incoming" is the location description
|
||||||
|
received in the SIP INVITE (if any) and "config" is this profile.
|
||||||
|
|
||||||
|
On an outgoing call leg, "incoming" is the location description
|
||||||
|
passed through the dialplan to this channel (if any) and "config"
|
||||||
|
is this profile.
|
||||||
|
|
||||||
|
Values:
|
||||||
|
|
||||||
|
prefer_incoming: If there's an incoming location description, use it
|
||||||
|
even if there's also a configured one.
|
||||||
|
prefer_config: If there's a configured location description, use it
|
||||||
|
even if there's also an incoming one.
|
||||||
|
discard_incoming: Discard any incoming location description. If there's
|
||||||
|
a configured one, use it. If not, no location
|
||||||
|
information is propagated.
|
||||||
|
discard_config: Discard any configured location description. If
|
||||||
|
there's an incoming one, use it. If not, no location
|
||||||
|
information is propagated.
|
||||||
|
|
||||||
|
discard_incoming is the default.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
profile_precedence = prefer_config
|
||||||
|
|
||||||
|
-- pidf_element (optional) --------------------------------------------
|
||||||
|
PIDF-LO element in which to place the location description.
|
||||||
|
|
||||||
|
pidf_element = < tuple | device | person >
|
||||||
|
Default: device
|
||||||
|
|
||||||
|
If the format is civicAddress or GML, this sets the PIDF element into
|
||||||
|
which the location information will be placed.
|
||||||
|
|
||||||
|
Values:
|
||||||
|
tuple: Places the information in a "tuple" element.
|
||||||
|
device: Places the information in a "device" element.
|
||||||
|
person: Places the information in a "person" element.
|
||||||
|
|
||||||
|
Per [RFC5491], "device" is preferred and therefore the default.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
pidf_element = tuple
|
||||||
|
|
||||||
|
-- allow_routing_use (optional) ---------------------------------------
|
||||||
|
Sets whether the "Geolocation-Routing" header is added to outgoing
|
||||||
|
requests.
|
||||||
|
|
||||||
|
allow_routing_use = < yes | no >
|
||||||
|
Default: no
|
||||||
|
|
||||||
|
Set to "yes" to indicate that servers later in the path
|
||||||
|
can use the location information for routing purposes. Set to "no"
|
||||||
|
if they should not. If this value isn't specified, no
|
||||||
|
"Geolocation-Routing" header will be added.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
allow_routing_use = yes
|
||||||
|
|
||||||
|
-- location_reference (optional) --------------------------------------
|
||||||
|
The name of an existing Location object.
|
||||||
|
location_reference = <location_id>
|
||||||
|
|
||||||
|
The location_info_refinement and location_variables parameters below can
|
||||||
|
be used to refine the location object for this specific profile.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
location_reference = "my_building"
|
||||||
|
|
||||||
|
-- location_info_refinement (optional) --------------------------------
|
||||||
|
Location info to add to that already retrieved from the location object.
|
||||||
|
|
||||||
|
location_info_refinement = <location_format_specific_description>
|
||||||
|
|
||||||
|
The information in the referenced Location object can be refined on a
|
||||||
|
per-profile basis. For example, if the referenced Location object has a
|
||||||
|
civicAddress for a building, you could set location_refinement to add a
|
||||||
|
floor and room just for this profile
|
||||||
|
|
||||||
|
Example:
|
||||||
|
location_info_refinement = floor=20, room=20a2
|
||||||
|
|
||||||
|
-- location_variables (optional) --------------------------------------
|
||||||
|
|
||||||
|
If the referenced Location object uses any replacement variables, they
|
||||||
|
can be assigned here. There is no need to define variables that come
|
||||||
|
from the channel using this profile. They get assigned automatically.
|
||||||
|
|
||||||
|
location_variables = myfloor=20, myroom=222
|
||||||
|
|
||||||
|
-- suppress_empty_ca_elements (optional) ------------------------------
|
||||||
|
Sets whether empty values for Civic Address elements should be
|
||||||
|
suppressed from the outgoing PIDF-LO document.
|
||||||
|
|
||||||
|
suppress_empty_ca_elements = < yes | no >
|
||||||
|
Default: no
|
||||||
|
|
||||||
|
Setting to "yes" allows you to define a location info template
|
||||||
|
with channel variables that may or may not exist.
|
||||||
|
|
||||||
|
For example, with:
|
||||||
|
location_info_refinement = FLR=${MyFlr}
|
||||||
|
suppress_empty_ca_elements = no ; the default
|
||||||
|
|
||||||
|
If the MyFlr channel variable weren't set, the outgoing PIDF-LO document
|
||||||
|
would have an empty <FLR/> element in it. If suppress_empty_ca_elements
|
||||||
|
were set to "yes", the FLR element would be dropped from the PIDF-LO
|
||||||
|
document altogether.
|
||||||
|
|
||||||
|
-- format, location_info, location_source, method, confidence ---------
|
||||||
|
You can specify the location object's format, location_info,
|
||||||
|
method, location_source and confidence parameters directly on
|
||||||
|
a profile object for simple scenarios where the location
|
||||||
|
information isn't common with any other profiles. This is
|
||||||
|
mutually exclusive with setting location_reference on the
|
||||||
|
profile.
|
||||||
|
|
||||||
|
-- Profile Example ----------------------------------------------------
|
||||||
|
|
||||||
|
[myprofile]
|
||||||
|
type = profile
|
||||||
|
location_reference = mylocation
|
||||||
|
location_info_refinement = floor=20, room=20a2
|
||||||
|
pidf_element = tuple
|
||||||
|
profile_action = discard_incoming
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
|
||||||
|
-- NOTE ---------------------------------------------------------------
|
||||||
|
There are 4 built-in profiles that can be assigned to endpoints:
|
||||||
|
"<prefer_config>"
|
||||||
|
"<discard_config>"
|
||||||
|
"<prefer_incoming>"
|
||||||
|
"<discard_incoming>"
|
||||||
|
The profiles are empty except for having their precedence
|
||||||
|
set.
|
||||||
|
|
||||||
|
--;
|
||||||
35
test1/conf/asterisk/hep.conf
Executable file
35
test1/conf/asterisk/hep.conf
Executable file
@ -0,0 +1,35 @@
|
|||||||
|
;
|
||||||
|
; res_hep Module configuration for Asterisk
|
||||||
|
;
|
||||||
|
|
||||||
|
;
|
||||||
|
; Note that this configuration file is consumed by res_hep, which is responsible
|
||||||
|
; for the HEPv3 protocol manipulation and managing the connection to the Homer
|
||||||
|
; capture server. Additional modules provide specific messages to be sent to
|
||||||
|
; the Homer server:
|
||||||
|
; - res_hep_pjsip: Send SIP messages transmitted/received by the PJSIP stack
|
||||||
|
; - res_hep_rtcp: Send RTCP information (all channels)
|
||||||
|
;
|
||||||
|
|
||||||
|
; All settings are currently set in the general section.
|
||||||
|
[general]
|
||||||
|
enabled = no ; Enable/disable forwarding of packets to a
|
||||||
|
; HEP server. Default is "yes".
|
||||||
|
capture_address = 192.168.1.1:9061 ; The address of the HEP capture server.
|
||||||
|
capture_password = foo ; If specified, the authorization password
|
||||||
|
; 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.
|
||||||
|
;capture_name = asterisk ; A unique string identifier for this
|
||||||
|
; server. This ID will be embedded sent
|
||||||
|
; with each packet from this server.
|
||||||
|
uuid_type = call-id ; Specify the preferred source for the Homer
|
||||||
|
; correlation UUID. Valid options are:
|
||||||
|
; - 'call-id' for the PJSIP or chan_sip SIP
|
||||||
|
; Call-ID
|
||||||
|
; - 'channel' for the Asterisk channel name
|
||||||
|
; Note: If 'call-id' is specified but the
|
||||||
|
; channel is not PJSIP or chan_sip then the
|
||||||
|
; Asterisk channel name will be used instead.
|
||||||
132
test1/conf/asterisk/http.conf
Executable file
132
test1/conf/asterisk/http.conf
Executable file
@ -0,0 +1,132 @@
|
|||||||
|
;
|
||||||
|
; Asterisk Built-in mini-HTTP server
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; Note about Asterisk documentation:
|
||||||
|
; If Asterisk was installed from a tarball, then the HTML documentation should
|
||||||
|
; be installed in the static-http/docs directory which is
|
||||||
|
; (/var/lib/asterisk/static-http/docs) on linux by default. If the Asterisk
|
||||||
|
; HTTP server is enabled in this file by setting the "enabled", "bindaddr",
|
||||||
|
; and "bindport" options, then you should be able to view the documentation
|
||||||
|
; remotely by browsing to:
|
||||||
|
; http://<server_ip>:<bindport>/static/docs/index.html
|
||||||
|
;
|
||||||
|
[general]
|
||||||
|
;
|
||||||
|
; The name of the server, advertised in both the Server field in HTTP
|
||||||
|
; response message headers, as well as the <address /> element in certain HTTP
|
||||||
|
; response message bodies. If not furnished here, "Asterisk/{version}" will be
|
||||||
|
; used as a default value for the Server header field and the <address />
|
||||||
|
; element. Setting this property to a blank value will result in the omission
|
||||||
|
; of the Server header field from HTTP response message headers and the
|
||||||
|
; <address /> element from HTTP response message bodies.
|
||||||
|
;
|
||||||
|
servername=Asterisk
|
||||||
|
;
|
||||||
|
; Whether HTTP/HTTPS interface is enabled or not. Default is no.
|
||||||
|
; This also affects manager/rawman/mxml access (see manager.conf)
|
||||||
|
;
|
||||||
|
;enabled=yes
|
||||||
|
;
|
||||||
|
; Address to bind to, both for HTTP and HTTPS. You MUST specify
|
||||||
|
; a bindaddr in order for the HTTP server to run. There is no
|
||||||
|
; default value.
|
||||||
|
;
|
||||||
|
bindaddr=127.0.0.1
|
||||||
|
;
|
||||||
|
; Port to bind to for HTTP sessions (default is 8088)
|
||||||
|
;
|
||||||
|
;bindport=8088
|
||||||
|
;
|
||||||
|
; Prefix allows you to specify a prefix for all requests
|
||||||
|
; to the server. The default is blank. If uncommented
|
||||||
|
; all requests must begin with /asterisk
|
||||||
|
;
|
||||||
|
;prefix=asterisk
|
||||||
|
;
|
||||||
|
; sessionlimit specifies the maximum number of httpsessions that will be
|
||||||
|
; allowed to exist at any given time. (default: 100)
|
||||||
|
;
|
||||||
|
;sessionlimit=100
|
||||||
|
;
|
||||||
|
; session_inactivity specifies the number of milliseconds to wait for
|
||||||
|
; more data over the HTTP connection before closing it.
|
||||||
|
;
|
||||||
|
; Default: 30000
|
||||||
|
;session_inactivity=30000
|
||||||
|
;
|
||||||
|
; session_keep_alive specifies the number of milliseconds to wait for
|
||||||
|
; the next HTTP request over a persistent connection.
|
||||||
|
;
|
||||||
|
; Set to 0 to disable persistent HTTP connections.
|
||||||
|
; Default: 15000
|
||||||
|
;session_keep_alive=15000
|
||||||
|
;
|
||||||
|
; Whether Asterisk should serve static content from static-http
|
||||||
|
; Default is no.
|
||||||
|
;
|
||||||
|
;enable_static=yes
|
||||||
|
;
|
||||||
|
; Whether Asterisk should serve a status page showing the running
|
||||||
|
; configuration of this built-in HTTP server.
|
||||||
|
; Default is yes.
|
||||||
|
;
|
||||||
|
;enable_status=no
|
||||||
|
;
|
||||||
|
; Redirect one URI to another. This is how you would set a
|
||||||
|
; default page.
|
||||||
|
; Syntax: redirect=<from here> <to there>
|
||||||
|
; For example, if you are using the Asterisk-gui,
|
||||||
|
; it is convenient to enable the following redirect:
|
||||||
|
;
|
||||||
|
;redirect = / /static/config/index.html
|
||||||
|
;
|
||||||
|
; HTTPS support. In addition to enabled=yes, you need to
|
||||||
|
; explicitly enable tls, define the port to use,
|
||||||
|
; and have a certificate somewhere.
|
||||||
|
;tlsenable=yes ; enable tls - default no.
|
||||||
|
;tlsbindaddr=0.0.0.0:8089 ; address and port to bind to - default is bindaddr and port 8089.
|
||||||
|
;
|
||||||
|
;tlscertfile=</path/to/certificate.pem> ; path to the certificate file (*.pem) only.
|
||||||
|
;tlsprivatekey=</path/to/private.pem> ; path to private key file (*.pem) only.
|
||||||
|
; If no path is given for tlscertfile or tlsprivatekey, default is to look in current
|
||||||
|
; directory. If no tlsprivatekey is given, default is to search tlscertfile for private key.
|
||||||
|
;
|
||||||
|
; To produce a certificate you can e.g. use openssl. This places both the cert and
|
||||||
|
; private in same .pem file.
|
||||||
|
; openssl req -new -x509 -days 365 -nodes -out /tmp/foo.pem -keyout /tmp/foo.pem
|
||||||
|
;
|
||||||
|
; tlscipher= ; The list of allowed ciphers
|
||||||
|
; ; if none are specified the following cipher
|
||||||
|
; ; list will be used instead:
|
||||||
|
; ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:
|
||||||
|
; ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:
|
||||||
|
; kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:
|
||||||
|
; ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:
|
||||||
|
; ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:
|
||||||
|
; DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:
|
||||||
|
; AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:
|
||||||
|
; AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:
|
||||||
|
; !EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
|
||||||
|
;
|
||||||
|
; tlsdisablev1=yes ; Disable TLSv1 support - if not set this defaults to "yes"
|
||||||
|
; tlsdisablev11=yes ; Disable TLSv1.1 support - if not set this defaults to "no"
|
||||||
|
; tlsdisablev12=yes ; Disable TLSv1.2 support - if not set this defaults to "no"
|
||||||
|
;
|
||||||
|
; tlsservercipherorder=yes ; Use the server preference order instead of the client order
|
||||||
|
; ; Defaults to "yes"
|
||||||
|
;
|
||||||
|
; The post_mappings section maps URLs to real paths on the filesystem. If a
|
||||||
|
; POST is done from within an authenticated manager session to one of the
|
||||||
|
; configured POST mappings, then any files in the POST will be placed in the
|
||||||
|
; configured directory.
|
||||||
|
;
|
||||||
|
;[post_mappings]
|
||||||
|
;
|
||||||
|
; NOTE: You need a valid HTTP AMI mansession_id cookie with the manager
|
||||||
|
; config permission to POST files.
|
||||||
|
;
|
||||||
|
; In this example, if the prefix option is set to "asterisk", then using the
|
||||||
|
; POST URL: /asterisk/uploads will put files in /var/lib/asterisk/uploads/.
|
||||||
|
;uploads = /var/lib/asterisk/uploads/
|
||||||
|
;
|
||||||
647
test1/conf/asterisk/iax.conf
Executable file
647
test1/conf/asterisk/iax.conf
Executable file
@ -0,0 +1,647 @@
|
|||||||
|
;
|
||||||
|
; 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 checksums 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 iax 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. This setting will restrict codecs used to only those that comply
|
||||||
|
; with the bandwidth setting. In most cases, you should set this to 'high' so
|
||||||
|
; that high-quality codecs may be used; if set to a lower value, this will
|
||||||
|
; degrade call quality, so you probably only want to do this if you have
|
||||||
|
; actual significant bandwidth constraints.
|
||||||
|
;
|
||||||
|
bandwidth=high
|
||||||
|
;
|
||||||
|
|
||||||
|
;
|
||||||
|
; 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.
|
||||||
|
;
|
||||||
|
; 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
|
||||||
|
;maxjitterbuffer=1000
|
||||||
|
;maxjitterinterps=10
|
||||||
|
;resyncthreshold=1000
|
||||||
|
;jittertargetextra=40
|
||||||
|
|
||||||
|
; 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. There is no
|
||||||
|
; default unless set here in the [general] section. Only md5 and rsa support
|
||||||
|
; media encryption.
|
||||||
|
;
|
||||||
|
;auth=md5
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
; IAX2 Encryption
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
;
|
||||||
|
; Enable IAX2 encryption. The default is no. This option does not force
|
||||||
|
; encryption for calls, it merely allows it to be used for calls.
|
||||||
|
;
|
||||||
|
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
|
||||||
|
;
|
||||||
|
; 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://docs.asterisk.org/Configuration/Channel-Drivers/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 since at least 2012, 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
|
||||||
|
;
|
||||||
|
; Maximum time allowed for call token authentication handshaking. Default is 10 seconds.
|
||||||
|
; Use higher values in lagged or high packet loss networks.
|
||||||
|
;
|
||||||
|
;calltokenexpiration=10
|
||||||
|
|
||||||
|
;
|
||||||
|
; 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 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. If encryption is used (applicable to
|
||||||
|
; md5 and rsa only), a secret must be provided.
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; 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=192.168.10.10
|
||||||
|
;description=My IAX2 Peer ; 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
|
||||||
|
;
|
||||||
80
test1/conf/asterisk/iaxprov.conf
Executable file
80
test1/conf/asterisk/iaxprov.conf
Executable file
@ -0,0 +1,80 @@
|
|||||||
|
;
|
||||||
|
; 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://docs.asterisk.org/Configuration/Channel-Drivers/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
|
||||||
747
test1/conf/asterisk/indications.conf
Executable file
747
test1/conf/asterisk/indications.conf
Executable file
@ -0,0 +1,747 @@
|
|||||||
|
;
|
||||||
|
; 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
|
||||||
|
|
||||||
|
[id]
|
||||||
|
description = Indonesia
|
||||||
|
; 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/250,0/250
|
||||||
|
callwaiting = 425/150,0/150,425/150,0/10000
|
||||||
|
info = !950/330,!1400/330,!1800/330,0/1000
|
||||||
|
|
||||||
|
[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
|
||||||
186
test1/conf/asterisk/logger.conf
Executable file
186
test1/conf/asterisk/logger.conf
Executable file
@ -0,0 +1,186 @@
|
|||||||
|
;
|
||||||
|
; Logging Configuration
|
||||||
|
;
|
||||||
|
; In this file, you configure logging to files or to
|
||||||
|
; the syslog system.
|
||||||
|
;
|
||||||
|
; "logger reload" at the CLI will reload configuration
|
||||||
|
; of the logging system.
|
||||||
|
|
||||||
|
[general]
|
||||||
|
;
|
||||||
|
; Customize the display of debug message time stamps
|
||||||
|
; this example is the ISO 8601 date format (yyyy-mm-dd HH:MM:SS)
|
||||||
|
;
|
||||||
|
; see strftime(3) Linux manual for format specifiers. Note that there is also
|
||||||
|
; a fractional second parameter which may be used in this field. Use %1q
|
||||||
|
; for tenths, %2q for hundredths, etc.
|
||||||
|
;
|
||||||
|
;dateformat=%F %T ; ISO 8601 date format
|
||||||
|
;dateformat=%F %T.%3q ; with milliseconds
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; This makes Asterisk write callids to log messages
|
||||||
|
; (defaults to yes)
|
||||||
|
;use_callids = no
|
||||||
|
;
|
||||||
|
; This appends the hostname to the name of the log files.
|
||||||
|
;appendhostname = yes
|
||||||
|
;
|
||||||
|
; This determines whether or not we log queue events to a file
|
||||||
|
; (defaults to yes).
|
||||||
|
;queue_log = no
|
||||||
|
;
|
||||||
|
; Determines whether the queue_log always goes to a file, even
|
||||||
|
; when a realtime backend is present (defaults to no).
|
||||||
|
;queue_log_to_file = yes
|
||||||
|
;
|
||||||
|
; Set the queue_log filename
|
||||||
|
; (defaults to queue_log)
|
||||||
|
;queue_log_name = queue_log
|
||||||
|
;
|
||||||
|
; When using realtime for the queue log, use GMT for the timestamp
|
||||||
|
; instead of localtime. The default of this option is 'no'.
|
||||||
|
;queue_log_realtime_use_gmt = yes
|
||||||
|
;
|
||||||
|
; Log rotation strategy:
|
||||||
|
; none: Do not perform any logrotation at all. You should make
|
||||||
|
; very sure to set up some external logrotate mechanism
|
||||||
|
; as the asterisk logs can get very large, very quickly.
|
||||||
|
; sequential: Rename archived logs in order, such that the newest
|
||||||
|
; has the highest sequence number [default]. When
|
||||||
|
; exec_after_rotate is set, ${filename} will specify
|
||||||
|
; the new archived logfile.
|
||||||
|
; rotate: Rotate all the old files, such that the oldest has the
|
||||||
|
; highest sequence number [this is the expected behavior
|
||||||
|
; for Unix administrators]. When exec_after_rotate is
|
||||||
|
; set, ${filename} will specify the original root filename.
|
||||||
|
; timestamp: Rename the logfiles using a timestamp instead of a
|
||||||
|
; sequence number when "logger rotate" is executed.
|
||||||
|
; When exec_after_rotate is set, ${filename} will
|
||||||
|
; specify the new archived logfile.
|
||||||
|
;rotatestrategy = rotate
|
||||||
|
;
|
||||||
|
; Run a system command after rotating the files. This is mainly
|
||||||
|
; useful for rotatestrategy=rotate. The example allows the last
|
||||||
|
; two archive files to remain uncompressed, but after that point,
|
||||||
|
; they are compressed on disk.
|
||||||
|
;
|
||||||
|
; exec_after_rotate=gzip -9 ${filename}.2
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; For each file, specify what to log.
|
||||||
|
;
|
||||||
|
; For console logging, you set options at start of
|
||||||
|
; Asterisk with -v for verbose and -d for debug
|
||||||
|
; See 'asterisk -h' for more information.
|
||||||
|
;
|
||||||
|
; Directory for log files is configures in asterisk.conf
|
||||||
|
; option astlogdir
|
||||||
|
;
|
||||||
|
; All log messages go to a queue serviced by a single thread
|
||||||
|
; which does all the IO. This setting controls how big that
|
||||||
|
; queue can get (and therefore how much memory is allocated)
|
||||||
|
; before new messages are discarded.
|
||||||
|
; The default is 1000
|
||||||
|
;logger_queue_limit = 250
|
||||||
|
;
|
||||||
|
; Any custom logging levels you may want to use, which can then
|
||||||
|
; be sent to logging channels. The maximum number of custom
|
||||||
|
; levels is 16, but not all of these may be available if modules
|
||||||
|
; in Asterisk define their own.
|
||||||
|
;custom_levels = foobar,important,compliance
|
||||||
|
;
|
||||||
|
[logfiles]
|
||||||
|
;
|
||||||
|
; Format is:
|
||||||
|
;
|
||||||
|
; logger_name => [formatter]levels
|
||||||
|
;
|
||||||
|
; The name of the logger dictates not only the name of the logging
|
||||||
|
; channel, but also its type. Valid types are:
|
||||||
|
; - 'console' - The root console of Asterisk
|
||||||
|
; - 'syslog' - Linux syslog, with facilities specified afterwards with
|
||||||
|
; a period delimiter, e.g., 'syslog.local0'
|
||||||
|
; - 'filename' - The name of the log file to create. This is the default
|
||||||
|
; for log channels.
|
||||||
|
;
|
||||||
|
; Filenames can either be relative to the standard Asterisk log directory
|
||||||
|
; (see 'astlogdir' in asterisk.conf), or absolute paths that begin with
|
||||||
|
; '/'.
|
||||||
|
;
|
||||||
|
; An optional formatter can be specified prior to the log levels sent
|
||||||
|
; to the log channel. The formatter is defined immediately preceeding the
|
||||||
|
; levels, and is enclosed in square brackets. Valid formatters are:
|
||||||
|
; - [default] - The default formatter, this outputs log messages using a
|
||||||
|
; human readable format.
|
||||||
|
; - [plain] - The plain formatter, this outputs log messages using a
|
||||||
|
; human readable format with the addition of function name
|
||||||
|
; and line number. No color escape codes are ever printed
|
||||||
|
; nor are verbose messages treated specially.
|
||||||
|
; - [json] - Log the output in JSON. Note that JSON formatted log entries,
|
||||||
|
; if specified for a logger type of 'console', will be formatted
|
||||||
|
; per the 'default' formatter for log messages of type VERBOSE.
|
||||||
|
; This is due to the remote consoles interpreting verbosity
|
||||||
|
; outside of the logging subsystem.
|
||||||
|
;
|
||||||
|
; Log levels include the following, and are specified in a comma delineated
|
||||||
|
; list:
|
||||||
|
; debug
|
||||||
|
; trace
|
||||||
|
; notice
|
||||||
|
; warning
|
||||||
|
; error
|
||||||
|
; verbose(<level>)
|
||||||
|
; dtmf
|
||||||
|
; fax
|
||||||
|
; security
|
||||||
|
; <customlevel>
|
||||||
|
;
|
||||||
|
; Verbose takes an optional argument, in the form of an integer level. The
|
||||||
|
; verbose level can be set per logfile. 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.
|
||||||
|
;
|
||||||
|
; Debug has multiple levels like verbose. However, it is a system wide setting
|
||||||
|
; and cannot be specified per logfile. You specify the debug level elsewhere
|
||||||
|
; such as the CLI 'core set debug 3', starting Asterisk with '-ddd', or in
|
||||||
|
; asterisk.conf 'debug=3'.
|
||||||
|
;
|
||||||
|
; 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. Both
|
||||||
|
; debug and trace messages are also very verbose and can and do fill up
|
||||||
|
; logfiles quickly. This is another reason not to have debug or trace
|
||||||
|
; modes on a production system unless you are in the process of debugging
|
||||||
|
; a specific issue.
|
||||||
|
;
|
||||||
|
;debug.log => error,warning,notice,verbose,debug
|
||||||
|
;trace.log => trace
|
||||||
|
;security.log => security
|
||||||
|
console => notice,warning,error
|
||||||
|
;console => notice,warning,error,debug
|
||||||
|
messages.log => notice,warning,error
|
||||||
|
;full.log => notice,warning,error,debug,verbose,dtmf,fax
|
||||||
|
;
|
||||||
|
;full-json.log => [json]debug,verbose,notice,warning,error,dtmf,fax
|
||||||
|
;
|
||||||
|
;syslog keyword : This special keyword logs to syslog facility
|
||||||
|
;
|
||||||
|
;syslog.local0 => notice,warning,error
|
||||||
|
;
|
||||||
|
; A log level defined in 'custom_levels' above
|
||||||
|
;important.log = important
|
||||||
331
test1/conf/asterisk/manager.conf
Executable file
331
test1/conf/asterisk/manager.conf
Executable file
@ -0,0 +1,331 @@
|
|||||||
|
;
|
||||||
|
; AMI - The Asterisk Manager Interface
|
||||||
|
;
|
||||||
|
; Third party application call management support and PBX event supervision
|
||||||
|
;
|
||||||
|
; Use the "manager show commands" at the CLI to list available manager commands
|
||||||
|
; and their authorization levels.
|
||||||
|
;
|
||||||
|
; "manager show command <command>" will show a help text.
|
||||||
|
;
|
||||||
|
; ---------------------------- SECURITY NOTE -------------------------------
|
||||||
|
; Note that you should not enable the AMI on a public IP address. If needed,
|
||||||
|
; block this TCP port with iptables (or another FW software) and reach it
|
||||||
|
; with IPsec, SSH, or SSL vpn tunnel. You can also make the manager
|
||||||
|
; interface available over http/https if Asterisk's http server is enabled in
|
||||||
|
; http.conf and if both "enabled" and "webenabled" are set to yes in
|
||||||
|
; this file. Both default to no. httptimeout provides the maximum
|
||||||
|
; timeout in seconds before a web based session is discarded. The
|
||||||
|
; default is 60 seconds.
|
||||||
|
;
|
||||||
|
[general]
|
||||||
|
enabled = no
|
||||||
|
;webenabled = yes
|
||||||
|
|
||||||
|
port = 5038
|
||||||
|
bindaddr = 0.0.0.0
|
||||||
|
|
||||||
|
; Parameters that control AMI over TLS. ("enabled" must be set too).
|
||||||
|
; You can open a connection to this socket with e.g.
|
||||||
|
;
|
||||||
|
; openssl s_client -connect my_host:5039
|
||||||
|
;
|
||||||
|
;tlsenable=no ; set to YES to enable it
|
||||||
|
;tlsbindaddr=0.0.0.0:5039 ; address and port to bind to, default to bindaddr and port 5039
|
||||||
|
;tlscertfile=/tmp/asterisk.pem ; path to the certificate.
|
||||||
|
;tlsprivatekey=/tmp/private.pem ; path to the private key, if no private given,
|
||||||
|
; if no tlsprivatekey is given, default is to search
|
||||||
|
; tlscertfile for private key.
|
||||||
|
;tlscipher=<cipher string> ; string specifying which SSL ciphers to use or not use
|
||||||
|
;
|
||||||
|
;allowmultiplelogin = yes ; IF set to no, rejects manager logins that are already in use.
|
||||||
|
; ; The default is yes.
|
||||||
|
;
|
||||||
|
;displayconnects = yes
|
||||||
|
;
|
||||||
|
; Add a Unix epoch timestamp to events (not action responses)
|
||||||
|
;
|
||||||
|
;timestampevents = yes
|
||||||
|
|
||||||
|
;brokeneventsaction = yes ; Restore previous behavior that caused the events
|
||||||
|
; action to not return a response in certain
|
||||||
|
; circumstances. Defaults to 'no'.
|
||||||
|
|
||||||
|
;
|
||||||
|
; Display certain channel variables every time a channel-oriented
|
||||||
|
; event is emitted:
|
||||||
|
;
|
||||||
|
; Note that this does incur a performance penalty and should be avoided if possible.
|
||||||
|
;
|
||||||
|
;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
|
||||||
|
;
|
||||||
|
; disabledevents specifies AMI events which should be completely globally disabled.
|
||||||
|
; These events will not be available to any AMI listeners. Use this to disable
|
||||||
|
; frequent events which are not desired for any listeners. Default
|
||||||
|
; is no events are globally disabled. Event names are case-sensitive.
|
||||||
|
; Events disabled in stasis.conf do not also need to be disabled here.
|
||||||
|
; If you don't want to completely disable an AMI event, also consider the
|
||||||
|
; filter option available on a per-manager user basis to block unwanted
|
||||||
|
; events from being received in a stream (as opposed to this option which
|
||||||
|
; would prevent specified events from being generated at all).
|
||||||
|
|
||||||
|
;disabledevents = Newexten,Varset
|
||||||
|
|
||||||
|
;[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 --------------------------------------------------------
|
||||||
|
Include and/or exclude events for this user.
|
||||||
|
|
||||||
|
There are two ways to use this feature... Legacy and Advanced.
|
||||||
|
|
||||||
|
Legacy Event Filtering:
|
||||||
|
|
||||||
|
This is the original method of filtering events. It's no longer
|
||||||
|
recommended but still supported for backwards compatibility. The filter
|
||||||
|
is a regular expression, optionally prefixed with an exclamation point (!).
|
||||||
|
The regular expression is applied to the entire payload of every event.
|
||||||
|
If any part of the event payload matches, the event is included. If the
|
||||||
|
first character of the filter is an exclamation point (!), the event is
|
||||||
|
excluded. On a busy system, this is a resource intensive process and the
|
||||||
|
reason it's no longer recommended.
|
||||||
|
|
||||||
|
Another issue with legacy filtering is that regexes are very sensitive to
|
||||||
|
whitespace and separators. "Event:Newchannel" will NOT work because of
|
||||||
|
the missing space after the ':'. Neither will "Event: Newchannel" or
|
||||||
|
"Event Newchannel" because of the extra space in the first expression
|
||||||
|
and the missing ':' in the second.
|
||||||
|
|
||||||
|
Advanced Event Filtering:
|
||||||
|
|
||||||
|
Advanced filtering still allows you to use regular expressions but adds
|
||||||
|
the ability to pre-select certain events and constrain the regular
|
||||||
|
expression to matching the contents of a specific event header.
|
||||||
|
The syntax is:
|
||||||
|
|
||||||
|
eventfilter(<match_criteria>) = [ <match_expression> ]
|
||||||
|
|
||||||
|
<match_criteria> : [ action(include|exclude) | name(<event_name>) |
|
||||||
|
header(<header_name>) | method(<match_method>) ][, ...]
|
||||||
|
|
||||||
|
You can specify at most one of each of the following in any order,
|
||||||
|
separated by commas.
|
||||||
|
|
||||||
|
action(include|exclude): Default: 'include'. Instead of using '!' to
|
||||||
|
exclude matching events, specify 'action(exclude)'. Although the
|
||||||
|
default is "include" if "action" isn't specified, adding
|
||||||
|
"action(include)" will help with readability.
|
||||||
|
|
||||||
|
name(<event_name>): Include only events with a name exactly matching
|
||||||
|
<event_name>. This is actually implemented using the "hash" of the
|
||||||
|
event names and is therefore much more efficient than using a regular
|
||||||
|
expression.
|
||||||
|
|
||||||
|
header(<header_name>): Include only events that have a header exactly
|
||||||
|
matching <header_name>. Additionally, the data to be searched will
|
||||||
|
be constrained to the value of this header instead of the entire
|
||||||
|
event payload.
|
||||||
|
|
||||||
|
method(regex | exact | starts_with | ends_with | contains | none ):
|
||||||
|
How should <match_expression> be applied to the event data? The data may
|
||||||
|
be the entire event payload or, if header(<header_name>) was used, the
|
||||||
|
value of that specific header. If 'action(exclude)' was specified, a
|
||||||
|
"match" here will cause the event to be excluded instead of included.
|
||||||
|
|
||||||
|
regex: As a regular expression that, if matched anywhere in the
|
||||||
|
data, constitutes a match.
|
||||||
|
|
||||||
|
exact: As a simple string that must match all of the data.
|
||||||
|
Probably only useful when the data is constrained to a specific header
|
||||||
|
and the data itself is a simple value.
|
||||||
|
|
||||||
|
starts_with: As a simple string that, if found at the beginning of the
|
||||||
|
data, constitutes a match.
|
||||||
|
|
||||||
|
ends_with: As a simple string that, if found at the end of the data,
|
||||||
|
constitutes a match.
|
||||||
|
|
||||||
|
contains: As a simple string that, if found anywhere in the data,
|
||||||
|
constitutes a match.
|
||||||
|
|
||||||
|
none: Ignore <match_expression> altogether. This is the default
|
||||||
|
because the majority of use cases for event filtering involve
|
||||||
|
including or excluding events by event name without regard to the
|
||||||
|
event payload. In this case, you can just leave <match_expression>
|
||||||
|
empty.
|
||||||
|
|
||||||
|
TIP: Although match criteria order doesn't matter to Asterisk, using the
|
||||||
|
order shown can help you read them. For instance...
|
||||||
|
eventfilter(action(exclude),name(Newchannel),header(Channel),method(starts_with)) = Local/
|
||||||
|
...means "Exclude Newchannel events with a Channel header that starts with Local/"
|
||||||
|
|
||||||
|
Event Filter Processing Ordering:
|
||||||
|
|
||||||
|
Both Legacy and Advanced filter entries are processed as follows:
|
||||||
|
- If no filters are configured, all events are reported as normal.
|
||||||
|
|
||||||
|
- If there are 'include' filters only, an event that matches ANY filter
|
||||||
|
will be reported.
|
||||||
|
|
||||||
|
- If there are 'exclude' filters only, an event that matched ANY filter
|
||||||
|
will be excluded.
|
||||||
|
|
||||||
|
- If there are both 'include' and 'exclude' filters, all 'include' filters
|
||||||
|
are matched first, then the 'exclude' filters will be applied to the
|
||||||
|
resulting set.
|
||||||
|
--;
|
||||||
|
|
||||||
|
; ----- Legacy Filter Examples:
|
||||||
|
; Every legacy filter expression results in regular expression matching
|
||||||
|
; on the entire payload of every event even if no regular expression
|
||||||
|
; meta-characters were used.
|
||||||
|
|
||||||
|
; Only include Newchannel events
|
||||||
|
;eventfilter=Event: Newchannel
|
||||||
|
|
||||||
|
; Only include events of any type with a "Channel" header that matches
|
||||||
|
; the regular expression.
|
||||||
|
;eventfilter=Channel: (PJ)?SIP/(james|jim|john)-
|
||||||
|
|
||||||
|
; Only include Newchannel events which contain a "Channel" header
|
||||||
|
; for PJSIP channels.
|
||||||
|
;eventfilter = Event: Newchannel.*Channel: PJSIP/
|
||||||
|
|
||||||
|
; Only include Newchannel or Hangup events whose "Channel" header doesn't start
|
||||||
|
; with Local/. All other events are filtered out.
|
||||||
|
;eventfilter = Event: Newchannel
|
||||||
|
;eventfilter = Event: Hangup
|
||||||
|
;eventfilter = !Channel: Local/
|
||||||
|
; This causes three regexes to be searched for on every event!
|
||||||
|
|
||||||
|
; Include ALL events EXCEPT Newchannel and Hangup events whose "Channel" header
|
||||||
|
; starts with Local/.
|
||||||
|
; Other Newchannel and Hangup events ARE reported.
|
||||||
|
;eventfilter = !Event: (Newchannel|Hangup).*Channel: Local/
|
||||||
|
; This causes one regex to be searched for but it's a fairly expensive
|
||||||
|
; one.
|
||||||
|
|
||||||
|
; Exclude any event that has a "Channel" header whose value starts with "DADHI/"
|
||||||
|
;eventfilter=!Channel: DAHDI/
|
||||||
|
|
||||||
|
; ----- Advanced Filter Examples:
|
||||||
|
; All of these examples are WAY more efficient than their legacy
|
||||||
|
; equivalents.
|
||||||
|
|
||||||
|
; Include only "Newchannel" events.
|
||||||
|
; eventfilter(name(Newchannel)) =
|
||||||
|
; Note that there's nothing to the right of the '=' because you don't care
|
||||||
|
; what's in the payload. You still need the '=' though or the config file
|
||||||
|
; parser will complain. 'action(include)' and 'method(none)' are implied.
|
||||||
|
|
||||||
|
; Only include events of any type with a "Channel" header that matches
|
||||||
|
; the regular expression.
|
||||||
|
;eventfilter(action(include),header(Channel),method(regex)) = (PJ)?SIP/(james|jim|john)-
|
||||||
|
; We're still testing every event but because we only apply the regex to the
|
||||||
|
; value of the Channel header this is still more efficient than using the
|
||||||
|
; legacy method.
|
||||||
|
|
||||||
|
; Only include Newchannel and Hangup events whose "Channel" header doesn't
|
||||||
|
; start with Local/.
|
||||||
|
;eventfilter(action(include),name(Newchannel)) =
|
||||||
|
;eventfilter(action(include),name(Hangup)) =
|
||||||
|
;eventfilter(header(Channel),action(exclude),method(starts_with)) = Local/
|
||||||
|
; No regexes at all. We do the hash match against the event names first and
|
||||||
|
; only matching events are passed to the next filter.
|
||||||
|
; Then, in only those events, we look for a Channel header by exact match, then
|
||||||
|
; look for 'Local/' at the beginning of its value.
|
||||||
|
|
||||||
|
; Include ALL events EXCEPT Newchannel and Hangup events whose "Channel" header
|
||||||
|
; starts with Local/.
|
||||||
|
; Other Newchannel and Hangup events ARE reported.
|
||||||
|
;eventfilter(action(exclude),name(Newchannel),header(Channel),method(starts_with)) = Local/
|
||||||
|
;eventfilter(action(exclude),name(Hangup),header(Channel),method(starts_with)) = Local/
|
||||||
|
; Again, no regexes. Very efficient because the filters start by looking for
|
||||||
|
; a hash match on the event name.
|
||||||
|
|
||||||
|
; Exclude any event that has a "Channel" header whose value starts with "DADHI/"
|
||||||
|
;eventfilter(action(exclude),header(Channel),method(starts_with)) = DAHDI/
|
||||||
|
; We're still testing every event but there are no regexes involved at all.
|
||||||
|
|
||||||
|
;--
|
||||||
|
-- eventfilter end ----------------------------------------------------
|
||||||
|
--;
|
||||||
|
|
||||||
|
;
|
||||||
|
; If the device connected via this user accepts input slowly,
|
||||||
|
; the timeout for writes to it can be increased to keep it
|
||||||
|
; from being disconnected (value is in milliseconds)
|
||||||
|
;
|
||||||
|
; writetimeout = 100
|
||||||
|
;
|
||||||
|
;displayconnects = yes ; Display on CLI user login/logoff
|
||||||
|
;
|
||||||
|
; Authorization for various classes
|
||||||
|
;
|
||||||
|
; Read authorization permits you to receive asynchronous events, in general.
|
||||||
|
; Write authorization permits you to send commands and get back responses. The
|
||||||
|
; following classes exist:
|
||||||
|
;
|
||||||
|
; all - All event classes below (including any we may have missed).
|
||||||
|
; system - General information about the system and ability to run system
|
||||||
|
; management commands, such as Shutdown, Restart, and Reload. This
|
||||||
|
; class also includes dialplan manipulation actions such as
|
||||||
|
; DialplanExtensionAdd and DialplanExtensionRemove.
|
||||||
|
; call - Information about channels and ability to set information in a
|
||||||
|
; running channel.
|
||||||
|
; log - Logging information. Read-only. (Defined but not yet used.)
|
||||||
|
; verbose - Verbose information. Read-only. (Defined but not yet used.)
|
||||||
|
; agent - Information about queues and agents and ability to add queue
|
||||||
|
; members to a queue.
|
||||||
|
; user - Permission to send and receive UserEvent.
|
||||||
|
; config - Ability to read and write configuration files.
|
||||||
|
; command - Permission to run CLI commands. Write-only.
|
||||||
|
; dtmf - Receive DTMF events. Read-only.
|
||||||
|
; reporting - Ability to get information about the system.
|
||||||
|
; cdr - Output of cdr_manager, if loaded. Read-only.
|
||||||
|
; dialplan - Receive NewExten and VarSet events. Read-only.
|
||||||
|
; originate - Permission to originate new calls. Write-only.
|
||||||
|
; agi - Output AGI commands executed. Input AGI command to execute.
|
||||||
|
; cc - Call Completion events. Read-only.
|
||||||
|
; aoc - Permission to send Advice Of Charge messages and receive Advice
|
||||||
|
; - Of Charge events.
|
||||||
|
; test - Ability to read TestEvent notifications sent to the Asterisk Test
|
||||||
|
; Suite. Note that this is only enabled when the TEST_FRAMEWORK
|
||||||
|
; compiler flag is defined.
|
||||||
|
; security - Security Events. Read-only.
|
||||||
|
; message - Permissions to send out of call messages. Write-only
|
||||||
|
;
|
||||||
|
;read = system,call,log,verbose,agent,user,config,dtmf,reporting,cdr,dialplan
|
||||||
|
;write = system,call,agent,user,config,command,reporting,originate,message
|
||||||
45
test1/conf/asterisk/meetme.conf
Executable file
45
test1/conf/asterisk/meetme.conf
Executable file
@ -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
|
||||||
142
test1/conf/asterisk/mgcp.conf
Executable file
142
test1/conf/asterisk/mgcp.conf
Executable file
@ -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
|
||||||
218
test1/conf/asterisk/minivm.conf
Executable file
218
test1/conf/asterisk/minivm.conf
Executable file
@ -0,0 +1,218 @@
|
|||||||
|
;
|
||||||
|
; Mini-Voicemail Configuration
|
||||||
|
; for the MiniVM set of applications
|
||||||
|
;
|
||||||
|
; MiniVM consists of the following dialplan applications
|
||||||
|
; MinivmGreet Play personal prompts for busy/unavailable/temporary messages or default prompts
|
||||||
|
; MinivmRecord Record voice prompts to account directory or default directory
|
||||||
|
; MinivmNotify Notify via e-mail or pager - with or without attachment
|
||||||
|
; MinivmDelete Delete voice prompt (filename as argument or channel variable set by MinivmRecord)
|
||||||
|
;
|
||||||
|
; MiniVM works without accounts (just give e-mail address as argument) or with accounts in
|
||||||
|
; this configuration file or realtime. The idea is to build voicemail as building blocks so that
|
||||||
|
; a complete and adaptive voicemail system can be built in the dialplan
|
||||||
|
;
|
||||||
|
; ----------------------------- Variables to use in subject, from and message body ------------------
|
||||||
|
; Change the from, body and/or subject, variables:
|
||||||
|
; MVM_NAME, MVM_DUR, MVM_MSGNUM, VM_MAILBOX, MVM_CALLERID, MVM_CIDNUM,
|
||||||
|
; MVM_CIDNAME, MVM_DATE
|
||||||
|
;
|
||||||
|
; In addition to these, you can set the MVM_COUNTER channel variable in the
|
||||||
|
; dial plan and use that as a counter. It will also be used in the file name
|
||||||
|
; of the media file attached to the message
|
||||||
|
;
|
||||||
|
; Note: The emailbody config row can only be up to 512 characters due to a
|
||||||
|
; limitation in the Asterisk configuration subsystem.
|
||||||
|
; To create longer mails, use the templatefile option when creating the template
|
||||||
|
; ---------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
[general]
|
||||||
|
; Default format for storing and sending voicemail
|
||||||
|
; (only one format. Can also be set on a per-mailbox level)
|
||||||
|
format=wav49
|
||||||
|
;format=gsm
|
||||||
|
;
|
||||||
|
;Turn on logfile with the following syntax. One line per voicemail received
|
||||||
|
;with minivmRecord()
|
||||||
|
; Mailbox:domain:macrocontext:exten:priority:callerchan:callerid:origdate:origtime:duration:durationstatus:accountcode
|
||||||
|
;logfile=/var/log/asterisk/minivm.log
|
||||||
|
; Who the e-mail notification should appear to come from
|
||||||
|
serveremail=asterisk
|
||||||
|
;serveremail=asterisk@asterisk.example.com
|
||||||
|
; Minimum length of a voicemail message in seconds for the message to be kept
|
||||||
|
; The default is no minimum.
|
||||||
|
;minmessage=3
|
||||||
|
; How many seconds of silence before we end the recording
|
||||||
|
maxsilence=10
|
||||||
|
; Silence threshold (what we consider silence: the lower, the more sensitive)
|
||||||
|
silencethreshold=128
|
||||||
|
; How long greeting messages (busy/unavailable/temp/name) are allowed to be, in seconds
|
||||||
|
;maxgreet=120
|
||||||
|
; If you need to have an external program, i.e. /usr/bin/myapp called when a
|
||||||
|
; voicemail is received by the server. The arguments are
|
||||||
|
;
|
||||||
|
; <app> <username@domain> <callerid-name> <callerid-number>
|
||||||
|
;
|
||||||
|
;externnotify=/usr/bin/myapp
|
||||||
|
; The character set for voicemail messages can be specified here
|
||||||
|
;charset=ISO-8859-1
|
||||||
|
; Skip the "[PBX]:" string from the message title
|
||||||
|
;pbxskip=yes
|
||||||
|
; Change the From: string
|
||||||
|
|
||||||
|
; You can override the default program to send e-mail if you wish, too
|
||||||
|
; This is used both for e-mail and pager messages
|
||||||
|
;mailcmd=/usr/sbin/sendmail -t
|
||||||
|
;
|
||||||
|
; -------------Default e-mail message template (used if no templates are used) ------
|
||||||
|
;fromstring=The Asterisk PBX
|
||||||
|
;
|
||||||
|
|
||||||
|
;emailsubject=[PBX]: New message ${MVM_COUNTER} 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
|
||||||
60
test1/conf/asterisk/modules.conf
Executable file
60
test1/conf/asterisk/modules.conf
Executable file
@ -0,0 +1,60 @@
|
|||||||
|
;
|
||||||
|
; Asterisk configuration file
|
||||||
|
;
|
||||||
|
; Module Loader configuration file
|
||||||
|
;
|
||||||
|
|
||||||
|
[modules]
|
||||||
|
autoload=yes
|
||||||
|
noload => pbx_lua.so
|
||||||
|
|
||||||
|
|
||||||
|
load => res_pjsip.so
|
||||||
|
load => chan_pjsip.so
|
||||||
|
;
|
||||||
|
; Any modules that need to be loaded before the Asterisk core has been
|
||||||
|
; initialized (just after the logger initialization) can be loaded
|
||||||
|
; using 'preload'. 'preload' forces a module and the modules it
|
||||||
|
; is known to depend upon to be loaded earlier than they normally get
|
||||||
|
; loaded.
|
||||||
|
;
|
||||||
|
; NOTE: There is no good reason left to use 'preload' anymore. It was
|
||||||
|
; historically required to preload realtime driver modules so you could
|
||||||
|
; map Asterisk core configuration files to Realtime storage.
|
||||||
|
; This is no longer needed.
|
||||||
|
;
|
||||||
|
;preload = your_special_module.so
|
||||||
|
;
|
||||||
|
; If you want Asterisk to fail if a module does not load, then use
|
||||||
|
; the "require" keyword. Asterisk will exit with a status code of 2
|
||||||
|
; if a required module does not load.
|
||||||
|
;
|
||||||
|
;require = chan_pjsip.so
|
||||||
|
;
|
||||||
|
; If you want you can combine with preload
|
||||||
|
; preload-require = your_special_module.so
|
||||||
|
;
|
||||||
|
;load = res_musiconhold.so
|
||||||
|
;
|
||||||
|
; Load one of: alsa, or console (portaudio).
|
||||||
|
; By default, load chan_console only (automatically).
|
||||||
|
;
|
||||||
|
noload = chan_alsa.so
|
||||||
|
;noload = chan_console.so
|
||||||
|
;
|
||||||
|
; Do not load res_hep and kin unless you are using HEP monitoring
|
||||||
|
; <http://sipcapture.org> in your network.
|
||||||
|
;
|
||||||
|
noload = res_hep.so
|
||||||
|
noload = res_hep_pjsip.so
|
||||||
|
noload = res_hep_rtcp.so
|
||||||
|
;
|
||||||
|
; Do not load chan_sip by default, it may conflict with res_pjsip.
|
||||||
|
noload = chan_sip.so
|
||||||
|
;
|
||||||
|
; Load one of the voicemail modules as they are mutually exclusive.
|
||||||
|
; By default, load app_voicemail only (automatically).
|
||||||
|
;
|
||||||
|
;noload = app_voicemail.so
|
||||||
|
noload = app_voicemail_imap.so
|
||||||
|
noload = app_voicemail_odbc.so
|
||||||
99
test1/conf/asterisk/motif.conf
Executable file
99
test1/conf/asterisk/motif.conf
Executable file
@ -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 initiation 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
|
||||||
156
test1/conf/asterisk/musiconhold.conf
Executable file
156
test1/conf/asterisk/musiconhold.conf
Executable file
@ -0,0 +1,156 @@
|
|||||||
|
;
|
||||||
|
; Music on Hold -- Sample Configuration
|
||||||
|
;
|
||||||
|
[general]
|
||||||
|
;cachertclasses=yes ; use 1 instance of moh class for all users who are using it,
|
||||||
|
; decrease consumable cpu cycles and memory
|
||||||
|
; disabled by default
|
||||||
|
|
||||||
|
;preferchannelclass=yes ; Prefer the musicclass as defined by CHANNEL(musicclass),
|
||||||
|
; over a class set by an application (e.g. a musicclass set on a queue).
|
||||||
|
; Defaults to yes.
|
||||||
|
|
||||||
|
; valid mode options:
|
||||||
|
; files -- read files from a directory in any Asterisk supported
|
||||||
|
; media format
|
||||||
|
; playlist -- provide a fixed list of filenames or HTTP(S) URLs to play
|
||||||
|
; 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.
|
||||||
|
;
|
||||||
|
; =========
|
||||||
|
; Playlist (native) music on hold
|
||||||
|
; =========
|
||||||
|
;
|
||||||
|
; This mode is similar to 'files' mode in that it plays through a list
|
||||||
|
; of files, but instead of scanning a directory the files are
|
||||||
|
; explicitly configured using one or more 'entry' options.
|
||||||
|
;
|
||||||
|
; Each entry must be one of:
|
||||||
|
;
|
||||||
|
; * An absolute path to the file to be played, without an extension.
|
||||||
|
; * An HTTP(S) URL
|
||||||
|
;
|
||||||
|
; The entries are played in the order in which they appear in the
|
||||||
|
; configuration. The 'sort' option is not used for this mode.
|
||||||
|
;
|
||||||
|
|
||||||
|
[default]
|
||||||
|
mode=files
|
||||||
|
directory=moh
|
||||||
|
;
|
||||||
|
;[native-random]
|
||||||
|
;mode=files
|
||||||
|
;directory=moh
|
||||||
|
;digit=# ; If this option is set for a class, then when callers are
|
||||||
|
; ; listening to music on hold, they can press this digit, and
|
||||||
|
; ; they will switch to listening to this music class.
|
||||||
|
;announcement=queue-thankyou ;If this option is set for a class, then
|
||||||
|
; ; when callers get put on hold, the specified sound will be
|
||||||
|
; ; be played to them. Also, if using modes that Asterisk
|
||||||
|
; ; controls the playlist for (files, mp3, etc), the same
|
||||||
|
; ; sound will also be played between MOH songs.
|
||||||
|
;sort=random ; Sort the files in random order. Other sort options are:
|
||||||
|
; ; 'alpha' and 'randstart'. If 'alpha', the files are sorted
|
||||||
|
; ; in alphabetical order. If 'randstart', the files are sorted
|
||||||
|
; ; in alphabetical order as well, but the first file is chosen
|
||||||
|
; ; at random. If unspecified, the sort order is undefined.
|
||||||
|
;loop_last=no ; If enabled, once the end of the directory is reached,
|
||||||
|
; the last file played will be looped perpetually, rather than
|
||||||
|
; starting over at the beginning again.
|
||||||
|
; Can be used with sort=alpha or randstart so you can control
|
||||||
|
; which file gets looped (the last one sorted alphabetically).
|
||||||
|
; (If sort=alpha, all files will be played at least once, but
|
||||||
|
; this may not be true with sort=randstart.)
|
||||||
|
; Default is no.
|
||||||
|
;answeredonly=yes ; Only allow answered channels to have music on hold.
|
||||||
|
; Enabling this will prevent MOH on unanswered channels.
|
||||||
|
; (default: "no")
|
||||||
|
|
||||||
|
;[native-alphabetical]
|
||||||
|
;mode=files
|
||||||
|
;directory=moh
|
||||||
|
;sort=alpha ; Sort the files in alphabetical order.
|
||||||
|
|
||||||
|
;[sales-queue-hold]
|
||||||
|
;mode=playlist
|
||||||
|
;entry=/var/lib/asterisk/sounds/en/yourcallisimportant
|
||||||
|
;entry=http://example.local/sales-queue-hold-music.ulaw
|
||||||
|
;entry=/var/lib/asterisk/moh/macroform-robot_dity
|
||||||
|
|
||||||
|
; =========
|
||||||
|
; Other (non-native) playback methods
|
||||||
|
; =========
|
||||||
|
|
||||||
|
;[manual]
|
||||||
|
;mode=custom
|
||||||
|
; Note that with mode=custom, a directory is not required, such as when reading
|
||||||
|
; from a stream.
|
||||||
|
;directory=/var/lib/asterisk/mohmp3
|
||||||
|
;application=/usr/bin/mpg123 -q -r 8000 -f 8192 -b 2048 --mono -s
|
||||||
|
|
||||||
|
;[ulawstream]
|
||||||
|
;mode=custom
|
||||||
|
;application=/usr/bin/streamplayer 192.168.100.52 888
|
||||||
|
;format=ulaw ; The 'format' option specifies the audio format that the
|
||||||
|
; ; 'application' will provide to Asterisk. In this example,
|
||||||
|
; ; streamplayer will output ulaw samples so we need to set the
|
||||||
|
; ; format to ulaw so that Asterisk knows how to interpret the
|
||||||
|
; ; incoming audio.
|
||||||
|
|
||||||
|
; mpg123 on Solaris does not always exit properly; madplay may be a better
|
||||||
|
; choice
|
||||||
|
;[solaris]
|
||||||
|
;mode=custom
|
||||||
|
;directory=/var/lib/asterisk/mohmp3
|
||||||
|
;application=/site/sw/bin/madplay -Q -o raw:- --mono -R 8000 -a -12
|
||||||
|
|
||||||
|
; By default, when res_musiconhold reloads or unloads, it sends a HUP signal
|
||||||
|
; to custom applications (and all descendants), waits 100ms, then sends a
|
||||||
|
; TERM signal, waits 100ms, then finally sends a KILL signal. An application
|
||||||
|
; which is interacting with an external device and/or spawns children of its
|
||||||
|
; own may not be able to exit cleanly in the default times, expecially if sent
|
||||||
|
; a KILL signal, or if it's children are getting signals directly from
|
||||||
|
; res_musiconhoild. To allow extra time, the 'kill_escalation_delay'
|
||||||
|
; class option can be used to set the number of milliseconds res_musiconhold
|
||||||
|
; waits before escalating kill signals, with the default being the current
|
||||||
|
; 100ms. To control to whom the signals are sent, the "kill_method"
|
||||||
|
; class option can be set to "process_group" (the default, existing behavior),
|
||||||
|
; which sends signals to the application and its descendants directly, or
|
||||||
|
; "process" which sends signals only to the application itself.
|
||||||
|
|
||||||
|
;[sox_from_device]
|
||||||
|
;mode=custom
|
||||||
|
;directory=/var/lib/asterisk/mohmp3
|
||||||
|
;application=/usr/bin/sox -q -t alsa -c 2 -r 48000 hw:1 -c 1 -r 8000 -t raw -s -
|
||||||
|
; Wait 500ms before escalating kill signals
|
||||||
|
;kill_escalation_delay=500
|
||||||
|
; Send signals to just the child process instead of all descendants
|
||||||
|
;kill_method=process
|
||||||
203
test1/conf/asterisk/ooh323.conf
Executable file
203
test1/conf/asterisk/ooh323.conf
Executable file
@ -0,0 +1,203 @@
|
|||||||
|
; ---------------------------------------------------------------------------------
|
||||||
|
; --- ******* 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, throughput, 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
|
||||||
117
test1/conf/asterisk/osp.conf
Executable file
117
test1/conf/asterisk/osp.conf
Executable file
@ -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
|
||||||
142
test1/conf/asterisk/phoneprov.conf
Executable file
142
test1/conf/asterisk/phoneprov.conf
Executable file
@ -0,0 +1,142 @@
|
|||||||
|
[general]
|
||||||
|
; This section applies only to the default sip.conf/users.conf config provider
|
||||||
|
; embedded in res_phoneprov. Other providers may provide their own default settings.
|
||||||
|
|
||||||
|
; The default behavior of res_phoneprov will be to set the SERVER template variable to
|
||||||
|
; the IP address that the phone uses to contact the provisioning server and the
|
||||||
|
; SERVER_PORT variable to the bindport setting in sip.conf. Unless you have a very
|
||||||
|
; unusual setup, you should not need to set serveraddr, serveriface, or serverport.
|
||||||
|
|
||||||
|
;serveraddr=192.168.1.1 ; Override address to send to the phone to use as server address.
|
||||||
|
;serveriface=eth0 ; Same as above, except an ethernet interface.
|
||||||
|
; Useful for when the interface uses DHCP and the asterisk http
|
||||||
|
; server listens on a different IP than chan_sip.
|
||||||
|
;serverport=5060 ; Override port to send to the phone to use as server port.
|
||||||
|
default_profile=polycom ; The default profile to use if none specified in users.conf
|
||||||
|
|
||||||
|
; You can define profiles for different phones specifying what files to register
|
||||||
|
; with the provisioning server. You can define either static files, or dynamically
|
||||||
|
; generated files that can have dynamic names and point to templates that variables
|
||||||
|
; can be substituted into. You can also set arbitrary variables for the profiles
|
||||||
|
; templates to have access to. Profiles are shared across all config providers.
|
||||||
|
; Example:
|
||||||
|
|
||||||
|
;[example]
|
||||||
|
;mime_type => application/octet-stream
|
||||||
|
;static_file => example/firmware
|
||||||
|
;static_file => example/default.cfg,text/xml
|
||||||
|
;${TOUPPER(${MAC})}.cfg => templates/example-mac.cfg
|
||||||
|
;setvar => DB_CIDNAME=${ODBC_CID_NAME_LOOKUP(${USERNAME})}
|
||||||
|
|
||||||
|
; Dynamically generated files have a filename registered with variable substitution
|
||||||
|
; with variables obtained from various config providers. The default provider
|
||||||
|
; embedded in res_phoneprov reads users.conf. Other providers will have their own
|
||||||
|
; sources for the variables and may provide additional variables not listed here.
|
||||||
|
|
||||||
|
; Built in variables and the options in users.conf that they come from
|
||||||
|
; MAC (macaddress)
|
||||||
|
; USERNAME (username)
|
||||||
|
; DISPLAY_NAME (fullname)
|
||||||
|
; SECRET (secret)
|
||||||
|
; LABEL (label)
|
||||||
|
; CALLERID (cid_number)
|
||||||
|
; VOCIEMAIL_EXTEN (vmexten)
|
||||||
|
; EXTENSION_LENGTH (localextenlength)
|
||||||
|
; LINE
|
||||||
|
; LINEKEYS
|
||||||
|
|
||||||
|
; Built-in variables and the options in phoneprov.conf that they come from
|
||||||
|
; SERVER (server)
|
||||||
|
; SERVER_PORT (serverport)
|
||||||
|
|
||||||
|
|
||||||
|
; Built-in variables for managing timezones and daylight savings time.
|
||||||
|
; TZOFFSET
|
||||||
|
; DST_ENABLE
|
||||||
|
; DST_START_MONTH
|
||||||
|
; DST_START_MDAY
|
||||||
|
; DST_START_HOUR
|
||||||
|
; DST_END_MONTH
|
||||||
|
; DST_END_MDAY
|
||||||
|
; DST_END_HOUR
|
||||||
|
; TIMEZONE
|
||||||
|
|
||||||
|
[polycom]
|
||||||
|
staticdir => configs/ ; Sub directory of AST_DATA_DIR/phoneprov that static files reside
|
||||||
|
; in. This allows a request to /phoneprov/sip.cfg to pull the file
|
||||||
|
; from /phoneprov/configs/sip.cfg
|
||||||
|
mime_type => text/xml ; Default mime type to use if one isn't specified or the
|
||||||
|
; extension isn't recognized
|
||||||
|
static_file => bootrom.ld,application/octet-stream ; Static files the phone will download
|
||||||
|
static_file => bootrom.ver,plain/text ; static_file => filename,mime-type
|
||||||
|
static_file => sip.ld,application/octet-stream
|
||||||
|
static_file => sip.ver,plain/text
|
||||||
|
static_file => sip.cfg
|
||||||
|
static_file => custom.cfg
|
||||||
|
static_file => 2201-06642-001.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2201-06642-001.sip.ld,application/octet-stream
|
||||||
|
static_file => 2345-11000-001.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-11300-001.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-11300-010.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-11300-010.sip.ld,application/octet-stream
|
||||||
|
static_file => 2345-11402-001.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-11402-001.sip.ld,application/octet-stream
|
||||||
|
static_file => 2345-11500-001.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-11500-010.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-11500-020.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-11500-030.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-11500-030.sip.ld,application/octet-stream
|
||||||
|
static_file => 2345-11500-040.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-11500-040.sip.ld,application/octet-stream
|
||||||
|
static_file => 2345-11600-001.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-11600-001.sip.ld,application/octet-stream
|
||||||
|
static_file => 2345-11605-001.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-11605-001.sip.ld,application/octet-stream
|
||||||
|
static_file => 2345-12200-001.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-12200-001.sip.ld,application/octet-stream
|
||||||
|
static_file => 2345-12200-002.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-12200-002.sip.ld,application/octet-stream
|
||||||
|
static_file => 2345-12200-004.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-12200-004.sip.ld,application/octet-stream
|
||||||
|
static_file => 2345-12200-005.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-12200-005.sip.ld,application/octet-stream
|
||||||
|
static_file => 2345-12365-001.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-12365-001.sip.ld,application/octet-stream
|
||||||
|
static_file => 2345-12500-001.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-12500-001.sip.ld,application/octet-stream
|
||||||
|
static_file => 2345-12560-001.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-12560-001.sip.ld,application/octet-stream
|
||||||
|
static_file => 2345-12600-001.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-12600-001.sip.ld,application/octet-stream
|
||||||
|
static_file => 2345-12670-001.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 2345-12670-001.sip.ld,application/octet-stream
|
||||||
|
static_file => 3111-15600-001.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 3111-15600-001.sip.ld,application/octet-stream
|
||||||
|
static_file => 3111-40000-001.bootrom.ld,application/octet-stream
|
||||||
|
static_file => 3111-40000-001.sip.ld,application/octet-stream
|
||||||
|
static_file => SoundPointIPWelcome.wav,application/octet-stream
|
||||||
|
static_file => SoundPointIPLocalization/Japanese_Japan/SoundPointIP-dictionary.xml
|
||||||
|
static_file => SoundPointIPLocalization/Norwegian_Norway/SoundPointIP-dictionary.xml
|
||||||
|
static_file => SoundPointIPLocalization/Spanish_Spain/SoundPointIP-dictionary.xml
|
||||||
|
static_file => SoundPointIPLocalization/Portuguese_Portugal/SoundPointIP-dictionary.xml
|
||||||
|
static_file => SoundPointIPLocalization/English_United_Kingdom/SoundPointIP-dictionary.xml
|
||||||
|
static_file => SoundPointIPLocalization/English_United_States/SoundPointIP-dictionary.xml
|
||||||
|
static_file => SoundPointIPLocalization/Russian_Russia/SoundPointIP-dictionary.xml
|
||||||
|
static_file => SoundPointIPLocalization/Italian_Italy/SoundPointIP-dictionary.xml
|
||||||
|
static_file => SoundPointIPLocalization/Chinese_China/SoundPointIP-dictionary.xml
|
||||||
|
static_file => SoundPointIPLocalization/Swedish_Sweden/SoundPointIP-dictionary.xml
|
||||||
|
static_file => SoundPointIPLocalization/English_Canada/SoundPointIP-dictionary.xml
|
||||||
|
static_file => SoundPointIPLocalization/German_Germany/SoundPointIP-dictionary.xml
|
||||||
|
static_file => SoundPointIPLocalization/French_France/SoundPointIP-dictionary.xml
|
||||||
|
static_file => SoundPointIPLocalization/Danish_Denmark/SoundPointIP-dictionary.xml
|
||||||
|
static_file => SoundPointIPLocalization/Dutch_Netherlands/SoundPointIP-dictionary.xml
|
||||||
|
static_file => SoundPointIPLocalization/Korean_Korea/SoundPointIP-dictionary.xml
|
||||||
|
|
||||||
|
${MAC}.cfg => 000000000000.cfg ; Dynamically generated files.
|
||||||
|
${MAC}-phone.cfg => 000000000000-phone.cfg ; (relative to AST_DATA_DIR/phoneprov)
|
||||||
|
config/${MAC} => polycom.xml ; Dynamic Filename => template file
|
||||||
|
${MAC}-directory.xml => 000000000000-directory.xml
|
||||||
|
setvar => CUSTOM_CONFIG=/var/lib/asterisk/phoneprov/configs/custom.cfg ; Custom variable
|
||||||
|
|
||||||
|
;snom 300, 320, 360, 370, 820, 821, 870 support
|
||||||
|
snom-${MAC}.xml => snom-mac.xml
|
||||||
63
test1/conf/asterisk/pjproject.conf
Executable file
63
test1/conf/asterisk/pjproject.conf
Executable file
@ -0,0 +1,63 @@
|
|||||||
|
; Common pjproject options
|
||||||
|
;
|
||||||
|
|
||||||
|
;[startup]
|
||||||
|
; NOTES: The name of this section in the pjproject.conf configuration file must
|
||||||
|
; remain startup or the configuration will not be applied.
|
||||||
|
;
|
||||||
|
;cache_pools = yes ; Cache pjproject memory pools for performance
|
||||||
|
; Disable this option to help track down pool content
|
||||||
|
; mismanagement when using valgrind or MALLOC_DEBUG.
|
||||||
|
; The cache gets in the way of determining if the
|
||||||
|
; pool contents are used after being freed and who
|
||||||
|
; freed it.
|
||||||
|
; Default yes
|
||||||
|
;log_level=default ; Initial maximum pjproject logging level to log
|
||||||
|
; Valid values are: 0-6, and default
|
||||||
|
;
|
||||||
|
; Note: This option is needed very early in the startup
|
||||||
|
; process so it can only be read from config files because
|
||||||
|
; the modules for other methods have not been loaded yet.
|
||||||
|
;type= ; Must be of type startup (default: "")
|
||||||
|
|
||||||
|
;========================LOG_MAPPINGS SECTION OPTIONS===============================
|
||||||
|
;[log_mappings]
|
||||||
|
; SYNOPSIS: Provides pjproject to Asterisk log level mappings.
|
||||||
|
; NOTES: The name of this section in the pjproject.conf configuration file must
|
||||||
|
; remain log_mappings or the configuration will not be applied.
|
||||||
|
; The defaults mentioned below only apply if this file or the 'log_mappings'
|
||||||
|
; object can't be found. If the object is found, there are no defaults. If
|
||||||
|
; you don't specify an entry, nothing will be logged for that level.
|
||||||
|
;
|
||||||
|
; These logging level meanings are typically used by pjproject:
|
||||||
|
; - 0: fatal error
|
||||||
|
; - 1: error
|
||||||
|
; - 2: warning
|
||||||
|
; - 3: info
|
||||||
|
; - 4: debug
|
||||||
|
; - 5: trace
|
||||||
|
; - 6: more detailed trace
|
||||||
|
;
|
||||||
|
; Note: setting the pjproject debug level to 4 (debug) or above may result in
|
||||||
|
; raw packets being logged. This should only be enabled during active debugging
|
||||||
|
; to avoid a potential security issue due to logging injection.
|
||||||
|
;
|
||||||
|
;asterisk_error = ; A comma separated list of pjproject log levels to map to
|
||||||
|
; Asterisk errors.
|
||||||
|
; (default: "0,1")
|
||||||
|
;asterisk_warning = ; A comma separated list of pjproject log levels to map to
|
||||||
|
; Asterisk warnings.
|
||||||
|
; (default: "2")
|
||||||
|
;asterisk_notice = ; A comma separated list of pjproject log levels to map to
|
||||||
|
; Asterisk notices.
|
||||||
|
; (default: "")
|
||||||
|
;asterisk_verbose = ; A comma separated list of pjproject log levels to map to
|
||||||
|
; Asterisk verbose.
|
||||||
|
; (default: "")
|
||||||
|
;asterisk_debug = ; A comma separated list of pjproject log levels to map to
|
||||||
|
; Asterisk debug
|
||||||
|
; (default: "3,4")
|
||||||
|
;asterisk_trace = ; A comma separated list of pjproject log levels to map to
|
||||||
|
; Asterisk trace
|
||||||
|
; (default: "5,6")
|
||||||
|
;type= ; Must be of type log_mappings (default: "")
|
||||||
1696
test1/conf/asterisk/pjsip.conf
Executable file
1696
test1/conf/asterisk/pjsip.conf
Executable file
File diff suppressed because it is too large
Load Diff
71
test1/conf/asterisk/pjsip_notify.conf
Executable file
71
test1/conf/asterisk/pjsip_notify.conf
Executable file
@ -0,0 +1,71 @@
|
|||||||
|
; 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
|
||||||
|
|
||||||
|
; custom examples to use for PJSIPNotify application
|
||||||
|
|
||||||
|
; tell an endpoint to check messages
|
||||||
|
[custom-notify-1]
|
||||||
|
Event=>custom
|
||||||
|
Content-type=>application/voicemail
|
||||||
|
Content=>check-messages
|
||||||
|
Content=>
|
||||||
|
|
||||||
|
; tell an endpoint to force a remote hangup via custom header
|
||||||
|
[custom-notify-2]
|
||||||
|
Event=>custom
|
||||||
|
X-Data=>force-hangup
|
||||||
163
test1/conf/asterisk/pjsip_wizard.conf
Executable file
163
test1/conf/asterisk/pjsip_wizard.conf
Executable file
@ -0,0 +1,163 @@
|
|||||||
|
; PJSIP Wizard Configuration Samples and Quick Reference
|
||||||
|
;
|
||||||
|
; This file has several very basic configuration examples, to serve as a quick
|
||||||
|
; reference to jog your memory when you need to write up a new configuration.
|
||||||
|
; It is not intended to teach PJSIP configuration or serve as an exhaustive
|
||||||
|
; reference of options and potential scenarios.
|
||||||
|
;
|
||||||
|
; This file has two main sections.
|
||||||
|
; First, manually written examples to serve as a handy reference.
|
||||||
|
; Second, a list of all possible PJSIP config options by section. This is
|
||||||
|
; pulled from the XML config help. It only shows the synopsis for every item.
|
||||||
|
; If you want to see more detail please check the documentation sources
|
||||||
|
; mentioned at the top of this file.
|
||||||
|
|
||||||
|
; ============================================================================
|
||||||
|
; NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE
|
||||||
|
;
|
||||||
|
; This file does not maintain the complete option documentation.
|
||||||
|
; ============================================================================
|
||||||
|
|
||||||
|
; Documentation
|
||||||
|
;
|
||||||
|
; The official documentation is at https://docs.asterisk.org
|
||||||
|
; You can read the XML configuration help via Asterisk command line with
|
||||||
|
; "config show help res_pjsip_config_wizard", then you can drill down through
|
||||||
|
; the various sections and their options.
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
;============EXAMPLE WIZARD CONFIGURATION FOR A PHONE=======================
|
||||||
|
|
||||||
|
; This config would create an endpoint, aor with dynamic contact, inbound
|
||||||
|
; auth, a phoneprov object and a dialplan hint for extension 1000.
|
||||||
|
|
||||||
|
;[myphone]
|
||||||
|
;type = wizard
|
||||||
|
;accepts_auth = yes
|
||||||
|
;accepts_registrations = yes
|
||||||
|
;has_phoneprov = yes
|
||||||
|
;transport = ipv4
|
||||||
|
;has_hint = yes
|
||||||
|
;hint_exten = 1000
|
||||||
|
;inbound_auth/username = testname
|
||||||
|
;inbound_auth/password = test password
|
||||||
|
;endpoint/allow = ulaw
|
||||||
|
;endpoint/context = default
|
||||||
|
;phoneprov/MAC = 001122aa4455
|
||||||
|
;phoneprov/PROFILE = profile1
|
||||||
|
|
||||||
|
|
||||||
|
;============EXAMPLE WIZARD CONFIGURATION FOR AN ITSP TRUNK=================
|
||||||
|
|
||||||
|
; This ITSP has 2 servers available and requires registration.
|
||||||
|
|
||||||
|
; This config would create an endpoint, an aor with 2 static contacts, an
|
||||||
|
; outbound auth, an identify with 2 matches, and 2 registrations.
|
||||||
|
|
||||||
|
;[mytrunk]
|
||||||
|
;type = wizard
|
||||||
|
;sends_auth = yes
|
||||||
|
;sends_registrations = yes
|
||||||
|
;transport = ipv4
|
||||||
|
;remote_hosts = sip1.myitsp.com:5060,sip2.myitsp.com:5060
|
||||||
|
;outbound_auth/username = testname
|
||||||
|
;outbound_auth/password = test password
|
||||||
|
;endpoint/allow = ulaw
|
||||||
|
;endpoint/context = default
|
||||||
|
|
||||||
|
|
||||||
|
;========================WIZARD SECTION OPTIONS===============================
|
||||||
|
;[wizard]
|
||||||
|
; SYNOPSIS: Provides configuration wizard for common scenarios.
|
||||||
|
;sends_auth= ; Will create an outbound auth object for the endpoint and
|
||||||
|
; registration.
|
||||||
|
; If yes, outbound/username must be specified.
|
||||||
|
; (default = "no")
|
||||||
|
|
||||||
|
;accepts_auth= ; Will create an inbound auth object for the endpoint.
|
||||||
|
; If yes, inbound/username must be specified.
|
||||||
|
; (default = "no")
|
||||||
|
|
||||||
|
;sends_registrations= ; Will create an outbound registration object and an
|
||||||
|
; identify match for each host in remote_hosts (which
|
||||||
|
; must be specified).
|
||||||
|
; sends_auth must also be specified.
|
||||||
|
; (default: "no")
|
||||||
|
|
||||||
|
;sends_line_with_registrations= ; Setting this to true will cause the wizard to
|
||||||
|
; skip the creation of an identify object to match
|
||||||
|
; incoming requests to the endpoint and instead add the
|
||||||
|
; line and endpoint parameters to the outbound
|
||||||
|
; registration object.
|
||||||
|
; (default: "no")
|
||||||
|
|
||||||
|
;accepts_registrations= ; Will create an aor with dynamic contacts which will
|
||||||
|
; accept registrations.
|
||||||
|
; accepts_auth must also be specified.
|
||||||
|
; (default: "no")
|
||||||
|
|
||||||
|
;remote_hosts= ; A comma separated list of remote hosts in the form of
|
||||||
|
; <ipaddress | hostname>[:port] [,<ipaddress | hostname>[:port] ] ...
|
||||||
|
; If specified, a static contact for each host will be created
|
||||||
|
; in the aor. If accepts_registrations is no, an identify
|
||||||
|
; object is also created with a match line for each remote host.
|
||||||
|
; If an aor/contact or match/identify is explicitly supplied,
|
||||||
|
; remote_hosts will not be used to automatically create contacts
|
||||||
|
; or matches respectively.
|
||||||
|
; (default: "")
|
||||||
|
|
||||||
|
;outbound_proxy= ; Setting this is a shortcut for setting
|
||||||
|
; endpoint/outbound_proxy
|
||||||
|
; aor/outbound_proxy
|
||||||
|
; registration/outbound_proxy
|
||||||
|
|
||||||
|
;transport= ; The transport to use for the endpoint and registrations
|
||||||
|
; (default: the pjsip default)
|
||||||
|
|
||||||
|
;server_uri_pattern= ; The pattern used to construct the registration
|
||||||
|
; server_uri. The replaceable parameter ${REMOTE_HOST} isa
|
||||||
|
; available for use.
|
||||||
|
; (default: "sip:${REMOTE_HOST}")
|
||||||
|
|
||||||
|
;client_uri_pattern= ; The pattern used to construct the registration client_uri.
|
||||||
|
; The replaceable parameters ${REMOTE_HOST} and ${USERNAME}
|
||||||
|
; are available for use.
|
||||||
|
; (default: "sip:${USERNAME}@${REMOTE_HOST}")
|
||||||
|
|
||||||
|
;contact_pattern= ; The pattern used to construct the aor contact.
|
||||||
|
; The replaceable parameter ${REMOTE_HOST} is available
|
||||||
|
; for use.
|
||||||
|
; (default: "sip:${REMOTE_HOST}")
|
||||||
|
|
||||||
|
;has_phoneprov= ; Will create a phoneprov object.
|
||||||
|
; If yes, phoneprov/MAC must be specified.
|
||||||
|
; (default: "no")
|
||||||
|
|
||||||
|
;has_hint= ; Create hint and optionally a default application.
|
||||||
|
; (default: "no")
|
||||||
|
|
||||||
|
;hint_context ; Any hints created for this wizard will be placed in this
|
||||||
|
; context.
|
||||||
|
; (default: endpoint/context)
|
||||||
|
|
||||||
|
;hint_exten ; If specified, a PJSIP/<wizard_id> hint will be created
|
||||||
|
; for this extension in 'hint_context'.
|
||||||
|
; context.
|
||||||
|
; (default: none)
|
||||||
|
|
||||||
|
;hint_application ; If specified, an extension will be placed in 'hint_context'
|
||||||
|
; at priority 1 that calls this application. Could be any
|
||||||
|
; valid dialplan expression like
|
||||||
|
; "Gosub(stdexten,${EXTEN},1(${HINT}))"
|
||||||
|
; (default: "Dial(${HINT})")
|
||||||
|
|
||||||
|
;endpoint/<param> ; Any parameters to be passed directly to and validated
|
||||||
|
;aor/<param> ; by their respective objects.
|
||||||
|
;inbound_auth/<param>
|
||||||
|
;outbound_auth/<param>
|
||||||
|
;identify/<param>
|
||||||
|
;registration/<param>
|
||||||
|
;phoneprov/<param>
|
||||||
|
|
||||||
|
;type= ; Must be of type wizard (default: "")
|
||||||
62
test1/conf/asterisk/prometheus.conf
Executable file
62
test1/conf/asterisk/prometheus.conf
Executable file
@ -0,0 +1,62 @@
|
|||||||
|
;
|
||||||
|
; res_prometheus Module configuration for Asterisk
|
||||||
|
;
|
||||||
|
|
||||||
|
;
|
||||||
|
; This configuration file is consumed by res_prometheus, which
|
||||||
|
; provides the functionality for serving up Asterisk statistics to a
|
||||||
|
; Prometheus server.
|
||||||
|
;
|
||||||
|
; Because Prometheus scrapes statistics from HTTP servers, this module requires
|
||||||
|
; Asterisk's built-in HTTP server to be enabled and configured properly.
|
||||||
|
;
|
||||||
|
; Module Dependencies:
|
||||||
|
; only if Asterisk is build with pjproject bundled (default)
|
||||||
|
; * res_pjsip.so
|
||||||
|
; * res_pjsip_outbound_registration.so
|
||||||
|
|
||||||
|
; Settings that affect all statistic generation
|
||||||
|
[general]
|
||||||
|
enabled = no ; Enable/disable all statistic generation.
|
||||||
|
; Default is "no", as enabling this without
|
||||||
|
; proper securing of your Asterisk system
|
||||||
|
; may result in external systems learning
|
||||||
|
; a lot about your Asterisk system.
|
||||||
|
; Note #1: If Asterisk's HTTP server is
|
||||||
|
; disabled, this setting won't matter.
|
||||||
|
; Note #2: It is highly recommended that you
|
||||||
|
; set up Basic Auth and configure your
|
||||||
|
; Prometheus server to authenticate with
|
||||||
|
; Asterisk. Failing to do so will make it easy
|
||||||
|
; for external systems to scrape your Asterisk
|
||||||
|
; instance and learn things about your system
|
||||||
|
; that you may not want them to. While the
|
||||||
|
; metrics exposed by this module do not
|
||||||
|
; necessarily contain information that can
|
||||||
|
; lead to an exploit, an ounce of prevention
|
||||||
|
; goes a long way. Particularly for those out
|
||||||
|
; there who are exceedingly lax in updating
|
||||||
|
; your Asterisk system. You are updating on a
|
||||||
|
; regular cadence, aren't you???
|
||||||
|
core_metrics_enabled = yes ; Enable/disable core metrics. Core metrics
|
||||||
|
; include various properties such as the
|
||||||
|
; version of Asterisk, uptime, last reload
|
||||||
|
; time, and the overall time it takes to
|
||||||
|
; scrape metrics. Default is "yes"
|
||||||
|
uri = metrics ; The HTTP route to expose metrics on.
|
||||||
|
; Default is "metrics".
|
||||||
|
|
||||||
|
; auth_username = Asterisk ; If provided, Basic Auth will be enabled on
|
||||||
|
; the metrics route. Failure to provide both
|
||||||
|
; auth_username and auth_password will result
|
||||||
|
; in a module load error.
|
||||||
|
; auth_password = ; The password to use for Basic Auth. Note
|
||||||
|
; that I'm leaving this blank to prevent
|
||||||
|
; you from merely uncommenting the line and
|
||||||
|
; running with a config provided password.
|
||||||
|
; Because yes, people actually *do* that.
|
||||||
|
; I mean, if you're going to do that, just
|
||||||
|
; run unsecured. Fake security is usually
|
||||||
|
; worse than no security.
|
||||||
|
; auth_realm = ; Realm to use for authentication. Defaults
|
||||||
|
; to Asterisk Prometheus Metrics
|
||||||
47
test1/conf/asterisk/queuerules.conf
Executable file
47
test1/conf/asterisk/queuerules.conf
Executable file
@ -0,0 +1,47 @@
|
|||||||
|
|
||||||
|
[general]
|
||||||
|
|
||||||
|
; Look for queue rules in the queue_rules database table through RealTime. Note
|
||||||
|
; that this option is not strictly "RealTime", in the sense that the queue
|
||||||
|
; rules are only loaded and parsed during module load/reload. Queue rules
|
||||||
|
; must have a unique rule name and support relative min/max penalties.
|
||||||
|
;
|
||||||
|
; realtime_rules = yes
|
||||||
|
;
|
||||||
|
|
||||||
|
; It is possible to change the value of the QUEUE_MAX_PENALTY, QUEUE_MIN_PENALTY and QUEUE_RAISE_PENALTY
|
||||||
|
; channel variables in mid-call by defining rules in the queue for when to do so. This can allow for
|
||||||
|
; a call to be opened to more members or potentially a different set of members.
|
||||||
|
; The advantage to changing members this way as opposed to inserting the caller into a
|
||||||
|
; different queue with more members or reinserting the caller into the same queue with a different
|
||||||
|
; QUEUE_MAX_PENALTY or QUEUE_MIN_PENALTY set is that the caller does not lose his place in the queue.
|
||||||
|
;
|
||||||
|
; QUEUE_MAX_PENALTY, QUEUE_MIN_PENALTY and QUEUE_RAISE_PENALTY only apply to a queue call, and are only
|
||||||
|
; modified by these rules if they are initially set in the dialplan.
|
||||||
|
;
|
||||||
|
; If QUEUE_MIN_PENALTY is set, agents with a lower penalty value will not be considered for the caller.
|
||||||
|
; If QUEUE_MAX_PENALTY is set, agents with a higher penalty value will not be considered for the caller.
|
||||||
|
; If QUEUE_RAISE_PENALTY is set, agents with a lower penalty will be treated as having a penalty = QUEUE_RAISE_PENALTY.
|
||||||
|
;
|
||||||
|
; QUEUE_RAISE_PENALTY example:
|
||||||
|
; - Agent 1 has penalty 1
|
||||||
|
; - Agent 2 has penalty 2
|
||||||
|
; - the queue rule is set to:
|
||||||
|
; penaltychange => 30,,,2
|
||||||
|
;
|
||||||
|
; Prior to the 30 second mark, Agent 1 will take priority over Agent 2 for call distribution.
|
||||||
|
; After 30 seconds, Agent 1's priority is bumped to 2 by the penaltychange, so both agents are treated equally.
|
||||||
|
;
|
||||||
|
; Note: There is a limitation to these rules; a caller will follow the penaltychange rules for
|
||||||
|
; the queue that were defined at the time the caller entered the queue. If an update to the rules is
|
||||||
|
; made during the caller's stay in the queue, these will not be reflected for that caller.
|
||||||
|
;
|
||||||
|
; The syntax for these rules is
|
||||||
|
; penaltychange => <number of seconds into the call>,<absolute or relative change to QUEUE_MAX_PENALTY>[,absolute or relative change to QUEUE_MIN_PENALTY][,absolute or relative change to QUEUE_RAISE_PENALTY]
|
||||||
|
;
|
||||||
|
; Example:
|
||||||
|
; [myrule]
|
||||||
|
; penaltychange => 30,+3 ; 30 seconds into the call increase the QUEUE_MAX_PENALTY by 3, no change to QUEUE_MIN_PENALTY
|
||||||
|
; penaltychange => 60,10,5 ; 60 seconds into the call increase the QUEUE_MAX_PENALTY to 10 and increase the QUEUE_MIN_PENALTY to 5
|
||||||
|
; penaltychange => 75,,7 ; 75 seconds into the call keep the QUEUE_MAX_PENALTY the same and increase the QUEUE_MIN_PENALTY to 7
|
||||||
|
; penaltychange => 90,,,20 ; 90 seconds into the call leave QUEUE_MAX_PENALTY and QUEUE_MIN_PENALTY untouched and set QUEUE_RAISE_PENALTY to 20
|
||||||
582
test1/conf/asterisk/queues.conf
Executable file
582
test1/conf/asterisk/queues.conf
Executable file
@ -0,0 +1,582 @@
|
|||||||
|
[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 no.
|
||||||
|
;
|
||||||
|
;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
|
||||||
|
;
|
||||||
|
; 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=yes
|
||||||
|
;
|
||||||
|
; 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
|
||||||
|
;
|
||||||
|
; log-restricted-caller-id controls whether the Restricted Caller ID will be stored
|
||||||
|
; in the queue log.
|
||||||
|
; If log-restricted-caller-id=no then the Caller ID will be stripped if the Caller ID
|
||||||
|
; is restricted.
|
||||||
|
; Default is 'yes', which means the Caller ID is always stored.
|
||||||
|
;log-restricted-caller-id = yes
|
||||||
|
;
|
||||||
|
; force_longest_waiting_caller will cause app_queue to make sure callers are offered
|
||||||
|
; in order (longest waiting first), even for callers across multiple queues.
|
||||||
|
; Before a call is offered to an agent, an additional check is made to see if the agent
|
||||||
|
; is a member of another queue with a call that's been waiting longer. If so, the current
|
||||||
|
; call is not offered to the agent. The default value is 'no'.
|
||||||
|
;
|
||||||
|
;force_longest_waiting_caller = 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
|
||||||
|
; using the m option when calling the Queue application or if set
|
||||||
|
; directly on the channel using Set(CHANNEL(musicclass)=whatever) in the
|
||||||
|
; dialplan (the latter of which overrides everything).
|
||||||
|
;
|
||||||
|
;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
|
||||||
|
;
|
||||||
|
; An announcement may be specified which is played to the caller just
|
||||||
|
; before they are bridged with an agent. The default is to not play an
|
||||||
|
; announcement to the caller.
|
||||||
|
;
|
||||||
|
;queue-callerannounce = you-are-being-connected
|
||||||
|
;
|
||||||
|
; A strategy may be specified. Valid strategies include:
|
||||||
|
;
|
||||||
|
; ringall - ring all available channels until one answers (default)
|
||||||
|
; leastrecent - ring interface which was least recently hung up by this queue
|
||||||
|
; fewestcalls - ring the one with fewest completed calls from this queue
|
||||||
|
; random - ring random interface
|
||||||
|
; rrmemory - round robin with memory, remember where we left off last ring pass
|
||||||
|
; rrordered - same as rrmemory, except the queue member order from config file
|
||||||
|
; is preserved
|
||||||
|
; linear - rings interfaces in the order specified in this configuration file.
|
||||||
|
; If you use dynamic members, the members will be rung in the order in
|
||||||
|
; which they were added
|
||||||
|
; wrandom - rings random interface, but uses the member's penalty as a weight
|
||||||
|
; when calculating their metric. So a member with penalty 0 will have
|
||||||
|
; a metric somewhere between 0 and 1000, and a member with penalty 1 will
|
||||||
|
; have a metric between 0 and 2000, and a member with penalty 2 will have
|
||||||
|
; a metric between 0 and 3000. Please note, if using this strategy, the member
|
||||||
|
; penalty is not the same as when using other queue strategies. It is ONLY used
|
||||||
|
; as a weight for calculating metric.
|
||||||
|
;
|
||||||
|
;strategy = ringall
|
||||||
|
;
|
||||||
|
; Second settings for service level (default 0)
|
||||||
|
; Used for service level statistics (calls answered within service level time frame)
|
||||||
|
; There are 2 Service Level Performance Calculations SL and SL2
|
||||||
|
; SL = (total calls answered within threshold / total calls answered) * 100
|
||||||
|
; SL2 = ((calls answered within threshold + calls abandoned within threshold) / (answered calls + abandoned calls)) * 100
|
||||||
|
;servicelevel = 60
|
||||||
|
;
|
||||||
|
; If a 'context' is specified, and a caller enters an extension that
|
||||||
|
; matches an extension within that context, they will be taken out of
|
||||||
|
; the queue and sent to that extension.
|
||||||
|
;
|
||||||
|
;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=app
|
||||||
|
; 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 indefinitely 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: Member will be paused in all queues he/she is a member
|
||||||
|
;autopause=yes
|
||||||
|
;
|
||||||
|
; Autopausedelay delay autopause for autopausedelay seconds from the
|
||||||
|
; last call if a member has not taken a call the delay has no effect.
|
||||||
|
;autopausedelay=60
|
||||||
|
;
|
||||||
|
; Autopausebusy controls whether or not a queue member is set as paused
|
||||||
|
; automatically upon the member device reporting busy. The autopausedelay
|
||||||
|
; option applies. Defaults to 'no'.
|
||||||
|
;autopausebusy=no
|
||||||
|
;
|
||||||
|
; Autopauseunavail controls whether or not a queue member is set as paused
|
||||||
|
; automatically upon the member device reporting congestion. The autopausedely
|
||||||
|
; option applies. Defaults to 'no'.
|
||||||
|
;autopauseunavail=no
|
||||||
|
;
|
||||||
|
; Maximum number of people waiting in the queue (0 for unlimited)
|
||||||
|
;
|
||||||
|
;maxlen = 0
|
||||||
|
;
|
||||||
|
; Note: for below queue channel options (setinterfacevar, setqueueentryvar,
|
||||||
|
; setqueuevar) if the caller channel is a local channel and optimizations
|
||||||
|
; is enabled then after optimization has occurred only the queue member
|
||||||
|
; channel will contain the variables.
|
||||||
|
;
|
||||||
|
; If set to yes, just prior to the caller being bridged with a queue member
|
||||||
|
; the following variables will be set on the caller and queue member channels:
|
||||||
|
; MEMBERINTERFACE is the interface name (eg. Agent/1234)
|
||||||
|
; MEMBERNAME is the member name (eg. Joe Soap)
|
||||||
|
; MEMBERCALLS is the number of calls that interface has taken,
|
||||||
|
; MEMBERLASTCALL is the last time the member took a call.
|
||||||
|
; MEMBERPENALTY is the penalty of the member
|
||||||
|
; MEMBERDYNAMIC indicates if a member is dynamic or not
|
||||||
|
; MEMBERREALTIME indicates if a member is realtime or not
|
||||||
|
;
|
||||||
|
;setinterfacevar=no
|
||||||
|
;
|
||||||
|
; If set to yes, just prior to the caller being bridged with a queue member
|
||||||
|
; the following variables will be set on the caller and queue member channels:
|
||||||
|
; QEHOLDTIME callers hold time
|
||||||
|
; QEORIGINALPOS original position of the caller in the queue
|
||||||
|
;
|
||||||
|
;setqueueentryvar=no
|
||||||
|
;
|
||||||
|
; If set to yes, the following variables will be set
|
||||||
|
; just prior to the caller being bridged with a queue member (set on the
|
||||||
|
; caller and queue member channels) and just prior to the caller
|
||||||
|
; leaving the queue
|
||||||
|
; QUEUENAME name of the queue
|
||||||
|
; QUEUEMAX maxmimum number of calls allowed
|
||||||
|
; QUEUESTRATEGY the strategy of the queue;
|
||||||
|
; QUEUECALLS number of calls currently in the queue
|
||||||
|
; QUEUEHOLDTIME current average hold time
|
||||||
|
; QUEUECOMPLETED number of completed calls for the queue
|
||||||
|
; QUEUEABANDONED number of abandoned calls
|
||||||
|
; QUEUESRVLEVEL queue service level
|
||||||
|
; QUEUESRVLEVELPERF current service level performance
|
||||||
|
;
|
||||||
|
;setqueuevar=no
|
||||||
|
|
||||||
|
; if set, run this macro when connected to the queue member
|
||||||
|
; you can override this macro by setting the macro option on
|
||||||
|
; the queue application
|
||||||
|
;
|
||||||
|
;membermacro=macro_name[,arg1[,...][,argN]]
|
||||||
|
|
||||||
|
; if set, run this gosub when connected to the queue member
|
||||||
|
; you can override this gosub by setting the gosub option on
|
||||||
|
; the queue application
|
||||||
|
;
|
||||||
|
;membergosub=gosub_context_name[,arg1[,...][,argN]]
|
||||||
|
|
||||||
|
; How often to announce queue position and/or estimated
|
||||||
|
; holdtime to caller (0=off)
|
||||||
|
; Note that this value is ignored if the caller's queue
|
||||||
|
; position has changed (see min-announce-frequency)
|
||||||
|
;
|
||||||
|
;announce-frequency = 90
|
||||||
|
;
|
||||||
|
; The absolute minimum time between the start of each
|
||||||
|
; queue position and/or estimated holdtime announcement
|
||||||
|
; This is useful for avoiding constant announcements
|
||||||
|
; when the caller's queue position is changing frequently
|
||||||
|
; (see announce-frequency)
|
||||||
|
;
|
||||||
|
;min-announce-frequency = 15
|
||||||
|
;
|
||||||
|
; How often to make any periodic announcement (see periodic-announce)
|
||||||
|
;
|
||||||
|
;periodic-announce-frequency=60
|
||||||
|
;
|
||||||
|
; If given indicates the number of seconds after entering the queue the first
|
||||||
|
; periodic announcement should be played. The default (and historic) behavior
|
||||||
|
; is to play the first periodic announcement at periodic-announce-frequency
|
||||||
|
; seconds after entering the queue.
|
||||||
|
;
|
||||||
|
;periodic-announce-startdelay=10
|
||||||
|
;
|
||||||
|
; Should the periodic announcements be played in a random order? Default is no.
|
||||||
|
;
|
||||||
|
;random-periodic-announce=no
|
||||||
|
;
|
||||||
|
; If set to yes, the periodic announcement frequency will be timed from the end
|
||||||
|
; of each announcement rather than from the start of each announcement. This
|
||||||
|
; defaults to off.
|
||||||
|
;
|
||||||
|
;relative-periodic-announce=yes
|
||||||
|
;
|
||||||
|
; Should we include estimated hold time in position announcements?
|
||||||
|
; Either yes, no, or only once.
|
||||||
|
; Hold time will be announced as the estimated time.
|
||||||
|
;
|
||||||
|
;announce-holdtime = yes|no|once
|
||||||
|
;
|
||||||
|
; Queue position announce?
|
||||||
|
; Valid values are "yes," "no," "limit," or "more." If set to "no," then the caller's position will
|
||||||
|
; never be announced. If "yes," then the caller's position in the queue will be announced
|
||||||
|
; to the caller. If set to "more," then if the number of callers is more than the number
|
||||||
|
; specified by the announce-position-limit option, then the caller will hear that there
|
||||||
|
; are more than that many callers waiting (i.e. if a caller number 6 is in a queue with the
|
||||||
|
; announce-position-limit set to 5, then that caller will hear that there are more than 5
|
||||||
|
; callers waiting). If set to "limit," then only callers within the limit specified by announce-position-limit
|
||||||
|
; will have their position announced.
|
||||||
|
;
|
||||||
|
;announce-position = yes
|
||||||
|
;
|
||||||
|
; If enabled, play announcements to the first user waiting in the Queue. This may mean
|
||||||
|
; that announcements are played when an agent attempts to connect to the waiting user,
|
||||||
|
; which may delay the time before the agent and the user can communicate. Disabled by
|
||||||
|
; default.
|
||||||
|
;
|
||||||
|
; announce-to-first-user = no
|
||||||
|
;
|
||||||
|
; If you have specified "limit" or "more" for the announce-position option, then the following
|
||||||
|
; value is what is used to determine what announcement to play to waiting callers. If you have
|
||||||
|
; set the announce-position option to anything else, then this will have no bearing on queue operation
|
||||||
|
;
|
||||||
|
;announce-position-limit = 5
|
||||||
|
;
|
||||||
|
; What's the rounding time for the seconds?
|
||||||
|
; If this is non-zero, then we announce the seconds as well as the minutes
|
||||||
|
; rounded to this value.
|
||||||
|
; Valid values are 0, 5, 10, 15, 20, and 30.
|
||||||
|
;
|
||||||
|
; announce-round-seconds = 10
|
||||||
|
;
|
||||||
|
; Only announce the caller's position if it has improved since the last announcement.
|
||||||
|
; The default value is no.
|
||||||
|
;
|
||||||
|
; announce-position-only-up = yes
|
||||||
|
;
|
||||||
|
; Use these sound files in making position/holdtime announcements. The
|
||||||
|
; defaults are as listed below -- change only if you need to.
|
||||||
|
;
|
||||||
|
; Keep in mind that you may also prevent a sound from being played if you
|
||||||
|
; explicitly set a sound to be an empty string. For example, if you want to
|
||||||
|
; prevent the queue from playing queue-thankyou, you may set the sound using
|
||||||
|
; the following line:
|
||||||
|
;
|
||||||
|
; queue-thankyou=
|
||||||
|
;
|
||||||
|
; ("You are now first in line.")
|
||||||
|
;queue-youarenext = queue-youarenext
|
||||||
|
; ("There are")
|
||||||
|
;queue-thereare = queue-thereare
|
||||||
|
; ("calls waiting.")
|
||||||
|
;queue-callswaiting = queue-callswaiting
|
||||||
|
; ("Currently there are more than")
|
||||||
|
;queue-quantity1 = queue-quantity1
|
||||||
|
; ("callers waiting to speak with a representative")
|
||||||
|
;queue-quantity2 = queue-quantity2
|
||||||
|
; ("The current est. holdtime is")
|
||||||
|
;queue-holdtime = queue-holdtime
|
||||||
|
; ("minute.")
|
||||||
|
;queue-minute = queue-minute
|
||||||
|
; ("minutes.")
|
||||||
|
;queue-minutes = queue-minutes
|
||||||
|
; ("seconds.")
|
||||||
|
;queue-seconds = queue-seconds
|
||||||
|
; ("Thank you for your patience.")
|
||||||
|
;queue-thankyou = queue-thankyou
|
||||||
|
; ("Hold time")
|
||||||
|
;queue-reporthold = queue-reporthold
|
||||||
|
; ("All reps busy / wait for next")
|
||||||
|
;periodic-announce = queue-periodic-announce
|
||||||
|
;
|
||||||
|
; A set of periodic announcements can be defined by separating
|
||||||
|
; periodic announcements to reproduce by commas. For example:
|
||||||
|
;periodic-announce = queue-periodic-announce,your-call-is-important,please-wait
|
||||||
|
;
|
||||||
|
; The announcements will be played in the order in which they are defined. After
|
||||||
|
; playing the last announcement, the announcements begin again from the beginning.
|
||||||
|
;
|
||||||
|
; Calls may be recorded using Asterisk's monitor/MixMonitor resource
|
||||||
|
; This can be enabled from within the Queue application, starting recording
|
||||||
|
; when the call is actually picked up; thus, only successful calls are
|
||||||
|
; recorded, and you are not recording while people are listening to MOH.
|
||||||
|
; To enable monitoring, simply specify "monitor-format"; it will be disabled
|
||||||
|
; otherwise.
|
||||||
|
;
|
||||||
|
; You can specify the monitor filename with by calling
|
||||||
|
; Set(MONITOR_FILENAME=foo)
|
||||||
|
; Otherwise it will use MONITOR_FILENAME=${UNIQUEID}
|
||||||
|
;
|
||||||
|
; Pick any one valid extension for monitor format recording. If you leave
|
||||||
|
; monitor-format commented out, it will not record calls.
|
||||||
|
;
|
||||||
|
; monitor-format = gsm|wav|wav49
|
||||||
|
;
|
||||||
|
; Monitor Type
|
||||||
|
; By setting monitor-type = MixMonitor, when specifying monitor-format
|
||||||
|
; to enable recording of queue member conversations, app_queue will
|
||||||
|
; now use the new MixMonitor application instead of Monitor so
|
||||||
|
; the concept of "joining/mixing" the in/out files now goes away
|
||||||
|
; when this is enabled. If you do not specify or comment out this option,
|
||||||
|
; it will default to the old 'Monitor' behavior to keep backward
|
||||||
|
; compatibility.
|
||||||
|
;
|
||||||
|
; monitor-type = MixMonitor
|
||||||
|
;
|
||||||
|
; ----------------------- TYPE MIXMONITOR OPTIONS -----------------------------
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; You can specify the options supplied to MixMonitor by calling (from the dialplan)
|
||||||
|
; Set(MONITOR_OPTIONS=av(<x>)V(<x>)W(<x>))
|
||||||
|
; The 'b' option for MixMonitor (only save audio to the file while bridged) is
|
||||||
|
; implied.
|
||||||
|
;
|
||||||
|
; You can specify a post recording command to be executed after the end of
|
||||||
|
; recording by calling (from the dialplan)
|
||||||
|
;
|
||||||
|
; Set(MONITOR_EXEC=mv /var/spool/asterisk/monitor/^{MONITOR_FILENAME} /tmp/^{MONITOR_FILENAME})
|
||||||
|
;
|
||||||
|
; or
|
||||||
|
;
|
||||||
|
; Set(MONITOR_EXEC=mv /var/spool/asterisk/monitor/^{MIXMONITOR_FILENAME} /tmp/^{MIXMONITOR_FILENAME})
|
||||||
|
;
|
||||||
|
; If you choose to use the latter, you will not be able to switch the monitor-type back to Monitor
|
||||||
|
; without changing this in the dialplan.
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; The command specified within the contents of MONITOR_EXEC will be executed when
|
||||||
|
; the recording is over. Any strings matching ^{X} will be unescaped to ${X} and
|
||||||
|
; all variables will be evaluated just prior to recording being started.
|
||||||
|
;
|
||||||
|
; The contents of MONITOR_FILENAME will also be unescaped from ^{X} to ${X} and
|
||||||
|
; all variables will be evaluated just prior to recording being started.
|
||||||
|
;
|
||||||
|
; ---------------------- Queue Empty Options ----------------------------------
|
||||||
|
;
|
||||||
|
; Asterisk has provided the "joinempty" and "leavewhenempty" options for a while
|
||||||
|
; with tenuous definitions of what they actually mean. The "joinempty" option controls
|
||||||
|
; whether a caller may join a queue depending on several factors of member availability.
|
||||||
|
; Similarly, then leavewhenempty option controls whether a caller may remain in a queue
|
||||||
|
; he has already joined. Both options take a comma-separated list of factors which
|
||||||
|
; contribute towards whether a caller may join/remain in the queue. The list of
|
||||||
|
; factors which contribute to these option is as follows:
|
||||||
|
;
|
||||||
|
; paused: a member is not considered available if he is paused
|
||||||
|
; penalty: a member is not considered available if his penalty is less than QUEUE_MAX_PENALTY
|
||||||
|
; inuse: a member is not considered available if he is currently on a call
|
||||||
|
; ringing: a member is not considered available if his phone is currently ringing
|
||||||
|
; unavailable: This applies mainly to Agent channels. If the agent is a member of the queue
|
||||||
|
; but has not logged in, then do not consider the member to be available
|
||||||
|
; invalid: Do not consider a member to be available if he has an "invalid" device state.
|
||||||
|
; This generally is caused by an error condition in the member's channel driver.
|
||||||
|
; unknown: Do not consider a member to be available if we are unable to determine the member's
|
||||||
|
; current device state.
|
||||||
|
; wrapup: A member is not considered available if he is currently in his wrapuptime after
|
||||||
|
; taking a call.
|
||||||
|
;
|
||||||
|
; For the "joinempty" option, when a caller attempts to enter a queue, the members of that
|
||||||
|
; queue are examined. If all members are deemed to be unavailable due to any of the conditions
|
||||||
|
; listed for the "joinempty" option, then the caller will be unable to enter the queue. For the
|
||||||
|
; "leavewhenempty" option, the state of the members of the queue are checked periodically during
|
||||||
|
; the caller's stay in the queue. If all of the members are unavailable due to any of the above
|
||||||
|
; conditions, then the caller will be removed from the queue.
|
||||||
|
;
|
||||||
|
; Some examples:
|
||||||
|
;
|
||||||
|
;joinempty = paused,inuse,invalid
|
||||||
|
;
|
||||||
|
; A caller will not be able to enter a queue if at least one member cannot be found
|
||||||
|
; who is not paused, on the phone, or who has an invalid device state.
|
||||||
|
;
|
||||||
|
;leavewhenempty = inuse,ringing
|
||||||
|
;
|
||||||
|
; A caller will be removed from the queue if at least one member cannot be found
|
||||||
|
; who is not on the phone, or whose phone is not ringing.
|
||||||
|
;
|
||||||
|
; For the sake of backwards-compatibility, the joinempty and leavewhenempty
|
||||||
|
; options also accept the strings "yes" "no" "strict" and "loose". The following
|
||||||
|
; serves as a translation for these values:
|
||||||
|
;
|
||||||
|
; yes - (empty) for joinempty; penalty,paused,invalid for leavewhenempty
|
||||||
|
; no - penalty,paused,invalid for joinempty; (empty) for leavewhenempty
|
||||||
|
; strict - penalty,paused,invalid,unavailable
|
||||||
|
; loose - penalty,invalid
|
||||||
|
;
|
||||||
|
|
||||||
|
; If you wish to report the caller's hold time to the member before they are
|
||||||
|
; connected to the caller, set this to yes.
|
||||||
|
;
|
||||||
|
; reportholdtime = no
|
||||||
|
;
|
||||||
|
; If you want the queue to avoid sending calls to members whose devices are
|
||||||
|
; known to be 'in use' (via the channel driver supporting that device state)
|
||||||
|
; uncomment this option. This can be controlled on a per member basis by
|
||||||
|
; setting 'ringinuse' on that member. This can be done in the member definition,
|
||||||
|
; in the 'ringinuse' field on a realtime member, via the QUEUE_MEMBER dialplan
|
||||||
|
; function, or with CLI/AMI. By default, the per member value will be the same
|
||||||
|
; as the queue's ringinuse value if it isn't set on the member deliberately.
|
||||||
|
; (Note: only the SIP channel driver currently is able to report 'in use'.)
|
||||||
|
; ringinuse = no
|
||||||
|
;
|
||||||
|
; If you wish to have a delay before the member is connected to the caller (or
|
||||||
|
; before the member hears any announcement messages), set this to the number of
|
||||||
|
; seconds to delay.
|
||||||
|
;
|
||||||
|
; memberdelay = 0
|
||||||
|
;
|
||||||
|
; If timeoutrestart is set to yes, then the timeout for an agent to answer is
|
||||||
|
; reset if a BUSY or CONGESTION is received. This can be useful if agents
|
||||||
|
; are able to cancel a call with reject or similar.
|
||||||
|
;
|
||||||
|
; timeoutrestart = no
|
||||||
|
;
|
||||||
|
; If you wish to implement a rule defined in queuerules.conf (see
|
||||||
|
; configs/queuerules.conf.sample from the asterisk source directory for
|
||||||
|
; more information about penalty rules) by default, you may specify this
|
||||||
|
; by setting defaultrule to the rule's name
|
||||||
|
;
|
||||||
|
; defaultrule = myrule
|
||||||
|
;
|
||||||
|
; Each member of this call queue is listed on a separate line in
|
||||||
|
; the form technology/dialstring. "member" means a normal member of a
|
||||||
|
; queue. An optional penalty may be specified after a comma, such that
|
||||||
|
; entries with higher penalties are considered last. An optional member
|
||||||
|
; name may also be specified after a second comma, which is used in log
|
||||||
|
; messages as a "friendly name". Multiple interfaces may share a single
|
||||||
|
; member name. An optional state interface may be specified after a third
|
||||||
|
; comma. This interface will be the one for which app_queue receives device
|
||||||
|
; state notifications, even though the first interface specified is the one
|
||||||
|
; that is actually called.
|
||||||
|
;
|
||||||
|
; A hint can also be used in place of the state interface using the format
|
||||||
|
; hint:<extension>@<context>. If no context is specified then 'default' will
|
||||||
|
; be used.
|
||||||
|
;
|
||||||
|
; It is important to ensure that channel drivers used for members are loaded
|
||||||
|
; before app_queue.so itself or they may be marked invalid until reload. This
|
||||||
|
; can be accomplished by explicitly listing them in modules.conf before
|
||||||
|
; app_queue.so. Additionally, if you use Local channels as queue members, you
|
||||||
|
; must also preload pbx_config.so and chan_local.so (or pbx_ael.so, pbx_lua.so,
|
||||||
|
; or pbx_realtime.so, depending on how your dialplan is configured).
|
||||||
|
;
|
||||||
|
; syntax: member => interface,[,penalty][,membername][,state_interface][,ringinuse][,wrapuptime]
|
||||||
|
;
|
||||||
|
;member => DAHDI/1
|
||||||
|
;member => DAHDI/2,10
|
||||||
|
;member => DAHDI/3,10,Bob Johnson
|
||||||
|
;member => Local/1001@agents,0,May Flowers,Agent:1001
|
||||||
|
;member => Local/1002@agents,0,John Doe,Agent:1002
|
||||||
|
;member => Local/1000@default,0,John Smith,SIP/1000
|
||||||
|
;member => Local/2000@default,0,Lorem Ipsum,SIP/2000,no
|
||||||
43
test1/conf/asterisk/res_config_mysql.conf
Executable file
43
test1/conf/asterisk/res_config_mysql.conf
Executable file
@ -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
|
||||||
18
test1/conf/asterisk/res_config_odbc.conf
Executable file
18
test1/conf/asterisk/res_config_odbc.conf
Executable file
@ -0,0 +1,18 @@
|
|||||||
|
;
|
||||||
|
; Sample configuration for res_config_odbc
|
||||||
|
;
|
||||||
|
; Most configuration occurs in the system ODBC configuration files,
|
||||||
|
; res_odbc.conf, and extconfig.conf. You only need this file in the
|
||||||
|
; event that you want to influence default sorting behavior.
|
||||||
|
;
|
||||||
|
|
||||||
|
;[general]
|
||||||
|
; When multiple rows are requested by realtime, res_config_odbc will add an
|
||||||
|
; explicit ORDER BY clause to the generated SELECT statement. To prevent
|
||||||
|
; that from occuring, set order_multi_row_results_by_initial_column to 'no'.
|
||||||
|
;
|
||||||
|
;order_multi_row_results_by_initial_column=no
|
||||||
|
[asterisk]
|
||||||
|
enabled => yes
|
||||||
|
dsn => asterisk
|
||||||
|
pre-connect => yes
|
||||||
35
test1/conf/asterisk/res_config_sqlite3.conf
Executable file
35
test1/conf/asterisk/res_config_sqlite3.conf
Executable file
@ -0,0 +1,35 @@
|
|||||||
|
; Define a realtime database name to use in extconfig.conf
|
||||||
|
;
|
||||||
|
;[asterisk]
|
||||||
|
;dbfile => /var/lib/asterisk/realtime.sqlite3
|
||||||
|
;
|
||||||
|
; debug - Turn on debugging information
|
||||||
|
;debug=yes
|
||||||
|
;
|
||||||
|
; requirements - At startup, each realtime family will make requirements
|
||||||
|
; on the backend. There are several strategies for handling requirements:
|
||||||
|
; warn - Warn if the required column does not exist.
|
||||||
|
; createclose - Create columns as close to the requirements as possible.
|
||||||
|
; createchar - Create char columns only
|
||||||
|
;
|
||||||
|
;requirements=warn
|
||||||
|
;
|
||||||
|
; batch - SQLite 3 write performance can be greatly improved by wrapping
|
||||||
|
; multiple writes in transactions. This option specifies the duration in
|
||||||
|
; milliseconds of auto-generated transactions. Any changes made during an
|
||||||
|
; unfinished transaction will be immediately available to the same database
|
||||||
|
; connection, but any external connections could see a delay up to the value
|
||||||
|
; of this setting. It is also possible that if asterisk crashes, any changes
|
||||||
|
; made during this time could be lost. Due to the nearly 100x performance
|
||||||
|
; benefit, the default is 100 ms. Set to 0 to disable batching.
|
||||||
|
;
|
||||||
|
; PLEASE NOTE: If you need to write to the database from another connection
|
||||||
|
; you will need to set batch=0 as the transactions will cause the database
|
||||||
|
; to lock for writing.
|
||||||
|
;
|
||||||
|
;batch=1000
|
||||||
|
;
|
||||||
|
; busy timeout - timeout in miliseconds to stop waiting for locked database.
|
||||||
|
; More info at https://www.sqlite.org/c3ref/busy_timeout.html
|
||||||
|
;
|
||||||
|
;busy_timeout=1000
|
||||||
31
test1/conf/asterisk/res_corosync.conf
Executable file
31
test1/conf/asterisk/res_corosync.conf
Executable file
@ -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
|
||||||
|
;
|
||||||
9
test1/conf/asterisk/res_curl.conf
Executable file
9
test1/conf/asterisk/res_curl.conf
Executable file
@ -0,0 +1,9 @@
|
|||||||
|
;
|
||||||
|
; CURLOPT global settings (mostly set for realtime)
|
||||||
|
;
|
||||||
|
[globals]
|
||||||
|
;proxy=myproxy.example.com
|
||||||
|
proxytype=http
|
||||||
|
proxyport=8001
|
||||||
|
;proxyuserpwd=asterisk:asteriskrocks
|
||||||
|
;failurecodes=404,408,503
|
||||||
32
test1/conf/asterisk/res_fax.conf
Executable file
32
test1/conf/asterisk/res_fax.conf
Executable file
@ -0,0 +1,32 @@
|
|||||||
|
; Generic Fax Application configuration
|
||||||
|
|
||||||
|
[general]
|
||||||
|
; Maximum Transmission Rate
|
||||||
|
; Possible values are { 2400 | 4800 | 7200 | 9600 | 12000 | 14400 }
|
||||||
|
; Set this value to the maximum desired transfer rate. Default: 14400
|
||||||
|
;maxrate=14400
|
||||||
|
|
||||||
|
; Minimum Transmission Rate
|
||||||
|
; Possible values are { 2400 | 4800 | 7200 | 9600 | 12000 | 14400 }
|
||||||
|
; Set this value to the minimum desired transfer rate. Default: 4800
|
||||||
|
;minrate=4800
|
||||||
|
|
||||||
|
; Send Progress/Status events to manager session
|
||||||
|
; Manager events with 'call' class permissions will receive events indicating the
|
||||||
|
; steps to initiate a fax session. Fax completion events are always sent to manager
|
||||||
|
; sessions with 'call' class permissions, regardless of the value of this option.
|
||||||
|
; Default: no
|
||||||
|
statusevents=yes
|
||||||
|
|
||||||
|
; modem capabilities
|
||||||
|
; Possible values are { v17 | v27 | v29 }
|
||||||
|
; Set this value to modify the default modem options. Default: v17,v27,v29
|
||||||
|
;modems=v17,v27,v29
|
||||||
|
|
||||||
|
; Enable/disable T.30 ECM (error correction mode) by default.
|
||||||
|
; Default: Enabled
|
||||||
|
;ecm=yes
|
||||||
|
|
||||||
|
; T.38 Negotiation Timeout in milliseconds
|
||||||
|
; Default: 5000
|
||||||
|
t38timeout=5000
|
||||||
69
test1/conf/asterisk/res_http_media_cache.conf
Executable file
69
test1/conf/asterisk/res_http_media_cache.conf
Executable file
@ -0,0 +1,69 @@
|
|||||||
|
;
|
||||||
|
; Sample configuration for res_http_media_cache
|
||||||
|
;
|
||||||
|
; res_http_media_cache is the HTTP backend for the core media cache. The
|
||||||
|
; following options can be used to tune the behavior of the implementation
|
||||||
|
; or left as default.
|
||||||
|
;
|
||||||
|
; See the module's and cURL's documentation for the exact meaning of these
|
||||||
|
; options.
|
||||||
|
|
||||||
|
|
||||||
|
[general]
|
||||||
|
; Maximum time in seconds the transfer is allowed to complete in.
|
||||||
|
;
|
||||||
|
; See https://curl.se/libcurl/c/CURLOPT_TIMEOUT.html for details.
|
||||||
|
;
|
||||||
|
;timeout_secs = 180
|
||||||
|
|
||||||
|
|
||||||
|
; The HTTP User-Agent to use for requests.
|
||||||
|
;
|
||||||
|
; See https://curl.se/libcurl/c/CURLOPT_USERAGENT.html for details.
|
||||||
|
;
|
||||||
|
;user_agent = asterisk-libcurl-agent/1.0
|
||||||
|
|
||||||
|
|
||||||
|
; Follow HTTP 3xx redirects on requests. This can be combined with the
|
||||||
|
; max_redirects option to limit the number of times a redirect will be
|
||||||
|
; followed per request.
|
||||||
|
;
|
||||||
|
; See https://curl.se/libcurl/c/CURLOPT_FOLLOWLOCATION.html for details.
|
||||||
|
;
|
||||||
|
;follow_location = false
|
||||||
|
|
||||||
|
|
||||||
|
; The maximum number of redirects to follow.
|
||||||
|
;
|
||||||
|
; See https://curl.se/libcurl/c/CURLOPT_MAXREDIRS.html for details.
|
||||||
|
;
|
||||||
|
;max_redirects = 8
|
||||||
|
|
||||||
|
; The HTTP/HTTPS proxy to use for requests. Leave unspecified to not use
|
||||||
|
; a proxy. This can be a URL with scheme, host and port.
|
||||||
|
;
|
||||||
|
; See https://curl.se/libcurl/c/CURLOPT_PROXY.html for details.
|
||||||
|
;
|
||||||
|
;proxy = https://localhost:1234
|
||||||
|
|
||||||
|
|
||||||
|
; The life-time for DNS cache entries.
|
||||||
|
;
|
||||||
|
; See https://curl.se/libcurl/c/CURLOPT_DNS_CACHE_TIMEOUT.html for details.
|
||||||
|
;
|
||||||
|
;dns_cache_timeout_secs = 60
|
||||||
|
|
||||||
|
|
||||||
|
; The comma separated list of allowed protocols for the request. Available with
|
||||||
|
; cURL version 7.85.0 or later.
|
||||||
|
; See https://curl.se/libcurl/c/CURLOPT_PROTOCOLS_STR.html for details.
|
||||||
|
;
|
||||||
|
;protocols = http,https
|
||||||
|
|
||||||
|
; The comma separated list of allowed protocols for redirects. Available with
|
||||||
|
; cURL version 7.85.0 or later. This can be used to prevent a redirect from
|
||||||
|
; a protocol like HTTPS to another supported protocol of cURL.
|
||||||
|
;
|
||||||
|
; See https://curl.se/libcurl/c/CURLOPT_REDIR_PROTOCOLS_STR.html for details.
|
||||||
|
;
|
||||||
|
;redirect_protocols = http,https
|
||||||
198
test1/conf/asterisk/res_ldap.conf
Executable file
198
test1/conf/asterisk/res_ldap.conf
Executable file
@ -0,0 +1,198 @@
|
|||||||
|
;
|
||||||
|
; Configuration file for res_config_ldap
|
||||||
|
;
|
||||||
|
|
||||||
|
; Realtime configuration
|
||||||
|
; ----------------------
|
||||||
|
; In order to use this module, you start
|
||||||
|
; in extconfig.conf with a configuration like this:
|
||||||
|
;
|
||||||
|
; sippeers = ldap,"dc=myDomain,dc=myDomainExt",sip
|
||||||
|
; extensions = ldap,"dc=myDomain,dc=myDomainExt",extensions
|
||||||
|
; sip.conf = ldap,"dc=myDomain,dc=myDomainExt",config
|
||||||
|
;
|
||||||
|
; In the case of LDAP the last keyword in each line above specifies
|
||||||
|
; a section in this file.
|
||||||
|
;
|
||||||
|
; LDAP schema and ldif files can be located in contrib/scripts.
|
||||||
|
|
||||||
|
; TLS support
|
||||||
|
; -----------
|
||||||
|
; Note that you can configure an ldaps: url here to get TLS support.
|
||||||
|
; Detailed configuration of certificates and supported CAs is done in your
|
||||||
|
; ldap.conf file for OpenLDAP clients on your system.
|
||||||
|
; This requires that you have OpenLDAP libraries compiled with TLS support
|
||||||
|
|
||||||
|
; *********************************************************************************
|
||||||
|
; NOTE: res_ldap.conf should be chmod 600 because it contains the plain-text LDAP
|
||||||
|
; password to an account with WRITE access to the asterisk configuration.
|
||||||
|
; *********************************************************************************
|
||||||
|
|
||||||
|
[_general]
|
||||||
|
;
|
||||||
|
; Specify one of either host and port OR url. URL is preferred, as you can
|
||||||
|
; use more options.
|
||||||
|
;host=192.168.1.1 ; LDAP host
|
||||||
|
;port=389
|
||||||
|
;url=ldap://ldap3.mydomain.com:3890
|
||||||
|
;protocol=3 ; Version of the LDAP protocol to use; default is 3.
|
||||||
|
;basedn=dc=example,dc=tld ; Base DN
|
||||||
|
;user=cn=asterisk,dc=example,dc=tld ; Bind DN
|
||||||
|
;pass=MyPassword ; Bind password
|
||||||
|
|
||||||
|
; Configuration Table
|
||||||
|
[config]
|
||||||
|
;
|
||||||
|
; additionalFilter - This specifies an additional set of criteria to be used
|
||||||
|
; when querying the LDAP server.
|
||||||
|
;
|
||||||
|
additionalFilter=(objectClass=AstConfig)
|
||||||
|
;
|
||||||
|
; Attributes mapping (asterisk variable name = ldap attribute name)
|
||||||
|
; When Asterisk requests the variable by the name of the value on the left,
|
||||||
|
; this module will look up the attribute listed on the right.
|
||||||
|
;
|
||||||
|
filename = AstConfigFilename
|
||||||
|
category = AstConfigCategory
|
||||||
|
variable_name = AstConfigVariableName
|
||||||
|
variable_value = AstConfigVariableValue
|
||||||
|
cat_metric = AstConfigCategoryMetric
|
||||||
|
commented = AstConfigCommented
|
||||||
|
|
||||||
|
;
|
||||||
|
; Extensions Table
|
||||||
|
;
|
||||||
|
[extensions]
|
||||||
|
context = AstExtensionContext
|
||||||
|
exten = AstExtensionExten
|
||||||
|
priority = AstExtensionPriority
|
||||||
|
app = AstExtensionApplication
|
||||||
|
appdata = AstExtensionApplicationData
|
||||||
|
additionalFilter=(objectClass=AstExtension)
|
||||||
|
|
||||||
|
;
|
||||||
|
; Sip Users Table
|
||||||
|
;
|
||||||
|
[sip]
|
||||||
|
name = cn ; We use the "cn" as the default value for name on the line above
|
||||||
|
; because objectClass=AsteriskSIPUser does not include a uid as an allowed field
|
||||||
|
; If your entry combines other objectClasses and uid is available, you may
|
||||||
|
; prefer to change the line to be name = uid, especially if your LDAP entries
|
||||||
|
; contain spaces in the cn field.
|
||||||
|
; You may also find it appropriate to use something completely different.
|
||||||
|
; This is possible by changing the line above to name = AstAccountName (or whatever you
|
||||||
|
; prefer).
|
||||||
|
;
|
||||||
|
amaflags = AstAccountAMAFlags
|
||||||
|
callgroup = AstAccountCallGroup
|
||||||
|
callerid = AstAccountCallerID
|
||||||
|
directmedia = AstAccountDirectMedia
|
||||||
|
context = AstAccountContext
|
||||||
|
dtmfmode = AstAccountDTMFMode
|
||||||
|
fromuser = AstAccountFromUser
|
||||||
|
fromdomain = AstAccountFromDomain
|
||||||
|
fullcontact = AstAccountFullContact
|
||||||
|
fullcontact = gecos
|
||||||
|
host = AstAccountHost
|
||||||
|
insecure = AstAccountInsecure
|
||||||
|
mailbox = AstAccountMailbox
|
||||||
|
md5secret = AstAccountRealmedPassword ; Must be an MD5 hash. Field value can start with
|
||||||
|
; {md5} but it is not required.
|
||||||
|
; Generate the password via the md5sum command, e.g.
|
||||||
|
; echo "my_password" | md5sum
|
||||||
|
nat = AstAccountNAT
|
||||||
|
deny = AstAccountDeny
|
||||||
|
permit = AstAccountPermit
|
||||||
|
pickupgroup = AstAccountPickupGroup
|
||||||
|
port = AstAccountPort
|
||||||
|
qualify = AstAccountQualify
|
||||||
|
restrictcid = AstAccountRestrictCID
|
||||||
|
rtptimeout = AstAccountRTPTimeout
|
||||||
|
rtpholdtimeout = AstAccountRTPHoldTimeout
|
||||||
|
type = AstAccountType
|
||||||
|
disallow = AstAccountDisallowedCodec
|
||||||
|
allow = AstAccountAllowedCodec
|
||||||
|
MusicOnHold = AstAccountMusicOnHold
|
||||||
|
regseconds = AstAccountExpirationTimestamp
|
||||||
|
regcontext = AstAccountRegistrationContext
|
||||||
|
regexten = AstAccountRegistrationExten
|
||||||
|
CanCallForward = AstAccountCanCallForward
|
||||||
|
ipaddr = AstAccountIPAddress
|
||||||
|
defaultuser = AstAccountDefaultUser
|
||||||
|
regserver = AstAccountRegistrationServer
|
||||||
|
lastms = AstAccountLastQualifyMilliseconds
|
||||||
|
supportpath = AstAccountPathSupport
|
||||||
|
additionalFilter=(objectClass=AsteriskSIPUser)
|
||||||
|
|
||||||
|
;
|
||||||
|
; IAX Users Table
|
||||||
|
;
|
||||||
|
[iax]
|
||||||
|
amaflags = AstAccountAMAFlags
|
||||||
|
callerid = AstAccountCallerID
|
||||||
|
context = AstAccountContext
|
||||||
|
fullcontact = AstAccountFullContact
|
||||||
|
fullcontact = gecos
|
||||||
|
host = AstAccountHost
|
||||||
|
mailbox = AstAccountMailbox
|
||||||
|
md5secret = AstAccountRealmedPassword ; Must be an MD5 hash. Field value can start with
|
||||||
|
; {md5} but it is not required.
|
||||||
|
; Generate the password via the md5sum command, e.g.
|
||||||
|
; echo "my_password" | md5sum
|
||||||
|
deny = AstAccountDeny
|
||||||
|
permit = AstAccountPermit
|
||||||
|
port = AstAccountPort
|
||||||
|
qualify = AstAccountQualify
|
||||||
|
type = AstAccountType
|
||||||
|
disallow = AstAccountDisallowedCodec
|
||||||
|
allow = AstAccountAllowedCodec
|
||||||
|
regseconds = AstAccountExpirationTimestamp
|
||||||
|
regcontext = AstAccountRegistrationContext
|
||||||
|
regexten = AstAccountRegistrationExten
|
||||||
|
notransfer = AstAccountNoTransfer
|
||||||
|
lastms = AstAccountLastQualifyMilliseconds
|
||||||
|
additionalFilter=(objectClass=AstAccountIAX)
|
||||||
|
|
||||||
|
;
|
||||||
|
; A Test Family
|
||||||
|
;
|
||||||
|
[testfamily]
|
||||||
|
MyUSERID = uid
|
||||||
|
additionalFilter=(objectClass=*)
|
||||||
|
|
||||||
|
[accounts]
|
||||||
|
amaflags = AstAccountAMAFlags
|
||||||
|
callgroup = AstAccountCallGroup
|
||||||
|
callerid = AstAccountCallerID
|
||||||
|
directmedia = AstAccountDirectMedia
|
||||||
|
context = AstAccountContext
|
||||||
|
dtmfmode = AstAccountDTMFMode
|
||||||
|
fromuser = AstAccountFromUser
|
||||||
|
fromdomain = AstAccountFromDomain
|
||||||
|
fullcontact = AstAccountFullContact
|
||||||
|
fullcontact = gecos
|
||||||
|
host = AstAccountHost
|
||||||
|
insecure = AstAccountInsecure
|
||||||
|
mailbox = AstAccountMailbox
|
||||||
|
md5secret = AstAccountRealmedPassword ; Must be an MD5 hash. Field value can start with
|
||||||
|
; {md5} but it is not required.
|
||||||
|
; Generate the password via the md5sum command, e.g.
|
||||||
|
; echo "my_password" | md5sum
|
||||||
|
nat = AstAccountNAT
|
||||||
|
deny = AstAccountDeny
|
||||||
|
permit = AstAccountPermit
|
||||||
|
pickupgroup = AstAccountPickupGroup
|
||||||
|
port = AstAccountPort
|
||||||
|
qualify = AstAccountQualify
|
||||||
|
restrictcid = AstAccountRestrictCID
|
||||||
|
rtptimeout = AstAccountRTPTimeout
|
||||||
|
rtpholdtimeout = AstAccountRTPHoldTimeout
|
||||||
|
type = AstAccountType
|
||||||
|
disallow = AstAccountDisallowedCodec
|
||||||
|
allow = AstAccountAllowedCodec
|
||||||
|
MusicOnHold = AstAccountMusicOnHold
|
||||||
|
regseconds = AstAccountExpirationTimestamp
|
||||||
|
regcontext = AstAccountRegistrationContext
|
||||||
|
regexten = AstAccountRegistrationExten
|
||||||
|
CanCallForward = AstAccountCanCallForward
|
||||||
|
additionalFilter=(objectClass=AstAccount)
|
||||||
153
test1/conf/asterisk/res_odbc.conf
Executable file
153
test1/conf/asterisk/res_odbc.conf
Executable file
@ -0,0 +1,153 @@
|
|||||||
|
;;; 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
|
||||||
|
;
|
||||||
|
; The maximum number of connections to have open at any given time.
|
||||||
|
; This defaults to 1 and it is highly recommended to only set this higher
|
||||||
|
; if using a version of UnixODBC greater than 2.3.1.
|
||||||
|
;max_connections => 20
|
||||||
|
;
|
||||||
|
; 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
|
||||||
|
;
|
||||||
|
; Enable query logging. This keeps track of the number of prepared queries
|
||||||
|
; and executed queries as well as the query that has taken the longest to
|
||||||
|
; execute. This can be useful for determining the latency with a database.
|
||||||
|
; The data can be viewed using the "odbc show" CLI command.
|
||||||
|
; Note that only successful queries are logged currently.
|
||||||
|
;logging => yes
|
||||||
|
;
|
||||||
|
; Slow query limit. If a query exceeds the given amount of time (in milliseconds)
|
||||||
|
; when executing then a WARNING message will be output to indicate that there
|
||||||
|
; may be a problem. Note that logging must be set to "yes" for this to occur. By
|
||||||
|
; default this is set to 5000 milliseconds (or 5 seconds). If you would like to
|
||||||
|
; disable the WARNING message it can be set to "0".
|
||||||
|
;slow_query_limit => 5000
|
||||||
|
|
||||||
|
[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.
|
||||||
|
[sqlserver]
|
||||||
|
enabled => no
|
||||||
|
dsn => mickeysoft
|
||||||
|
max_connections => 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.
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
;[asterisk]
|
||||||
|
;enabled=yes
|
||||||
|
;dsn=mariadb
|
||||||
|
;username=asterisk_user
|
||||||
|
;password=asterisk_pass
|
||||||
|
;pre-connect=yes
|
||||||
|
|
||||||
|
|
||||||
|
;[asterisk]
|
||||||
|
;enabled => yes
|
||||||
|
;dsn => mariadb
|
||||||
|
;username => asterisk_user
|
||||||
|
;password => asterisk_pass
|
||||||
|
;pre-connect => yes
|
||||||
|
|
||||||
|
[asterisk]
|
||||||
|
enabled => yes
|
||||||
|
dsn => asterisk
|
||||||
|
username => asterisk_user
|
||||||
|
password => asterisk_pass
|
||||||
|
pre-connect => yes
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
163
test1/conf/asterisk/res_parking.conf
Executable file
163
test1/conf/asterisk/res_parking.conf
Executable file
@ -0,0 +1,163 @@
|
|||||||
|
[general]
|
||||||
|
;parkeddynamic = yes ; Enables dynamically created parkinglots. (default is no)
|
||||||
|
; If the option is enabled then the following
|
||||||
|
; variables can be used to dynamically create
|
||||||
|
; new parking lots.
|
||||||
|
;
|
||||||
|
; The PARKINGDYNAMIC variable specifies the
|
||||||
|
; parking lot to use as a template to create
|
||||||
|
; a dynamic parking lot. It is an error to
|
||||||
|
; specify a non-existent parking lot for the
|
||||||
|
; template. If not set then the default
|
||||||
|
; parking lot is used as the template.
|
||||||
|
;
|
||||||
|
; The PARKINGDYNCONTEXT variable specifies
|
||||||
|
; the dialplan context to use for the newly
|
||||||
|
; created dynamic parking lot. If not set
|
||||||
|
; then the context from the parking lot
|
||||||
|
; template is used. The context is created
|
||||||
|
; if it does not already exist and the new
|
||||||
|
; parking lot needs to create extensions.
|
||||||
|
;
|
||||||
|
; The PARKINGDYNEXTEN variable specifies the
|
||||||
|
; parkext to use for the newly created dynamic
|
||||||
|
; parking lot. If not set then the parkext
|
||||||
|
; is used from the parking lot template. If
|
||||||
|
; the template does not specify a parkext
|
||||||
|
; then no extensions are created for the
|
||||||
|
; newly created parking lot. The dynamic
|
||||||
|
; parking lot cannot be created if it needs
|
||||||
|
; to create extensions that overlap existing
|
||||||
|
; parking lot extensions. The only exception
|
||||||
|
; to this is for the parkext extension and
|
||||||
|
; only if neither of the overlaping parking
|
||||||
|
; lot's parkext is exclusive.
|
||||||
|
;
|
||||||
|
; The PARKINGDYNPOS variable specifies the
|
||||||
|
; parking positions to use for the newly
|
||||||
|
; created dynamic parking lot. If not set
|
||||||
|
; then the parkpos from the parking lot
|
||||||
|
; template is used.
|
||||||
|
|
||||||
|
; A parking lot named 'default' will automatically be used when no other
|
||||||
|
; named parking lot is indicated for use by the park application or a
|
||||||
|
; channel's parkinglot function and PARKINGLOT channel variable. This parking
|
||||||
|
; lot is guaranteed to exist and will be created even if default is left out of
|
||||||
|
; the configuration file.
|
||||||
|
|
||||||
|
[default] ; Default Parking Lot
|
||||||
|
parkext => 700 ; What extension to dial to park. (optional; if
|
||||||
|
; specified, extensions will be created for parkext and
|
||||||
|
; the whole range of parkpos)
|
||||||
|
;
|
||||||
|
; Note: Generated parking extensions cannot overlap.
|
||||||
|
; The only exception is if neither overlapping parkext
|
||||||
|
; is exclusive.
|
||||||
|
|
||||||
|
;parkext_exclusive=yes ; Specify that the parkext created for this parking lot
|
||||||
|
; will only access this parking lot. (default is no)
|
||||||
|
|
||||||
|
parkpos => 701-720 ; What range of parking spaces to use - must be numeric
|
||||||
|
; Creates these spaces as extensions if parkext is set.
|
||||||
|
; Since this value is interpreted numerically, leading 0's
|
||||||
|
; will be ignored (so expect 00700-00720 to map to 700-720)
|
||||||
|
|
||||||
|
context => parkedcalls ; Which context parked calls and the default park
|
||||||
|
|
||||||
|
;parkinghints = no ; Add hints priorities automatically for parkpos
|
||||||
|
; extensions if parkext is set
|
||||||
|
|
||||||
|
;parkingtime => 45 ; Number of seconds a call can be parked before returning
|
||||||
|
|
||||||
|
;comebacktoorigin = yes ; Setting this option configures the behavior of call parking when the
|
||||||
|
; parked call times out (See the parkingtime option). The default value is 'yes'.
|
||||||
|
;
|
||||||
|
; 'yes' - When the parked call times out, attempt to send the call back to the peer
|
||||||
|
; that parked this call. This is done by saving off the name of the channel
|
||||||
|
; that parked the call. The call will return to the context 'park-dial' and
|
||||||
|
; an extension created based on the name of the channel that originally parked
|
||||||
|
; the call. This extension will be created automatically to do a Dial() to the
|
||||||
|
; device that originally parked the call for comebacktodialtime seconds. If the
|
||||||
|
; call is not answered, the call will proceed to the next priority (usually none
|
||||||
|
; unless you deliberately set up a catch-all second priority in the park-call
|
||||||
|
; context) in the dialplan for extension matching the peer name (same as how
|
||||||
|
; peer names are flattened into extensions when comebacktoorigin is 'no').
|
||||||
|
;
|
||||||
|
; 'no' - This option is useful for performing custom dialplan functionality prior to
|
||||||
|
; sending the call back to the extension that initially parked the call, or to
|
||||||
|
; an entirely different destination.
|
||||||
|
;
|
||||||
|
; When the parked call times out, send it back to the dialplan. The location
|
||||||
|
; will be defined by the comebackcontext option. The extension will be built from
|
||||||
|
; the saved channel name that parked the call. For example, if a SIP peer named
|
||||||
|
; '0004F2040001' parked this call, the extension will be 'SIP_0004F2040001'.
|
||||||
|
; (Note that an underscore is used here because the '/' character has a special
|
||||||
|
; meaning in extension names for CallerID matching.) If this extension does not
|
||||||
|
; exist, the call will be sent to the 's' extension, instead. Finally, if the 's'
|
||||||
|
; extension of 'parkedcallstimeout' does not exist, the call will fall back to the
|
||||||
|
; 's' extension of the 'default' context.
|
||||||
|
;
|
||||||
|
; Additionally, in this example an extension of 'SIP_0004F2040001' will be
|
||||||
|
; created in the 'park-dial' context. This extension will be set up to do a
|
||||||
|
; Dial() to 'SIP/0004F2040001'.
|
||||||
|
;
|
||||||
|
; During the timeout procedure, the following variables are set
|
||||||
|
; PARKING_SPACE - extension that the call was parked in prior to timing out
|
||||||
|
; PARKEDLOT - name of the lot that the call was parked in prior to timing out
|
||||||
|
; PARKER - dial string to call the device that parked the call
|
||||||
|
|
||||||
|
;comebackdialtime = 30 ; When a parked call times out, this is the number of seconds to dial the device that
|
||||||
|
; originally parked the call. It is also available as a channel variable COMEBACKDIALTIME
|
||||||
|
; after a parked call has timed out.
|
||||||
|
; The default value is 30 seconds.
|
||||||
|
|
||||||
|
;comebackcontext = parkedcallstimeout
|
||||||
|
; The context a timed out call will return to if comebcktoorigin=no.
|
||||||
|
; The default value is 'parkedcallstimeout'.
|
||||||
|
|
||||||
|
;courtesytone = beep ; Sound file to play to when someone picks up a parked call
|
||||||
|
; and also when the Touch Monitor is activated/deactivated.
|
||||||
|
; Default is no tone.
|
||||||
|
|
||||||
|
;parkedplay = caller ; Who to play courtesytone to when picking up a parked call.
|
||||||
|
; One of: parked, caller, both (default is caller)
|
||||||
|
|
||||||
|
;parkedcalltransfers = caller ; Enables or disables DTMF based transfers when picking up a parked call.
|
||||||
|
; one of: callee, caller, both, no (default is no)
|
||||||
|
|
||||||
|
;parkedcallreparking = caller ; Enables or disables DTMF based parking when picking up a parked call.
|
||||||
|
; one of: callee, caller, both, no (default is no)
|
||||||
|
|
||||||
|
;parkedcallhangup = caller ; Enables or disables DTMF based hangups when picking up a parked call.
|
||||||
|
; one of: callee, caller, both, no (default is no)
|
||||||
|
|
||||||
|
;findslot => next ; Sets the method for selecting parking spaces when a call is parked
|
||||||
|
; 'next' - use the next parking space from the most recently used one.
|
||||||
|
; 'first' - use the lowest numbered parking space available
|
||||||
|
|
||||||
|
;parkedmusicclass = default ; This is the MOH class to use for the parked channel
|
||||||
|
; as long as the class is not set on the channel directly
|
||||||
|
; using Set(CHANNEL(musicclass)=whatever) in the dialplan
|
||||||
|
|
||||||
|
;*** Define another parking lot
|
||||||
|
;
|
||||||
|
; The parkinglot used can be set with the CHANNEL(parkinglot) dialplan function or by
|
||||||
|
; setting the 'parkinglot' configuration for a channel in its configuration file.
|
||||||
|
;
|
||||||
|
; Parking lots can now be any named configuration category aside from
|
||||||
|
; 'general' which is reserved for general options. They no longer need to be
|
||||||
|
; prefixed with 'parkinglot_'
|
||||||
|
;
|
||||||
|
;[edvina]
|
||||||
|
;context => edvina_park
|
||||||
|
;parkpos => 800-850
|
||||||
|
;findslot => next
|
||||||
|
;comebacktoorigin = no
|
||||||
|
;comebackdialtime = 90
|
||||||
|
;comebackcontext = edvinapark-timeout
|
||||||
|
;parkedmusicclass = edvina
|
||||||
|
;
|
||||||
|
; Since edvina doesn't define parkext, extensions won't automatically be
|
||||||
|
; created for parking to it or for retrieving calls from it. These can be
|
||||||
|
; created manually in the dial plan by using the Park and ParkedCall
|
||||||
|
; applications.
|
||||||
36
test1/conf/asterisk/res_pgsql.conf
Executable file
36
test1/conf/asterisk/res_pgsql.conf
Executable file
@ -0,0 +1,36 @@
|
|||||||
|
;
|
||||||
|
; 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
|
||||||
|
|
||||||
|
; When multiple rows are requested by realtime, res_config_pgsql will add an
|
||||||
|
; explicit ORDER BY clause to the generated SELECT statement. To prevent
|
||||||
|
; that from occuring, set order_multi_row_results_by_initial_column to 'no'.
|
||||||
|
;
|
||||||
|
;order_multi_row_results_by_initial_column=no
|
||||||
32
test1/conf/asterisk/res_pktccops.conf
Executable file
32
test1/conf/asterisk/res_pktccops.conf
Executable file
@ -0,0 +1,32 @@
|
|||||||
|
;; Sample res_pktccops.conf
|
||||||
|
;
|
||||||
|
;[general]
|
||||||
|
;gateinfoperiod => 60 ; default 60s
|
||||||
|
;gatetimeout = 150 ; default 150
|
||||||
|
;t1 => 250 ; default 250s
|
||||||
|
;t7 => 200 ; default 200s
|
||||||
|
;t8 => 300 ; default 300s
|
||||||
|
;keepalive => 60 ; default 60s
|
||||||
|
;
|
||||||
|
;[teszt]
|
||||||
|
;host => 192.168.0.24
|
||||||
|
;pool => 10.0.1.0 10.0.1.255
|
||||||
|
;pool => 10.0.3.0 10.0.3.255
|
||||||
|
;pool => 10.0.7.0 10.0.8.255
|
||||||
|
;pool => 10.0.10.0 10.0.11.255
|
||||||
|
;
|
||||||
|
;[general]
|
||||||
|
;gateinfoperiod => 60 ; default 60s
|
||||||
|
;gatetimeout = 150 ; default 150
|
||||||
|
;t1 => 250 ; default 250s
|
||||||
|
;t7 => 200 ; default 200s
|
||||||
|
;t8 => 300 ; default 300s
|
||||||
|
;keepalive => 60 ; default 60s
|
||||||
|
;
|
||||||
|
;[test]
|
||||||
|
;host => 192.168.0.24
|
||||||
|
;pool => 10.0.1.0 10.0.1.255
|
||||||
|
;pool => 10.0.3.0 10.0.3.255
|
||||||
|
;pool => 10.0.7.0 10.0.8.255
|
||||||
|
;pool => 10.0.10.0 10.0.11.255
|
||||||
|
;
|
||||||
18
test1/conf/asterisk/res_snmp.conf
Executable file
18
test1/conf/asterisk/res_snmp.conf
Executable file
@ -0,0 +1,18 @@
|
|||||||
|
;
|
||||||
|
; 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.
|
||||||
|
|
||||||
|
[general]
|
||||||
|
; We run as a subagent per default -- to run as a full agent
|
||||||
|
; we must run as root (to be able to bind to port 161)
|
||||||
|
;subagent = yes
|
||||||
|
; SNMP must be explicitly enabled to be active
|
||||||
|
;enabled = yes
|
||||||
27
test1/conf/asterisk/res_stun_monitor.conf
Executable file
27
test1/conf/asterisk/res_stun_monitor.conf
Executable file
@ -0,0 +1,27 @@
|
|||||||
|
;
|
||||||
|
; Configuration file for the res_stun_monitor module
|
||||||
|
;
|
||||||
|
; The res_stun_monitor module sends STUN requests to a configured STUN server
|
||||||
|
; periodically. If the monitor detects a change in the external IP address or port
|
||||||
|
; provided by the STUN server an event is sent out internally within Asterisk
|
||||||
|
; to alert all listeners to that event of the change.
|
||||||
|
|
||||||
|
; The current default listeners for the network change event include chan_sip
|
||||||
|
; and chan_iax. Both of these channel drivers by default react to this event
|
||||||
|
; by renewing all outbound registrations. This allows the endpoints Asterisk
|
||||||
|
; is registering with to become aware of the address change and know the new
|
||||||
|
; location.
|
||||||
|
;
|
||||||
|
[general]
|
||||||
|
;
|
||||||
|
; ---- STUN Server configuration ---
|
||||||
|
; Setting the 'stunaddr' option to a valid address enables the STUN monitor.
|
||||||
|
;
|
||||||
|
;stunaddr = mystunserver.com ; Address of the STUN server to query.
|
||||||
|
; Valid form:
|
||||||
|
; [(hostname | IP-address) [':' port]]
|
||||||
|
; The port defaults to the standard STUN port (3478).
|
||||||
|
; Set to an empty value to disable STUN monitoring.
|
||||||
|
; Default is disabled.
|
||||||
|
;stunrefresh = 30 ; Number of seconds between STUN refreshes.
|
||||||
|
; Default is 30.
|
||||||
23
test1/conf/asterisk/resolver_unbound.conf
Executable file
23
test1/conf/asterisk/resolver_unbound.conf
Executable file
@ -0,0 +1,23 @@
|
|||||||
|
; Unbound DNS Resolver Configuration
|
||||||
|
;
|
||||||
|
; This file serves as a reference for the configurable options within the
|
||||||
|
; unbound DNS resolver.
|
||||||
|
|
||||||
|
[general]
|
||||||
|
;hosts = /etc/hosts ; Full path to a hosts file which contains a mapping of
|
||||||
|
; ; hostnames to addresses. If "system" is specified then
|
||||||
|
; ; the system specific hosts file will be used. (default: system)
|
||||||
|
;resolv = /etc/resolv.conf ; Full path to a resolv.conf which contains the nameservers
|
||||||
|
; ; to use for resolution. If "system" is specified then the
|
||||||
|
; ; system specific resolv.conf file will be used. (default: system)
|
||||||
|
;nameserver = 127.0.0.1 ; An explicit nameserver to use for queries. If this option
|
||||||
|
; ; is specified multiple times the first configured one will
|
||||||
|
; ; be treated as the primary with each subsequent one being
|
||||||
|
; ; a backup. If the resolv options is also specified the
|
||||||
|
; ; nameservers from it will be tried after all nameserver
|
||||||
|
; ; options.
|
||||||
|
;debug = 99 ; The debug level to run the unbound resolver at. While
|
||||||
|
; ; there is no explicit range the higher the number the more
|
||||||
|
; ; debug is output.
|
||||||
|
;ta_file = /etc/asterisk/dnssec_keys ; Full path to a trusted anchors key file. These keys are
|
||||||
|
; ; used to verify DNSSEC signed results.
|
||||||
167
test1/conf/asterisk/rtp.conf
Executable file
167
test1/conf/asterisk/rtp.conf
Executable file
@ -0,0 +1,167 @@
|
|||||||
|
;
|
||||||
|
; RTP Configuration
|
||||||
|
;
|
||||||
|
[general]
|
||||||
|
;
|
||||||
|
; RTP start and RTP end configure start and end addresses
|
||||||
|
;
|
||||||
|
; Defaults are rtpstart=5000 and rtpend=31000
|
||||||
|
;
|
||||||
|
rtpstart=10000
|
||||||
|
rtpend=10050
|
||||||
|
|
||||||
|
strictrtp=yes
|
||||||
|
probation=8
|
||||||
|
|
||||||
|
;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 recognized source of the RTP stream. Strict RTP qualifies RTP
|
||||||
|
; packet stream sources before accepting them upon initial connection and
|
||||||
|
; when the connection is renegotiated (e.g., transfers and direct media).
|
||||||
|
; Initial connection and renegotiation starts a learning mode to qualify
|
||||||
|
; stream source addresses. Once Asterisk has recognized a stream it will
|
||||||
|
; allow other streams to qualify and replace the current stream for 5
|
||||||
|
; seconds after starting learning mode. Once learning mode completes the
|
||||||
|
; current stream is locked in and cannot change until the next
|
||||||
|
; renegotiation.
|
||||||
|
; Valid options are "no" to disable strictrtp, "yes" to enable strictrtp,
|
||||||
|
; and "seqno", which does the same thing as strictrtp=yes, but only checks
|
||||||
|
; to make sure the sequence number is correct rather than checking the time
|
||||||
|
; interval as well.
|
||||||
|
; This option is enabled by default.
|
||||||
|
; strictrtp=yes
|
||||||
|
;
|
||||||
|
; Number of packets containing consecutive sequence values needed
|
||||||
|
; to change the RTP source socket address. This option only comes
|
||||||
|
; into play while using strictrtp=yes. Consider changing this value
|
||||||
|
; if rtp packets are dropped from one or both ends after a call is
|
||||||
|
; connected. This option is set to 4 by default.
|
||||||
|
; probation=8
|
||||||
|
;
|
||||||
|
; Enable sRTP replay protection. Buggy SIP user agents (UAs) reset the
|
||||||
|
; sequence number (RTP-SEQ) on a re-INVITE, for example, with Session Timers
|
||||||
|
; or on Call Hold/Resume, but keep the synchronization source (RTP-SSRC). If
|
||||||
|
; the new RTP-SEQ is higher than the previous one, the call continues if the
|
||||||
|
; roll-over counter (sRTP-ROC) is zero (the call lasted less than 22 minutes).
|
||||||
|
; In all other cases, the call faces one-way audio or even no audio at all.
|
||||||
|
; "replay check failed (index too old)" gets printed continuously. This is a
|
||||||
|
; software bug. You have to report this to the creator of that UA. Until it is
|
||||||
|
; fixed, you could disable sRTP replay protection (see RFC 3711 section 3.3.2).
|
||||||
|
; This option is enabled by default.
|
||||||
|
; srtpreplayprotection=yes
|
||||||
|
;
|
||||||
|
; Whether to enable or disable ICE support. This option is enabled by default.
|
||||||
|
; icesupport=false
|
||||||
|
;
|
||||||
|
; Hostname or address for the STUN server used when determining the external
|
||||||
|
; IP address and port an RTP session can be reached at. The port number is
|
||||||
|
; optional. If omitted the default value of 3478 will be used. This option is
|
||||||
|
; disabled by default. Name resolution will occur at load time, and if DNS is
|
||||||
|
; used, name resolution will occur repeatedly after the TTL expires.
|
||||||
|
;
|
||||||
|
; e.g. stundaddr=mystun.server.com:3478
|
||||||
|
;
|
||||||
|
; stunaddr=
|
||||||
|
;
|
||||||
|
; Some multihomed servers have IP interfaces that cannot reach the STUN
|
||||||
|
; server specified by stunaddr. Blacklist those interface subnets from
|
||||||
|
; trying to send a STUN packet to find the external IP address.
|
||||||
|
; Attempting to send the STUN packet needlessly delays processing incoming
|
||||||
|
; and outgoing SIP INVITEs because we will wait for a response that can
|
||||||
|
; never come until we give up on the response.
|
||||||
|
; * Multiple subnets may be listed.
|
||||||
|
; * Blacklisting applies to IPv4 only. STUN isn't needed for IPv6.
|
||||||
|
; * Blacklisting applies when binding RTP to specific IP addresses and not
|
||||||
|
; the wildcard 0.0.0.0 address. e.g., A PJSIP endpoint binding RTP to a
|
||||||
|
; specific address using the bind_rtp_to_media_address and media_address
|
||||||
|
; options. Or the PJSIP endpoint specifies an explicit transport that binds
|
||||||
|
; to a specific IP address. Blacklisting is done via ACL infrastructure
|
||||||
|
; so it's possible to whitelist as well.
|
||||||
|
;
|
||||||
|
; stun_acl = named_acl
|
||||||
|
; stun_deny = 0.0.0.0/0
|
||||||
|
; stun_permit = 1.2.3.4/32
|
||||||
|
;
|
||||||
|
; For historic reasons stun_blacklist is an alias for stun_deny.
|
||||||
|
;
|
||||||
|
; Whether to report the PJSIP version in a SOFTWARE attribute for all
|
||||||
|
; outgoing STUN packets. This option is enabled by default.
|
||||||
|
;
|
||||||
|
; stun_software_attribute=yes
|
||||||
|
;
|
||||||
|
; 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=
|
||||||
|
;
|
||||||
|
; An ACL can be used to determine which discovered addresses to include for
|
||||||
|
; ICE, srflx and relay discovery. This is useful to optimize the ICE process
|
||||||
|
; where a system has multiple host address ranges and/or physical interfaces
|
||||||
|
; and certain of them are not expected to be used for RTP. For example, VPNs
|
||||||
|
; and local interconnections may not be suitable or necessary for ICE. Multiple
|
||||||
|
; subnets may be listed. If left unconfigured, all discovered host addresses
|
||||||
|
; are used.
|
||||||
|
;
|
||||||
|
; ice_acl = named_acl
|
||||||
|
; ice_deny = 0.0.0.0/0
|
||||||
|
; ice_permit = 1.2.3.4/32
|
||||||
|
;
|
||||||
|
; For historic reasons ice_blacklist is an alias for ice_deny.
|
||||||
|
;
|
||||||
|
; The MTU to use for DTLS packet fragmentation. This option is set to 1200
|
||||||
|
; by default. The minimum MTU is 256.
|
||||||
|
; dtls_mtu = 1200
|
||||||
|
;
|
||||||
|
[ice_host_candidates]
|
||||||
|
;
|
||||||
|
; When Asterisk is behind a static one-to-one NAT and ICE is in use, ICE will
|
||||||
|
; expose the server's internal IP address as one of the host candidates.
|
||||||
|
; Although using STUN (see the 'stunaddr' configuration option) will provide a
|
||||||
|
; publicly accessible IP, the internal IP will still be sent to the remote
|
||||||
|
; peer. To help hide the topology of your internal network, you can override
|
||||||
|
; the host candidates that Asterisk will send to the remote peer.
|
||||||
|
;
|
||||||
|
; IMPORTANT: Only use this functionality when your Asterisk server is behind a
|
||||||
|
; one-to-one NAT and you know what you're doing. If you do define anything
|
||||||
|
; here, you almost certainly will NOT want to specify 'stunaddr' or 'turnaddr'
|
||||||
|
; above.
|
||||||
|
;
|
||||||
|
; The format for these overrides is:
|
||||||
|
;
|
||||||
|
; <local address> => <advertised address>,[include_local_address]
|
||||||
|
;
|
||||||
|
; The following will replace 192.168.1.10 with 1.2.3.4 during ICE
|
||||||
|
; negotiation:
|
||||||
|
;
|
||||||
|
;192.168.1.10 => 1.2.3.4
|
||||||
|
;
|
||||||
|
; The following will include BOTH 192.168.1.10 and 1.2.3.4 during ICE
|
||||||
|
; negotiation instead of replacing 192.168.1.10. This can make it easier
|
||||||
|
; to serve both local and remote clients.
|
||||||
|
;
|
||||||
|
;192.168.1.10 => 1.2.3.4,include_local_address
|
||||||
|
;
|
||||||
|
; You can define an override for more than 1 interface if you have a multihomed
|
||||||
|
; server. Any local interface that is not matched will be passed through
|
||||||
|
; unaltered. Both IPv4 and IPv6 addresses are supported.
|
||||||
383
test1/conf/asterisk/say.conf
Executable file
383
test1/conf/asterisk/say.conf
Executable file
@ -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:${IF($[${SAY:8:2} > 12] ? $[${SAY:8:2}%12] : ${SAY:8:2})} ; 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 ;incomplete ; "today", "yesterday" or ABdY
|
||||||
|
_date:[q]:. => date:dby ;incomplete ; "" (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}
|
||||||
1621
test1/conf/asterisk/sip.conf
Executable file
1621
test1/conf/asterisk/sip.conf
Executable file
File diff suppressed because it is too large
Load Diff
57
test1/conf/asterisk/sip_notify.conf
Executable file
57
test1/conf/asterisk/sip_notify.conf
Executable file
@ -0,0 +1,57 @@
|
|||||||
|
; rfc3842
|
||||||
|
; put empty "Content=>" at the end to have CRLF after last body line
|
||||||
|
|
||||||
|
[clear-mwi]
|
||||||
|
Event=>message-summary
|
||||||
|
Content-type=>application/simple-message-summary
|
||||||
|
Content=>Messages-Waiting: no
|
||||||
|
Content=>Message-Account: sip:asterisk@127.0.0.1
|
||||||
|
Content=>Voice-Message: 0/0 (0/0)
|
||||||
|
Content=>
|
||||||
|
|
||||||
|
; Aastra
|
||||||
|
|
||||||
|
[aastra-check-cfg]
|
||||||
|
Event=>check-sync
|
||||||
|
|
||||||
|
[aastra-xml]
|
||||||
|
Event=>aastra-xml
|
||||||
|
|
||||||
|
; Digium
|
||||||
|
|
||||||
|
[digium-check-cfg]
|
||||||
|
Event=>check-sync
|
||||||
|
|
||||||
|
; Linksys
|
||||||
|
|
||||||
|
[linksys-cold-restart]
|
||||||
|
Event=>reboot_now
|
||||||
|
|
||||||
|
[linksys-warm-restart]
|
||||||
|
Event=>restart_now
|
||||||
|
|
||||||
|
; Polycom
|
||||||
|
|
||||||
|
[polycom-check-cfg]
|
||||||
|
Event=>check-sync
|
||||||
|
|
||||||
|
; Sipura
|
||||||
|
|
||||||
|
[sipura-check-cfg]
|
||||||
|
Event=>resync
|
||||||
|
|
||||||
|
[sipura-get-report]
|
||||||
|
Event=>report
|
||||||
|
|
||||||
|
; snom
|
||||||
|
|
||||||
|
[snom-check-cfg]
|
||||||
|
Event=>check-sync\;reboot=false
|
||||||
|
|
||||||
|
[snom-reboot]
|
||||||
|
Event=>check-sync\;reboot=true
|
||||||
|
|
||||||
|
; Cisco
|
||||||
|
|
||||||
|
[cisco-check-cfg]
|
||||||
|
Event=>check-sync
|
||||||
207
test1/conf/asterisk/skinny.conf
Executable file
207
test1/conf/asterisk/skinny.conf
Executable file
@ -0,0 +1,207 @@
|
|||||||
|
;
|
||||||
|
; 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
|
||||||
150
test1/conf/asterisk/sla.conf
Executable file
150
test1/conf/asterisk/sla.conf
Executable file
@ -0,0 +1,150 @@
|
|||||||
|
;
|
||||||
|
; Configuration for Shared Line Appearances (SLA).
|
||||||
|
;
|
||||||
|
; See https://docs.asterisk.org 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://docs.asterisk.org/Configuration/Applications/Shared-Line-Appearances-SLA/
|
||||||
|
|
||||||
|
;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://docs.asterisk.org/Configuration/Applications/Shared-Line-Appearances-SLA/
|
||||||
|
;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
|
||||||
|
; --------------------------------------
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user