Comment créer un serveur vocal
[25 mn de lecture - paru le 11/14/2006 8:24:17 PM - Public : Confirmé]
|
   
|
Auteur
4 Comment faire un menu vocal
1.1 Méthode simple : extension.conf
Si jamais, vous avez un menu assez simple a créer et une profondeur peu étendue, il vous sera conseiller d'utiliser cette méthode.
Voici un exemple d'application pouvant être implémenter avec cette méthode.
L'utilisateur reçoit un message disant :
pour la direction commerciale, tapez 1, pour la direction technique, tapez 2, pour la direction des ressources humaines tapez 3, pour tous les autres tapez 4.
Le fichier extension à mettre en place est le suivant :
exten => s,1,Playback(le_nom_du_fichier_sonore_de_bienvenu_sans _lextention_gsm) ;
lis simplement le fichier sonore sans aucune interaction avec le client.
exten => s,2,Read(nom_de_la_variable_qui_enregistre_la_touche_du _clavier|nom_du_fichier_sonore_disant_le_choix_des_touche_sans_lextention _gsm|nombre_de_touche_a_rentrer_au_telephone); lis le fichier sonore et enregistre la touche sur laquelle l'utilisateur a tappé. Cette action coupe d'ailleurs la lecture du fichier sonore.
exten => s,3,GotoIf($[ ${nom_de_la_variable_qui_enregistre _la_touche_du_clavier} = 1 ] ? 7 : 4 )
exten => s,4,GotoIf($[ ${nom_de_la_variable_qui_enregistre _la_touche_du_clavier} = 2 ] ? 8 : 5 )
exten => s,5,GotoIf($[ ${nom_de_la_variable_qui_enregistre _la_touche_du_clavier} = 3 ] ? 9 : 6 )
exten => s,6,GotoIf($[ ${nom_de_la_variable_qui_enregistre _la_touche_du_clavier} = 4 ] ? 10 : 1)
exten => s,7,Dial(SIP/COMPTE_COMMERCIAL)
exten => s,8,Dial(SIP/COMPTE_TECHNIQUE)
exten => s,9,Dial(SIP/COMPTE_HUMAIN)
exten => s,10,Dial(SIP/COMPTE_ACCUEUIL)
1.2 Méthode approfondie : AGI (PHP)
La méthode avec AGI est a utiliser pour les grandes applications plus élaborées avec de nombreuses interaction notamment avec les bases de données.
Pour ce faire, on utilise un script PHP en mode console qui a la particularité de commencer, comme pour les scripts Shell par un appel de l'interpréteur de commande PHP.
#! /usr/bin/php5 -p (en supposant que vous utilisez php5)
L'option -q signifie quiet, le programme ne renverras pas l’erreur HTML qui pourrait troubler Asterisk.
Il vous faudra ensuite ouvrir les différents flux qui permettront l'interaction avec Asterisk : le flux d'entrée standard, le flux de sortie standard et d'erreur.
$stdin = fopen('php://stdin', 'r');
$stdout = fopen('php://stdout', 'w');
$stdlog = fopen('monfichierdelog', 'w');
?>
Etant donné que la manipulation de flux est très compliquée à effectuer, je ne pourrais que vous conseiller d'utiliser des fonctions qui permettent d'envoyer des fonctions très simplement à Asterisk.
L'une d'entre elles est la suivante :
function execute($command) { GLOBAL $in, $out; fputs($out, $command . " \n"); fflush($out); $data = fgets($in, 4096); if (preg_match("^([0-9]{1,3}) (.*)", $data, $matches)) { if (preg_match('�^result=([0-9a-zA-Z]*)( ?\((.*)\))?', $matches[2], $match)) { $arr['code'] = $matches[1]; $arr['result'] = $match[1]; if (isset($match[3]) && $match[3]) $arr['data'] = $match[3]; return $arr; } else return 0; } else return -1; }
example: $result = execute("GET VARIABLE testing"); // Now $result['data'] holds the value of testing
$result = execute("GET DATA insertid 3000 5"); // $result['result'] is the entered digits
La liste des commandes disponibles nativement est disponible quand à elle sur la page suivante :
http://www.voip-info.org/wiki/index.php?page=Asterisk+- +documentation+of+application+commands
|