The configuration of an FXS channel is similar to that of an FXO channel. Let’s take a look.
The following is a minimal configuration for an FXS channel on a
TDM400P. The configuration is identical to the FXO channel configuration
above, with the addition of fxoks=1
.
Recall from our earlier discussion that the opposite type of signaling is used for FXO and FXS channels, so we will be configuring FXO signaling for our FXS channel. In the example below we are configuring channel 1 to use FXO signaling, with the kewlstart signaling protocol:
fxoks=1 fxsks=2 loadzone=us defaultzone=us
After loading the drivers for your hardware, you can verify their
state with the use of /sbin/ztcfg -vv
:
Zaptel Configuration ====================== Channel map: Channel 01: FXO Kewlstart (Default) (Slaves: 01) Channel 02: FXS Kewlstart (Default) (Slaves: 02) 2 channels configured.
The following configuration is identical to that for the FXO channel, with the
addition of a section for our FXS port and, of the line immediate=no
. The context for our FXS port is
phones
, the signaling is fxoks
(kewlstart), and the channel number is
set to 1
.
FXS channels can be configured to perform one of two different
actions when a phone is taken off the hook. The most common (and often
expected) option is for Asterisk to produce a dial tone and wait for
input from the user. This action is configured with immediate=no
. The alternative action is for
Asterisk to automatically perform a set of instructions configured in
the dialplan instead of producing a dial tone, which you indicate by
configuring immediate=yes
.[56] The instructions to be performed are found in the context
configured for the channel and will match the s
extension (both of these topics will be
discussed further in the following chapter).
Here’s our new zapata.conf:
[trunkgroups]
; define any trunk groups
[channels]
; hardware channels
; default
usecallerid=yes
hidecallerid=no
callwaiting=no
threewaycalling=yes
transfer=yes
echocancel=yes
echotraining=yes
immediate=no
; define channels
context=phones ; Uses the [internal] context in extensions.conf
signalling=fxo_ks ; Uses FXO signalling for an FXS channel
channel => 1 ; Telephone attached to port 1
context=incoming ; Incoming calls go to [incoming] in extensions.conf
signalling=fxs_ks ; Use FXS signalling for an FXO channel
channel => 2 ; PSTN attached to port 2
We will make use of our minimal dialplan we configured
earlier in the chapter to test our FXS port with the use of the
Echo()
application. The relevant section, which
should already exist in your dialplan, looks like this:
[internal] exten => 500,1,Verbose(1|Echo test application) exten => 500,n,Echo() exten => 500,n,Hangup() [phones] include => internal
Whatever you say, the Echo()
application will
relay back to you.
[56] Also referred to as the Batphone method, and more formally known as an Automatic Ringdown or Private Line Automatic Ringdown (PLAR) circuit. This method is commonly used at rental car counters and airports.