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

Rufumleitung mit astdb

Dieses Thema im Forum "Asterisk Rufnummernplan" wurde erstellt von konabi, 26 Jan. 2006.

  1. konabi

    konabi Mitglied

    Registriert seit:
    11 Apr. 2005
    Beiträge:
    424
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,
    ich habe mal hier im Forum nach einer Lösung für eine Rufumleitung gesucht
    und ein schönes Beispiel von Betateilchen gefunden welches ich mir folgendermaßen angepasst habe:

    Code:
     
    [macro-sip]
    exten => s,1,NoOp(Anruf)
    exten => s,2,Set(NUM=${DB(umleitung/${ARG1})})
    exten => s,3,GotoIf($[${NUM} =0]?6:4)
    exten => s,4,Dial(SIP/${NUM},10)
    exten => s,5,Hangup
    exten => s,6,Dial(SIP/${ARG1},10)
    exten => s,7,Hangup
     
    [default]
    exten => _5XX,1,MACRO(localsip,${EXTEN})
     
    [rufumleitung]
    ;Rufumleitung an
    exten => _100.,1,NoOp(Rufumleitung ein)
    exten => _100.,n,DBput(umleitung/${CALLERIDNUM}=${EXTEN:3})
    exten => _100.,n,Set(NUM=${DB(umleitung/${CALLERIDNUM})})
    exten => _100.,n,SayNumber(${NUM})
    exten => _100.,n,PlayBack(auth-thankyou)
    exten => _100.,n,Hangup
     
    ;Rufumleitung aus
    exten => 100,1,NoOp(Rufumleitung aus)
    exten => 100,n,DBput(umleitung/${CALLERIDNUM}=0)
    exten => 100,n,PlayBack(auth-thankyou)
    exten => 100,n,Hangup 
    
    Wenn ich eine 100 gefolgt von einer Nummer wähle wird eine Rufumleitung zu der Rufnummer nach der 100 geschaltet.
    Das ganze funktioniert so daß in der astdb ein Eintrag /umleitung/extension :umleitungsnummer durchgeführt wird.

    Mit Anwahl der Rufnummer 100 wird die Rufumleitung rausgenommen indem der astdb eintrag /umleitung/extension den Wert 0 bekommt.

    Einen Schönheitfleck hat das ganze:
    Ich muß manuell für alle SIP Clients einen asdb Key umleitung/extension mit dem Wert 0 anlegen.

    Wie kann ich das automatisieren?

    Oder habt Ihr andere Lösungsvorschläge?

    Danke Sven
     
  2. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    Den Eintrag mit der 0 brauchst Du gar nicht. Du kannst doch einfach abfragen, ob es überhaupt einen Eintrag gibt.

    Wenn ja -> umleiten an die eingetragene Nummer
    Wenn nein -> keine Umleitung vorhanden.
     
  3. konabi

    konabi Mitglied

    Registriert seit:
    11 Apr. 2005
    Beiträge:
    424
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #3 konabi, 26 Jan. 2006
    Zuletzt bearbeitet: 26 Jan. 2006
    Kannst Du mir die nötige Zeile posten?




    exten => s,3,GotoIf($[!${NUM}]?...)

    wird ja wahrscheinlich nicht gehen.


    Danke

    Sven
     
  4. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    Code:
    Return values
    Always returns 0. If the requested key is not found, jumps to priority n+101 if available. 
    
     
  5. konabi

    konabi Mitglied

    Registriert seit:
    11 Apr. 2005
    Beiträge:
    424
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Stimmt ist auch eine Lösung.
    Aber priorityjumping soll ja so langsam auslaufen, deswegen hatte ich eine andere Lösung angestrebt.

    Danke für Deine Mühe.

    Gruß Sven
     
  6. cibi

    cibi Mitglied

    Registriert seit:
    6 Apr. 2005
    Beiträge:
    561
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Ba-Wü
    Dazu gibt bspw. DBGETSTATUS
    Bsp (in AEL):
    Code:
    DBget(clipno=clip/${internalno});
     // clipno=${DB(clip/${internalno})}; // Fehler, wenn Wert in Datenbank nicht gefunden wird
    NoOp(DB Status ${DBGETSTATUS});
    
    if ("${DBGETSTATUS}" = "NOTFOUND") {
            clipno=${defclip};
    };
    
    
    Und dann gibt es da noch
    Code:
    ${DB_RESULT}        Result value of DB_EXISTS() dial plan function
    aus README.variables
    (bezieht sich aber alles auf Asterisk 1.2.x)
     
  7. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    [Grundsatzgedanken]

    @cibi

    Das ist natürlich völlig korrekt.

    Aber - ehrlich gesagt - ich hatte vorhin einfach keine Lust, konabi mit der Nase auch noch DARAUF stoßen zu müssen. README Dateien sind eben dazu da, auch mal gelesen zu werden. Scheinbar ist es aber für Leute bequemer, erstmal zu fragen anstatt sich selbst durch die vorhandene Dokumentation zu wühlen.

    Aber mal ehrlich - Du und ich haben das ja auch gemacht. Sonst wüßten wir das nicht. Wieso können andere das nicht auch mal machen ? Vor allem wenn es um solche immer wiederkehrende Grundlagenfragen geht.

    [/GRUNDSATZGEDANKEN]

    Nix für ungut.
     
  8. konabi

    konabi Mitglied

    Registriert seit:
    11 Apr. 2005
    Beiträge:
    424
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    @betateilchen

    bevor ich in diesem Forum Fragen stelle, versuche ich schon passende Antworten z.B. auf voip-info.org zu finden.

    Ich dachte auch der Sinn dieses Forums ist es, daß User anderen Usern helfen.

    Für Dich ist das wahrscheinlich eine Grundsatzfrage, weil Du mehr Erfahrung mit dem Thema hast. Keine Frage, Dein Angagement hier im Forum ist sehr bemerkenswert, wenn man die Beiträge verfolgt. Du hast mir ja auch schon oft geholfen.

    Readme's sind gut, aber ein deutsches Buch zu Asterisk wäre besser. Und genau daran arbeite ich. Leider sitzt mir die Zeit im Nacken, so daß ich zugegebenermaßen in letzter Zeit viele Fragen stelle....

    Das eine oder ander Kapitel habe ich auch im WIKI bereit gestellt und ein paar weitere werden sicher folgen. Und wenn ich dann wieder mehr Zeit habe, kann ich mich auch hier im Forum besser engagieren.

    Gruß Sven
     
  9. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    Wenn Du schon die neue Syntax in Deinem Dialplan verwendest, und die Sache mit dem priorityjumping selbst hier ins Forum schreibst - dann hättest Du aber auch die Sache mit der Ergebnis-Abfrage bereits wissen können. Die gehört nämlich zum Thema priorityjumping und der damit verbundenen Frage, wie man solche Aufgaben ohne das jumping lösen kann.

    Also nix für ungut, es war nicht böse gemeint - aber wenn man ein Buch schreibt, sollte man solche Grundlagen wissen. Oder wie willst Du mit Halbwissen ein vernünftiges Buch zusammenschreiben ?
     
  10. konabi

    konabi Mitglied

    Registriert seit:
    11 Apr. 2005
    Beiträge:
    424
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    @betateilchen

    Der größte Vorteil ein Buch zu schreiben ist wirklich das Lernen dabei. Man ist halt gezwungen den Sachen genau auf den Grund zu gehen. Das Buch wird sich mehr an den Anfänger als an den Profi wenden. Das Thema Rufumleitung möchte ich als sinnvolles Beispiel zum nutzen der astdb verwenden. Dabei würde ich auch, wenn Du nix dagegen hast, angeben daß ich die Grundidee hier im Forum in einem Beitrag von Dir gefunden habe. Natürlich nur wenn Du nix dagegen hast.

    Gruß Sven
     
  11. konabi

    konabi Mitglied

    Registriert seit:
    11 Apr. 2005
    Beiträge:
    424
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Mit freundlicher Unterstützung von betateilchen und cibi... ;-)

    Code:
    
     
       [macro-rufumleitung]
       exten => s,1,DBget(NUM=umleitung/${ARG1})
       exten => s,n,NoOP(DBGetStatus: ${DBGETSTATUS}
       exten => s,n,GotoIf($["${DBGETSTATUS}"  = "NOTFOUND"]?4:6)
       exten => s,n,Dial(SIP/${ARG1},10)
       exten => s,n,Hangup
       exten => s,n,Set(NUM=${DB(umleitung/${ARG1})})
       exten => s,n,Dial(SIP/${NUM},10)
       exten => s,n,Hangup
        
       [default]
       exten => _2X,1,macro(rufumleitung,${EXTEN})
       include => rufumleitung
        
       [rufumleitung]
       exten => _*3.,1,NoOp(Rufumleitung ein)
       exten => _*3.,n,DBput(umleitung/${CALLERIDNUM}=${EXTEN:2})
       exten => _*3.,n,Set(NUM=${DB(umleitung/${CALLERIDNUM})})
       exten => _*3.,n,Playback(rufuml_an)
       exten => _*3.,n,SayNumber(${NUM})
       exten => _*3.,n,Hangup
        
       exten => _*4,1,NoOp(Rufumleitung aus)
       exten => _*4,n,DBdel(umleitung/${CALLERIDNUM})
       exten => _*4,n,PlayBack(rufuml_aus)
       exten => _*4,n,Hangup
      
    
    @betateilchen
    was dagegen wenn ich deinen Namen als Grundidee für dieses Script im Buch erwähne?


    Gruß Sven
     
  12. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    Wenn Du in diesem Zusammenhang dann auch gleich einen Hinweis auf den Asterisk-Kurs hier im Forum mit in Dein Buch schreibst, ist das ok.
     
  13. konabi

    konabi Mitglied

    Registriert seit:
    11 Apr. 2005
    Beiträge:
    424
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Das könnte dann so aussehen:

    Die astdb Datenbank eignet sich beispielsweise um eine Rufumleitung über ein Telefon zu aktivieren. Schauen wir uns dazu folgendes Beispiel an. Die Grundidee zu diesem Script habe ich in einem Beitrag von „betateilchen“ auf http://www.ip-phone-forum.de gefunden und etwas abgeändert. Unter anderem bietet „betateilchen“ in diesem Forum auch einen Onlinekurs zur Konfiguration von Asterisk an.


    Gruß Sven
     
  14. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    Einmal betateilchen reicht:

     
  15. HobbyStern

    HobbyStern Aktives Mitglied

    Registriert seit:
    5 Dez. 2005
    Beiträge:
    1,837
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Beruf:
    vorhanden
    Ort:
    Ruhrgebiet
    Zur Buch-Idee :

    Mein alter Technologie-Prof. (selber Herausgeber von zahlreichen Lektüren die wahrscheinlich überall stehen aber nie jemand ernsthaft las) hat immer gesagt :


    "Wenn Sie etwas und ich betone etwas über ein Thema wissen und merken das viele Fragen -- dann mit allem Nachdruck "Schreiben Sie ein Buch""


    ;-) Ohne weitere Worte ;-)

    Grüsse, Stefan

    P.S. : Ich hab noch keines geschrieben :grins: