mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-25 22:18:07 +00:00 
			
		
		
		
	https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r162659 | mmichelson | 2008-12-10 10:10:25 -0600 (Wed, 10 Dec 2008) | 8 lines Add missing documentation to misdn.txt (closes issue #14052) Reported by: festr Patches: misdn.txt.patch uploaded by festr (license 443) ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@162667 65c4cc65-6c06-0410-ace0-fbb531ad65f3
		
			
				
	
	
		
			283 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
			
		
		
	
	
			283 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
| \subsection{Introduction}
 | |
| 
 | |
| This package contains the mISDN Channel Driver for the Asterisk PBX. It
 | |
| supports every mISDN Hardware and provides an interface for Asterisk.
 | |
| 
 | |
| \subsection{Features}
 | |
| 
 | |
| \begin{itemize}
 | |
| \item NT and TE mode
 | |
| \item PP and PMP mode
 | |
| \item BRI and PRI (with BNE1 and BN2E1 Cards)
 | |
| \item Hardware bridging
 | |
| \item DTMF detection in HW+mISDNdsp
 | |
| \item Display messages on phones (on those that support it)
 | |
| \item app\_SendText
 | |
| \item HOLD/RETRIEVE/TRANSFER on ISDN phones : )
 | |
| \item Allow/restrict user number presentation
 | |
| \item Volume control
 | |
| \item Crypting with mISDNdsp (Blowfish)
 | |
| \item Data (HDLC) callthrough
 | |
| \item Data calling (with app\_ptyfork +pppd)
 | |
| \item Echo cancellation
 | |
| \item Call deflection
 | |
| \item Some others
 | |
| \end{itemize}
 | |
| 
 | |
| \subsection{Fast Installation Guide}
 | |
| 
 | |
| It is easy to install mISDN and mISDNuser. This can be done by:
 | |
| \begin{itemize}
 | |
|      \item You can download latest stable releases from \url{http://www.misdn.org/downloads/}
 | |
| 
 | |
|      \item Just fetch the newest head of the GIT (mISDN project moved from CVS)
 | |
|      In details this process described here: \url{http://www.misdn.org/index.php/GIT}
 | |
| \end{itemize}
 | |
| 
 | |
| 
 | |
| then compile and install both with:
 | |
| \begin{astlisting}
 | |
| \begin{verbatim}
 | |
| cd mISDN ;
 | |
| make && make install
 | |
| \end{verbatim}
 | |
| \end{astlisting}
 | |
| (you will need at least your kernel headers to compile mISDN).
 | |
| \begin{astlisting}
 | |
| \begin{verbatim}
 | |
| cd mISDNuser ;
 | |
| make && make install
 | |
| \end{verbatim}
 | |
| \end{astlisting}
 | |
| Now you can compile chan\_misdn, just by making Asterisk:
 | |
| \begin{astlisting}
 | |
| \begin{verbatim}
 | |
| cd asterisk ;
 | |
| ./configure && make && make install
 | |
| \end{verbatim}
 | |
| \end{astlisting}
 | |
| That's all!
 | |
| 
 | |
| Follow the instructions in the mISDN Package for how to load the Kernel
 | |
| Modules. Also install process described in \url{http://www.misdn.org/index.php/Installing_mISDN}
 | |
| 
 | |
| \subsection{Pre-Requisites}
 | |
| 
 | |
| To compile and install this driver, you'll need at least one mISDN Driver and
 | |
| the mISDNuser package. Chan\_misdn works with both, the current release version
 | |
| and the development (svn trunk) version of Asterisk.
 | |
| 
 | |
| You should use Kernels $>$= 2.6.9
 | |
| 
 | |
| 
 | |
| \subsection{Configuration}
 | |
| 
 | |
| First of all you must configure the mISDN drivers, please follow the
 | |
| instructions in the mISDN package to do that, the main config file and config
 | |
| script is:
 | |
| \begin{astlisting}
 | |
| \begin{verbatim}
 | |
| /etc/init.d/misdn-init  and
 | |
| /etc/misdn-init.conf
 | |
| \end{verbatim}
 | |
| \end{astlisting}
 | |
| Now you will want to configure the misdn.conf file which resides in the
 | |
| Asterisk config directory (normally /etc/asterisk).
 | |
| 
 | |
| \subsubsection{misdn.conf: [general]}
 | |
| The misdn.conf file contains a "general" subsection, and user subsections which
 | |
| contain misdn port settings and different Asterisk contexts.
 | |
| 
 | |
| In the general subsection you can set options that are not directly port
 | |
| related. There is for example the very important debug variable which you can
 | |
| set from the Asterisk cli (command line interface) or in this configuration
 | |
| file, bigger numbers will lead to more debug output. There's also a trace file
 | |
| option, which takes a path+filename where debug output is written to.
 | |
| 
 | |
| \subsubsection{misdn.conf: [default] subsection}
 | |
| 
 | |
| The default subsection is another special subsection which can contain all the
 | |
| options available in the user/port subsections. The user/port subsections inherit
 | |
| their parameters from the default subsection.
 | |
| 
 | |
| \subsubsection{misdn.conf: user/port subsections}
 | |
| 
 | |
| The user subsections have names which are unequal to "general". Those subsections
 | |
| contain the ports variable which mean the mISDN Ports. Here you can add
 | |
| multiple ports, comma separated.
 | |
| 
 | |
| Especially for TE-Mode Ports there is a msns option. This option tells the
 | |
| chan\_misdn driver to listen for incoming calls with the given msns, you can
 | |
| insert a '*' as single msn, which leads to getting every incoming call. If you
 | |
| want to share on PMP TE S0 with Asterisk and a phone or ISDN card you should
 | |
| insert here the msns which you assign to Asterisk.  Finally a context variable
 | |
| resides in the user subsections, which tells chan\_misdn where to send incoming
 | |
| calls to in the Asterisk dial plan (extension.conf).
 | |
| 
 | |
| 
 | |
| \subsubsection{Dial and Options String}
 | |
| 
 | |
| The dial string of chan\_misdn got more complex, because we added more features,
 | |
| so the generic dial string looks like:
 | |
| 
 | |
| \begin{astlisting}
 | |
| \begin{verbatim}
 | |
| mISDN/<port>[:bchannel]|g:<group>/<extension>[/<OPTIONSSTRING>]
 | |
| 
 | |
| The Optionsstring looks Like:
 | |
| :<optchar><optarg>:<optchar><optarg>...
 | |
| 
 | |
| the ":" character is the delimiter.
 | |
| 
 | |
| The available options are:
 | |
|   a - Have Asterisk detect DTMF tones on called channel
 | |
|   c - Make crypted outgoing call, optarg is keyindex
 | |
|   d - Send display text to called phone, text is the optarg
 | |
|   e - Perform echo cancelation on this channel,
 | |
|       takes taps as optarg (32,64,128,256)
 | |
|  e! - Disable echo cancelation on this channel
 | |
|   f - Enable fax detection
 | |
|   h - Make digital outgoing call
 | |
|  h1 - Make HDLC mode digital outgoing call
 | |
|   i - Ignore detected DTMF tones, don't signal them to Asterisk,
 | |
|       they will be transported inband.
 | |
|  jb - Set jitter buffer length, optarg is length
 | |
|  jt - Set jitter buffer upper threshold, optarg is threshold
 | |
|  jn - Disable jitter buffer
 | |
|   n - Disable mISDN DSP on channel.
 | |
|       Disables: echo cancel, DTMF detection, and volume control.
 | |
|   p - Caller ID presentation,
 | |
|       optarg is either 'allowed' or 'restricted'
 | |
|   s - Send Non-inband DTMF as inband
 | |
|  vr - Rx gain control, optarg is gain
 | |
|  vt - Tx gain control, optarg is gain
 | |
| \end{verbatim}
 | |
| \end{astlisting}
 | |
| 
 | |
| chan\_misdn registers a new dial plan application "misdn\_set\_opt" when
 | |
| loaded. This application takes the Optionsstring as argument. The Syntax is:
 | |
| 
 | |
| \begin{verbatim}
 | |
| misdn_set_opt(<OPTIONSSTRING>)
 | |
| \end{verbatim}
 | |
| 
 | |
| When you set options in the dialstring, the options are set in the external
 | |
| channel. When you set options with misdn\_set\_opt, they are set in the current
 | |
| incoming channel. So if you like to use static encryption, the scenario looks
 | |
| as follows:
 | |
| 
 | |
| \begin{verbatim}
 | |
| Phone1 --> * Box 1 --> PSTN_TE
 | |
| PSTN_TE --> * Box 2 --> Phone2
 | |
| \end{verbatim}
 | |
| 
 | |
| The encryption must be done on the PSTN sides, so the dialplan on the boxes
 | |
| are:
 | |
| 
 | |
| \begin{verbatim}
 | |
| * Box 1:
 | |
| exten => _${CRYPT_PREFIX}X.,1,Dial(mISDN/g:outbound/:c1)
 | |
| 
 | |
| * Box 2:
 | |
| exten => ${CRYPT_MSN},1,misdn_set_opt(:c1)
 | |
| exten => ${CRYPT_MSN},2,dial(${PHONE2})
 | |
| \end{verbatim}
 | |
| 
 | |
| 
 | |
| \subsection{mISDN CLI commands}
 | |
| 
 | |
| At the Asterisk cli you can try to type in:
 | |
| 
 | |
| \begin{verbatim}
 | |
| misdn <tab> <tab>
 | |
| \end{verbatim}
 | |
| 
 | |
| Now you should see the misdn cli commands:
 | |
| 
 | |
| \begin{astlisting}
 | |
| \begin{verbatim}
 | |
| - clean
 | |
|   -> pid    (cleans a broken call, use with care, leads often
 | |
|        to a segmentation fault)
 | |
| - send
 | |
|   -> display  (sends a Text Message to a Asterisk channel,
 | |
|        this channel must be an misdn channel)
 | |
| - set
 | |
|   -> debug  (sets debug level)
 | |
| - show
 | |
|   -> config (shows the configuration options)
 | |
|   -> channels (shows the current active misdn channels)
 | |
|   -> channel  (shows details about the given misdn channels)
 | |
|   -> stacks (shows the current ports, their protocols and states)
 | |
|   -> fullstacks (shows the current active and inactive misdn channels)
 | |
| 
 | |
| - restart
 | |
|   -> port   (restarts given port (L2 Restart) )
 | |
| 
 | |
| - reload    (reloads misdn.conf)
 | |
| \end{verbatim}
 | |
| \end{astlisting}
 | |
| 
 | |
| You can only use "misdn send display" when an Asterisk channel is created and
 | |
| isdn is in the correct state. "correct state" means that you have established a
 | |
| call to another phone (must not be isdn though).
 | |
| 
 | |
| Then you use it like this:
 | |
| 
 | |
| misdn send display mISDN/1/101 "Hello World!"
 | |
| 
 | |
| where 1 is the Port of the Card where the phone is plugged in, and 101 is the
 | |
| msn (callerid) of the Phone to send the text to.
 | |
| 
 | |
| \subsection{mISDN Variables}
 | |
| 
 | |
| mISDN Exports/Imports a few Variables:
 | |
| 
 | |
| \begin{verbatim}
 | |
| - MISDN_ADDRESS_COMPLETE :  Is either set to 1 from the Provider, or you
 | |
|         can set it to 1 to force a sending complete.
 | |
| \end{verbatim}
 | |
| 
 | |
| 
 | |
| \subsection{Debugging and sending bug reports}
 | |
| 
 | |
| If you encounter problems, you should set up the debugging flag, usually
 | |
| debug=2 should be enough. The messages are divided into Asterisk and mISDN
 | |
| parts.  mISDN Debug messages begin with an 'I', Asterisk messages begin with
 | |
| an '*', the rest is clear I think.
 | |
| 
 | |
| Please take a trace of the problem and open a report in the Asterisk issue
 | |
| tracker at \url{http://bugs.digium.com} in the "channel drivers" project,
 | |
| "chan\_misdn" category. Read the bug guidelines to make sure you
 | |
| provide all the information needed.
 | |
| 
 | |
| 
 | |
| \subsection{Examples}
 | |
| 
 | |
| Here are some examples of how to use chan\_misdn in the dialplan
 | |
| (extensions.conf):
 | |
| 
 | |
| \begin{astlisting}
 | |
| \begin{verbatim}
 | |
| [globals]
 | |
| OUT_PORT=1 ; The physical Port of the Card
 | |
| OUT_GROUP=ExternE1 ; The Group of Ports defined in misdn.conf
 | |
| 
 | |
| [misdnIn]
 | |
| exten => _X.,1,Dial(mISDN/${OUT_PORT}/${EXTEN})
 | |
| exten => _0X.,1,Dial(mISDN/g:${OUT_GROUP}/${EXTEN:1})
 | |
| exten => _1X.,1,Dial(mISDN/g:${OUT_GROUP}/${EXTEN:1}/:dHello)
 | |
| exten => _1X.,1,Dial(mISDN/g:${OUT_GROUP}/${EXTEN:1}/:dHello Test:n)
 | |
| \end{verbatim}
 | |
| \end{astlisting}
 | |
| 
 | |
| On the last line, you will notice the last argument (Hello); this is sent
 | |
| as Display Message to the Phone.
 | |
| 
 | |
| \subsection{Known Problems}
 | |
| 
 | |
| Q: I cannot hear any tone after a successful CONNECT to the other end.
 | |
| 
 | |
| A: You forgot to load mISDNdsp, which is now needed by chan\_misdn for switching
 | |
| and DTMF tone detection.
 |