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

Anrufe nach Ländercode sortieren (Ländervorwahl)

Dieses Thema im Forum "Asterisk Rufnummernplan" wurde erstellt von dileso, 24 Okt. 2008.

  1. dileso

    dileso Neuer User

    Registriert seit:
    8 Jan. 2008
    Beiträge:
    9
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #1 dileso, 24 Okt. 2008
    Zuletzt bearbeitet: 26 Okt. 2008
    Hallo,
    ich möchte gerne in meinem Asterisk eingehende Rufe anhand des Ländercodes sortieren.
    Auf einer Rufnummer kommen nationale und internationale Anrufe an. Damit nicht jeder das gesammte Voicemenu durchlaufen muss, würde ich gerne anhand des Ländercodes die Anrufer an die Teams verteilen.
    Ich habe bereits festgestellt, dass die nationalen Anrufe mit 00xxxxx anfangen und die internationalen mit 000YYxxxxx oder direkt mit dem Ländercode YYxxxxxxx (Y=Ländercode)
    Leider gelingt es mir nicht in eine gotoif Abfrage eine Expression wie _00[1-9].
    einzufügen. Sowie ich verstanden habe sollte der Befehl aber doch reguläre Ausdrücke verstehen oder?

    Hat jeman eine Idee wie ich das Problem lösen kann?
    Vielen Dank
     
  2. abw1oim

    abw1oim Aktives Mitglied

    Registriert seit:
    26 März 2007
    Beiträge:
    948
    Zustimmungen:
    2
    Punkte für Erfolge:
    18
    Ort:
    Bonn
    Geht auch ohne REGEX - mit Deinen Angaben im Prinzip so:

    Code:
    exten => _X.,1,GotoIf($["${EXTEN:0:3}" = "000"]?inter)
    exten => _X.,n,GotoIf($["${EXTEN:0:2}" = "00"]?national)
    exten => _X.,n,Goto(inter)
    exten => _X.,n(national),NoOp(Nationales Gespräch)
    exten => _X.,n(inter),NoOp(Internationales Gespräch)
    
    Nun kann man natürlich die einzelnen Countrycodes bzw. NDCs von Deutschland weiter auseinandernehmen, man könnte es aber eben auch erst einmal vereinheitlichen, wenn Du dannn einheitlich nach einer standardisierten Ländertabelle mit rückwahlfähigen Rufnummern arbeiten willst:

    Code:
    exten => _X.,1,GotoIf($["${EXTEN:0:3}" = "000"]?inter)
    exten => _X.,n,GotoIf($["${EXTEN:0:2}" = "00"]?national)
    exten => _X.,n,Goto(inter,000${EXTEN})
    exten => _X.,n(national),NoOp(Nationales Gespräch)
    exten => _X.,n(national),Goto(inter1,00049${EXTEN:2})
    exten => _X.,n(inter),NoOp(Internationales Gespräch)
    exten => _X.,n(inter),Goto(inter1)
    exten => _X.,n(inter1),NoOp(Rufnummer rückwahlfähig standardisiert)
    exten => _X.,n(inter1),NoOp(${EXTEN})
    
    (Ist jetzt nur aus dem Kopf, kann es gerade nicht testen, sollte jedoch im Prinzip funktionieren ;))

    Jetzt könntest Du die Call-Distribution mit einer entsprechenden einheitlichen Ländertabelle machen, die EXTENS wären jetz alle im Format

    000<CC><NDC><SN>

    und damit nach der von Dir geschilderten Anlagenlogik einerseits rückwahlfähig, andererseits einheitlich auswertbar im Hinblick auf das Herkunftsland/-gebiet.
     
  3. dileso

    dileso Neuer User

    Registriert seit:
    8 Jan. 2008
    Beiträge:
    9
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo abw1oim,
    vielen Dank für den Lösungsansatz. Leider geht’s nicht ganz so weil
    ${EXTEN:0:3} beinhaltet ja die Rufnummer die Angerufen wurde und nicht die des Anrufers.
    Aber mit deinem Ansatz und ${CALLERID(num):0:3} geht es.

    Vielen Dank :)

    exten => main,1,NoOp(Caller-ID: ${CALLERID(num)})
    exten => main,n,GotoIf($["${CALLERID(num):0:5}" = "00033"]?hotline,FR,1)
    exten => main,n,GotoIf($["${CALLERID(num):0:2}" = "33"]?hotline,FR,1)
    exten => main,n,GotoIf($["${CALLERID(num):0:5}" = "00034"]?hotline,ES,1)
    exten => main,n,GotoIf($["${CALLERID(num):0:2}" = "34"]?hotline,ES,1)
    exten => main,n,GotoIf($["${CALLERID(num):0:5}" = "00044"]?hotline,EN,1)
    exten => main,n,GotoIf($["${CALLERID(num):0:2}" = "44"]?hotline,EN,1)
    exten => main,n,GotoIf($["${CALLERID(num):0:5}" = "00031"]?hotline,NL,1)
    exten => main,n,GotoIf($["${CALLERID(num):0:2}" = "31"]?hotline,NL,1)
    exten => main,n,GotoIf($["${CALLERID(num):0:5}" = "00039"]?hotline,IT,1)
    exten => main,n,GotoIf($["${CALLERID(num):0:2}" = "39"]?hotline,IT,1)
    ; uns so weiter…

    ; alle anderen internationalen
    exten => main,n,GotoIf($["${CALLERID(num):0:3}" = "000"]?international)

    ; und die lokalen (deutschen)
    exten => main,n,GotoIf($["${CALLERID(num):0:2}" = "00"]?hotline,DE,1)
     
  4. abw1oim

    abw1oim Aktives Mitglied

    Registriert seit:
    26 März 2007
    Beiträge:
    948
    Zustimmungen:
    2
    Punkte für Erfolge:
    18
    Ort:
    Bonn
    Das ist mir auf die Schnelle passiert, Asche auf mein Haupt ;)

    Du hast natürlich völlig recht, dass es die CALLERID(num) braucht ...