[Voip] Erklärung LCDial Datenbank

Andreas Marksteiner (spam-protected)
Thu Jan 19 21:09:50 CET 2006


Hallo Leute,

Für alle, die an den LCDial Einträgen arbeiten wollen.

Erklärung Datenbank:

Ein INSERT Statement fügt einen Eintrag in die Datenbank ein, als  
Parameter werden die Werte der Attribute des einzufügenden Elements  
übergeben. Die einzelnen Einträge in den Tabellen sind durch einen  
pro Tabelle und Eintrag einzigartigen "primary key" ausgezeichnet -  
oft eben eine fortlaufende Zahl.

Ein Dump des momentan aktuellen Status findet sich unter:
http://sandwich.funkfeuer.at/files/lcd.sql

Die Tables:
"country" - die ist eigentlich denke ich schon vollständig - sollte  
ein Land fehlen, kann man es noch dazufügen
Attribute: countrycode, coutryname, countryid (primary key -  
fortlaufend)
Beispiel: INSERT INTO `country` VALUES ('AUT', 'Austria', 14);


"countryprefix" - da fehlen auch für Österreich glaub ich noch ein  
paar Prefixes
Attribute: countryprefixid (primary key - forlaufend), prefix,  
countrycode, subcode
Einzelne Prefixes sind z.B. 43 (für Österreich), ABER auch alle  
Vorwahlen z.B. 43676, 43664 usw.
Beispiel Österreich:
INSERT INTO `countryprefix` VALUES (224, '43', 'AUT', 'FIX');
INSERT INTO `countryprefix` VALUES (225, '43650', 'AUT', 'MOB');
INSERT INTO `countryprefix` VALUES (226, '43663', 'AUT', 'MOB');
INSERT INTO `countryprefix` VALUES (227, '43664', 'AUT', 'MOB');
INSERT INTO `countryprefix` VALUES (228, '43666', 'AUT', 'MOB');
INSERT INTO `countryprefix` VALUES (229, '43669', 'AUT', 'MOB');
INSERT INTO `countryprefix` VALUES (230, '43676', 'AUT', 'MOB');
INSERT INTO `countryprefix` VALUES (231, '43678', 'AUT', 'MOB');
INSERT INTO `countryprefix` VALUES (232, '43686', 'AUT', 'MOB');
INSERT INTO `countryprefix` VALUES (233, '43688', 'AUT', 'MOB');
INSERT INTO `countryprefix` VALUES (234, '43699', 'AUT', 'MOB');

Wenn man in dieser Tabelle Einträge hinzufügen will, kann die  
fortlaufende ID des nächsten Eintrage natürlich nicht
INSERT INTO `countryprefix` VALUES (235, '43123', 'AUT', 'MOB');
sein, sondern man muss in der Tabelle "countryprefix" den Eintrag im  
der höchsten ID raussuchen, also aktuell 2017 --> der Eintrag muss  
lauten
INSERT INTO `countryprefix` VALUES (2018, '43123', 'AUT', 'MOB');


"provider" - da können wir bei bedarf Provider einfügen bzw. ist hier  
definiert, wie Asterisk über den Provider routen kann
Attribute: providerid (primary key - fortlaufend), providername  
(beschreibender Providername), dialstr (wichtig für Asterisk), status  
(wird auf 0 gesetzt - hab mir den Zweck noch nicht angeschaut - nehme  
an, man kann hier einen Provider deaktivieren)

INSERT INTO `provider` VALUES (1, 'SipDiscount', 'SIP/00% 
(spam-protected)|30', 0);
INSERT INTO `provider` VALUES (2, 'Dummy NoGo', 'Local/ 
(spam-protected)|30', 0);
Momentan haben wir nur die 2 Einträge "SipDiscount" und einen "Dummy  
NoGo", wobei zweiterer auf unserem Asterisk die Extension 6666 wählt,  
wo "unavailable" abgespielt wird und der call beendet wird - das ist  
also der "Provider" für verbotene Destinationen.



"providerdestination" - hier wird festgehalten, welcher provider -  
welche ziele anbietet
Attribute: providerdestinationid (primary key - fortlaufend),  
countryprefixid (foreign key - verweist in der table "coutryprefix"  
auf die zeile, wo der wert mit dem im attribut "countryprefixid"  
übereinstimmt), providerid (foreign key - verweist in der table  
"provider" auf einen bestimmten provider)
z.B. INSERT INTO `providerdestination` VALUES (1, 224, 1);
bedeuted, dass der coutryprefix 224 (also präfix 43 - AUT, FIX -  
siehe table countryprefix) vom Provider 1 (SipDiscount) angeboten wird.



"providerrate" - hier stehen die tarife der einzelnen provider zu den  
einzelnen Destinationen
Attribute: providerrateid (primary key - fortlaufend), providerid  
(foreign key - zeigt auf den entsprechenden Eintrag in der  
Providertabelle), countryprefixid (foreign key - zeigt auf den  
entsprechenden country präfix eintrag)
z.B.
INSERT INTO `providerrate` VALUES (2, 1, 224, 0);
bedeuted dass der provider 1 (SipDiscount) anrufe zum präfix 43 um 0  
Cent anbietet

INSERT INTO `providerrate` VALUES (3, 2, 230, 0);
bedeuted, dass der provider 2 (Dummy NoGo) das präfix 43676 um 0 Cent  
anbietet


FAZIT: grundsätzlich müßt ihr immer Einträge für die Tabellen  
providerdestination und providerrate vorbereiten. Es wird z.B. das  
Präfix 43 zu "SipDiscount" gerouted, aber die spezielleren präfixes  
z.B. 43676 (alle nicht zulässigen/kostenpflichtigen destinationen)  
werden zu "Dummy NoGo" geschickt.

Bitte auch prüfen, ob es für Österreich vielleicht noch mehr prefixes  
gibt, die "verboten" werden sollen/müssen (tele2,  
Mehrwertnummern, ... keine Ahnung, was es da noch geben könnte). Neu  
entdeckte Präfixes müssen zusätzlich in der Tabelle "coutryprefix"  
eingefügt werden.

Insgesamt müßt ihr euch immer absprechen, wer welche Länder/Bereiche  
machen will/wird bzw. am besten macht es vielleicht erst eine Person  
und dann eine weitere, weil sonst leicht die fortlaufenden Nummern  
(primary keys) durcheinanderkommen und die sind ja wichtig, weil sie  
für andere Tabellen die Referenzpunkte sind.


Hoffe ich habe das soweit sinnvoll/verständlich erklärt. Fragen?


Grüße, Andi.



More information about the Voip mailing list