PDA

Voir la version complète : Renvoi d'appels sur 2 numéros en même temps



ingvoip
22/06/2012, 14h24
Bonjour,
je cherche à faire le renvoi d'un appel sur 2 numéros en même temps.

quelqu'un a déjà fait ce genre de chose?

Merci de votre réponse

Reaper
22/06/2012, 15h13
Bonjour, il faut effectuer un dial vers deux numéros tout simplement avec une commande dial.

ingvoip
22/06/2012, 15h51
Bonjour, il faut effectuer un dial vers deux numéros tout simplement avec une commande dial.

as-tu un exemple? et je voudrais aussi que lorsque quelqu'un répond, le deuxième numéro raccroche automatiquement.

Reaper
22/06/2012, 16h43
exten => s,n,Dial(Local/0123456789@internal&Local/0123456789@internal,25,twr)

Le premier qui décroche, arrête l'autre dial.

ingvoip
27/06/2012, 09h43
merci pour la réponse, par contre quand j'appel un numéro que j'ai implimenté dans asterisk et qui est renvoyé sur un numéro mobile, j'ai ce message d'erreur:

chan_sip.c:19638 handle_response_invite: Failed to authenticate on INVITE to '"170XXXXXX" <sip:170XXXXXX@sip.domaine.fr>;tag=as1e5912ef'
-- SIP/sct-out-0000000b is circuit-busy
avec 170XXXXXX est le numéro appelant

Merci

jpramoul
27/06/2012, 15h15
ça ressemble à un problème d'authentification chez ton opérateur IP, il faut vérifier ta config avec lui.

ingvoip
28/06/2012, 13h54
ça ressemble à un problème d'authentification chez ton opérateur IP, il faut vérifier ta config avec lui.

Merci pour la réponse, c'est bon j'arrive à faire sonner plusieurs numéros

maintenant je cherche un moyen pour pouvoir changer les numéro sur lesquels je renvoi les appels via un script ou page web par exemple?

quelqu'un a une idée ??

ingvoip
07/10/2012, 20h22
Pas de réponse ???

Reaper
08/10/2012, 16h15
Bonjour, dans ce cas il faut passer par AMI et commande Originate.
AMI est une interface socket asterisk, Originate est une commande pour initier un appel.

ingvoip
15/10/2012, 09h38
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

Reaper
15/10/2012, 10h24
Bonjour, pas obligatoire, il y a quelques exemples de script php sur le wiki voip-info.org

ingvoip
15/10/2012, 11h47
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?

ingvoip
15/10/2012, 16h41
pas de réponse ???

Reaper
15/10/2012, 19h43
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

ingvoip
15/10/2012, 23h33
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

Reaper
15/10/2012, 23h54
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.

ingvoip
16/10/2012, 00h11
le problème c'est que le script que j'ai cité avant fonctionne bien avec asterisk 1.6 mais je l'utilise dans asterisk 1.8 et je comprends pas pourquoi il fonctionne pas.

ingvoip
16/10/2012, 11h44
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.


Bonjour,

votre script fonctionne bien mais le mien ne marche pas
est-ce que le problème peut venir de la base de données??
crdlt

Reaper
16/10/2012, 12h42
Je ne vais par vérifier votre code, pour commencer savoir pourquoi construisez vous un mini script avec une application très simple, et à partir de la chrerchez la difference.
Je vous conseille de régarder coté agi version 1.8 et ses changements par rapport 1.6 https://wiki.asterisk.org/wiki/display/AST/New+in+1.8#Newin1.8-AsteriskManagerInterface

Trouver des exemples de AGI pour 1.8 est également une bonne idée.

ingvoip
17/10/2012, 09h34
Bonjour,
J'ai activé les debugs CLi dans asterisk et quand je fais un appel, j'obtiens cette erreur: AGI Rx << Fatal error: Call to undefined function mysql_connect() in /var/lib/asterisk/agi-bin/renvoiPlus.php on line 37

donc c'est bien le problème de la fonction mysql_connect() mais cette fonctionne avec mysql et PHP par contre avec Asterisk non.
avez-vous une idée svp ???

ingvoip
17/10/2012, 16h03
bonjour,
c'est bon, j'ai résolu mon problème
c'était un problème de configuration mysql et j'ai du le désinstallé et le réinstallé.

Maintenant j'ai une petite question:

est-ce qu'on peut utiliser de genre de ligne dans extensions.conf???
exten=> ${EXTEN},1,Answer();


Merci

Reaper
18/10/2012, 12h52
Bonjour, non il faut utiliser le pattern, ut tu peux utiliser "s" pour tout capturer.
Lis sur les extensions de plan de numérotation.