[Frage] "Leere" Rückgabewerte kompakt abfangen?

sunnyman

Aktives Mitglied
Mitglied seit
13 Jan 2006
Beiträge
1,124
Punkte für Reaktionen
145
Punkte
63
Hallo Forum,

in verschiedenen Konstellationen reagiere ich auf Rückgabewerte von Funktionen. Zum Beispiel:
Code:
ExecIf($[${SIP_HEADER(Privacy)}=id]?SIPAddHeader(Privacy:id))
Das Problem dabei ist: wenn (in diesem Beispiel) der Header Privacy nicht gesetzt ist, liefert die Funktion offenbar einen String der Länge 0 zurück, sodass Asterisk beim Auswerten zu einem
Code:
ExecIf($[=id]?SIPAddHeader(Privacy:id))
kommt, was zu einem Fehler führt:
Code:
ast_yyerror: ast_yyerror():  syntax error: syntax error, unexpected '=', expecting $end; Input:
=id
Gibt es eine gescheite Methode, so etwas vernünftig zu behandeln?
Da ja offenbar was zurückkommt, funktioniert EXISTS hier auch nicht.
Ich habe mir an anderen Stellen schon regexes gebaut, aber das ist doch irgendwie Overkill und macht die Aufrufe mit den 1000 Klammern und $-Zeichen noch schwerer zu lesen.
 
Moin

Schon mal auf einen leeren String getestet ?
Siehe: https://wiki.asterisk.org/wiki/display/AST/NULL+Strings

Übigens, da mit ExecIf() jede Dialplanapplikation ausgeführt werden kann, lässt es sich auch verschachteln....
Code:
ExecIf(condition?ExecIf(condition?appiftrue(args):appiffalse(args)):ExecIf(condition?appiftrue(args):appiffalse(args)))
:rolleyes:
 
Zuletzt bearbeitet:
Jawoll, das tuts!
 
So kannste dann natürlich auch testen: !="id"
 
Übigens, da mit ExecIf() jede Dialplanapplikation ausgeführt werden kann, lässt es sich auch verschachteln....
Code:
ExecIf(condition?ExecIf(condition?appiftrue(args):appiffalse(args)):ExecIf(condition?appiftrue(args):appiffalse(args)))
:rolleyes:
Ja, das ist mir wohl bekannt, ich frage mich nur gerade, was genau das mit meiner Frage zu tun hat :)
Gelöst hab ich es jetzt so
Code:
same => n,ExecIF($["${SIP_HEADER(Privacy)}"="id"]?SIPAddHeader(Privacy:id))
An anderen Stellen hab ich tatsächlich auch richtige Verschachtelungen.

koyaanisqatsi schrieb:
So kannste dann natürlich auch testen: !="id"
Ja, in diesem speziellen Fall schon. In anderen Anwendungen kann es verschiedene Werte geben, die ich vorher nicht kenne, und mich interessiert an der Stelle nur, ob ein auswertbarer Wert vorhanden ist oder nicht.
Randnotiz: es handelt sich dabei um die Auswertung des supplementary Services "REDIRECTREASON", der mir u.a. sagt, ob der umleitende Teilnehmer belegt ist oder nicht geantwortet hat :)


Aber sag mal, wo ist denn jetzt der Button zum editieren seines Beitrags?
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
244,831
Beiträge
2,219,105
Mitglieder
371,533
Neuestes Mitglied
ipeee
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.