Crmgo Blog

Asterisk: Arbeiten mit String- und mathematischen Operationen

Asterisk: Arbeiten mit String- und mathematischen Operationen

Funktionen zur Bearbeitung von Zeichenketten Die Funktion ${LEN(foo)} gibt die Länge der Zeichenkette foo zurück. Zum Beispiel: exten => 100,1,Set(Fruit=pear) exten => 100,2,NoOp(${LEN(Fruit)}) exten => 100,3,NoOp(${LEN(${Fruit})}) Die erste NoOp-Anweisung sollte den Wert 5 anzeigen (Länge der Zeichenkette „fruit“). Die zweite NoOp-Anweisung sollte den Wert 4 anzeigen…

Asterisk: Arbeiten mit String- und mathematischen Operationen

Funktionen zur Bearbeitung von Zeichenketten

Länge der Zeichenkette

${LEN(foo)}

gibt die Länge der Zeichenkette foo zurück. Zum Beispiel,

exten => 100,1,Set(Fruit=pear)
exten => 100,2,NoOp(${LEN(Fruit)})
exten => 100,3,NoOp(${LEN(${Fruit})})

Der erste Aufruf von NoOp sollte den Wert 5 anzeigen (Länge der Zeichenkette „fruit“). Der zweite Aufruf von NoOp sollte den Wert 4 anzeigen (Länge der Zeichenkette „pear“).

Diese Methode ermöglicht eine hervorragende Prüfung auf leere Zeichenketten und auf Variablen, die NULL enthalten.

Teilzeichenketten

${foo:offset:length}

gibt eine Teilzeichenkette der Zeichenkette foo zurück, beginnend bei der Verschiebung offset und begrenzt auf eine Länge von length Zeichen.

  • Wenn der Wert von offset negativ ist, wird die Verschiebung nicht vom Anfang der Zeichenkette, sondern vom Ende der Zeichenkette aus gezählt.
  • Wenn der Wert von length weggelassen oder negativ ist, wird die Länge der zurückgegebenen Zeichenkette nicht begrenzt, und es wird die gesamte Zeichenkette ab der Verschiebung offset zurückgegeben.

Beispiele:

${123456789:1} - gibt die Zeichenkette 23456789 zurück
${123456789:-4} - gibt die Zeichenkette 6789 zurück
${123456789:0:3} - gibt die Zeichenkette 123 zurück
${123456789:2:3} - gibt die Zeichenkette 345 zurück
${123456789:-4:3} - gibt die Zeichenkette 678 zurück

Verwendungsbeispiel:

exten => _NXX.,1,Set(areacode=${EXTEN:0:3}) - erhält die ersten 3 Ziffern aus der Variablen ${EXTEN}
exten => _516XXXXXXX,1,Dial(${EXTEN:3}) - erhält den Wert der Variablen ${EXTEN} nach den ersten 3 Ziffern
exten => 100,1,Set(whichVowel=4)
exten => 100,2,Set(foo=AEIOU:${whichVowel}:1) - die Variable ${foo} hat den Wert 'U'

Verkettung von Zeichenketten

Um zwei Zeichenketten zu verketten, schreiben Sie die Direktive einfach wie unten gezeigt:

${foo}${bar}
555${theNumber}
${longDistancePrefix}555${theNumber}

Mathematische Operationen mit Variablen

Für mathematische Aktionen mit Variablen, wie Inkrement, Multiplikation, Addition. Schreiben Sie einfach:

exten => s,1,Set(SOMEVAR=$[${SOMEVAR} + 1]) ; Inkrement
exten => s,2,Set(SOMEVAR=$[2 * ${SOMEVAR}]) ; Multiplikation usw.
Sie müssen Leerzeichen in Ausdrücken verwenden, wie oben gezeigt.

Ab der Asterisk-Version 1.2 steht auch die Funktion MATH zur Verfügung...

exten => s,1,Set(SOMEVAR=${MATH(${SOMEVAR}+1)}) ; Inkrement
exten => s,2,Set(SOMEVAR=${MATH(2*${SOMEVAR})}) ; Multiplikation usw.

Hinweise zu verschiedenen Versionen

  • Die Variable CALLINGPRES wurde am 2004-09-10 in CVS HEAD hinzugefügt und in Asterisk 1.2 veröffentlicht.
  • Die Variable TOUCH_MONITOR wurde am 2005-01-05 in CVS HEAD hinzugefügt und in Asterisk 1.2 veröffentlicht.

Hinweis: Dieser Beitrag kann KI-unterstützt erstellt und anschließend redaktionell geprüft worden sein. Verantwortlich: Dmytro Lomaka, Kaltenkirchen.