extensions.conf: [incoming} exten => _4XXX,1,Perl(dynamicexten:${EXTEN}) exten => _4XXX,2,SoftHangup exten => _4XXX,102,Playback(didnotgothrough) exten => _4XXX,103,SoftHangup exten => h,1,Hangup exten => i,1,Playback(invalid) exten => i,2,SoftHangup exten => t,1,Playback(didnotgothrough) exten => t,2,SoftHangup [dynamic] exten => s,1,Dial(${TYPE}/${USER},${TIMEOUT},${OPTIONS}) exten => s,2,Voicemail(${VMSUPPRES}u${VMEXTEN}) exten => s,3,SoftHangup exten => s,102,Voicmail(${VMSUPPRES}b${VMEXTEN}) exten => s,103,SoftHangup exten => h,1,Hangup exten => i,1,Playback(invalid) exten => i,2,SoftHangup exten => t,1,Playback(didnotgothrough) exten => t,2,SoftHangup exten => o,1,Goto(operator,s,1) exten => *,1,VoicemailMain() /etc/asterisk/perl/asterisk_init.pm snippit: use DBI; sub dynamicexten { ($chan_name,$exten) = shift; $chan = asterisk_get_channel_by_name($chan_name); $dbh = DBI->connect('dbi:mysql:dynamicdail','asterisk','astdbi'); $cmd = $dbh->prepare(qq!select extenuser.*,sip.* from extenuser,si +p where extenuser.exten = "$exten" and sip.name = "$exten"!); $cmd->execute || return -1; # if cmd cannot execute s +end return -1 to dialplan to change priority by 101 $data = $cmd->fetchrow_hashref; # get data from DB asterisk_setcontext($chan,"dynamic"); asterisk_setpriority($chan,"1"); asterisk_setextension($chan,"s"); foreach(keys %$data) { # load up variables for +dialplan asterisk_setvariable($chan,$_,$_,$data->{$_}); } return 0; }
No I did not forget to add the 1; at the end.exten => _4XXX,1,Perl(LoadFile:dynamicexten.pl,${EXTEN}) sample /etc/asterisk/perl/apps/dyanmicexten.pl: package Asterisk::Embed; use DBI; sub { ($chan_name,$exten) = shift; $chan = asterisk_get_channel_by_name($chan_name); $dbh = DBI->connect('dbi:mysql:dynamicdail','asterisk','astdbi'); $cmd = $dbh->prepare(qq!select extenuser.*,sip.* from extenuser,si +p where extenuser.exten = "$exten" and sip.name = "$exten"!); $cmd->execute || return -1; # if cmd cannot execute s +end return -1 to dialplan to change priority by 101 $data = $cmd->fetchrow_hashref; # get data from DB asterisk_setcontext($chan,"dynamic"); asterisk_setpriority($chan,"1"); asterisk_setextension($chan,"s"); foreach(keys %$data) { # load up variables for +dialplan asterisk_setvariable($chan,$_,$_,$data->{$_}); } return 0; }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Asterisk and res_perl
by outcast (Monk) on Apr 25, 2005 at 13:43 UTC | |
|
Re: Asterisk and res_perl
by outcast (Monk) on Apr 17, 2005 at 14:03 UTC |