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)
 
Kostenlos!

Neueste Beiträge

Statistik des Forums

Themen
248,857
Beiträge
2,302,987
Mitglieder
378,504
Neuestes Mitglied
Hallo61Hallo