[gesucht] Einführung in die Asterisk-DB

lo4dro

Mitglied
Mitglied seit
14 Okt 2004
Beiträge
656
Punkte für Reaktionen
0
Punkte
0
Hallo Leute.

Ich weis nicht wie es euch geht, ich hab im Moment ein paar Probleme mich in das Thema Asterisk interne Database einzuarbeiten.
Mir fehlt es irgendwie an proktischen Beispielen.

Im I-Net bin ich auch noch nicht so richtig fündig geworden.
Kennt sich hier jemand aus und könnte vielleicht ein paar Beispiele mit Erklärung posten?
 
Da gibt es nicht viel zu erklären.

Ein paar Anwendungsbeispiele habe ich schon hier im Forum gepostet:
z.B. http://www.ip-phone-forum.de/forum/viewtopic.php?t=19666&highlight=

Eigentlich besteht die ganze Datenbankverwaltung nur aus 3 Befehlen:

database put : Damit wird ein Wert in die Datenbank geschrieben
database get : Damit wird ein Wert aus der Datenbank gelesen
database del : Damit wird ein Wert gelöscht

Mit "database show" kannst Du Dir den aktuellen Inhalt anschauen.

uneu*CLI> database show
/notruf/70 : 09721
/notruf/72 : 09721

In diesem Beispiel ist jetzt der Teil "notruf" die "family" und 70 bzw. 72 sind die Schlüssel. 09721 ist dann der Wert der letzendlich zurückgeliefert wird.

uneu*CLI> database get notruf 70
Value: 09721

Einen neuen Wert setzt man dann einfach so:

uneu*CLI> database put notruf 80 0341
Updated database successfully
uneu*CLI> database show
/notruf/70 : 09721
/notruf/72 : 09721
/notruf/80 : 0341

Das Löschen erfolgt analog:

uneu*CLI> database del notruf 80
Database entry removed.
uneu*CLI> database show
/notruf/70 : 09721
/notruf/72 : 09721
 
das mit den drei Befehle ist mir verständlich.
Mich würde z.B. ein User abhängige Rufumleitung interesieren.

Also, User 7011 wählt die *11 und gibt die Ziel-Nummer ein.
Danach sollen alle Anrufe für die 7011 sofort zum Ziel umgeleitet werden.

Der normale Inhalt in der DB ist dann die eigene Nummer

(umleitung/7011 : 7011)

Wenn man die *11 1111 gehält hat, hat sich der Wert auf 111 geändertt
(umleitung/7011 : 1111)

Wie könnte man das in der extension.conf realisieren?
 
Schau doch mal in den von mir oben angegebenen Beispiel-Link ! Da ist sowas ähnliches realisiert.
 
ich hab mr mal folgendes überlegt zum Thema setzen, löschen und wählen der Umleitung:
Code:
;umleitung mit *11 setzen
exten => *11,1,NoOp(Alias setzen)
exten => *11,n,DBput(umleitung/${CALLERIDNUM}=${EXTEN:3})
exten => *11,n,PlayBack(umleitung-on)
exten => *11,n,HangUp

;umleitung löschen mit *10
exten => *10,1,NoOp(Alias setzen)
exten => *10,n,DBput(umleitung/${CALLERIDNUM}=${CALLERIDNUM})
exten => *10,n,PlayBack(umleitung-off)
exten => *10,n,HangUp

gewählt wird warscheinlich so:

Code:
exten => 1234,1,DBget(dial=umleitung/${EXTEN}) 
exten => 1234,n,Dial(Zap/g1/${dial},30,r) 
exten => 1234,n,Hangup
 
betateilchen schrieb:
Schau doch mal in den von mir oben angegebenen Beispiel-Link ! Da ist sowas ähnliches realisiert.

Hab ich gerade, du warst ein Tick zu schnell für mich ;-)
 
du warst ein Tick zu schnell für mich

Der Link steht seit DIENSTAG hier im Thread :shock:
Da mußt Du aber SEEEEEEEEEEEEEEEEEEEHR langsam sein :mrgreen:
 
So ich hab meine extension.conf (siehe oben) noch einmal überarbeitet.
Da ich im Moment nicht testen kann, wollte ich fragen ob meine überlegung so stimmt.
 
So kannt das ganze mal testen.

So funktioniet das setzen und löschen der Umleitung
Leider funktioniert *11xxx bzw *10 nicht.
Im Tel. Display steht "Nummer nicht erreichbar" ich vermute, das der "*" vom Telefon abgefangen werden :-(


Code:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;                     
;                      rufumleitung                       ;                     
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;                     
;umleitung mit *11 setzen                                                       
 exten => _61.,1,NoOp(Alias setzen)                                             
 exten => _61.,2,SendText(Rufumleitung zu ${EXTEN:2})                           
 exten => _61.,3,DBput(umleitung/${CALLERIDNUM}=${EXTEN:2})                     
 exten => _61.,4,PlayBack(auth-thankyou)                                        
 exten => _61.,5,HangUp                                                                                                                                         
                                                                                
;umleitung löschen mit *10                                                      
 exten => 60,1,NoOp(Alias setzen)                                               
 exten => 60,2,SendText(Rufumleitung aus)                                       
 exten => 60,3,DBput(umleitung/${CALLERIDNUM}=${CALLERIDNUM})                   
 exten => 60,4,PlayBack(auth-thankyou)                                          
 exten => 60,5,HangUp

Was ich nocht nicht verstanden habe, wie initalisiert man die DB.

Wenn ich Asterisk starte ist ja die DB ja leer. Und damit das ganze funktioniert, muss ich ja einen default Wert in die DB bekommen.
 
Wenn ich Asterisk starte ist ja die DB ja leer.

Falsch. Schau mal nach dem Start von * mit "database show"
Da stehen Informationen drin, die Asterisk selbst braucht.
Also - die Datenbank ist immer aktiv.

Übrigens - es gibt einen EDIT Button bei Deinen Beiträgen, da mußt Du nicht 3 mal hintereinander posten :wink:
 
Hi.

Also meine DB ist leer.

Code:
vdr-pbx*CLI> database show
/umleitung/2193                                   : 2193                     
/umleitung/480565                                 : 480565                   
/umleitung/73504                                  : 73504                    
/umleitung/76735                                  : 76735

Diese vier Einträge hab ich manuell angelegt.
 
also bei mir stehen da standardmäßig noch registriy Einträge der SIP und IAX clients drin, die der Asterisk selbst da reinschreibt.
 
hm, komisch
ich hab sipgate.de und purtel.
bin bei beiden registriert.

Nur wie füll ich beim asterisk start die db?
 
ich versteh nicht, was Du jetzt genau meinst. Das was Du da eingetragen hast, bleibt beim Asterisk beenden und Neustart doch erhalten ?
 
echt, das bleibt erhalten. Das wuste ich net.
Nur, was mach ich, wenn ich asterisk neu aufsetze. Man muss doch die DB irgendwie sichern können.
 
wenn Du nur den Asterisk z.B. durch neukompilieren neu aufsetzt, brauchst Du nix zu sichern, da die Daten vom Programm getrennt sind und auch nach der Neuinstallation vorhanden sind. Vorausgesetzt, du hast natürlich nicht alles von Hand gelöscht.

Aber es gibt natürlich auch die Möglichkeit, eine MySQL Datenbank einzubinden, die vom Asterisk komplett getrennt ist. Das kommt eben darauf an, wie groß Deine Datenmengen sind, die Du verarbeiten möchtest.
 
Kostenlos!

Statistik des Forums

Themen
248,887
Beiträge
2,303,973
Mitglieder
378,565
Neuestes Mitglied
BenGradish