FreeBSD-Asterisk
From IdefixWiki
Contents |
Basics
My configuration:
<===>a/b (and door bell)
|
|
extern<===>NTBA<===>HFC-S(TE)<===>Asterisk<===>HFC-S(NT)<===>ISDN-PBX
| |
| |
| <===>internal S0 (with internal phones)
|
<===>VoIP (SIP and IAX2)
ISDN:
TE mode is used for connection between PBX and NTBA.
NT mode is used for transparent connection, e.g. PBX and internal S0 bus.
| Group 2 | Group 1 | Mode | ||
|---|---|---|---|---|
| b2 | a2 | b1 | a1 | |
| 6 | 3 | 5 | 4 | TE-Mode |
| 5 | 4 | 6 | 3 | NT-Mode |
| yellow | black | green | red or brown | |
Codecs
| Codec number | Codec | Bitrate |
|---|---|---|
| G.711 | ulaw | 64kbps |
| G.711 | alaw | 64kbps |
| G.726 | ADPCM | 16/24/32/40 kbps |
| G.729 | 8 kbps (requires license) | |
| GSM | 13kbps |
http://www.readytechnology.co.uk/open/ipp-codecs-g729-g723.1/
ISDN
__
___| |____
| |
| 12345678 |
------------
Twisted-Pair-Kabel Steckerbelegung und Pinbelegung
für Netzwerk- und ISDN-Kabel bzw. -Dosen RJ45
Stecker: RJ45 (HIROSE)
Kabel: Cat.5-Leitung, 100 Ohm Wellenwiderstand, geschirmt/ungeschirmt
Verwendung: Ethernet 10/100 MBit/s, Twisted-Pair, 10/100-Base-T/x, ISDN
Pin Ethernet [A] [B] [E] [I] ISDN Pin
--------------------------------------------------------------------------------------
1 Transmit Data + grün/weiß rot/weiß braun/weiß 1
2 Transmit Data - grün rot braun 2
3 Receive Data + rot/weiß grün/weiß blau/weiß braun/weiß A2 3
4 ungenutzt - blau blau blau A1 4
5 ungenutzt + blau/weiß blau/weiß blau/weiß B1 5
6 Receive Data - rot grün blau braun B2 6
7 ungenutzt + braun/weiß braun/weiß 7
8 ungenutzt - braun braun 8
STANDART-KABEL 1:1 "Plain/Normal/Straight":
Die Stecker an beiden Enden werden mit dem gleichen Farbcode belegt.
Ethernet: entweder beide Enden mit Farbcode [A] oder beide [B]
(HUB <-> PC oder HUB <-> HUB)
ISDN: beide Enden mit Farbcode [I]
(Telefon <-> Anlage oder Dose <-> Dose)
GEKREUZTES KABEL "Crossed":
Jeweils ein Stecker wird mit Farbcode [A] und
(der am anderen Ende) mit Farbcode [B] belegt.
Ethernet: (PC <-> PC oder auch HUB <-> HUB)
EINZELDOSEN: Kabel <-> Dose Farbcode:
Ethernet Pin 1,2,3,6 <-> Pin 1,2,3,6 entweder beide [A] oder beide [B]
ISDN Pin 3,4,5,6 <-> Pin 3,4,5,6 beide [I]
DOPPELDOSEN: Kabel <-> Dose
1. Buchse: Ethernet Pin 1,2,3,6 [B] <-> Pin 1,2,3,6 [B]
2. Buchse: Ethernet Pin 4,5,7,8 [E] <-> Pin 1,2,3,6 [B]
(Kabel:braun<->Dose:rot und Kabel:blau<->Dose:grün verbinden)
2. Buchse: ISDN Pin 4,5,7,8 [I] <-> Pin 3,4,5,6 [B]
(Kabel:braun<->Dose:grün und Kabel:blau<->Dose:blau verbinden)
WICHTIG: die Buchsen der Dose sollten nach unten zeigen (Staubfang) !
Mit dieser Pinbelegung ist es möglich 2 Anschlüsse mit einem Kabel zu bedienen.
Dabei muß darauf geachtet werden, daß das Ende des Kabels, welches die
Doppeldose bedient auch 2 Stecker bekommt !
Beide Enden müssen die gleichen Farbcodes wie die Dose aufweisen:
also zweimal Farbcode B für zwei Ethernet-Anschlüsse bzw.
einmal Farbcode B für das Kabelende von der ersten Buchse (Ethernet) und
einmal Farbcode I für das Kabelende von der zweiten Buchse (ISDN).
PINBELEGUNG BUCHSE "RJ-45":
(Draufsicht: dort wo der Stecher hineinkommt)
----------
|12345678|
| |
---| |---
----
PINBELEGUNG STECKER "RJ-45":
(Draufsicht: so herum kommt er in die Buchse hinein)
/--------/|
/12345678/ |
/--------/ /
/ / /|
|--------| /-- <- Nase am Stecker
| () | /
---()-----
()
Kabel -> ()
()
MOH
be sure that /usr/ports/net/asterisk-addons/ is installed.
Edit the file /usr/local/etc/asterisk/musiconhold.conf
[default] mode=files directory=/usr/local/moh-asterisk random=yes
Now copy the mp3s in the folder /usr/local/moh-asterisk and restart asterisk. You can test MoH with editing extensions.conf:
exten => 50,1,Answer exten => 50,2,MusicOnHold exten => 50,3,HangUp
Now dial 50 and you should hear MoH.
CDR
Create a file mysql_odbc:
[MySQL] Description = MySQL ODBC MyODBC Driver Driver = /usr/local/lib/libmyodbc3.so FileUsage = 1
Then load the file with:
odbcinst -i -d -f mysql_odbc
Create a file mysql_odbc_ini:
[MySQL-asterisk] Description = MySQL ODBC Driver Testing Driver = MySQL Socket = /tmp/mysql.sock Server = localhost User = username Password = password Database = asteriskcdrdb Option = 3 #Port =
Then load the file with:
odbcinst -i -s -f mysql_odbc_ini
To test it:
isql MySQL-asterisk <username> <password>
Create the file /usr/local/etc/asterisk/cdr_odbc.conf:
; ; cdr_unixodbc.conf ; [global] dsn=MySQL-asterisk username=<username> password=<password> loguniqueid=yes
Create the following table in the mysql database:
CREATE TABLE cdr ( calldate datetime NOT NULL default '0000-00-00 00:00:00', clid varchar(80) NOT NULL default '', src varchar(80) NOT NULL default '', dst varchar(80) NOT NULL default '', dcontext varchar(80) NOT NULL default '', channel varchar(80) NOT NULL default '', dstchannel varchar(80) NOT NULL default '', lastapp varchar(80) NOT NULL default '', lastdata varchar(80) NOT NULL default '', duration int(11) NOT NULL default '0', billsec int(11) NOT NULL default '0', disposition varchar(45) NOT NULL default '', amaflags int(11) NOT NULL default '0', accountcode varchar(20) NOT NULL default '', uniqueid varchar(32) NOT NULL default '', userfield varchar(255) NOT NULL default '' );
Capi
For active ISDN cards with FreeBSD 5.x use Capi for BSD from the side [1] and [2].
For FreeBSD 6.x and newer use I4B (active cards are not working right now (ITK TK1)).
Get the new version with subversion:
mkdir -p /usr/local/src/i4b cd !$ svn --username anonsvn --password anonsvn checkout svn://svn.turbocat.net/i4b
Go to the directory:
/usr/local/src/i4b/i4b/trunk/i4b/module
compile module with:
make depend all install
cd ../src/sys/dev/usb cp usb_subr*[ch] /usr/src/sys/dev/usb/ make -C /usr/src/sys/modules/usb all install
ok now it's time to reboot. After the pc is up again, load the kernel modules with:
kldload usb kldload i4b
If you got an error message here be sure that usb is not included in the kernel, remove it recompile kernel and reboot again.
To debug use:
isdnconfig -u 0 -p DRVR_DSS1_NT isdndecode -u 0 -i -o -x
cd /usr/local/src/i4b/i4b/trunk/i4b/FreeBSD.i4b
enter
make S=../src package make install
Configure the Kernelconfiguration
# I4B section # options IPR_VJ device "i4bdss1" device "i4b" device "i4btrc" device "i4bctl" device "i4brbch" device "i4btel" device "i4bipr" device "i4bisppp" # device ihfc device usb device pcm #or device sound #if device pcm does not exist
Recompile the kernel with (my kernel file is SERVER2, use your file here)
cd /usr/src && make buildkernel installkernel KERNCONF=SERVER2_I4B -DNOCLEAN -DNO_CLEAN
The Backupkernel can be found under:
/usr/local/src/i4b/i4b/devfs/trunk/FreeBSD.i4b/kernel
Reboot the system.
Now we can test if the isdn card is working. I use two ISDN cards, one in NT mode (device 0) and one in TE mode (device 1). For the device 0 (NT-mode) a crosslink ISDN cable is necessary. Connect for TE mode your ISDN card to your ISDN bus (ISDN phone has number *93 at home). Connect for NT mode a phone to a NTBA with a crosslinked cable (ISDN phone has number 93).
isdnconfig -u 0 -p DRVR_DSS1_NT capitest -u 0 -o "93" capitest -u 1 -o "*93"
For both tests the phone should ring.
Now compile and install the chan_capi module:
cd /usr/local/src/i4b/i4b/trunk/chan_capi gmake gmake install gmake clean
Now make the configuration in asterisk. Edit capi.conf:
[general]
nationalprefix=0
internationalprefix=00
rxgain=1.0
txgain=1.0
digit_timeout=2
[ISDNTE] ;this example interface gets name 'ISDN1' and may be any
;name not starting with 'g' or 'contr'.
isdnmode=msn ;'MSN' (point-to-multipoint)
incomingmsn=* ;allow incoming calls to this list of MSNs/DIDs, * == any
controller=1 ;ISDN4BSD default (first controller)
group=1 ;dialout group
;prefix=0 ;set a prefix to calling number on incoming calls
softdtmf=on ;enable/disable software dtmf detection, recommended for AVM cards
relaxdtmf=on ;in addition to softdtmf, you can use relaxed dtmf detection
accountcode= ;Asterisk accountcode to use in CDRs
context=capi-extern ;context for incoming calls
holdtype=local ;when Asterisk puts the call on hold, ISDN HOLD will be used. If
;set to 'local' (default value), no hold is done and Asterisk may
;play MOH.
;immediate=yes ;immediate start of pbx with extension 's' if no digits were
;received on incoming call (no destination number yet)
echocancel=no ;disable echo canceller
echosquelch=no ;primitive echo suppression
;echocancelold=yes;use facility selector 6 instead of correct 8 (necessary for older eicon drivers)
;echotail=64 ;echo cancel tail setting
;bridge=yes ;native bridging (CAPI line interconnect) if available
;callgroup=1 ;Asterisk call group
;deflect=1234567 ;deflect incoming calls to 1234567 if all B channels are busy
devices=2 ;number of concurrent calls on this controller
;(2 makes sense for single BRI, 30 for PRI)
[ISDNNT] ;this example interface gets name 'ISDN1' and may be any
;name not starting with 'g' or 'contr'.
isdnmode=did ;'MSN' (point-to-multipoint)
ntmode=yes
incomingmsn=* ;allow incoming calls to this list of MSNs/DIDs, * == any
controller=0 ;ISDN4BSD default (first controller)
group=1 ;dialout group
;prefix=0 ;set a prefix to calling number on incoming calls
softdtmf=on ;enable/disable software dtmf detection, recommended for AVM cards
relaxdtmf=on ;in addition to softdtmf, you can use relaxed dtmf detection
accountcode= ;Asterisk accountcode to use in CDRs
context=capi-intern ;context for incoming calls
holdtype=local ;when Asterisk puts the call on hold, ISDN HOLD will be used. If
;set to 'local' (default value), no hold is done and Asterisk may
;play MOH.
;immediate=yes ;immediate start of pbx with extension 's' if no digits were
;received on incoming call (no destination number yet)
echocancel=yes ;disable echo canceller
echosquelch=no ;primitive echo suppression
;echocancelold=yes;use facility selector 6 instead of correct 8 (necessary for older eicon drivers)
;echotail=64 ;echo cancel tail setting
bridge=yes ;native bridging (CAPI line interconnect) if available
;callgroup=1 ;Asterisk call group
;deflect=1234567 ;deflect incoming calls to 1234567 if all B channels are busy
devices=2 ;number of concurrent calls on this controller
;(2 makes sense for single BRI, 30 for PRI)
Write e.g. the following in your extensions.conf:
[capi-in]
exten => 97,1,Ringing
exten => 97,2,Set(LANGUAGE()=de)
exten => 97,3,GotoIf($["${CALLERID}" = "91"]?97,1000) ; Myself, move to voicemail Menu
exten => 97,4,GotoIf($["${CALLERID}" = "92"]?97,1000) ; Myself, move to voicemail Menu
exten => 97,5,GotoIf($["${CALLERID}" = "93"]?97,1000) ; Myself, move to voicemail Menu
exten => 97,6,GotoIf($["${CALLERID}" = "94"]?97,1000) ; Myself, move to voicemail Menu
exten => 97,7,GotoIf($["${CALLERID}" = "12"]?97,1000) ; Myself, move to voicemail Menu
exten => 97,8,GotoIf($["${CALLERID}" = "13"]?97,1000) ; Myself, move to voicemail Menu
exten => 97,9,GotoIf($["${CALLERID}" = ""]?97,2000) ; No dialnumber move to voicemail
exten => 97,10,DIAL(${IDEFIXGROUP})
exten => 97,11,Hangup
exten => 97,1000,Answer
exten => 97,1001,VoicemailMain(2000) ; hear voicemail
exten => 97,1002,Hangup
; Caller without number, wait and then transfer to voicemail
exten => 97,2000,DIAL(${IDEFIXGROUP},15,j) ; No dialnumber, move to voicemail after some seconds
exten => 97,2001,Answer
exten => 97,2002,Voicemail(u2000)
exten => 97,2003,Hangup
; No callerid, no phone available
exten => 97,2101,Wait(15)
exten => 97,2102,Answer
exten => 97,2103,Voicemail(u2000)
exten => 97,2104,Hangup
[iax-out]
; Call from VoIP to ISDN
exten => _*.,1,Dial(CAPI/ISDN1/98:${EXTEN:1})
exten => _*.,2,Congestion
exten => _*.,3,HangUp
Restart asterisk with:
asterisk -r restart gracefully
Debugging ISDN Protocol
You can trace the protocol with:
isdndecode -u 1 -i -o -x
Hardphones
- The Grandstream GXP-2000 is working fine here with firmware 1.1.0.13.
- Linksys SPA-941/942 I recommend the Linksys/Cisco/Sipura SPA-941
- Polycom 501/601
- Cisco 7960
- Polycom 301
- Snom 320/360
The pa1688 soon to be ra-1688 chipp speaks iax/sip/h323 Yughen phones YWH 10/12 YWH 100/110 to stata a few.
Yughen phones speak iax. ywh10 ywh12 ywh10 to point out a few PA 1688 chip set now new ar 1688 chip
http://www.voip-info.org/wiki/view/VOIP+Phones+Reviews
Good phones could be:
- Zulty WIP 2 (Wireless via WLAN) (http://www.zultys.com/index.jsp?tab=productdetail&product=wip2&detail=datasheet-wip2&type=phones)
- hard phone- The Aastra 480i (http://www.aastratelecom.com)
- cellphone and WiFi phone: http://www.abptech.com/products/Pirelli/DPL10.html
doro isdn 2600 (ISDN wireless)
Softphones
IAX2 Software:
http://www.marccharbonneau.com/asterisk/mediaxphone.php
SIP Software:
http://www.kapanga.net/IP/home.cfm
Sipgate
Edit sip.conf and sip_custom.conf replace <userid> with the 7 digit username and <password> with the sip-password:
sip.conf:
[general] ... disallow=all ; First disallow all codecs ;allow=speex allow=alaw allow=ulaw ; Allow codecs in order of preference allow=g729 allow=slinear allow=gsm allow=ilbc ; Note: codec order is respected only in [general] nat=yes register => <userid>:<password>@sipgate.de/<userid>
sip_custom.conf
[sipgate-out] type=friend context=incoming_sipgate username=<userid> fromuser=<userid> authuser=<userid> secret=<password> host=sipgate.de fromdomain=sipgate.de ;dtmfband=inband insecure=very ; otherwise I get authentication errors nat=yes qualify=yes canreinvite=no [200] type=friend username=testuser secret=geheim host=dynamic dtmfmode=rfc2833 context=sip-out canreinvite=no mailbox=2000@default
Edit extensions_custom.conf:
[incoming_sipgate]
exten => <userid>,1,Ringing
exten => <userid>,2,Set(LANGUAGE()=de)
exten => <userid>,3,DIAL(${IDEFIXGROUP})
exten => <userid>,4,Hangup
exten => _X.,1,NoOp(--- ${CALLERID} calling on sipgate (${EXTEN}) ---)
exten => _X.,2,Set(LANGUAGE()=de)
exten => _X.,3,Ringing
exten => _X.,4,Wait,4
exten => _X.,5,Answer
exten => _X.,6,Playback(invalid)
exten => _X.,7,Hangup
[sip-out]
include => sip-sipgate-out
[sip-sipgate-out]
exten => _1XXX.,1,SetCallerId(<userid>)
exten => _1XXX.,2,Dial(SIP/${EXTEN:1}@sipgate-out,,trRg)
exten => _1XXX.,3,Hangup
Sipport
Sipport can use SIP and IAX2 so I splitted it into two sections.
SIP
Replace <userid> with the user sipXXXXX and <password> with your SIP password, edit sip.conf:
[general] ... qualify=yes disallow=all ; First disallow all codecs ;allow=speex allow=alaw allow=ulaw ; Allow codecs in order of preference allow=g729 allow=slinear allow=gsm allow=ilbc ; Note: codec order is respected only in [general] nat=yes register => <userid>:<password>@sip.sipport.de
Edit sip_custom.conf
[sipportunity-out] type=friend context=incoming_portunity username=<userid> fromuser=<userid> authuser=<userid> secret=<password> host=sip.sipport.de fromdomain=sip.sipport.de ;dtmfband=inband ;insecure=very ; otherwise I get authentication errors nat=yes qualify=yes canreinvite=no [200] type=friend username=testaccount secret=geheim host=dynamic dtmfmode=rfc2833 context=sip-out canreinvite=no ;callerid=5550273 mailbox=2000@default
The incoming rule [incoming-portunity] for IAX2 and SIP is equal, edit extensions_custom.conf:
[incoming-portunity]
exten => s,1,DIAL(${IDEFIXGROUP})
exten => s,2,Hangup
;exten => s,1,NoOp(--- ${CALLERID} calling on portunity over IAX2 (${EXTEN}) ---)
;exten => s,2,Set(LANGUAGE()=de)
;exten => s,3,Ringing
;exten => s,4,Wait,4
;exten => s,5,Answer
;exten => s,6,Playback(invalid)
;exten => s,7,Hangup
[sip-out]
include => sip-sipport-out
...
[sip-sipport-out]
; with leading 2 using SIP-sipport
exten => _2XXX.,1,Dial(SIP/${EXTEN:1}@sipportunity-out,,trRg)
exten => _2XXX.,2,Hangup
IAX2
Replace <userid> with the iax-userid iaxXXXXX and <password> with your IAX2 password, edit iax.conf:
[general] ... register => <userid>:<password>@iax.iaxport.de
Edit iax_custom.conf:
[portunity-out] type=peer host=iax.iaxport.de username=<userid> secret=<password> ;peercontext=iaxport context=incoming-portunity ;notransfer=yes [portunity-in] type=user context=incoming-portunity permit=82.139.223.1/255.255.255.255 disallow=all allow=ulaw ; asterisk 1.2.8 seems to have a codec problem so force it to ulaw ;allow=alaw ;allow=gsm [202] type=friend host=dynamic context=iax-out username=testaccount secret=geheim permit=192.168.0.0/255.255.255.0 mailbox=2000@default notransfer=1
The dialin context [incoming-portunity] is for IAX2 and SIP equal, edit extensions_custom.conf:
[incoming-portunity]
exten => s,1,DIAL(${IDEFIXGROUP})
exten => s,2,Hangup
;exten => s,1,NoOp(--- ${CALLERID} calling on portunity over IAX2 (${EXTEN}) ---)
;exten => s,2,Set(LANGUAGE()=de)
;exten => s,3,Ringing
;exten => s,4,Wait,4
;exten => s,5,Answer
;exten => s,6,Playback(invalid)
;exten => s,7,Hangup
[iax-out]
include => iax2-sipport-out
[iax2-sipport-out]
; with leading 3 using IAX-sipport
exten => _3XXX.,1,Dial(IAX2/portunity-out/${EXTEN:1},,trRg)
exten => _3XXX.,2,Hangup
BLF
Edit extensions_custom.conf:
... [iax-out] include => internal ... [sip-out] include => internal ... [internal] include => hint exten => 200,1,Dial(SIP/200) exten => 200,2,Hangup exten => 201,1,Dial(SIP/201) exten => 201,2,Hangup exten => 202,1,Dial(IAX2/202) exten => 202,2,Hangup [hint] exten => 200,hint,SIP/200 exten => 201,hint,SIP/201 exten => 202,hint,IAX2/202 ...
Edit sip.conf:
[general] ... subscribecontext=hint ...
Reload asterisk and control it with:
asterisk -r reload show hints
You should see something like:
-= Registered Asterisk Dial Plan Hints =-
202 : IAX2/202 State:Idle Watchers 1
201 : SIP/201 State:Idle Watchers 1
200 : SIP/200 State:Unavailable Watchers 1
----------------
- 3 hints registered
Now configure your phone to display the status.
Fax
We will use iaxmodem and hylafax.
Install necessary software:
cd /usr/ports/comms/spandsp-devel make install cd /usr/ports/net/iaxmodem/ make install cd /usr/ports/comms/hylafax make install
Asterisk can receive and send fax with spandsp and the application app_rxfax and app_txfax. Test the script with:
/usr/local/share/asterisk/scripts/fax2mail "54" "" "1" "email" "/var/spool/asterisk/fax/1157137152.7"
Receiving a fax
Edit the extensions.conf:
; =========== START fax stuff ===========
[macro-faxreceive]
exten => s,1,Wait(3)
exten => s,n,SetVar(SCRIPTFILE=/usr/local/share/asterisk/scripts/fax2mail)
exten => s,n,SetVar(FAXFILE=/var/spool/asterisk/fax/${UNIQUEID})
exten => s,n,SetVar(MAILADDR=idefix@fechner.net)
exten => s,n,rxfax(${FAXFILE})
exten => s,n,system("${SCRIPTFILE}" "${CALLERIDNUM}" "${CALLERIDNAME}" "${FAXPAGES}" "${MAILADDR}" "${FAXFILE}")
[fax]
exten => 666,1,Macro(faxreceive)
exten => 666,2,Hangup
; ^^^^^^^^^^^^^^ END fax stuff ^^^^^^^^^^^^^^
Install perl modules:
cd /usr/ports/mail/p5-MIME-Lite make install clean
Use the script /usr/local/share/asterisk/scripts/fax2mail:
#!/usr/local/bin/perl
use strict;
use MIME::Lite;
use File::Temp qw(tempdir);
my $emailFrom= 'email';
my $faxFrom=shift(@ARGV);
my $faxFromName=shift(@ARGV);
my $faxPages=shift(@ARGV);
my $emailTo=shift(@ARGV);
my $file=shift(@ARGV);
system("tiff2pdf -o $file.pdf -j $file");
my $mail=new MIME::Lite(
From => $emailFrom,
To => $emailTo,
Type => 'text/plain; charset=iso-8859-1',
Subject => sprintf('Fax from %s (%s)',$faxFrom,$faxPages),
Data => sprintf('Fax station ID of the sender..: %s
Caller-ID of the sender.......: %s
Number of pages...............: %d',$faxFrom,$faxFromName,$faxPages)
);
$mail->attach(
Type => 'application/pdf',
Filename => sprintf('Fax.pdf'),
Path => "$file.pdf"
);
$mail->send();
unlink("$file.pdf");
Sending a Fax
Download http://www.inter7.com/eps/eps-1.5.tar.gz.
tar xzvf eps-1.5.tar.gz cd eps-1.5
Edit Makefile:
LIBDIR = /usr/local/lib INCDIR = /usr/local/include/eps
Compile and install it with:
make make install make clean
Download http://www.inter7.com/astfax/astfax-1.0.tar.gz.
tar xzvf astfax-1.0.tar.gz cd astfax-1.0
Edit Makefile:
DEFS=-Wall -I/usr/local/include/eps -DVERSION=1.0 LIBS=-leps -L/usr/local/lib
Compile it with:
make
Now we configure ast_fax by editing the file ast_fax.call:
Channel: CAPI/ISDNTE/FROMNUMBER:$[PHONE]/b MaxRetries: 0 WaitTime: 20 Application: txfax Data: $[FILE]|caller
Now we can test if astfax works correctly:
cp testfax.eml my_testfax.eml
Edit my_testfax.eml.
From: <idefix@fechner.net> To: <54@fax>
Now send it with:
cat my_testfax.eml|./ast_fax
Adding G.722 - Support
To add support for G.722, decompress and copy this File to /usr/local/lib/asterisk/modules/:
Download compressed codec here: Image:Codec g722.so.tar.bz2
It's possible the File "libpthread.so.0" is missing. You can avoid this by creating
/etc/libmap.conf
and add/enter the following code:
[/usr/local/lib/asterisk/modules/codec_g722.so]
libpthread.so.0 libpthread.so.2


