From f7dc36927d2d17d3796557c6f5ebf53814b0ab0e Mon Sep 17 00:00:00 2001 From: Russell Bryant Date: Sat, 10 Mar 2007 00:00:26 +0000 Subject: [PATCH] Merged revisions 58638 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r58638 | russell | 2007-03-09 17:59:10 -0600 (Fri, 09 Mar 2007) | 8 lines Merge some updates to the SLA documentation. I plan to keep working on this to explain all of the expected behavior with call handling, configuration details for specific phones, and other things. However, I got tired of doing it in plain text, so I switched to using LaTeX. I have included the PDF version. I haven't been able to get a nice looking plain text version out of it yet, but I'm not terribly concerned since this is supposed to be more of the manual, while the plain text sample configuration file is the reference. ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@58639 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- doc/sla.pdf | Bin 0 -> 66509 bytes doc/sla.tex | 339 ++++++++++++++++++++++++++++++++++++++++++++++++++++ doc/sla.txt | 225 ---------------------------------- 3 files changed, 339 insertions(+), 225 deletions(-) create mode 100644 doc/sla.pdf create mode 100644 doc/sla.tex delete mode 100644 doc/sla.txt diff --git a/doc/sla.pdf b/doc/sla.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e61bdeeb229f2de3a55ee94d87c747ac069c77cd GIT binary patch literal 66509 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 P#RW5^`SX{IE-n2JhKpd@ literal 0 Hc-jL100001 diff --git a/doc/sla.tex b/doc/sla.tex new file mode 100644 index 0000000000..735285e352 --- /dev/null +++ b/doc/sla.tex @@ -0,0 +1,339 @@ +\documentclass[12pt,a4]{article} +\usepackage{hyperref} + +\author{Russell Bryant \\ Software Engineer \\ Digium, Inc.} +\title{Shared Line Appearances} + +\begin{document} +\maketitle + +\tableofcontents + +\section{Introduction} + +The "SLA" functionality in Asterisk is intended to allow a setup that emulates +a simple key system. It uses the various abstraction layers already built into +Asterisk to emulate key system functionality across various devices, including +IP channels. + +\section{Configuration} + +\subsection{Summary} + +An SLA system is built up of virtual trunks and stations mapped to real +Asterisk devices. The configuration for all of this is done in three +different files: extensions.conf, sla.conf, and the channel specific +configuration file such as sip.conf or zapata.conf. + +\subsection{Dialplan} + +The SLA implementation can automatically generate the dialplan necessary for +basic operation if the "autocontext" option is set for trunks and stations in +sla.conf. However, for reference, here is an automatically generated dialplan +to help with custom building of the dialplan to include other features, such as +voicemail (\ref{voicemail}). + +However, note that there is a little bit of additional configuration needed if +the trunk is an IP channel. This is discussed in the section on trunks (\ref{trunks}). + +There are extensions for incoming calls on a specific trunk, which execute the SLATrunk +application, as well as incoming calls from a station, which execute SLAStation. +Note that there are multiple extensions for incoming calls from a station. This is +because the SLA system has to know whether the phone just went off hook, or if the +user pressed a specific line button. + +Also note that there is a hint for every line on every station. This lets the SLA +system control each individual light on every phone to ensure that it shows the +correct state of the line. The phones must subscribe to the state of each of their +line appearances. + +\begin{verbatim} + +[line1] +exten => s,1,SLATrunk(line1) + +[line2] +exten => s,2,SLATrunk(line2) + +[sla_stations] +exten => station1,1,SLAStation(station1) +exten => station1_line1,hint,SLA:station1_line1 +exten => station1_line1,1,SLAStation(station1_line1) +exten => station1_line2,hint,SLA:station1_line2 +exten => station1_line2,1,SLAStation(station1_line2) + +exten => station2,1,SLAStation(station2) +exten => station2_line1,hint,SLA:station2_line1 +exten => station2_line1,1,SLAStation(station2_line1) +exten => station2_line2,hint,SLA:station2_line2 +exten => station2_line2,1,SLAStation(station2_line2) + +exten => station3,1,SLAStation(station3) +exten => station3_line1,hint,SLA:station3_line1 +exten => station3_line1,1,SLAStation(station3_line1) +exten => station3_line2,hint,SLA:station3_line2 +exten => station3_line2,1,SLAStation(station3_line2) + +\end{verbatim} + +\subsection{Trunks} +\label{trunks} + +An SLA trunk is a mapping between a virtual trunk and a real Asterisk device. +This device may be an analog FXO line, or something like a SIP trunk. A trunk +must be configured in two places. First, configure the device itself in the +channel specific configuration file such as zapata.conf or sip.conf. Once the +trunk is configured, then map it to an SLA trunk in sla.conf. + +\begin{verbatim} +[line1] +type=trunk +device=Zap/1 +\end{verbatim} + +Be sure to configure the trunk's context to be the same one that is set for the +"autocontext" option in sla.conf if automatic dialplan configuration is used. +This would be done in the regular device entry in zapata.conf, sip.conf, etc. +Note that the automatic dialplan generation creates the SLATrunk() extension +at extension 's'. This is perfect for Zap channels that are FXO trunks, for +example. However, it may not be good enough for an IP trunk, since the call +coming in over the trunk may specify an actual number. + +If the dialplan is being built manually, ensure that calls coming in on a trunk +execute the SLATrunk() application with an argument of the trunk name, as shown +in the dialplan example before. + +IP trunks can be used, but they require some additional configuration to work. + +For this example, let's say we have a SIP trunk called "mytrunk" that is going +to be used as line4. Furthermore, when calls come in on this trunk, they are +going to say that they are calling the number "12564286000". Also, let's say +that the numbers that are valid for calling out this trunk are NANP numbers, +of the form \_1NXXNXXXXXX. + +In sip.conf, there would be an entry for [mytrunk]. For [mytrunk], +set context=line4. + + +\begin{verbatim} +[line4] +type=trunk +device=Local/disa@line4_outbound +\end{verbatim} + + +\begin{verbatim} +[line4] +exten => 12564286000,1,SLATrunk(line4) + +[line4_outbound] +exten => disa,1,Disa(no-password|line4_outbound) +exten => _1NXXNXXXXXX,1,Dial(SIP/\${EXTEN}@mytrunk) +\end{verbatim} + + +So, when a station picks up their phone and connects to line 4, they are +connected to the local dialplan. The Disa application plays dialtone to the +phone and collects digits until it matches an extension. In this case, once +the phone dials a number like 12565551212, the call will proceed out the +SIP trunk. + +\subsection{Stations} + +An SLA station is a mapping between a virtual station and a real Asterisk device. +Currently, the only channel driver that has all of the features necessary to +support an SLA environment is chan\_sip. So, to configure a SIP phone to use +as a station, you must configure sla.conf and sip.conf. + +\begin{verbatim} +[station1] +type=station +device=SIP/station1 +trunk=line1 +trunk=line2 +\end{verbatim} + +Here are some hints on configuring a SIP phone for use with SLA: + +\begin{enumerate} +\item Add the SIP channel as a [station] in sla.conf. + +\item Configure the phone in sip.conf. If automatic dialplan configuration was + used by enabling the "autocontext" option in sla.conf, then this entry in + sip.conf should have the same context setting. + +\item On the phone itself, there are various things that must be configured to + make everything work correctly: + + Let's say this phone is called "station1" in sla.conf, and it uses trunks + named "line1" and line2". + \begin{enumerate} + + \item Two line buttons must be configured to subscribe to the state of the + following extensions: + - station1\_line1 + - station1\_line2 + + \item The line appearance buttons should be configured to dial the extensions + that they are subscribed to when they are pressed. + + \item If you would like the phone to automatically connect to a trunk when it + is taken off hook, then the phone should be automatically configured to + dial "station1" when it is taken off hook. + + \end{enumerate} +\end{enumerate} + + +\section{Configuration Examples} +\subsection{SLA and Voicemail} +\label{voicemail} + +This is an example of how you could set up a single voicemail box for the +phone system. The voicemail box number used in this example is 1234, which +would be configured in voicemail.conf. + +For this example, assume that there are 2 trunks and 3 stations. The trunks +are Zap/1 and Zap/2. The stations are SIP/station1, SIP/station2, and +SIP/station3. + +In zapata.conf, channel 1 has context=line1 and channel 2 has context=line2. + +In sip.conf, all three stations are configured with context=sla\_stations. + +When the stations pick up their phones to dial, they are allowed to dial +NANP numbers for outbound calls, or 8500 for checking voicemail. + + +sla.conf: +\begin{verbatim} +[line1] +type=trunk +device=Local/disa@line1_outbound + +[line2] +type=trunk +device=Local/disa@line2_outbound + +[station](!) +type=station +trunk=line1 +trunk=line2 + +[station1](station) +device=SIP/station1 + +[station2](station) +device=SIP/station2 + +[station3](station) +device=SIP/station3 + +\end{verbatim} + + +extensions.conf: +\begin{verbatim} +[macro-slaline] +exten => s,1,SLATrunk(${ARG1}) +exten => s,n,Goto(s-${SLATRUNK_STATUS}|1) +exten => s-FAILURE,1,Voicemail(1234|u) +exten => s-UNANSWERED,1,Voicemail(1234|u) + +[line1] +exten => s,1,Macro(slaline|line1) + +[line2] +exten => s,2,Macro(slaline|line2) + +[line1_outbound] +exten => disa,1,Disa(no-password|line1_outbound) +exten => _1NXXNXXXXXX,1,Dial(Zap/1/${EXTEN}) +exten => 8500,1,VoicemailMain(1234) + +[line2_outbound] +exten => disa,1,Disa(no-password|line2_outbound) +exten => _1NXXNXXXXXX,1,Dial(Zap/2/${EXTEN}) +exten => 8500,1,VoicemailMain(1234) + +[sla_stations] + +exten => station1,1,SLAStation(station1) +exten => station1_line1,hint,SLA:station1_line1 +exten => station1_line1,1,SLAStation(station1_line1) +exten => station1_line2,hint,SLA:station1_line2 +exten => station1_line2,1,SLAStation(station1_line2) + +exten => station2,1,SLAStation(station2) +exten => station2_line1,hint,SLA:station2_line1 +exten => station2_line1,1,SLAStation(station2_line1) +exten => station2_line2,hint,SLA:station2_line2 +exten => station2_line2,1,SLAStation(station2_line2) + +exten => station3,1,SLAStation(station3) +exten => station3_line1,hint,SLA:station3_line1 +exten => station3_line1,1,SLAStation(station3_line1) +exten => station3_line2,hint,SLA:station3_line2 +exten => station3_line2,1,SLAStation(station3_line2) + +\end{verbatim} + +\section{Call Handling} +\subsection{Summary} + +This section is intended to describe how Asterisk handles calls inside of the +SLA system so that it is clear what behavior is expected. + +Note that this section is not yet complete. + +\subsection{Station goes off hook (not ringing)} + +When a station goes off hook, it should initiate a call to Asterisk with the +extension that indicates that the phone went off hook without specifying a +specific line. In the examples in this document, for the station named +"station1", this extension is simply named, "station1". + +Asterisk will attempt to connect this station to the first available trunk +that is not in use. Asterisk will check the trunks in the order that they +were specified in the station entry in sla.conf. If all trunks are in use, +the call will be denied. + +If Asterisk is able to acquire an idle trunk for this station, then trunk +is connected to the station and the station will hear dialtone. The station +can then proceed to dial a number to call. As soon as a trunk is acquired, +all appearances of this line on stations will show that the line is in use. + +\subsection{Station goes off hook (ringing)} + +When a station goes off hook while it is ringing, it should simply answer +the call that had been initiated to it to make it ring. Once the station +has answered, Asterisk will figure out which trunk to connect it to. It +will connect it to the highest priority trunk that is currently ringing. +Trunk priority is determined by the order that the trunks are listed in +the station entry in sla.conf. + +\subsection{Line button on a station is pressed} + +When a line button is pressed on a station, the station should initiate a +call to Asterisk with the extension that indicates which line button was +pressed. In the examples given in this document, for a station named +"station1" and a trunk named "line1", the extension would be "station1\_line1". + +If the specified trunk is not in use, then the station will be connected to it and +will hear dialtone. All appearances of this trunk will then show that it +is now in use. + +If the specified trunk is on hold by this station, then this station will be +reconnected to the trunk. The line appearance for this trunk on this station +will now show in use. If this was the only station that had the call on hold, +then all appearances of this trunk will now show that it is in use. Otherwise, +all stations that are not currently connected to this trunk will show it +on hold. + +If the specified trunk is on hold by a different station, then this station +will be connected to the trunk only if the trunk itself and the station(s) that +have it on hold do not have private hold enabled. If connected, the appeareance +of this trunk on this station will then show in use. All stations that are not +currently connected to this trunk will show it on hold. + +\end{document} diff --git a/doc/sla.txt b/doc/sla.txt deleted file mode 100644 index acb9cb07b0..0000000000 --- a/doc/sla.txt +++ /dev/null @@ -1,225 +0,0 @@ -------------------------------------------------------------------------------- ---- Shared Line Appearances --------------------------------------------------- -------------------------------------------------------------------------------- - -------------------------------------------------------------------------------- -INTRODUCTION - -The "SLA" functionality in Asterisk is intended to allow a setup that emulates -a simple key system. It uses the various abstraction layers already built into -Asterisk to emulate key system functionality across various devices, including -IP channels. -------------------------------------------------------------------------------- - -------------------------------------------------------------------------------- -DIALPLAN CONFIGURATION - -The SLA implementation can automatically generate the dialplan necessary for -basic operation if the "autocontext" option is set for trunks and stations in -sla.conf. However, for reference, here is an automatically generated dialplan -to help with custom building of the dialplan to include other features, such as -voicemail. - -However, note that there is a little bit of additional configuration needed if -the trunk is an IP channel. This is discussed in the TRUNKS section. - -[line1] -exten => s,1,SLATrunk(line1) - -[line2] -exten => s,2,SLATrunk(line2) - -[sla_stations] -exten => station1,1,SLAStation(station1) -exten => station1_line1,hint,SLA:station1_line1 -exten => station1_line1,1,SLAStation(station1_line1) -exten => station1_line2,hint,SLA:station1_line2 -exten => station1_line2,1,SLAStation(station1_line2) - -exten => station2,1,SLAStation(station2) -exten => station2_line1,hint,SLA:station2_line1 -exten => station2_line1,1,SLAStation(station2_line1) -exten => station2_line2,hint,SLA:station2_line2 -exten => station2_line2,1,SLAStation(station2_line2) - -exten => station3,1,SLAStation(station3) -exten => station3_line1,hint,SLA:station3_line1 -exten => station3_line1,1,SLAStation(station3_line1) -exten => station3_line2,hint,SLA:station3_line2 -exten => station3_line2,1,SLAStation(station3_line2) -------------------------------------------------------------------------------- - -------------------------------------------------------------------------------- -TRUNKS - -Be sure to configure the trunk's context to be the same one that is set for the -"autocontext" option in sla.conf if automatic dialplan configuration is used. -This would be done in the regular device entry in zapata.conf, sip.conf, etc. -Note that the automatic dialplan generation creates the SLATrunk() extension -at extension 's'. This is perfect for Zap channels that are FXO trunks, for -example. However, it may not be good enough for an IP trunk, since the call -coming in over the trunk may specify an actual number. - -If the dialplan is being built manually, ensure that calls coming in on a trunk -execute the SLATrunk() application with an argument of the trunk name, as shown -in the dialplan example before. - -IP trunks can be used, but they require some additional configuration to work. - -For this example, let's say we have a SIP trunk called "mytrunk" that is going -to be used as line4. Furthermore, when calls come in on this trunk, they are -going to say that they are calling the number "12564286000". Also, let's say -that the numbers that are valid for calling out this trunk are NANP numbers, -of the form _1NXXNXXXXXX. - -In sip.conf, there would be an entry for [mytrunk]. For [mytrunk], -set context=line4. - - -sla.conf: - -[line4] -type=trunk -device=Local/disa@line4_outbound - - -extensions.conf: - -[line4] -exten => 12564286000,1,SLATrunk(line4) - -[line4_outbound] -exten => disa,1,Disa(no-password|line4_outbound) -exten => _1NXXNXXXXXX,1,Dial(SIP/${EXTEN}@mytrunk) - - -So, when a station picks up their phone and connects to line 4, they are -connected to the local dialplan. The Disa application plays dialtone to the -phone and collects digits until it matches an extension. In this case, once -the phone dials a number like 12565551212, the call will proceed out the -SIP trunk. -------------------------------------------------------------------------------- - - -------------------------------------------------------------------------------- -STATIONS - -Currently, the only channel driver that has all of the features necessary to -support an SLA environment is chan_sip. Here are some hints on configuring -a SIP phone for use with SLA: - -1) Add the SIP channel as a [station] in sla.conf. - -2) Configure the phone in sip.conf. If automatic dialplan configuration was - used by enabling the "autocontext" option in sla.conf, then this entry in - sip.conf should have the same context setting. - -3) On the phone itself, there are various things that must be configured to - make everything work correctly: - - Let's say this phone is called "station1" in sla.conf, and it uses trunks - named "line1" and line2". - - a) Two line buttons must be configured to subscribe to the state of the - following extensions: - - station1_line1 - - station1_line2 - - b) The line appearance buttons should be configured to dial the extensions - that they are subscribed to when they are pressed. - - c) If you would like the phone to automatically connect to a trunk when it - is taken off hook, then the phone should be automatically configured to - dial "station1" when it is taken off hook. -------------------------------------------------------------------------------- - - -------------------------------------------------------------------------------- -VOICEMAIL - -This is an example of how you could set up a single voicemail box for the -phone system. The voicemail box number used in this example is 1234, which -would be configured in voicemail.conf. - -For this example, assume that there are 2 trunks and 3 stations. The trunks -are Zap/1 and Zap/2. The stations are SIP/station1, SIP/station2, and -SIP/station3. - -In zapata.conf, channel 1 has context=line1 and channel 2 has context=line2. - -In sip.conf, all three stations are configured with context=sla_stations. - -When the stations pick up their phones to dial, they are allowed to dial -NANP numbers for outbound calls, or 8500 for checking voicemail. - - -sla.conf: - -[line1] -type=trunk -device=Local/disa@line1_outbound - -[line2] -type=trunk -device=Local/disa@line2_outbound - -[station](!) -type=station -trunk=line1 -trunk=line2 - -[station1](station) -device=SIP/station1 - -[station2](station) -device=SIP/station2 - -[station3](station) -device=SIP/station3 - - -extensions.conf: - -[macro-slaline] -exten => s,1,SLATrunk(${ARG1}) -exten => s,n,Goto(s-${SLATRUNK_STATUS}|1) -exten => s-FAILURE,1,Voicemail(1234|u) -exten => s-UNANSWERED,1,Voicemail(1234|u) - -[line1] -exten => s,1,Macro(slaline|line1) - -[line2] -exten => s,2,Macro(slaline|line2) - -[line1_outbound] -exten => disa,1,Disa(no-password|line1_outbound) -exten => _1NXXNXXXXXX,1,Dial(Zap/1/${EXTEN}) -exten => 8500,1,VoicemailMain(1234) - -[line2_outbound] -exten => disa,1,Disa(no-password|line2_outbound) -exten => _1NXXNXXXXXX,1,Dial(Zap/2/${EXTEN}) -exten => 8500,1,VoicemailMain(1234) - -[sla_stations] - -exten => station1,1,SLAStation(station1) -exten => station1_line1,hint,SLA:station1_line1 -exten => station1_line1,1,SLAStation(station1_line1) -exten => station1_line2,hint,SLA:station1_line2 -exten => station1_line2,1,SLAStation(station1_line2) - -exten => station2,1,SLAStation(station2) -exten => station2_line1,hint,SLA:station2_line1 -exten => station2_line1,1,SLAStation(station2_line1) -exten => station2_line2,hint,SLA:station2_line2 -exten => station2_line2,1,SLAStation(station2_line2) - -exten => station3,1,SLAStation(station3) -exten => station3_line1,hint,SLA:station3_line1 -exten => station3_line1,1,SLAStation(station3_line1) -exten => station3_line2,hint,SLA:station3_line2 -exten => station3_line2,1,SLAStation(station3_line2) - -------------------------------------------------------------------------------- -- 2.47.3