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

Auswertung Ziel = VOIP in extensions.conf ?

Dieses Thema im Forum "Asterisk Rufnummernplan" wurde erstellt von kombjuder, 14 Juni 2005.

  1. kombjuder

    kombjuder IPPF-Promi

    Registriert seit:
    2 Nov. 2004
    Beiträge:
    3,086
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Weil am Rhein
    Hallo allerseits,

    nachdem die voip-Zugänge langsam zunehmen, suche ich nach einer Lösung meine 10 oder 20 VOIP-Nummern, die ich anrufe, in einer "Datenbank" zu erfassen und dann über den entsprechenden VOIP-Provider zu wählen.

    LDAP/mysql wäre wohl mit Kanonen auf Spatzen geschossen.

    Gibt es auch eine einfachere Lösung?

    Alles in der extensions.conf hinterlegen und auswerten will ich aber auch nicht, da das sehr schnell unübersichtlich wird.

    Wer kann helfen, bzw wo gibt es eine entsprechende Anleitung?
     
  2. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    Die Asterisk-interne Datenbank dürfte dazu völlig ausreichen. Kannst Du mal ein bißchen genauer beschreiben, was Du machen möchtest ?
     
  3. kombjuder

    kombjuder IPPF-Promi

    Registriert seit:
    2 Nov. 2004
    Beiträge:
    3,086
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Weil am Rhein
    Eine Auswahlentscheidung über den zu benutzenden Provider treffen, also


    wenn 01234/5678 => VOIP, dann Anruf wie in der Datenbank hinterlegt (z.B. 12345@sipgate.de)

    wenn 01234/5678 nicht VOIP, dann vorwahlabhängige Providerwahl gemäß Regeln in der extensions.conf

    Der Hintergrund: Ortsnetzrufnummern sind ja nicht als voip erkennbar und oftmals nicht im ENUM
     
  4. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    Ich verstehe den Schrägstrich nicht ganz, aber ich gehe mal davon aus, daß Du damit Vorwahl und Rufnummer meinst. Dann würde das also so aussehen, daß Du für jede dieser Rufnummern einen Eintrag in die Asterisk-interne Datenbank schreibst.

    Syntax: database put <family> <key> <value>

    "Family" ist dabei beliebig, muß aber bei allen Einträgen gleich sein. Nehmen wir mal als Beispiel pwahl

    "Key" ist die Rufnummer die Du eintragen möchtest also z.B. 491627654321

    value ist das, was Du als "Ergebnis" zurückhaben möchtest wenn Du die Datenbank abfragst. also z.B. 01627654321@nikotel.com

    Du würdest also den Befehl so absetzen:

    Code:
    uneu*CLI> database put pwahl 01627654321 [email]491627654321@nikotel.com[/email]
    Updated database successfully
    
    Das Ergebnis kannst Du Dir anschauen mit:

    Code:
    uneu*CLI> database show
    /pwahl/01627654321                                : [email]491627654321@nikotel.com[/email]
    
    Auf diese Weise machst Du auf der CLI die Einträge für die 10-20 Nummern, um die es geht.
    [hr:950935ee0a]
    Kommen wir nun zum zweiten Teil. Die Verwendung der DB im Dialplan.
    Das könnte in etwa so aussehen:

    Code:
    exten => _X.,1,NoOp(Wir checken die Datenbank vor dem wählen)
    exten => _X.,2,DBGet(voipdial=pwahl/${EXTEN})
    ; sucht in der DB nach der EXTEN und übergibt den "value" an die Variable "voipdial"
    ; wenn kein Eintrag gefunden wird, geht es mit n+101 = 103 weiter !
    ; wenn was gefunden wurde, geht es "normal" weiter
    
    exten => _X.,3,Dial(SIP/${VOIPDIAL},60,Ttr)
    ; Der Eintrag in der Variable "voipdial" wird gewählt.
    exten => _X.,4,HangUp
    
    exten => _X.,103,Dial(Hier mußt Du jetzt die Abarbeitung von Anrufen machen die nicht in der Datenbank stehen)
    exten => _X.,104,HangUp
    
    [hr:950935ee0a]

    So - ich hoffe, das Prinzip ist einigermaßen klar geworden. Ansonsten einfach nochmal fragen. Viel Erfolg bei der Umsetzung.
     
  5. kombjuder

    kombjuder IPPF-Promi

    Registriert seit:
    2 Nov. 2004
    Beiträge:
    3,086
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Weil am Rhein
    Ja besten Dank für die schnelle Hilfe.
    Eine bescheidene Anfrage an Google zu diesem Thema hat nur was von sql erzählt, diese Datenbank ist mir völlig neu. Da muss ich wohl ein wenig rtfm ...
     
  6. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    Man muß dazu sagen, daß die Asterisk-interne Datenbank sehr schlecht (um nicht zu sagen gar nicht) dokumentiert ist.

    Aber die Funktionsweise ist doch recht simpel - es gibt nur 4 Befehle. Aber immerhin gibt es schon eine Befehle für den Dialplan, die auf diese Datenbank aufsetzen.

    http://voip-info.org/tiki-index.php?page=Asterisk+Database

    Von diesem Link geht es auch zur Erklärung der 4 Befehle selbst.
    Ist ne nette Sache, gibt auch hier im Forum schon ein paar Ideen von mir, was man damit anstellen kann
    z.B. Status einer Nebenstelle setzen (abwesend, nicht stören ..)
    http://www.ip-phone-forum.de/forum/viewtopic.php?t=15409&highlight=datenbank+status+setzen

    oder die Integration in TinTins Wählplan zu CallingCards)
    http://www.ip-phone-forum.de/forum/viewtopic.php?t=18654&highlight=

    oder regionale Notrufnummern hinterlegen, um sie über z.B. über 110. anrufen zu können
    http://www.ip-phone-forum.de/forum/viewtopic.php?t=18095&highlight=leitstelle+datenbank

    Man kann mit der Datenbank schon einiges machen, vor allem ist das Datenhandling (einfügen, löschen) sehr einfach, weil dafür asteisk-interne Befehle zur Verfügung stehen.
     
  7. kombjuder

    kombjuder IPPF-Promi

    Registriert seit:
    2 Nov. 2004
    Beiträge:
    3,086
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Weil am Rhein
    Ich habe jetzt eine funktionierende Lösung erarbeitet:

    [raus]

    exten => _X.,1,NoOp(Wir checken die Datenbank vor dem waehlen)
    exten => _X.,2,DBGet(voipdial=voip/${EXTEN})
    exten => _X.,3,GotoIf($["${voipdial:0:3}" = "SIP"]?4:7)
    exten => _X.,4,Dial(${voipdial:0:3}/${voipdial:3},60,Ttr)
    exten => _X.,5,Dial(Capi/797633:${EXTEN},60,Ttr)
    exten => _X.,6,Hangup
    exten => _X.,7,Dial(IAX2/503400:503400/${voipdial:3},60,Ttr)
    exten => _X.,8,HangUp
    exten => _X.,103,Goto(Provider,${EXTEN},1)
    exten => _X.,104,HangUp

    Wer es kommentiert oder in der aktuellen Version haben will, die gibt es bei

    www.asterisk.li/nenum.htm