Python AGI

nasenhai

Neuer User
Mitglied seit
8 Jan 2013
Beiträge
7
Punkte für Reaktionen
0
Punkte
0
Hi zusammen,

ich stehe mal wieder vor einem Problem.

Ich habe den Asterisk so konfiguriert, dass er mir ein Python-Script aufruft.

Code:
#!/usr/bin/python

import sys

res=sys.stdout.write('WAIT FOR DIGIT 5000"*#"\n')
sys.stdout.flush()
sys.stderr.write("Received DIGIT %s\n"%res)
sys.stderr.flush()

Dieses Script soll mir mittels "WAIT FOR DIGIT" einen Tastendruck vom Telefon in die Variable res lesen und dann in der Asterisk-Konsole zwecks Debugging ausgeben. Leider funktioniert das nicht.

Kann mir hier jemand helfen, mein Vorhaben umzusetzen? Evtl mit einem Beispiel-Python-Script? Das wäre super!!!

Vielen Dank
 
Mit Python kenne ich mich null aus, aber ich glaube Dir ist das Prinzip der Results nicht ganz klar. So wie Du das jetzt hast, bekommst Du in res nicht das Ergebnis von wait for digit, sondern das Ergebnis der write Anweisung. Das wird vermutlich immer true sein.

Du musst erst das AGI Kommando schicken, und dann die Standardeingabe lesen. Mit PHP würde man das etwa so machen:
PHP:
fwrite(STDOUT, "wait for digit 5000\n");
fflush(STDOUT);
$result = fgets(STDIN);

In $result kommt dann unter anderem der Rückgabewert des Kommandos vor.

Beim Aufruf des AGI Skripts schreibt Asterisk einen Haufen Zeug auf die Standardeingabe, das sollte man zu Beginn des Skripts immer erst aus dem Puffer lesen, damit selbiger leer ist.
 
Danke für die Antwort.
Leider komme ich dadurch nicht weiter :(

Vielleicht hat noch jemand eine Lösung für mein Problem?
 
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.