.titleBar { margin-bottom: 5px!important; }

Verzweigung bei leerer Rückgabe

Dieses Thema im Forum "Asterisk Rufnummernplan" wurde erstellt von robinsonR, 3 Feb. 2009.

  1. robinsonR

    robinsonR Mitglied

    Registriert seit:
    17 Apr. 2006
    Beiträge:
    560
    Zustimmungen:
    0
    Punkte für Erfolge:
    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?
     
  2. robinsonR

    robinsonR Mitglied

    Registriert seit:
    17 Apr. 2006
    Beiträge:
    560
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    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)