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

Unterdrückten Anruf benennen

Dieses Thema im Forum "Asterisk Allgemein" wurde erstellt von back2live, 20 März 2012.

  1. back2live

    back2live Neuer User

    Registriert seit:
    16 Okt. 2008
    Beiträge:
    104
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Hallo,

    bei der Anlage muß eine 0 für Amtsleitung vorgewählt werden.
    Damit der Rückruf am Telefon richtig möglich ist klebe ich eine 0 zusätzlich an die callerid von extern:

    exten => _X!,1,Set(CALLERID(num)=0${CALLERID(num)})

    wenn nun jemand unterdrückt anruft möchte wird nur 0 im Display angezeigt. Ich möchte aber in diesem Fall nicht die 0 setzen sondern CALLERID(name) auf unterdrückt setzen.
    Wie müsste das Script ausschauen? Ich habe hier nachgelesen http://www.das-asterisk-buch.de/einleitung-regex.html dort wird aber nur auf rufnummern verglichen.

    viele Grüße
    Andi
     
  2. rentier-s

    rentier-s Guest

    Du kannst einen Befehl mit ExecIf abhängig von einer Bedingung ausführen. Oder wenn es längere Code-Blöcke sind, mit GotoIf dorthin springen.

    Pass bei der Abfrage auf, wenn Du vom TSP eine leere Callerid bekommst, musst Du " setzen:
    ExecIf($["${CALLERID(num)}" = ""],Set...)
    Es gibt auch TSPs, die unknown oder anonymous oder etwas in der Art senden, das musst Du ggf. ausprobieren, zB. per Noop(${CALLERID(num)}).

    Eine andere Möglichkeit, je nachdem wie Dein Dialplan aufgebaut ist, nennt sich Anit-Ex-Girlfriend. Diese Methode ist aber rein auf die Callerid beschränkt.
     
  3. abw1oim

    abw1oim Aktives Mitglied

    Registriert seit:
    26 März 2007
    Beiträge:
    948
    Zustimmungen:
    2
    Punkte für Erfolge:
    18
    Ort:
    Bonn
    In Ergänzung / zur Vereinfachung des Lösungsansatzes von rentier-s:

    Code:
    ExecIf($[${REGEX("^[0-9]+$" ${CALLERID(num)})}],Set...)
    Hat den Vorteil, dass es egal ist, ob die CALLERID(num) leer oder mit beliebigen nichtnumerischen Zeichen gefüllt ist, es wird nur ausgefüjrt, wenn die eben ausschließlich aus Ziffern besteht ...
     
  4. back2live

    back2live Neuer User

    Registriert seit:
    16 Okt. 2008
    Beiträge:
    104
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Hallo,

    danke für die Beispiele,

    Bin etwas am experimentieren aber es klappt einfach noch nicht richtig
    Ich versuche erstmal ein einfaches Beispiel für alle intern:

    das hier funktioniert:

    [from-internal]
    exten => _X!,1,Set(CALLERID(all)=unbekannt)


    das hier dann schon nicht mehr, zum testen soll es einfach mal für die Extension 11 gelten

    [from-internal]
    exten => _X!,1,ExecIf($["${CALLERID(num)}" = "11"] ,Set(CALLERID(all)=unbekannt))

    ergibt:
    asterisk*CLI>
    == Using SIP RTP TOS bits 184
    == Using SIP RTP CoS mark 5
    -- Executing [10@from-internal:1] ExecIf("SIP/11-00000052", "1,Set(CALLERID(all)=unbekannt)") in new stack
    == Spawn extension (from-internal, 10, 1) exited non-zero on 'SIP/11-00000052'
    -- Executing [h@from-internal:1] Hangup("SIP/11-00000052", "") in new stack
    == Spawn extension (from-internal, h, 1) exited non-zero on 'SIP/11-00000052'
    asterisk*CLI>

    Bei einer anderen Extension z.b. 40 greift die Regel nicht und funktioniert wie es soll.

    Andi
     
  5. rentier-s

    rentier-s Guest

    #5 rentier-s, 29 März 2012
    Zuletzt von einem Moderator bearbeitet: 29 März 2012
    Setz mal die verbosity auf 5, dann müssten detailliertere Meldungen auftauchen.

    CALLERID(all) erwartet Name <Nummer> als Parameter, ich schätze dass er deshalb abbricht.
     
  6. back2live

    back2live Neuer User

    Registriert seit:
    16 Okt. 2008
    Beiträge:
    104
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Ich hatte asterisk mit 10v aufgerufen.

    asterisk -rvvvvvvvvvv


    das komische ist ja das alleine
    exten => _X!,1,Set(CALLERID(all)=unbekannt)

    funktioniert, es werden eben alle Anrufe auf unbekannt gesetzt.
     
  7. rentier-s

    rentier-s Guest

    Zeig mal den kompletten Context, das kann nur irgendwas banales sein.