Variable vom Anrufer setzen lassen

1756

Neuer User
Mitglied seit
25 Sep 2010
Beiträge
14
Punkte für Reaktionen
0
Punkte
0
Guten Tag liebe Community,

erst mal muss ich sagen, dass ich euer Forum einmalig finde. Habe schon die abgefahrensten Sachen in Asterisk integriert, welche ich eurem Forum entnehmen konnte :D.

Aber nun habe auch ich eine kleine Frage ;). Weiß zufällig jemand, wie man eine Variable, beispielsweise "include => [Kundennummer]", vom Anrufer über die Telefontasten setzen kann? Und wie funktioniert es eine Variable auf derselben Art und Weise in den Befehl "System()" zu integrieren, also beispielsweise "System(/home/asterisk-scripts/kunde_[VariableKundennummer].sh)"?

Vielen Dank!


Beste Grüße
1756

EDIT: Ach ja, es geht um Asterisk 1.4.
 
Zuletzt bearbeitet:
vielleicht so?
System(/home/asterisk-scripts/kunde_${VariableKundennummer}.sh)
 
Beim erfassen der Kundennummer hilft Read().
 
Vielen, vielen Dank für eure schnellen Antworten! Werde ich gleich mal ausprobieren und mich dann nochmal melden.

Ich habe jetzt folgendes in meine Config geschrieben:
exten => 2,1,Answer() ; abheben
exten => s,n,Playback(insert_kdnr)
exten => 2,n,Read(kdnrx,,7)
exten => 2,n,SayDigits(${kdnrx})
exten => 2,n,Set(kdnr=${kdnrx})
exten => 2,n,Goto(customer_${kdnr}_menu,s,1)

...allerdings legt er nach dem Playback auf. Also er nimmt praktisch erst mal ab, dann kommt die Ansage "Bitte geben Sie Ihre Kundennummer ein", danach sollte man die Möglichkeit haben diese einzugeben und die Variable kdnrx mit dieser Kundennummer zu besetzen. Fehlt da noch irgendwas, habe ich einen Fehler gemacht oder war Read für etwas anderes gedacht?
 
Zuletzt bearbeitet:
"System(/home/asterisk-scripts/kunde_${VariableKundennummer}.sh)"

Da müsste dann ja für jede Kundennummer ein Script vorhanden sein.
Sauberer ist es wohl das Script mit Parameter aufzurufen.
An die Bash übergeben Variablen stehen dann im Script mit $1 usw. zur Verfügung.
 
Danke für den Tipp, habe ich gleich mal umgesetzt, wie du gesagt hast. Das Problem besteht jetzt nur noch darin, dass ich nicht zur Eingabe der Nummer aufgefordert werde, sondern einfach aufgelegt wird. Ich würde jeden am liebsten sofort heiraten, der mir das beantworten kann :D. Das wäre einfach nur der Hammer, wenn das funktioniert, was ich vor habe.

Wenn das dann funktioniert hätte ich dann noch eine Frage. Kann man dann eine Art Rückgabewert vom betreffenden Script ebenfalls als Wert für eine Variable setzen?
 
Zuletzt bearbeitet:
Das "exten => s,n,Playback(insert_kdnr)" wird gar nicht ausgeführt da dort s statt 2 steht.


Für das was Du vorhast vergiss den direkten shell Aufruf mit system und schau Dir
http://www.voip-info.org/wiki/view/Asterisk+AGI
an
Vielen Dank für den Link! Das mit dem Rückgabewert ist allerdings nicht so wichtig. Wäre nur schön gewesen. Im Endeffekt würde das jeweilige Script, was aufgerufen werden soll alles nötige machen. Ich habe den Fehler mit dem Playback mal behoben, aber es wird noch immer gleich danach aufgelegt, also bevor ich überhaupt zur Eingabe der Kundennummer komme. Damit wäre mir schon erstmal mehr als genug geholfen. Ich kann gar nicht beschreiben, wie genial das wäre, wenn das funktioniert und wie dankbar ich euch wäre :D!!! Die AGI-Option werde ich mir mal näher ansehen, sobald ich die Zeit dafür habe, was aber sicher noch eine gefühlte Ewigkeit dauern wird ;).

Also zur Zeit sieht der ganze Spaß so aus:
exten => 2,1,Answer() ; abheben
exten => 2,n,Playback(insert_kdnr)
exten => 2,n,Read(kdnrx,,7)
exten => 2,n,SayDigits(${kdnrx})
exten => 2,n,Set(kdnr=${kdnrx})
exten => 2,n,System(/opt/hotline/test.php -c ${kdnr})


Vielen, vielen Dank schon mal!
 
Zuletzt bearbeitet:
Ich mache das nicht mir read(), sondern ungefähr so:

exten => s,1,Set(NR=)
exten => s,2,Background(tippe die Kundennummer und danach # oder warte 10 Sekunden)
exten => s,3,Set(TIMEOUT(response)=10)
exten => s,4,WaitExten()
exten => s,5,Goto(#,1)
exten => _X,1,Set(NR=${NR}${EXTEN})
exten => _X,2,Wait(0.5)
exten => _X,3,Goto(s,2)
exten => #,1,Saydigits(${NR})
exten => #,2,System(machwas mit ${NR})
 
Zuletzt bearbeitet:
Vielen Dank für deine Antwort. Ich werde es gleich mal ausprobieren.
 
Das ist ja mal endgeil! VIELEN HERZLICHEN DANK für diesen Tipp!!! Du kannst dir nicht im geringsten vorstellen, wie froh ich bin, dass es funktioniert! WOW! Nochmal VIELEN, VIELEN DANK an alle!!! *In die Luft spring* :D

Ein kleiner Hinweis noch für all diejenigen, die dieselbe Frage haben und ein Problem haben mit Kundennummer, die mindestens 2x die Ziffer "0" enthalten:
Man muss nach dem _1 noch so viele Xen -1 machen, wie die Kundennummer lang ist!
 
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.