Asterisk Expression mit ODER-Verknüpfung

Hallo zusammen,

ich würde gerne in einer Asterisk-Expression eine Oder-Verknüpfung verwenden. Wie ist die Syntax in dem Fall?

Derzeit versuche ich es so:
($ ${MDC_DIALCALLERNUM:1:8} = 052721234 ] | $ ${MDC_DIALCALLERNUM} = 31 ])

das scheint aber nicht ganz korrekt zu sein.

In der CLI gibt es eine entsprechende Warnmeldung:

Executing [9001@sub_main-9001:11] Set(“SIP/OUCyxEDKg79102f-0000007c”, “MDC_EXPRESSION-1=(0 | 1)”) in new stack
[Oct 4 16:19:51] WARNING[1168][C-00000039]: pbx.c:1618 pbx_exec: The application delimiter is now the comma, not the pipe. Did you forget to convert your dialplan? (Set(MDC_EXPRESSION-1=(0 | 1)))

Ziel ist es, dass die Expression wahr (1) zurück liefert, wenn eine der Bedingungen zutrifft.

Gruß
Michael

OK, ich hab es gerade selbst herausgefunden:

Es muss lauten


$ ${MDC_DIALCALLERNUM:1:8} = 052721234 | ${MDC_DIALCALLERNUM} = 31 ]

Damit funktioniert dann auch eine Oder-Verknüpfung.

Super, vielen Dank für den Hinweis! In dem Beispiel fehlt aber eine Klammer:
$[ ${MDC_DIALCALLERNUM:1:8} = 052721234 | ${MDC_DIALCALLERNUM} = 31 ]

1 Like

Kann diese Oder-Abfrage auch erweitert werden auf mehr als zwei Nummern/Einträge? Ist das schon mal getestet worden oder bekannt?

Im Prinzip kannst Du ja beliebig viele Oder-Bedingungen hintereinander fortführen. Sollte dann so aussehen (ungetestet):

$[ ${MDC_DIALCALLERNUM:1:8} = 052721234 | ${MDC_DIALCALLERNUM} = 31 | ${MDC_DIALCALLERNUM} = noch irgendeineNummer | ${MDC_DIALCALLERNUM} = noch eine weitere Nummer]
Gruß
Michael

Richtig, etwas alte Doku aber noch aktuell:

alles hier beschriebene sollte möglich sein, wichtig ist auf die Klammern aufzupassen. Hier könnte mich ein Entwickler Lügen strafen, aber ich glaube alles ungleich 0 wird als wahr angesehen ( falls nicht zumindest alles größer 0, falls auch das nicht dann darauf achten das 0 oder 1 dabei rauskommt :wink: )