Available in

(7) (7)/cs

Contents

JMÉNO

gammu−smsd−tables − popis tabulek pro databázové služby gammu−smsd(1)

POPIS

gammu−smsd(1) podporuje několik služeb. Aktuálně použitá je zvolená v konfiguračním souboru gammu−smsdrc(5).

Jednotlivé služby jsou popsány v samostatných manuálových stránkách. Tato manuálová stránka popisuje strukturu databáze a potřebné tabulky.

Několik SMS démonů může sdílet jedinou databázi. Pokud v jejich nastavení nezadáte PhoneID, všechny jsou brány jako rovnocenné a kterýkoliv z nich může odeslat odchozí zprávu. Pokud nastavíte PhoneID a použijete ho při vkládání zprávy to tabulky outbox (gammu−smsd−inject(1) to dělá), každý SMS démon bude mít vlastní frontu odchozích zpráv.

Přijímání zpráv
Přijaté zprávy jsou ukládány v tabulce inbox.

Odesílání zpráv
Zprávy k odeslání jsou čteny z tabulky outbox a jejich případné další části z tabulky outbox_multipart.

Popis tabulek
daemons

Informace o běžících démonech.

gammu

Tato tabulka obsahuje jedinou hodnotu − verzi databázového schématu. V části HISTORIE se můžete podívat, co se měnilo.

inbox

Tabulka, ve které jsou ukládány přijaté zprávy.

Popis sloupců:

UpdatedInDB (timestamp)
kdy byl tento záznam aktualizován

ReceivingDateTime (timestamp)
kdy byla přijata SMS

Text (text)
zakódovaný text zprávy (pro všechny SMS)

SenderNumber (varchar(20))
číslo odesílatele SMS

Coding (enum(’Default_No_Compression’, ’Unicode_No_Compression’, ’8bit’, ’Default_Compression’, ’Unicode_Compression’))
kódování textu SMS

UDH (text)
zakódovaná hlavička uživatelských dat (UDH)

SMSCNumber (varchar(20))
číslo centra zpráv (SMSC)

Class (integer)
třída SMS nebo −1 (0 je jen pro zobrazení na displej, 1 je normální SMS)

TextDecoded (varchar(160))
dekódovaný text (pro zprávy ve výchozí abecedě nebo unicode)

ID (integer unsigned)
identifikátor zprávy (pro použití v externích aplikacích)

RecipientID (text)
který démon Gammu přidal tento záznam

Processed (enum(’false’, ’true’))
můžete použít pro označení, jestli byla zpráva zpracována nebo nebyla

outbox

Zprávy určené k odeslání by měly být uloženy v této tabulce. Pokud zpráva obsahuje více částí, další části jsou uloženy v tabulce outbox_multipart.

Popis sloupců:

UpdatedInDB (timestamp)
kdy byl tento záznam aktualizován

InsertIntoDB (timestamp)
kdy byla zpráva vložena do databáze

SendingDateTime (timestamp)
nastavte na libovolnou hodnotu, pokud chcete vynutit poslání zprávy i po naplánovaném čase

Text (text)
Text SMS zakódovaný šestnáctkově ve správné znakové sadě. Pokud chcete použít pole TextDecoded, nechte zde NULL (nebo prázdný text).

DestinationNumber (varchar(20))
číslo příjemce

Coding (enum(’Default_No_Compression’, ’Unicode_No_Compression’, ’8bit’, ’Default_Compression’, ’Unicode_Compression’))
kódování textu SMS

UDH (text)
User Data Header ((hlavička uživatelských dat) zapsaná v šestnáckové soustavě, která bude použita při vytváření zprávy. Pokud není uvedena, zpráva bude odeslána jako čistě textová.

Class (integer)
třída SMS nebo −1 (0 je normální SMS, 1 jen pro zobrazení na displej)

TextDecoded (varchar(160))
text zprávy v "člověkem čitelné" podobě

ID (integer unsigned)
číslo SMS/SMS sekvence

Prosím uvědomte si, že toto číslo musí být unikátní i pro tabulku sentitems, takže opětovné používání ID zpráv nemusí být nutně dobrý nápad.

MultiPart (enum(’false’,’true’))
informace, zda se v tabulce outbox_multipart nacházejí další části této SMS zprávy

RelativeValidity (integer)
platnost SMS zakódovaná podle GSM specifikací

SenderID (text)
která instance SMSD by měla odesílat tuto sekvenci

SendingTimeOut (timestamp)
použito SMSD pro vlastní účely

DeliveryReport (enum(’default’,’yes’,’no’))
při výchozí hodnotě bude nastavení doručenky záviset na nastavení SMSD, při yes se doručenka vynutí

CreatorID (text)
identifikace odesílajícího démona, musí odpovídat PhoneID v konfiguraci SMSD, aby SMSD zprávu zpracoval

outbox_multipart

Data pro odchozí zprávy, které jsou z více částí.

Popis sloupců:

ID (integer unsigned)
Text
(text)
Coding
(enum(’Default_No_Compression’, ’Unicode_No_Compression’, ’8bit’, ’Default_Compression’, ’Unicode_Compression’))
UDH
(text)
Class
(integer)
TextDecoded
(varchar(160))
ID
(integer unsigned)
mají stejný význam jako v tabulce outbox

SequencePosition (integer)
kolikátá zpráva je tato v SMS sekvenci (začíná se od 2, první část je uložena v tabulce outbox).

phones

Informace o připojených telefonech. Tato tabulka je pravidelně obnovována a můžete v ní najít informace jako stav baterie nebo síla signálu.

Popis sloupců:

ID (text)
hodnota PhoneID

UpdatedInDB (timestamp)
kdy byl tento záznam aktualizován

InsertIntoDB (timestamp)
kdy byl tento záznam vytvořen (kdy byl telefon připojen)

TimeOut (timestamp)
kdy tento záznam expiruje

Send (boolean)
v současné době vždy true

Receive (boolean)
v současné době vždy true

IMEI (text)
IMEI telefonu

Client (text)
jméno klienta, obvykle text Gammu a verze

Battery (integer)
stav baterie v procentech (nebo −1 pokud není znám)

Signal (integer)
úrověň signálu v procentech (nebo −1 pokud není znám)

Sent (integer)
Počet odeslaných SMS zpráv (SMSD tento čítač nenuluje, takže může přetéct).

Received (integer)
Počet přijatých SMS zpráv (SMSD tento čítač nenuluje, takže může přetéct).

sentitems

Informace o odeslaných (a neodeslaných) zprávách a jejich stavu. Při zapnutých doručenkách je stav zprávy aktualizován při jejím přijetí.

Popis sloupců:

UpdatedInDB (timestamp)
kdy byl tento záznam aktualizován

InsertIntoDB (timestamp)
kdy byla zpráva vložena do databáze

SendingDateTime (timestamp)
kdy byla zpráva odeslána

DeliveryDateTime (timestamp)
Čas přijetí doručenky (pokud jsou zapnuty).

Status (enum(’SendingOK’, ’SendingOKNoReport’, ’SendingError’, ’DeliveryOK’, ’DeliveryFailed’, ’DeliveryPending’, ’DeliveryUnknown’, ’Error’))
Stav odesílání zprávy. SendingError znamená, že telefonu se nepodařilo zprávu odeslat, Error indikuje jinou chybu při zpracovávání zprávy.

SendingOK − Zpráva byla odeslána, čeká se na doručenku.
SendingOKNoReport − Zpráva byla odeslána bez požadavku na doručenku.
SendingError − Odesílání selhalo.
DeliveryOK − Doručenka dorazila a potvrdila úspěšné doručení.
DeliveryFailed − Doručenka dorazila a nahlásila chybu při doručování.
DeliveryPending − Doručenka dorazila a obsahuje informaci o zpořděném doručení.
DeliveryUnknown − Doručenka dorazila, ale informuje o neznámém stavu.
Error − Došlo k nějaké chybě při odesílání (obvykle se jedná o chybu SMSD).

StatusError (integer)
Stav z doručenky, hodnoty jsou definovány ve specifikaci GSM 03.40.sekce 9.2.3.15 (TP−Status).

Text (text)
text SMS zprávy v šestnáctkovém formátu

DestinationNumber (varchar(20))
číslo adresáta SMS

Coding (enum(’Default_No_Compression’, ’Unicode_No_Compression’, ’8bit’, ’Default_Compression’, ’Unicode_Compression’))
kódování textu SMS

UDH (text)
hlavička uživatelských dat (UDH) v šestnáctkovém formátu

SMSCNumber (varchar(20))
číslo servisního centra (SMSC), které odeslalo zprávu

Class (integer)
třída SMS nebo −1 (0 je normální SMS, 1 jen pro zobrazení na displej)

TextDecoded (varchar(160))
text zprávy v "člověkem čitelné" podobě

ID (integer unsigned)
SMS ID

SenderID (text)
která instance SMSD odeslala tuto sekvenci

SequencePosition (integer)
pořadí SMS v SMS sekvenci

TPMR (integer)
reference zprávy, podle specifikací GSM

RelativeValidity (integer)
platnost SMS zakódovaná podle GSM specifikací

CreatorID (text)
zkopírováno CreatorID z tabulky outbox, odpovídá PhoneID

pbk

SMSD tuto tabulku v současné době nepoužívá, je zde jen pro použití v aplikaci.

pbk_groups

SMSD tuto tabulku v současné době nepoužívá, je zde jen pro použití v aplikaci.

HISTORIE

Historie verzí schématu:

11 − položky pro ukládání textu zpráv již nejsou omezeny na 160 znaků, ale může se jednat o libovolně dlouhé texty (1.25.92)

10 − DeliveryDateTime je nyní NULL pokud zpráva nebyla doručena, přidáno několik indexů.

9 − přidána počítadla přijatých a odeslaných zpráv do tabulky phones

8 − přidána tabulka phones

7 − do tabulek přidáno CreatorID (obsahuje PhoneID, pokud je nastaveno)

PŘÍKLAD

Vytváření tabulek
SQL skripty potřebný pro vytvoření všech tabulek pro většinu databází je obsažen v dokumentaci Gammu (docs/sql). Ta také obsahuje pár PHP skriptů pro práci s databází.

Například vytvoření tabulek pro SQLite vypadá následovně:

sqlite3 smsd.db < docs/sql/sqlite.sql

Vkládání zpráv pomocí SQL
Pro posílání zpráv buď použijte gammu−smsd−inject(1), které za vás udělá veškerou magii, nebo můžete vložit zprávy ručně. Nejjednodušší je vložit obyčejnou textovou zprávu:

INSERT INTO outbox (
DestinationNumber,
TextDecoded,
CreatorID,
Coding
) VALUES (
’800123465’,
’This is a SQL test message’,
’Program’,
’Default_No_Compression’
);

Vkládání dlouhých zpráv pomocí SQL
Vkládání dlouhých zpráv složených z více částí je trochu více komplikované. Musíte také vytvořit UDH hlavičku a uložit ji šestnáctkově do pole UDH.

Pro dlouhou textovou zprávu, UDH začíná s 050003 následované jedním bajtem s referenčním číslem zprávy (můžete sem uložit cokoliv, ale mělo by to být jiné pro každou zprávu, v příkladě je použito D3), bajtem s celkovým počet zpráv (v příkladě 02) a bajtem určujícím pořadí aktuální zprávy (01 pro první zprávu, 02 pro druhou, atd.).

Například dlouhá textová zpráva skládající se z dvou částí může vypadat následovně:

INSERT INTO outbox (
CreatorID,
MultiPart,
DestinationNumber,
UDH,
TextDecoded,
Coding
) VALUES (
’Gammu 1.23.91’,
’true’,
’123465’,
’050003D30201’,
’Mqukqirip ya konej eqniu rejropocejor hugiygydewl tfej nrupxujob xuemymiyliralj. Te tvyjuh qaxumur ibewfoiws zuucoz tdygu gelum L ejqigqesykl kya jdytbez’,
’Default_No_Compression’
)

INSERT INTO outbox_multipart (
SequencePosition,
UDH,
Class,
TextDecoded,
ID,
Coding
) VALUES (
2,
’050003D30202’,
’u xewz qisubevumxyzk ufuylehyzc. Nse xobq dfolizygqysj t bvowsyhyhyemim ovutpapeaempye giuuwbib.’,
<ID_OF_INSERTED_RECORD_IN_OUBOX_TABLE>,
’Default_No_Compression’
)

DALŠÍ INFORMACE

Databázové služby: gammu−smsd−mysql(7), gammu−smsd−pgsql(7), gammu−smsd−dbi(7)

gammu−smsd(1), gammu−smsdrc(5), gammu(1), gammurc(5)

AUTOR

gammu−smsd a tuto manuálovou stránku napsal Michal Čihař <michal [AT] cihar.com>.

COPYRIGHT

Copyright © 2009 Michal Čihař a další autoři. Licence GPLv2: GNU GPL verze 2 <http://www.gnu.org/licenses/old−licenses/gpl−2.0.html>;
Tento program je svobodný software; můžete jej šířit a modifikovat. Není poskytována ŽÁDNÁ ZÁRUKA, v rozsahu jaký je povolen zákonem.

HLÁŠENÍ CHYB

Prosím hlašte chyby na <http://bugs.cihar.com>;.

COMMENTS

blog comments powered by Disqus