aboutsummaryrefslogtreecommitdiffstats
path: root/configs
diff options
context:
space:
mode:
authormmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b>2010-04-09 15:31:32 +0000
committermmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b>2010-04-09 15:31:32 +0000
commit0eb1e5407a6eacd46d98e134dc81e8b857c103b7 (patch)
tree0b1d16ff83df2f35441f03a082b848262b8a2557 /configs
parent6c57cdc6ac82a6a6700ebdb788d690471d8fc49d (diff)
Merge Call completion support into trunk.
From Reviewboard: CCSS stands for Call Completion Supplementary Services. An admittedly out-of-date overview of the architecture can be found in the file doc/CCSS_architecture.pdf in the CCSS branch. Off the top of my head, the big differences between what is implemented and what is in the document are as follows: 1. We did not end up modifying the Hangup application at all. 2. The document states that a single call completion monitor may be used across multiple calls to the same device. This proved to not be such a good idea when implementing protocol-specific monitors, and so we ended up using one monitor per-device per-call. 3. There are some configuration options which were conceived after the document was written. These are documented in the ccss.conf.sample that is on this review request. For some basic understanding of terminology used throughout this code, see the ccss.tex document that is on this review. This implements CCBS and CCNR in several flavors. First up is a "generic" implementation, which can work over any channel technology provided that the channel technology can accurately report device state. Call completion is requested using the dialplan application CallCompletionRequest and can be canceled using CallCompletionCancel. Device state subscriptions are used in order to monitor the state of called parties. Next, there is a SIP-specific implementation of call completion. This method uses the methods outlined in draft-ietf-bliss-call-completion-06 to implement call completion using SIP signaling. There are a few things to note here: * The agent/monitor terminology used throughout Asterisk sometimes is the reverse of what is defined in the referenced draft. * Implementation of the draft required support for SIP PUBLISH. I attempted to write this in a generic-enough fashion such that if someone were to want to write PUBLISH support for other event packages, such as dialog-state or presence, most of the effort would be in writing callbacks specific to the event package. * A subportion of supporting PUBLISH reception was that we had to implement a PIDF parser. The PIDF support added is a bit minimal. I first wrote a validation routine to ensure that the PIDF document is formatted properly. The rest of the PIDF reading is done in-line in the call-completion-specific PUBLISH-handling code. In other words, while there is PIDF support here, it is not in any state where it could easily be applied to other event packages as is. Finally, there are a variety of ISDN-related call completion protocols supported. These were written by Richard Mudgett, and as such I can't really say much about their implementation. There are notes in the CHANGES file that indicate the ISDN protocols over which call completion is supported. Review: https://reviewboard.asterisk.org/r/523 git-svn-id: http://svn.digium.com/svn/asterisk/trunk@256528 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'configs')
-rw-r--r--configs/ccss.conf.sample150
-rw-r--r--configs/chan_dahdi.conf.sample56
-rw-r--r--configs/manager.conf.sample3
3 files changed, 205 insertions, 4 deletions
diff --git a/configs/ccss.conf.sample b/configs/ccss.conf.sample
new file mode 100644
index 000000000..420e4367b
--- /dev/null
+++ b/configs/ccss.conf.sample
@@ -0,0 +1,150 @@
+[general]
+; There is only a single option that may be defined in this file.
+; 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
+;
+;
+;============================================
+; 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.
+;
+;accept: If an interface is set to "accept," 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=
+;
+; When using an ISDN phone and a generic CC agent, Asterisk is unable
+; to determine the dialstring that should be used when calling back
+; the original caller. Furthermore, if you desire to use any dialstring-
+; specific options, such as distinctive ring, you must set this
+; configuration option. For non-ISDN phones, it is not necessary to
+; set this, since Asterisk can determine the dialstring to use since
+; it is identical to the name of the calling device. By default, there
+; is no cc_agent_dialstring set.
+;
+;cc_agent_dialstring=
diff --git a/configs/chan_dahdi.conf.sample b/configs/chan_dahdi.conf.sample
index fb0d06931..30229b5fc 100644
--- a/configs/chan_dahdi.conf.sample
+++ b/configs/chan_dahdi.conf.sample
@@ -85,10 +85,11 @@
;service_message_support=yes
; Enable service message support for channel. Must be set after switchtype.
;
-; PRI Reverse Charging Indication: Indicate to the called party that the
-; call will be reverse charged. To enable, prefix the dialed number with one
-; of the following letters:
-; C - Reverse Charge Indication Requested
+; Dialing options for ISDN (i.e., Dial(DAHDI/g1/exten/options)):
+; R Reverse Charge Indication
+; Indicate to the called party that the call will be reverse charged.
+; K(n) Keypad digits n
+; Send out the specified digits as keypad digits.
;
; PRI Dialplan: The ISDN-level Type Of Number (TON) or numbering plan, used for
; the dialed number. For most installations, leaving this as 'unknown' (the
@@ -236,9 +237,52 @@
; May vary in other ISDN standards (Q.931 1993 : 90000 ms)
; T313: Wait for CONNECT acknowledge, CPE side only (default 3000 ms)
;
+; T-RESPONSE: Maximum time to wait for a typical APDU response. (default 4000 ms)
+; This is an implementation timer when the standard does not specify one.
+; T-ACTIVATE: Request supervision timeout. (default 10000 ms)
+; T-RETENTION: Maximum time to wait for user A to activate call-completion. (default 30000 ms)
+; Used by ETSI PTP, ETSI PTMP, and Q.SIG as the cc_offer_timer.
+; T-CCBS1: T-STATUS timer equivalent for CC user A status. (default 4000 ms)
+; T-CCBS2: Maximum time the CCBS service will be active (default 45 min in ms)
+; T-CCBS3: Maximum time to wait for user A to respond to user B availability. (default 20000 ms)
+; T-CCBS5: Network B CCBS supervision timeout. (default 60 min in ms)
+; T-CCBS6: Network A CCBS supervision timeout. (default 60 min in ms)
+; T-CCNR2: Maximum time the CCNR service will be active (default 180 min in ms)
+; T-CCNR5: Network B CCNR supervision timeout. (default 195 min in ms)
+; T-CCNR6: Network A CCNR supervision timeout. (default 195 min in ms)
+; CC-T1: Q.SIG CC request supervision timeout. (default 30000 ms)
+; CCBS-T2: Q.SIG CCBS supervision timeout. (default 60 min in ms)
+; CCNR-T2: Q.SIG CCNR supervision timeout. (default 195 min in ms)
+; CC-T3: Q.SIG CC Maximum time to wait for user A to respond to user B availability. (default 30000 ms)
+;
;pritimer => t200,1000
;pritimer => t313,4000
;
+; CC PTMP recall mode:
+; specific - Only the CC original party A can participate in the CC callback
+; global - Other compatible endpoints on the PTMP line can be party A in the CC callback
+;
+; cc_ptmp_recall_mode cannot be changed on a reload.
+;
+;cc_ptmp_recall_mode = specific
+;
+; CC Q.SIG Party A (requester) retain signaling link option
+; retain Require that the signaling link be retained.
+; release Request that the signaling link be released.
+; do_not_care The responder is free to choose if the signaling link will be retained.
+;
+;cc_qsig_signaling_link_req = retain
+;
+; CC Q.SIG Party B (responder) retain signaling link option
+; retain Prefer that the signaling link be retained.
+; release Prefer that the signaling link be released.
+;
+;cc_qsig_signaling_link_rsp = retain
+;
+; See ccss.conf.sample for more options. The timers described by ccss.conf.sample
+; are not used by ISDN for the native protocol since they are defined by the
+; standards and set by pritimer above.
+;
; To enable transmission of facility-based ISDN supplementary services (such
; as caller name from CPE over facility), enable this option.
; Cannot be changed on a reload.
@@ -267,6 +311,10 @@
; fxo_ks: FXO (Kewl Start)
; pri_cpe: PRI signalling, CPE side
; pri_net: PRI signalling, Network side
+; bri_cpe: BRI PTP signalling, CPE side
+; bri_net: BRI PTP signalling, Network side
+; bri_cpe_ptmp: BRI PTMP signalling, CPE side
+; bri_net_ptmp: BRI PTMP signalling, Network side
; sf: SF (Inband Tone) Signalling
; sf_w: SF Wink
; sf_featd: SF Feature Group D (The fake, Adtran style, DTMF)
diff --git a/configs/manager.conf.sample b/configs/manager.conf.sample
index 229db2dac..078d17932 100644
--- a/configs/manager.conf.sample
+++ b/configs/manager.conf.sample
@@ -84,6 +84,7 @@ bindaddr = 0.0.0.0
; Write authorization permits you to send commands and get back responses. The
; following classes exist:
;
+; all - All event classes below (including any we may have missed).
; system - General information about the system and ability to run system
; management commands, such as Shutdown, Restart, and Reload.
; call - Information about channels and ability to set information in a
@@ -100,6 +101,8 @@ bindaddr = 0.0.0.0
; 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.
;
;read = system,call,log,verbose,agent,user,config,dtmf,reporting,cdr,dialplan
;write = system,call,agent,user,config,command,reporting,originate