Site de la section BTS IRIS du Lycée Condorcet de Schoeneck

PHP AGI

dimanche 13 avril 2008 par alain

Bibliothèque PHP pour la création de scripts AGI (Asterisk Gateway Interface)

Site du projet :

http://phpagi.sourceforge.net/

Installation

  • Télécharger les archives phpagi-2.14.tgz et phpagi-examples-2.14.tgz

#wget http://kent.dl.sourceforge.net/sourceforge/phpagi/phpagi-2.14.tgz

#wget http://kent.dl.sourceforge.net/sourceforge/phpagi/phpagi-examples-2.14.tgz
  • Décompresser les archives

    #tar xvf phpagi-2.14.tgz
    #tar xvf phpagi-examples-2.14.tgz
  • Copier le fichier phpagi-2.14/docs/phpagi.example.conf vers /etc/asterisk/phpagi.conf

Ce fichier est utilisé par les fichiers phpagi.php et phpagi-manager.php pour se connecter au serveur asterisk.

Il faut modifier ce fichier phpagi.conf pour le rendre compatible avec notre système. Notre système indique dans le fichier /etc/asterisk/manager.conf que l’utilisateur autorisé est admin avec le mot de passe amp111.

on modifiera donc les variables username et secret dans la section [asmanager]


[asmanager]
server=localhost                        ; server to connect to
port=5038                                  ; default manager port
username=admin           ; username for login
secret=amp111            ; password for login

Couplage Informatique -> Télécommunication

On copiera le fichier sip_show_peers.php décrit ci-dessous dans le dossier /var/www/phpagi du serveur WEB


<?php
 require_once('phpagi-asmanager.php');

 $asm = new AGI_AsteriskManager();
 if($asm->connect())
 {
   $peer = $asm->command("sip show peers");
   if(!strpos($peer['data'], ':'))
     echo $peer['data'];
   else
   {
     foreach(explode("\n", $peer['data']) as $line)
     {
     printf("%s",$line);
       printf("<br>");
     }

   }

   $asm->disconnect();
 }
?>

Ce fichier nécessite la présence des deux fichiers de référence phpagi-asmanager.php et phpagi.php.

On les copiera depuis le dossier phpagi-2.14 vers le dossier /var/www/phpagi où se trouve notre fichier d’exemple.

Pour faire un test, il suffit d’entrée l’adresse de la page sip_show_peers.php dans un navigateur.

Pour vérifier le bon fonctionnement de la connexion entre les pages php et asterisk, on peut utiliser la commande tcpdump de la manière suivante sur le serveur :


#tcpdump port 5038 -i lo -A

port 5038 est celui sur lequel écoute le serveur asterisk pour recevoir des commandes. On limite l’écoute du trafic réseau sur ce port.

-i lo indique à tcpdump d’écouter le trafic uniquement sur l’interface lo


Application php pour mettre en relation 2 téléphones.

Le code ci-dessous permet de mettre en relation le téléphone SIP/1001 avec le numéro 1005.

On utilise ici la commande "originate".

http://www.voip-info.org/wiki-Aster...


<?php
 require_once('phpagi-asmanager.php');

   $number1 = '1001';
   $number2 = '1005';
     $asm = new AGI_AsteriskManager();
       if($asm->connect())
         {
             $call = $asm->send_request('Originate',
             array('Channel'=>"SIP/$number1",
             'Context'=>'default',
             'Priority'=>1,
             'Callerid'=>$number2,
             'Exten' =>$number2));
             $asm->disconnect();
         }
?>

Lorsqu’on exécute cette page, le téléphone 1001 se met à sonner. Lorsqu’on décroche, c’est le poste 1005 qui sonne. Lorsque ce dernier est décroché, les 2 se mettent en communication.

Couplage Télécommunication -> Informatique

Dans ce cas de figure, on introduit des extensions dans le plan de numérotation d’asterisk qui exécute des scripts AGI (Asterisk Gateway Interface) écrits en langage php.

Chaque script doit commencer par une ligne qui contient le chemin vers l’interpréteur php : # !/usr/bin/php -q

Pour fonctionner, il faut installer la version "ligne de commande" de l’interpréteur php.


#apt-get install php5-cli

Les scripts sont placés dans le répertoire : /var/lib/asterisk/agi-bin Ils doivent avoir comme propriétaire "asterisk" et être exécutable.

Le fichier phpagi.php doit se trouver dans ce même répertoire.

Exemple de fichier AGI écrit en php :


Accueil du site | Contact | Plan du site | Espace privé | Statistiques | visites : 187366

Suivre la vie du site fr  Suivre la vie du site Asterisk et freepbx   ?

Site réalisé avec SPIP 1.9.2a + ALTERNATIVES

Creative Commons License