tuto:ipasserelle:telephonie:page_de_callback

Ceci est une ancienne révision du document !


Page de CallBack Simple

Ce tuto vous permet de créer une petite page de callback simple. Une fois cette page en place, vous pouvez vous connecter sur https:<serveur>/callback, et vous trouverez une page comportant 2 champs * Le premier est le numéro sur lequel votre serveur asterisk doit vous appeler * le second est le numéro de téléphone de la personne que vous souhaitez appeler * Asterisk se chargera de vous appeler, puis d'appeler votre destinataire, et mettra les deux canaux en relation. ===== Installation des paquets nécessaires ===== <code bash> yum –enablerepo=fws install perl-Asterisk-AMI </code> ===== Mise en place du script ===== <code bash> mkdir -p /opt/callback/ cat «'EOF' > /opt/callback/index.cgi #!/usr/bin/perl -w use Asterisk::AMI; use CGI qw/:standard/; my $q = new CGI; print $q→header, $q→start_html(), $q→h1('page de callback'), $q→start_form, “Entrez ici votre numero ”,textfield('nback'),p, “Entrez ici le numero de votre destinataire ”, textfield('ndest'),p, $q→submit, $q→end_form, $q→hr; if ($q→param()) { my $nback = $q→param('nback'); my $ndest = $q→param('ndest'); $nback =~ s/[\s\(\)\.<>]g;

    $ndest =~ s/[\s\(\)\.<>]//g;
    unless (($nback =~ m/^\d+$/) && ($ndest =~ m/^\d+$/)){
        print $q->h1('un des numeros ne semble pas valide, ils ne doivent contenir que des chiffres');
        die ('bad number');
    }
    my $astman = Asterisk::AMI->new(PeerAddr => '127.0.0.1',
                                    PeerPort => '5038',
                                    Username => 'callback',
                                    Secret   => '__PASSWD__'
                                     );
    die "Unable to connect to asterisk" unless ($astman);
    my $response = $astman->action({Action => 'Originate',
                                    Channel => "Local/$nback\@from-internal",
                                    Context => 'from-internal',
                                    CallerID => $ndest,
                                    Exten => $ndest,
                                    Priority => 1});

} EOF chown root:www /opt/callback/index.cgi chmod 750 /opt/callback/index.cgi </code>

cat <<HERE >> /etc/asterisk/manager_custom.conf
[callback]
secret = __SECRET__
deny=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.255.255.255
read = system,call,log,verbose,command,agent,user
write = system,call,log,verbose,command,agent,user
EOF

On va maintenant créer un mot de passe parfaitement aléatoire pour cet utilisateur callback (et remplacer les SECRET)

openssl rand -base64 60 | tr -c -d '[:alnum:]' > ~/callback.secret
chmod 600 ~/callback.secret
export SECRET=$(cat ~/callback.secret)
sed -i -e "s/__SECRET/$SECRET/g" /etc/asterisk/manager_custom.conf
sed -i -e "s/__SECRET/$SECRET/g" /opt/callback/index.cgi
unset SECRET
rm -f ~/callback.secret

Il ne reste plus qu'on configurer apache pour rendre ce script accessible

mkdir -p /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf
cat <<EOF > /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/90callback
 
ScriptAlias /callback /opt/callback/index.cgi
<Directory /opt/callback>
    order deny,allow
    deny from all
    allow from all
    Options ExecCGI
    AllowOverride None
    AuthName "Callback"
    AuthType Basic
    AuthExternal pwauth
    require user admin user1 user2
    Satisfy all
</Directory>
 
EOF

En remplaçant admin user1 user2 par la liste des utilisateurs qui doivent y avoir accès (require valid-user pour que n'importe quel utilisateur authentifié ait accès à la page)

Reste plus qu'à étendre les templates et tester

expand-template /etc/httpd/conf/httpd.conf
sv t /service/httpd-e-smith
  • tuto/ipasserelle/telephonie/page_de_callback.1289932464.txt.gz
  • Dernière modification: 16/11/2010 19:34
  • de dani