Affichage des résultats 1 à 10 sur 22

Discussion: Renvoi d'appels sur 2 numéros en même temps

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Junior
    Date d'inscription
    juin 2012
    Messages
    20
    Downloads
    0
    Uploads
    0
    Bonjour,
    Merci pour vos réponses,
    j'ai une petite question: pour utiliser les scripts AGI est-ce qu'on est obliger d'installer les fichiers phpagi.php ??

    cdlt

  2. #2
    Membre Association
    Date d'inscription
    septembre 2010
    Messages
    1 236
    Downloads
    0
    Uploads
    0
    Bonjour, pas obligatoire, il y a quelques exemples de script php sur le wiki voip-info.org

  3. #3
    Membre Junior
    Date d'inscription
    juin 2012
    Messages
    20
    Downloads
    0
    Uploads
    0
    Bonjour,
    J'ai le script AGI mais je n'arrive pas à récupérer les variables de puis la base de donnée:
    voici mon script:

    function connect_db() {
    $db_connection = mysql_connect ('localhost', 'root', 'pwd') or die (mysql_error());
    $db_select = mysql_select_db('renvoiPlus') or die (mysql_error());
    }


    connect_db();

    $query1 = "SELECT * FROM `renvoiPlus` WHERE `extension` ='".substr($agi[extension],1)."' ORDER BY RAND()";
    $query_result1 = mysql_query($query1) or die("Erreur lors de l'exécution de la requête.\nMySQL a retourné :\n". mysql_error());
    $row_count = mysql_num_rows($query_result1);

    $row1 = @mysql_fetch_array ($query_result1);
    If ($row_count !=0 ) {
    $pin1 = $row1[extfinal1];


    fwrite(STDOUT,"SET CALLERID <0".$row1[extfacturable].">\n");
    fwrite(STDOUT,"SET VARIABLE NEWEXT". $pin1." \n");
    }

    dans le fichier extension.conf, j'ai la ligne suivante:

    exten=> 01xxxxxxxx,n,DIAL(SIP/0${NEWEXT}@out)

    la variable NEWEXT est Null ??

    Quelqu'un peut m'aider svp?

  4. #4
    Membre Junior
    Date d'inscription
    juin 2012
    Messages
    20
    Downloads
    0
    Uploads
    0
    pas de réponse ???

  5. #5
    Membre Association
    Date d'inscription
    septembre 2010
    Messages
    1 236
    Downloads
    0
    Uploads
    0
    Bonjour, si dans le fichier php tu le log dans le fichier texte, est ce que tu le retrouves ?
    Est ce que tu peux au lieu de passer la variable construire votre scipt avec un appel direct depuis le script php ?

    Un vieux exemple:

    #!/usr/bin/php4 -q
    <?php
    ob_implicit_flush(true);
    set_time_limit(6);
    $in = fopen("php://stdin","r");
    $stdlog = fopen("/var/log/asterisk/my_agi.log", "w");

    // toggle debugging output (more verbose)
    $debug = false;

    // Do function definitions before we start the main loop
    function read() {
    global $in, $debug, $stdlog;
    $input = str_replace("\n", "", fgets($in, 4096));
    if ($debug) fputs($stdlog, "read: $input\n");
    return $input;
    }

    function errlog($line) {
    global $err;
    echo "VERBOSE \"$line\"\n";
    }

    function write($line) {
    global $debug, $stdlog;
    if ($debug) fputs($stdlog, "write: $line\n");
    echo $line."\n";
    }

    // parse agi headers into array
    while ($env=read()) {
    $s = split(": ",$env);
    $agi[str_replace("agi_","",$s[0])] = trim($s[1]);
    if (($env == "") || ($env == "\n")) {
    break;
    }
    }

    // main program
    echo "VERBOSE \"Here we go!\" 2\n";
    read();
    errlog("Call from ".$agi['channel']." - Calling phone");
    read();
    write("SAY DIGITS 22 X"); // X is the escape digit. since X is not DTMF, no exit is possible
    read();
    write("SAY NUMBER 2233 X"); // X is the escape digit. since X is not DTMF, no exit is possible
    read();

    // clean up file handlers etc.
    fclose($in);
    fclose($stdlog);

    exit;
    ?>
    La page à regarder pour les exemples : http://www.voip-info.org/wiki/view/Asterisk+AGI+php

  6. #6
    Membre Junior
    Date d'inscription
    juin 2012
    Messages
    20
    Downloads
    0
    Uploads
    0
    Bonjour,
    Même dans les logs j'ai rien, voilà exactement mon script et je pense que ce n'est pas un problème de syntaxe.

    #!/usr/bin/php5 -q
    <?php
    ob_implicit_flush(true);
    set_time_limit(6);
    $in = fopen("php://stdin","r");
    $stdlog = fopen("/var/log/asterisk/my_agi.log", "w");

    function read() {
    global $in, $debug;
    $input = str_replace("\n", "", fgets($in, 4096));
    return $input;
    }

    function errlog($line) {
    global $err;
    echo "VERBOSE \"$line\"\n";
    }

    function write($line) {
    global $debug;
    echo $line."\n";
    }
    // parse agi headers into array
    while ($env=read()) {
    $env = str_replace("\"","",$env);
    $s = split(": ",$env);
    $agi[str_replace("agi_","",$s[0])] = trim($s[1]);
    if (($env == "") || ($env == "\n")) {
    break;
    }
    }
    errlog("Start ".$agi[request]." v1.1");

    function connect_db() {
    $db_connection = mysql_connect ('localhost', 'root', 'pwd') or die (mysql_error());
    $db_select = mysql_select_db('renvoiPlus') or die (mysql_error());
    }

    // main program
    errlog("Call from ".$agi[callerid].".");
    errlog("Call to ".$agi[extension].".");

    connect_db();

    $query1 = "SELECT * FROM `renvoiPlus` WHERE `extension` ='".substr($agi[extension],1)."' ORDER BY RAND()";
    $query_result1 = mysql_query($query1) or die("Erreur lors de l'exécution de la requête.\nMySQL a retourné :\n". mysql_error());
    $row_count = mysql_num_rows($query_result1);

    $row1 = @mysql_fetch_array ($query_result1);
    If ($row_count !=0 ) { // caller is authenticated based on ANI
    $pin1 = $row1[extfinal1];

    fwrite(STDOUT,"SET CALLERID <".$row1[extfacturable].">\n");
    fwrite(STDOUT,"SET VARIABLE NEWEXT $pin1\n");

    }

    Else {
    fwrite(STDOUT,"SET VARIABLE NEWEXT 999999999999\n");
    }
    errlog("Call from 0".$row1[extfacturable].".");
    errlog("Call to ".$row1[extfinal1].".");


    fclose($in);
    fclose($stdlog);

    exit;

    ?>
    Merci pour votre aide

  7. #7
    Membre Association
    Date d'inscription
    septembre 2010
    Messages
    1 236
    Downloads
    0
    Uploads
    0
    Dans ce cas je te propose par commencer par plus simple, le vieux script cité plus haut fonctionne bien, tu peux commencer par, par exemple de l'utiliser pour capturer l’entrée de dtmf et le sortir sur la console asterisk.

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •