Skipped content of type multipart/alternative-------------- next part -------------- --- SCRIPT --- #!/usr/bin/perl use Asterisk::Manager; $|++; my $astman = new Asterisk::Manager; $astman->user('admin'); $astman->secret('secret'); $astman->host('localhost'); $astman->connect || die $astman->error . "\n"; $astman->setcallback('Hangup', \&hangup_callback); $astman->setcallback('DEFAULT', \&default_callback); print $astman->sendcommand( Action => 'Originate', Callerid => SLOT1, Channel => 'Zap/g1/getfax', Exten => 'sendfax', Context => 'Outgoing', Priority => '1' ); $astman->eventloop; $astman->disconnect; sub hangup_callback { printf("hangup callback\n"); } sub default_callback { my (%stuff) = @_; foreach (keys %stuff) { printf("%s: %s\n", $_, $stuff{$_}); } printf("\n"); } --- RESULT WHEN RUNNING THE SCRIPT --- EventNewchannelChannelZap/3-1StateRsrvdCallerID<unknown>Uniqueid1131547210.4CallerID: SLOT1 Event: Newcallerid Uniqueid: 1131547210.4 Channel: Zap/3-1 CallerID: SLOT1 Event: Newcallerid Uniqueid: 1131547210.4 Channel: Zap/3-1 CallerID: SLOT1 Event: Newstate Uniqueid: 1131547210.4 Channel: Zap/3-1 State: Dialing CallerID: <unknown> Event: Newchannel Uniqueid: 1131547210.5 Channel: Zap/34-1 State: Ring Event: Newexten Channel: Zap/34-1 Context: Incoming Extension: getfax Application: SetVar Uniqueid: 1131547210.5 AppData: FAXFILE=/tmp/1131547210.5.tiff Priority: 1 Event: Newexten Channel: Zap/34-1 Context: Incoming Extension: getfax Uniqueid: 1131547210.5 Application: RxFAX AppData: /tmp/1131547210.5.tiff Priority: 2 CallerID: <unknown> Event: Newstate Channel: Zap/34-1 State: Up Uniqueid: 1131547210.5 CallerID: SLOT1 Event: Newstate Channel: Zap/3-1 State: Up Uniqueid: 1131547210.4 Event: Newexten Channel: Zap/3-1 Context: Outgoing Extension: sendfax Uniqueid: 1131547210.4 Application: SetVar AppData: SENDFAX=/tmp/sendfax.tiff Priority: 1 Event: Newexten Channel: Zap/3-1 Context: Outgoing Extension: sendfax Uniqueid: 1131547210.4 Application: TxFAX AppData: /tmp/sendfax.tiff|caller Priority: 2 ***** Stays there --- ZAPATA.CONF --- [trunkgroups] ; define any trunk groups [channels] switchtype=euroisdn ;pridialplan=national signalling=pri_cpe usecallerid=yes hidecallerid=no callwaiting=yes callwaitingcallerid=yes threewaycalling=yes transfer=yes cancallforward=yes echocancel=no rxgain=0.0 txgain=0.0 ;faxdetect=both ; Span 1 context=Outgoing group=1 ;signalling=pri_net signalling=pri_cpe channel => 1-15 channel => 17-31 ; Span 2 context=Incoming group=2 signalling=pri_net ;signalling=pri_cpe channel => 32-46 channel => 48-62 --- ZAPTEL.CONF --- # # Zaptel Configuration File # # This file is parsed by the Zaptel Configurator, ztcfg # # # First come the span definitions, in the format # span=<span num>,<timing>,<line build out (LBO)>,<framing>,<coding>[,yellow] # # The timing parameter determines the selection of primary, secondary, and # so on sync sources. If this span should be considered a primary sync # source, then give it a value of "1". For a secondary, use "2", and so on. # To not use this as a sync source, just use "0" # # The line build-out (or LBO) is an integer, from the following table: # 0: 0 db (CSU) / 0-133 feet (DSX-1) # 1: 133-266 feet (DSX-1) # 2: 266-399 feet (DSX-1) # 3: 399-533 feet (DSX-1) # 4: 533-655 feet (DSX-1) # 5: -7.5db (CSU) # 6: -15db (CSU) # 7: -22.5db (CSU) # # The framing is one of "d4" or "esf" for T1 or "cas" or "ccs" for E1 # # Note: "d4" could be referred to as "sf" or "superframe" # # The coding is one of "ami" or "b8zs" for T1 or "ami" or "hdb3" for E1 # # E1's may have the additional keyword "crc4" to enable CRC4 checking # # If the keyword "yellow" follows, yellow alarm is transmitted when no # channels are open. # #span=1,0,0,esf,b8zs #span=2,1,0,esf,b8zs #span=3,0,0,ccs,hdb3,crc4 # # Next come the dynamic span definitions, in the form: # dynamic=<driver>,<address>,<numchans>,<timing> # # Where <driver> is the name of the driver (e.g. eth), <address> is the # driver specific address (like a MAC for eth), <numchans> is the number # of channels, and <timing> is a timing priority, like for a normal span. # use "0" to not use this as a timing source, or prioritize them as # primary, secondard, etc. Note that you MUST have a REAL zaptel device # if you are not using external timing. # # dynamic=eth,eth0/00:02:b3:35:43:9c,24,0 # # Next come the definitions for using the channels. The format is: # <device>=<channel list> # # Valid devices are: # # "e&m" : Channel(s) are signalled using E&M signalling (specific # implementation, such as Immediate, Wink, or Feature Group D # are handled by the userspace library). # "fxsls" : Channel(s) are signalled using FXS Loopstart protocol. # "fxsgs" : Channel(s) are signalled using FXS Groundstart protocol. # "fxsks" : Channel(s) are signalled using FXS Koolstart protocol. # "fxols" : Channel(s) are signalled using FXO Loopstart protocol. # "fxogs" : Channel(s) are signalled using FXO Groundstart protocol. # "fxoks" : Channel(s) are signalled using FXO Koolstart protocol. # "sf" : Channel(s) are signalled using in-band single freq tone. # Syntax as follows: # channel# => sf:<rxfreq>,<rxbw>,<rxflag>,<txfreq>,<txlevel>,<txflag> # rxfreq is rx tone freq in hz, rxbw is rx notch (and decode) # bandwith in hz (typically 10.0), rxflag is either 'normal' or # 'inverted', txfreq is tx tone freq in hz, txlevel is tx tone # level in dbm, txflag is either 'normal' or 'inverted'. Set # rxfreq or txfreq to 0.0 if that tone is not desired. # "unused" : No signalling is performed, each channel in the list remains idle # "clear" : Channel(s) are bundled into a single span. No conversion or # signalling is performed, and raw data is available on the master. # "indclear": Like "clear" except all channels are treated individually and # are not bundled. "bchan" is an alias for this. # "rawhdlc" : The zaptel driver performs HDLC encoding and decoding on the # bundle, and the resulting data is communicated via the master # device. # "fcshdlc" : The zapdel driver performs HDLC encoding and decoding on the # bundle and also performs incoming and outgoing FCS insertion # and verification. "dchan" is an alias for this. # "nethdlc" : The zaptel driver bundles the channels together into an # hdlc network device, which in turn can be configured with # sethdlc (available separately). # "dacs" : The zaptel driver cross connects the channels starting at # the channel number listed at the end, after a colon # "dacsrbs" : The zaptel driver cross connects the channels starting at # the channel number listed at the end, after a colon and # also performs the DACSing of RBS bits # # The channel list is a comma-separated list of channels or ranges, for # example: # # 1,3,5 (channels one, three, and five) # 16-23, 29 (channels 16 through 23, as well as channel 29 # # So, some complete examples are: # e&m=1-12 # nethdlc=13-24 # fxsls=25,26,27,28 # fxols=29-32 # #fxoks=1-24 #bchan=25-47 #dchan=48 #fxols=1-12 #fxols=13-24 #e&m=25-29 #nethdlc=30-33 #clear=44 #clear=45 #clear=46 #clear=47 #fcshdlc=48 #dacs=1-24:48 #dacsrbs=1-24:48 span=1,1,0,ccs,hdb3,crc4 span=2,0,0,ccs,hdb3,crc4 bchan = 1-15, 17-31 dchan = 16 bchan = 32-46,48-62 dchan = 47 # # Finally, you can preload some tone zones, to prevent them from getting # overwritten by other users (if you allow non-root users to open /dev/zap/* # interfaces anyway. Also this means they won't have to be loaded at runtime. # The format is "loadzone=<zone>" where the zone is a two letter country code. # # You may also specify a default zone with "defaultzone=<zone>" where zone # is a two letter country code. # # An up-to-date list of the zones can be found in the file zaptel/zonedata.c # loadzone = gr #loadzone = us-old #loadzone=gr #loadzone=it #loadzone=fr #loadzone=de #loadzone=uk #loadzone=fi #loadzone=jp #loadzone=sp #loadzone=no defaultzone=gr --- EXTENSION.CONF --- node001:/home/vagenas# cat /etc/asterisk/extensions.conf [Outgoing] ;exten => s,1,Dial() ;exten => s,2,Hangup() exten => sendfax,1,SetVar(SENDFAX=/tmp/sendfax.tiff) exten => sendfax,2,txfax(${SENDFAX},caller) exten => sendfax,3,Hangup() [Incoming] ;exten => s,1,Answer() ;exten => s,2,Hangup() exten => getfax,1,SetVar(FAXFILE=/tmp/${UNIQUEID}.tiff) exten => getfax,2,rxfax(${FAXFILE}) exten => getfax,3,Hangup() ;exten => getfax,1,Answer() ;exten => getfax,2,rxfax(/tmp/${UNIQUEID}) ;exten => getfax,3,Hangup() node001:/home/vagenas#