- Mitglied seit
- 6 Nov 2005
- Beiträge
- 12
- Punkte für Reaktionen
- 0
- Punkte
- 0
Hallo,
ich nutzte momentan noch Asterisk 1.4.23.2. In der Asterisk Datenbank habe ich mittels database put 0301234567890 "Firma xy - Vorname Nachname" einen Eintrag angelegt. Das sind also in diesem Fall 13 Ziffern.
Damit ich prüfen kann, ob es im Telefonbuch die Nummer gibt, verwende ich folgendes:
Es wird geprüft, ob die Nummer n-stellig ist und im Telefonbuch vorkommt. Das funktioniert auch perfekt. Allerdings ist das eben recht viel Code.
Ich habe dann z. B. noch database put 030123456 "Firma xy" eingetragen.
Wenn ich nun einen Anruf von jemanden aus der Firma erhalte, z. B. 030123456-1234, also mit der Nebenstelle 1234, dann merkt das Skript, dass im Telefonbuch 030123456 vorkommt und gibt den Anrufername "Firma xy" aus.
Nun zur eigentlichen Frage. Gibt es eine Möglichkeit, die ${CALLERID(num) immer um eine Stelle abzuschneiden (mit einer Schleife) und in eine Variable zu speichern?
Es gibt unter http://www.voip-info.org/wiki/view/Asterisk+cmd+While ein Beispiel, wie mittels while ein Wert heruntergezählt wird.
Aber ist auch möglich:
while
Variable1 = ${CALLERID(num)
Befehl um von Variable1 die letzte Zahl abzuschneiden
Dan prüfen mittels GotoIf(${DB_EXISTS(Telefonbuch/${Variable1})}?dial1), ob die Variable1 in der AstDB vorkommt
wenn ja, dann EndIf -- ansonsten die Schleife von vorne und von der Variable1 wieder eine Ziffer abschneiden.
Viele Grüße,
Caipi
ich nutzte momentan noch Asterisk 1.4.23.2. In der Asterisk Datenbank habe ich mittels database put 0301234567890 "Firma xy - Vorname Nachname" einen Eintrag angelegt. Das sind also in diesem Fall 13 Ziffern.
Damit ich prüfen kann, ob es im Telefonbuch die Nummer gibt, verwende ich folgendes:
Code:
Set(Num=${CALLERID(num):0:14})
Verbose(Es wird geprüft ob die Nr 14 stellig ist und im Telefonbuch vorkommt. Wenn ja dann zu wählen springen)
GotoIf(${DB_EXISTS(Telefonbuch/${Num})}?dial1)
Set(Num=${CALLERID(num):0:13})
Verbose(Es wird geprüft ob die Nr -${Num}-13 stellig ist und im Telefonbuch vorkommt. Wenn ja dann zu wählen springen)
GotoIf(${DB_EXISTS(Telefonbuch/${Num})}?dial1)
es geht dann immer mit einer Ziffer weniger weiter
Es wird geprüft, ob die Nummer n-stellig ist und im Telefonbuch vorkommt. Das funktioniert auch perfekt. Allerdings ist das eben recht viel Code.
Ich habe dann z. B. noch database put 030123456 "Firma xy" eingetragen.
Wenn ich nun einen Anruf von jemanden aus der Firma erhalte, z. B. 030123456-1234, also mit der Nebenstelle 1234, dann merkt das Skript, dass im Telefonbuch 030123456 vorkommt und gibt den Anrufername "Firma xy" aus.
Nun zur eigentlichen Frage. Gibt es eine Möglichkeit, die ${CALLERID(num) immer um eine Stelle abzuschneiden (mit einer Schleife) und in eine Variable zu speichern?
Es gibt unter http://www.voip-info.org/wiki/view/Asterisk+cmd+While ein Beispiel, wie mittels while ein Wert heruntergezählt wird.
Aber ist auch möglich:
while
Variable1 = ${CALLERID(num)
Befehl um von Variable1 die letzte Zahl abzuschneiden
Dan prüfen mittels GotoIf(${DB_EXISTS(Telefonbuch/${Variable1})}?dial1), ob die Variable1 in der AstDB vorkommt
wenn ja, dann EndIf -- ansonsten die Schleife von vorne und von der Variable1 wieder eine Ziffer abschneiden.
Viele Grüße,
Caipi
Zuletzt bearbeitet: