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>.