Verzweigung bei leerer Rückgabe

robinsonR

Mitglied
Mitglied seit
17 Apr 2006
Beiträge
560
Punkte für Reaktionen
0
Punkte
16
Nachdem durch einen Skript die Rückwärtssuche erfolgt ist, bekomme ich einen Namen zur Rufnummer und komme zu diesem Makro. Dieser soll anschliessen in meinem LDAP zusätzlich die Rufnummer überprüfen und gegebenenfalls den von der Rückwärtssuche erhaltenen Namen überschreiben:
Code:
[macro-getcid-general]

exten => s,1,Set(CALLERID(name)=${LONGNAME})
exten => s,2,Set(CALLERID(num)=${CALLERID(num)}) 
exten => s,n,GotoIf($["${CALLERID(num)}" : "gw01netvoip"]?60)
exten => s,n,GotoIf($["${CALLERID(num)}" : "anonymous"]?60)
;;exten => s,n,GotoIf($["${CALLERID(num)}" : "00.*"]?30)               ; replace 00 with +
;;exten => s,n,GotoIf($["${CALLERID(num)}" :  "0.*"]?40)               ; replace 0  with +CC
exten => s,n,GotoIf($["${CALLERID(num)}" :  "3.*"]?50)
exten => s,n,GotoIf($["${CALLERID(num)}" :  "0.*"]?50)
exten => s,8,SetCIDNum(+${COUNTRYCODE}${AREACODE}${CALLERID(num)})   ; prepend +CCAC

exten => s,n,Goto(100)

exten => s,30,SetCIDNum(+${CALLERID(num):2})
exten => s,31,Goto(100)

;;exten => s,40,SetCIDNum(+${COUNTRYCODE}${CALLERID(num):1})
;;exten => s,41,Goto(100)

exten => s,50,Set(CALLERID(num)=${CALLERID(num)) 
exten => s,51,Goto(100)

exten => s,60,Set(CALLERID(num)=anonym) 
exten => s,61,Goto(100)

exten => s,70,Set(CALLERID(num)=Skype) 
exten => s,71,Goto(100)

exten => s,100,LDAPget(CIDNAME=cidname/${CALLERID(num)},${CALLERID(num)},${CALLERID(num)},${CALLERID(num)})   ; check for mobile and fax as well
exten => s,101,LDAPget(SN=sn/${CALLERID(num)},${CALLERID(num)},${CALLERID(num)},${CALLERID(num)})   ; check for mobile and fax as well
exten => s,102,LDAPget(CO=company/${CALLERID(num)},${CALLERID(num)},${CALLERID(num)},${CALLERID(num)})   ; check for mobile and fax as well

exten => s,103,GotoIf($[ ${CO} =" "  ]?104:120)
exten => s,104,GotoIf($[ ${SN} =" " ]?105:120)
exten => s,105,GotoIf($[ ${CIDNAME} = " " ]?121:120)

exten => s,120,Set(CALLERID(name)=${CO}" "${CIDNAME}" "${SN})

exten => s,121,Set(IP=${DB(clientip/${CDR(dst)})})
exten => s,122,Notify(${CALLERID(num)},${CALLERID(name)},${DB(AMPUSER/${CDR(dst)}/cidname)}/${IP})
exten => s,123,NoOp(no notification for: ${MACRO_EXTEN})
Leider wird der Namen auch ersetzt, wenn im LDAP nichts gefunden wird, es wird also ein leerer Wert zurückgegeben.
Wie kann ich Asterisk beibringen, nur dann den Wert der Rückwärtssuche zu überschreiben, wenn auch wirklich im LDAP etwas gefunden wird?
 
Gelöst

Ich musste einfach folgende Zeilen richtig stellen, bzw. ändern:
Code:
exten => s,103,GotoIf($[ ${CO} !=""  ]?120:104)
exten => s,104,GotoIf($[ ${SN} !="" ]?120:105)
exten => s,105,GotoIf($[ ${CIDNAME} !="" ]?120:121)
anstatt
Code:
exten => s,103,GotoIf($[ ${CO} =" "  ]?104:120)
exten => s,104,GotoIf($[ ${SN} =" " ]?105:120)
exten => s,105,GotoIf($[ ${CIDNAME} =" " ]?121:120)
 
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.