Daten vom eingehenden Anruf

Hallo nochmals,

ich habe die Werte in folgende Variablen abgespeichert:
PHP:
$anrufer = $agi['callerid'];
$angerufener = $agi['dnid'];
$dauer = $argv[1];
wenn ich die $anrufer und $angerufener in die datei schreibe macht er.
Aber wenn ich $dauer in die datei schreiben will, macht er nicht. Aber er gibt $dauer auf der CLI aus.
Warum?
 
Das hatte ich schon gemacht, ich habs gerade nochmal kontrolliert. Es ist auf yes.

In der cdr.conf sind nur folgende Daten vorhanden und der rest ist kommentiert:

[general]

endbeforehexten=yes

[csv]

usegmtime=yes
 
Wie rufst Du das AGI in der extensions.conf auf?

Was meinst Du mit "er gibt $dauer auf der CLI aus"?
 
agi aufruf in der extension.conf:
exten => h,1,AGI(agi.php,${CDR(billsec)})

Mit
PHP:
echo "verbose \"Sekunden: ".$dauer."\"\n";
read();
kann ich auf der CLI $dauer ausgeben nur nicht in die Datei schreiben.
 
Oh Mann, lass Dir doch nicht alles aus der Nase ziehen. Dann zeig doch bitte Dein Skript, damit man überhaupt mal sehen kann, wie Du versuchst die Datei zu schreiben.
 
PHP:
#!/usr/bin/php5

<?php
function read() {
  	global $in;
	$input = str_replace("\n", "", fgets($in, 4096));
  	return $input;
}
 
$in=fopen("php://stdin","r");
 
while ($env=read()) {

  		$s = split(": ",$env);
  		$agi[str_replace("agi_","",$s[0])] = trim($s[1]);

  	if (($env == "") || ($env == "\n")) {
    		break;
  	}
}
echo "verbose \n";
read();

$anrufer = $agi['callerid'];
$angerufener = $agi['dnid'];
$dauer = $argv[1];

$fp = fopen("http://192.X.Y.25/localhost/htdocs/nas/class/Daten.php?id=$dauer","r");

echo "verbose \"Dauer: ".$dauer."\"\n";
read();
?>

und in die Datei schreibe ich so in Daten.php:
PHP:
<?php

$dname = "logfile.txt";
$datei = fopen($dname,"a");
$string = $_GET['id'];
fputs($datei, $string);
fclose($datei);
 
Also ich habe folgendes überlegt:
Ich habe mich von AGI verabschiedet weil ich probleme mit den parametern hatte.
Ich benutze jetzt die Predefined Channel Variablen. Und ich übergebe sie mit System:
exten => h,1,System(php -f /var/lib/asterisk/agi.php ${CALLERID(num)} ${CALLERID(dnid)})

Die übergebenen Parameter fange ich in PHP mit argv[1] und argv[2] ab. Funktioniert auch Prima. Wieso eigentlich AGI, ist doch ein langer Weg, Mit System spart man viel mehr code schnipsel in PHP.

Wie ermittele ich jetzt die Dauer des Anrufs? Gibts dafür auch einen P.C. Variable???

EDIT:
Ich habe einfach CDR(billsec) drangehängt. Ich dachte am Anfang dass könnte man nicht. Sieht jetzt folgendermaßen aus und ich habe alle drei Parameter die ich brauche:
exten => h,1,System(php -f /var/lib/asterisk/agi.php ${CALLERID(num)} ${CALLERID(dnid)} ${CDR(billsec)})

PS: Ich komme mir vor, als ob ich mit mir selbst rede... :)
 
Zuletzt bearbeitet:
Kostenlos!

Neueste Beiträge

Statistik des Forums

Themen
248,885
Beiträge
2,303,950
Mitglieder
378,564
Neuestes Mitglied
warumdas