sip callback.php

Ronny

Neuer User
Mitglied seit
20 Jul 2004
Beiträge
10
Punkte für Reaktionen
0
Punkte
0
hi

habe versucht das callbackscript von http://www.junghanns.net/asterisk/page14.html zu modifzieren
leider hab ich da wohl nen fehler leider bekomme ich keine fehlermeldung nur Executing AGI("SIP/1xxxxxx-xxxx", "callback.agi") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/callback.agi
-- AGI Script callback.agi completed, returning 0
so sieht es jetzt aus

<?php
ob_implicit_flush(true);
$stdlog = fopen("/var/log/asterisk/my_agi.log", "w");
set_time_limit(0);
$err=fopen("php://stderr","w");
$in = fopen("php://stdin","r");
while (!feof($in)) {
$temp = str_replace("\n","",fgets($in,4096));
$s = split(":",$temp);
$agi[str_replace("agi_","",$s[0])] = trim($s[1]);
if (($temp == "") || ($temp == "\n")) {
break;
}
}
$cf =
fopen("/var/spool/asterisk/outgoing/cb".$agi["callerid"],"w+");
fputs($cf,"Channel: sip/1xxxxxx/".$agi["extension"].":".$agi["callerid"]."\n");
fputs($cf,"Context: capidialtone\n");
fputs($cf,"Extension: s\n");
fputs($cf,"SetVar: CALLERIDNUM=".$agi["extension"]."\n");
fputs($cf,"MaxRetries: 2\n");
fputs($cf,"RetryTime: 10\n");
fclose($cf);
fclose($in);
fclose($err);
?>

mfg
 
1.) Hast Du PHP als Command Line Interface-Version installiert? Oder nur die CGI-Variante? Bei der CGI-Variante musst Du noch einen Parameter uebergeben, damit er die bei CGI ueblichen Zeilen nicht mit ausgibt (ich glaube -q, bin aber nicht sicher).

2.) Hast Du dem Script die passenden execute-Rechte gegeben (z.B. "chmod a+x callback.agi")?

3.) Hast Du die komplette Datei gequoted? Wenn ja, dann fehlt vor dem "<?php" noch ein "#!/usr/bin/php". Denn ansonsten versucht Deine Shell selbst das Script zu parsen und scheitert. Ggf. musst Du den Pfad anpassen an Deine lokalen Gegebenheiten. Und eventuell musst Du hier noch den in 1 erwaehnten Parameter mit anhaengen.

4.) Wenn das alles nicht hilft: das Script loggt in /var/log/asterisk/my_agi.log mit. Kannst Du mal die Eintraege eines einzelnen Aufrufs hier posten (bitte nicht das komplette Logfile, jedenfalls wenn Du das Script haeufig aufgerufen hast)?

Ciao, Mike
 
@otaku42
danke für die schnelle antwort
1. hab cli installiert
2. das script ist auführbar -rwxr-xr-x 1 root root 757 Jul 21 18:11 /var/lib/asterisk/agi-bin/callback.agi
3. hab in der ersten zeile #!/usr/local/bin/php -v gehabt nach der änderung in #!/usr/local/bin/php funzt es hab nur noch einen fehler im channel
Attempting call on sip/1xxxxxxx:"0160777777" <0160777777> for s@capidialtone:1 (Retry 1)

extensions.conf
[capidialtone]
exten => s,1,Dial,sip/@s
exten => s,2,Hangup

mfg
 
Also ich würde ganz gerne auch eine Callback-Geschichte realisieren, aber leider ist das hier ja noch nicht komplett zum Ende gebracht worden.

Ich habe bei mir in der extensions.conf folgendes eingegeben:
Code:
exten => 71503/071950xxxx,1,Wait,1
exten => 71503/071950xxxx,2,AGI,callback.agi
exten => 71503/071950xxxx,3,Hangup

[capidialtone]
exten => s,1,Dial,sip/@s
exten => s,2,Hangup

Sobald ich hinter der Nummer des Sip-Eingangs den / setze mit der Nummer von der der Anruf kommt, bekomme ich keine Verbindung mehr. Ich bekomme eine Ansage "die Rufnummer ist ungültig" (eine Unart der Telefongesellschaft)

Wenn ich den Slash weglasse funktioniert es aber auch nicht. Er durchläuft dann immer wieder die Schleife "Wait, AGI, HangUp"

Auch weiss ich nicht, ob die Angaben, die Ronny unter [capidialtone] gemacht hat korrekt sind um auch über einen Sip-Account wieder raustelefonieren zu können, da das Junghanns-Skript ja ursprünglich für eine Capi-Verbindung gedacht ist.

Vielleicht gibt es ja auch etwas anderes um mein Problem zu lösen. Ich möchte nämlich noch etwas mehr, als das Standard-Callback-Skript für eine bestimmte Nummer, da ich nächste Woche in Ägypten bin und die Telefonpreise tierisch hoch sind. Deswegen wollte ich das Callback vom Hotelzimmer aus benutzen über Stanaphone.

Die Anforderungen:
- Der Rückruf soll von jedem beliebigen Anschluss aus funktionieren, falls die Rufnummer übermittelt wird.
- Wird die Rufnummer nicht übermittelt, möchte ich ein Freizeichen oder eine Ansage bekommen und dann die Rufnummer von Hand angeben, gefolgt von einer PIN, die den Rückruf aktiviert => also z.B. Anruf Asterisk => Freizeichen => 01234567*PIN#
- Sollte der Rückruf schon problemlos geklappt haben, möchte ich beim Rückruf vor dem Freizeichen die PIN eingeben können.

Wäre super, wenn sich jemand schon so gut in der Asterisk-Programmierung auskennt, damit man so ein Skript entwickeln könnte.

Schöne Grüße
Dakapo
 
Genau soetwas suche ich auch gerade. Falls jemand zwischenzeitlich zu einer finalen Lösung gekommen ist....möge er sich doch outen.
 
Ich habe eine!

Lasst mich mal uebers wochenende meine Dialplaene ordentlich zusammenstricken und dann auf einen Webserver packen! Beim Callback kann man dann auch bestimmen ueber welche MSN der Rueckruf geht, welche MSN fuer den Callthrough benutzt wird, und auf welche Nummer ueberhaupt zurueckgerufen wird!

vg Eric
 
Hey das hört sich super an! :)
Ich wollte demnächst auch noch sowas stricken, aber wenn Du es schon gemacht hast um so besser. Und wer weiss, ob und wann ich es überhaupt selbst gemacht hätte ;)
 
Kommt alles!

Momentan ruft er nur zurueck, wenn er eine CallerID bekommt, die er kennt. Will das noch umstricken, dass er auch andere CallerID zurueckruft, dann aber ein Passwort braucht, bzw. wenn man keine CallerID mitschickt, dass man eine Nummer angeben kann, auf der er zurueckrufen sollen (ebenfalls mit Pin).
 
allesOK schrieb:
Momentan ruft er nur zurueck, wenn er eine CallerID bekommt, die er kennt.

Mehr ist in manchem Fall gar nicht verlangt (z.B. wenn man mobil unterwegs ist)

allesOK schrieb:
Will das noch umstricken, dass er auch andere CallerID zurueckruft, dann aber ein Passwort braucht, bzw. wenn man keine CallerID mitschickt, dass man eine Nummer angeben kann, auf der er zurueckrufen sollen (ebenfalls mit Pin).

Das wäre die Luxusvariante :)
Die würde ich mich auf eine zweite (zusätzliche) MSN packen.

Ich bin auf jeden Fall gespannt!

Bitte mach es einfach (nachvollziehbar) :lol: , mein Hirnschmalz gerät schon beim logischen Nachvollziehen Deiner Einstein'schen Scriptologie
oft an's Kochen...
:doof:
 
Ach keine Angst, ist alles in einem schoenen *-aehnlichen .conf verpackt. Du musst nur eine Datei inkludieren, und fuer die MSN angeben, dass sie fuers Callback zustaendig ist.
 
So hab all die netten Features implementiert. Das einzige was nicht geht, ist eine zweite Nummer anzurufen, wenn die erste besetzt ist. Ansonsten alles: Callback fuer vorgebene CallerIDs. Auzsserdem kann man festlegen, ob andere CallerID zugelassen sind. Die werden dann ohne abzuheben zurueck gerufen. Und man kann festlegen, ob * dran gehen soll, wenn keine CallerID mitgeschickt wird. Dann fragt er nach einer Callbacknummer und ruft zurueck. Achso, die beiden "unsicheren" Alternativen sind Pin-geschuetzt!

Code wird noch aufbereitet und zusammen mit vielen anderen netten Dingen meines Dialplans in Kuerze veroeffentlicht!
 
Die Fangemeinde sammelt sich nach diesen einladenden Worten im Saal und blickt gespannt auf die [noch verhüllte] Bühne...
 
Gibts es schon Neuerungen??? Wann erscheint der Code für das Callback???
 
uiii, ich verspreche soo viel .... und hab so wenig Zeit.

In meinen beiden System laeuft alles, aber mir gefaellt es noch nicht so ganz, weil es nicht generisch genug fuer alle Anwender ist. Und halbe Loesungen will ich nicht posten ...
 
Hi Eric!

aber du weisst doch sicherlich; Software muss man auf den Anwender loslassen wenn die Arbeiten zu ca. 90% erledigt sind, denn für die restlichen 10% benötigt man mindestens genausoviel Zeit wie für die ersten 90% :)
Oder war da nicht was, dass man irgendwann für jedes weitere % genausoviel Zeit benötigt :)

Vielleicht reift es ja bei uns durch Feedback und Inputs dann noch weiter und du kannst effekiver verbessern.... sind alle schon so gespannt und in den Wartelöchern!

Gruß,

Jui
 
Ist ein Argument - aber mehr so eines aus Redmond ... also ich fixe noch ein paar Sachen und dann lass ich es raus. Brauche eigentlich nur 1-2 Abende, aber die muss man erst mal finden.
 
Hm, kann ich verstehen, geht mir letztendlich nicht anders. Ich sitze allerdings nun schon ein paar mehr Tage an diversen Callback-Lösungen und bei mir funktioniert leider keine. Wäre es vielleicht trotzdem möglich, eine Anleitung oder soetwas zu bekommen (per E-Mail?), um die Callback-Geschichte zu realisieren?
 
wird deine lösung für voip gespräche oder auch für isdn funktionieren?
wird es möglich sein bei bestimmten erkannten caller id's einen rückruf auf anderen nummer vorzugeben. mir geht es dabei darum, dass ich mit der gesendeten mobilfunk id meines genion vertrages einen callback via isdn (da telefonflat) auf meiner genion festnetznummer auszulösen. bestenfalls sollte er den initialisierungsanruf mit einem besetzt ablehnen, wenn er die caller id identifiziert hat. und dann den rückruf auslösen. dann möchte ich nach annahme des rückrufs einen zweiten call via isdn line 2 auslösen. eigentlich alles in allem so wie das www.mcdialer.de unter windows macht....

sorry, wenn ich euch hier irgendwie ins gehege komme, bin absoluter linux/ asterisk rookie und gerade bei den ersten "gehversuchen" :wink:

danke schon mal&gruss

JohnnyT
 
nee, das kann die loesung jetzt schon ... darfst dich schon mal freuen ...
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.