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:
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?
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})
Wie kann ich Asterisk beibringen, nur dann den Wert der Rückwärtssuche zu überschreiben, wenn auch wirklich im LDAP etwas gefunden wird?