Tämän erikoistyön toisena tavoitteena on antaa
kokonaiskuva lyhytsanomapalvelusta ja lyhytsanomakeskuksesta osana
GSM-verkkoa. Siis selvittää mikä on lyhytsanomakeskuksen
tehtävä ja toisaalta kuinka lyhytsanomia voidaan käyttää.
Toinen tavoite on antaa yksityiskohtainen kuvaus tietokonesovelluksista,
jotka liittyvät lyhytsanomapalveluun toisaalta esittelemällä
olemassaolevia sovelluksia yleisellä tasolla ja toisaalta
ottamalla yksi sovellus tarkempaan tarkasteluun ja tutkimalla
sen rakennetta ohjelmakooditasolle saakka.
Lyhytsanomien ympärille on rakennettu paljon erilaisia sovelluksia,
tosin Suomessa niitä on vielä toistaiseksi melko vähän.
Näyttää siltä, että kun operaattorit
ensin saavat peruspalvelut kuntoon, he ryhtyvät sitten tukemaan
myös yleensä kolmansien osapuolien harjoittamaa sovelluskehitystä
aktiivisemmin. Sovelluksien määrä siis lisääntynee
vielä tulevaisuudessa.
Tutkimusmenetelmänä tässä työssä on ollut kirjallisten lähteiden tutkimisen lisäksi huomattava määrä keskusteluita työtoverieni kanssa Nokia Telecommunicationsilla sekä omakohtaisista kokemuksistani kertyneen informaation analysointi.
TIIVISTELMÄ 1SISÄLLYSLUETTELO 2LYHENNELUETTELO 31. JOHDANTO 42. LYHYTSANOMAPALVELU 43. LYHYTSANOMIEN KÄYTTÖ 64. LYHYTSANOMAKESKUS 75. SOVELLUSRAJAPINNAT 86. LYHYTSANOMASOVELLUKSET 9Jakelupalvelut 10Sähköpostisovellukset 10Informaatiopalvelut 11Finanssipalvelut 11Liikennepalvelut 12Muita lyhytsanomasovelluksia 12Uusia sovellsideoita 137. SOVELLUSESIMERKKI - SendMessage 13Taustaa 14Käyttöliittymä 14Vastaanottajatietojen ylläpito 15SendMessage - modeemiversio 15SendMessage - LAN versio 16SendMessage - PCMCIA versio 17Kokemuksia 188. YHTEENVETO 18LÄHDELUETTELO 20LIITTEET 21
CB Cell Broadcast, aluelähetys. Saman lyhytsanoman lähetys kaikille saman tukiaseman alueella oleville matkapuhelimille.
CIMD Computer Interface for Message Distribution. Nokian SMSC:n sovellusrajapinta.
ERMES Henkilöhakujärjestelmä.
ETSI European Telecommunications Standards Institute. Eurooppalainen telealan standardointijärjestö.
GPS Global Positioning System. Maailmanlaajuinen satelliittien avulla toimiva paikannusjärjestelmä.
HLR Home Location Register, kotirekisteri. Rekisteri MSC:ssä, joka sisältää MSC:n tilaajien tilaajatiedot.
LAN Local Area Network, lähiverkko.
MO Mobile Originated. Matkapuhelimesta lähetetty lyhytsanoma.
MS Mobile Station. Matkapuhelin.
MSC Mobile Switching Centre. GSM-puhelinkeskus.
MT Mobile Terminated. Matkapuhelimeen menevä lyhytsanoma.
PCMCIA Personal Computer Memory Card International Association. Lähinnä kannettavissa PC:issä käytettävä laajennuskorttistandardi.
SMSC Short Message Service Centre, lyhytsanomakeskus. Varastoi ja välittää lyhytsanomia.
SMTP Simple Mail Transfer Protocol. TCP/IP:tä käyttävä, erityisesti UNIX-ympäristössä käytetty sähköpostiprotokolla.
STT Suomen Tietotoimisto. Suomalainen uutistoimisto.
TCP/IP Internetissä laajasti käytetty tiedonsiirtoprotokolla.
UNIX Suosittu työasemakoneiden käyttöjärjestelmä.
VLR Visitor Location Register, vierasrekisteri. Rekisteri MSC:ssä, joka sisältää MSC:n alueella vierailevien matkapuhelimien tilaajatiedot.
VMS Voice Mail System, puhepostijärjestelmä. GSM-verkon elementti, johon voi jättää puhuttuja viestejä.
X.25 Tiedonsiirtoprotokolla.
X.400 OSI:n standardoima sähköpostistandardi.
Tässä erikoistyössä esitellään GSM-matkapuhelinjärjestelmän
lyhytsanomapalvelut. Aluksi esitellään itse palvelun
määrittely ja lyhytsanomien käyttö. Sen jälkeen
tarkastellaan lyhytsanomakeskuksen arkkitehtuuria ja sen sovellusrajapintoja.
Työn pääpaino on kuitenkin lyhytsanomia käyttävillä
tietokonesovelluksilla, jotka esitellään tämän
jälkeen. Viimeisenä käsitellään käytännön
sovellusesimerkkinä Nokialle tehtyä SendMessage-ohjelmaa.
Lyhytsanomasta käytetään Suomessa myös nimitystä
tekstiviesti tai lyhytviesti.
Tämä erikoistyö perustuu kurssin S-38.116 Teletietotekniikka
seminaariesitelmääni.
GSM-matkapuhelinverkon point-to-point lyhytsanomapalvelu tarjoaa
keinot enintään 160 merkkiä pitkien sanomien lähettämiseen
GSM-puhelimesta ja GSM-puhelimeen. Lyhytsanomapalvelun toteuttamiseen
tarvitaan lyhtsanomakeskus (SMSC), joka toimii store-and-forward
tyyppisenä keskuksena lyhytsanomille [1].
Kaksi erilaista point-to-point palvelua on määritelty:
matkapuhelimesta lähtenyt (MO) ja matkapuhelimeen menevä
(MT) sanoma. MO-sanomat välitetään GSM-verkon välityksellä
SMSC:lle ja ne ovat menossa toiseen puhelimeen tai sovelluksille.
MT-sanomat välitetään GSM-verkon välityksellä
GSM-puhelimeen ja ne ovat lähteneet joko toisesta puhelimesta
tai sovelluksilta kuten esim. puhepostilta. Lyhytsanomapalvelun
toinen osapuoli on aina matkapuhelin. ETSI on myös määritellyt
kolmannen lyhytsanomapalvelun: aluelähetyspalvelun (cell
broadcast, CB) [2].
GSM-puhelin pystyy vastaanottamaan ja lähettämään
lyhytsanomia samanaikaisesti puhelun kanssa, koska sanomat välitetään
puhelimeen signalointikanavan välityksellä.
Seuraavassa on esitetty lyhytsanoman kulku GSM-verkossa MSC:n
ja SMSC kannalta katsottuna ensin MO, ja sitten MT tapauksessa
[3].
Lyhytsanomien käytön alkuperäinen perusajatus on
tarjota GSM-käyttäjille tapa välittää
informaatiota vastaanottajalle vastaanottajan ehdoilla. Vastaanottaja
voi pitää puhelintaan suljettuna ja silti informaatio
siirtyy hänelle, kun puhelimeen kytketään jälleen
virta päälle.
Lyhytsanomia voi lähettää GSM-puhelimesta tai käyttämällä
erilaisia operaattoreiden tarjoamia palveluita tai sovelluksia.
Suurin osa markkonoilla olevista GSM-puhelimista tukee sanomien
vastaanottoa, mutta sanomien lähetys onnistuu vain harvoilla
malleilla. Ainakin Nokia, Siemens ja Panasonic valmistavat puhelimia,
joista lähetys onnistuu. Sanoman lähettäminen tapahtuu
valitsemalla puhelimen valikoista sanoman lähetys ja kirjoittamalla
sanoma käyttäen puhelimen näppäimiä.
Systeemi on ainakin aluksi hankala, mutta pienen harjoittelun
jälkeen parinkymmenen merkin mittaisten sanomien kirjoittaminen
onnistuu aika hyvin.
Vaihtoehto etenkin pitempien sanomien lähettämiseen
on käyttää PC:tä apuna. GSM-puhelimen voi
kytkeä kannettaavaan PC:hen käyttämällä
Nokian valmistamaa PCMCIA-tyyppistä sovitinkorttia ja sopivaa
kaapelia puhelimen ja kortin välillä. Korttia voidaan
ohjata esim. Windowsin Terminal-ohjelmasta ja kortti sisältää
interaktiivisen tulkin, jonka avulla sanomien lähetys onnistuu
[4]. Nyt tietokonetta voidaan käyttää ikäänkuin
puhelimen käyttöliittymänä. Kaapelit ja sovitinkortit
ovat valmistajakohtaisia ja toistaisksi muiden valmistajien korteissa
ei ilmeisesti ole lyhytsanomaominaisuuksia.
Uudempi vaihtoehto on käyttää Nokian tuotetta nimeltä
Cellular Ware. Siinä PCMCIA-kortti ja kaapeli on korvattu
kaapelilla, joka voidaan kytkeä suoraan GSM-puhelimen ja
PC:n sarjaportin välille. Lisäksi mukana tulee Windows-käyttölittymä,
jonka avulla voi hallita vastaanottajatietoja, vakiosanomia, ryhmälähetyksiä
jne. Cellular Waren kanssa sanomia voi lähettää
mistä tahansa PC:stä, eikä vain kannettavista PC:stä
kuten PCMCIA-kortin kohdalla [5].
Sanomien lähettäminen ja vastaanottaminen toiseen GSM-puhelimeen
onnistuu myös ilman, että lähettäjällä
on GSM-puhelin käytössään. Tällöin
otetaan yleensä modeemiyhteys lyhytsanomakeskukseen, minkä
jälkeen sovellusohjelma käyttää sanomakeskuksen
tarjoamaa sovellusrajapintaa. Molemmat GSM-operaattorit Suomessa
tarjoavat Windows-ohjelmaa, joka hoitaa yhteydenoton ja sanomien
lähetyksen. Yhteys onnistuu vain ko. operaattorin lyhytsanomakeskukseen.
Radiolinja tarjoaa vielä mahdollisuutta lähettää
ja vastaanottaa sanomia Infotelin kautta. Myös erilaisia
X.400 ja SMTP-lyhytsanoma gateway palveluita alkaa olla tarjolla
ja näiden palveluiden avulla sähköposti-lyhtytsanomaliikenne
onnistuu.
Ehdottomasti suurin lyhytsanomaliikenteen aiheuttaja on puheposti
(VMS). Kun saavuttamattomissa olevaan GSM-puhelimeen tulee soitto,
niin soittaja voi jättää viestin puhepostiin, jos
palvelu on käytössä. Kun puhelin avataan tai se
tulee katveesta, niin käyttäjä saa sanoman, jossa
ilmoitetaan hänen saaneen puhepostia. Käyttäjän
ei siis tarvitse itse tarkastaa onko hän saanut viestejä,
vaan informaatio tulee automaattisesti lyhytsanoman avulla.
Sanomaliikenteen jakauma on operaattorikohtainen, mutta yleensä
lyhytsanomaliikenteestä 90 % syntyy puhepostista ja loppu
riippu operaattorien aktiivisuudesta sovelluksien tarjoamiseen.
Lyhytsanomakeskuksen tehtävänä on välittää
ja varastoida sanomia. Jos sanomaa ei saada perille ensimmäisellä
yrityksellä SMSC varastoi sanoman ja yrittää sanoman
lähetystä myöhemmin uudelleen. Lyhytsanomakeskus
tarjoaa myös sovellusrajapinnan, jonka avulla ulkopuoliset
sovellukset voivat liittyä SMSC:hen ja tarjota palveluita
käyttäjille. Tätä rajapintaa ei ole kuitenkaan
standardoitu ja jokaisella SMSC valmistajalla on oma keskenään
yhteensopimaton ratkaisunsa.
SMSC on toteutettu yleensä UNIX-työasemassa toimivana
ohjelmistona. Työasemasta on kommunikaatiolinkki MSC:hen
ja usein myös puhepostijärjestelmään sekä
lisäksi mahdollisia sovelluskohtaisia yhteyksiä kuten
modeemi, X.25 tai LAN-yhteyksiä.
Tällä hetkellä lyhytsanomakeskuksia tarjoaa ainakin
neljä telekommunikaatioyritystä.
Aldiscon on irlantilainen yritys, jonka päätuote on
lyhytsanomakeskukset ja se on alan markkinajohtaja. Aldisconin
tarjoamat sovellusrajapinnat ovat UCP, joka on oikeastaan ERMES-henkilöhakulaitestandardin
mukainen rajapinta ja SMPP, joka on Aldisconin oma rajapinta.
Nokia on toimittanut maailman ensimmäisen kaupallisessa käytössä
toimineen lyhytsanomakeskuksen Ruotsiin 1993 ja on tällä
hetkellä markkinoiden toiseksi suurin toimittaja. Nokian
vahvin markkina-alue on Kauko-Itä. Suomen teleoperaattoreista
Radiolinjalla on Nokian SMSC. Nokian sovellusrajapinta on nimeltään
CIMD. Nokian lyhytsanomakeskuksia myydään vain Nokian
GSM-puhelinkeskuksiin.
CMG on hollantilainen telealan yritys. Se on SMSC-markkinoiden
kolmonen, mutta se on saanut vahvan aseman valtiollisten teleoperaattoreiden
toimittajana. Suomessa Telellä on CMG:n lyhytsanomakeskus.
Sovellusrajapinta on UCP.
Viimeinen tärkeä SMSC valmistaja on englantilainen Sema.
Sema on Euroopan johtavia konsultti- ja ohjelmistosuunnitteluyrityksiä.
Alcatel myy Semaa systeemiensä yhteydessä. Seman sovellusrajapinnan
nimi on GPI.
Ericsson on myös viime aikoina ilmoittanut tarjoavansa SMSC toiminnallisuutta. Tarkempia tietoja systeemin yksityiskohdista ei ole kuitenkaan saatavilla.
Lyhytsanomia lähettävän ja vastaanottavan sovellusohjelman
tekeminen on helppoa melko yksinkertaisten sovellusrajapintojen
vuoksi. Käytännössä suuremmaksi ongelmaksi
voi muodostua itse yhteyden luotettava luominen lyhytsanomakeskukseen.
Yhteysvaihtoehtoja ovat yleensä modeemi, X.25 ja TCP/IP-yhteydet.
Sovellukset ovat yleensä joko asikastyyppisiä tai palventyyppisiä.
Asiakastyyppinen sovellus on esim. Windows-ohjelma, jonka avulla
voidaan lähettää lyhytsanomia. Tällöin
yhteys keskukseen otetaan, kun on jotain lähetettävää
ja se katkaistaan lähetyksen jälkeen. Palvelinsovellukset
vastaavat puhelimelta tuleviin sanomiin ja niiden on siis käytännössä
pidettävä yhteys auki koko ajan.
Yhteysvaihtoehdoista Internet eli TCP/IP-yhteys on selvästi joustavin. Kytkentäaika on lyhyt ja yhteyden voi ottaa melkein mistä tahansa. Ongelmana on turvallisuus. Teleoperaattorit eivät yleensä ole kovin halukkaita tajoamaan Internet-yhteyttä koneisiinsa väärinkäytösten pelossa. Modeemit ovat yleisin vaihtoehto. Ne ovat turvallisia ja lyhytsanomien lähetys ja vastaanotto onnistuu myös hitaiden yhteyksien yli. Ongelmana on pitkä kytkentäaika ja operaattorin kannalta modeemipoolin hankkiminen ja konfiguroiminen. X.25 on jonkinlainen välivaihtoehto, mutta se alkaa
jo olla vanhaa tekniikkaa ja X.25-korttien hinnat PC:ille ovat
todella korkeita. Sovelluskehityksen kannalta modeemin ja TCP/IP:n
ohjelmoiminen on helppoa. Esim. Visual Basic:iin on olemassa kirjastoja
sekä sarjaportin ohjaamista että Telnet- yhteyden ohjaamista
varten. Suhteellisen kokematonkin koodaaja voi saada melko pienin
ponnistuksin toimivan sovelluksen tehtyä.
Kun yhteys lyhytsanomakeskukseen on saatu, sovellusrajapinta käynnistyy
yleensä automaattisesti. Kun rajapinta on valmis, liikennöinti
tapahtuu rajapintaprotokollan mukaisesti. Esimerkiksi Nokian CIMD-rajapintaprotokolla
tarjoaa seuraavat operaatiot [6]:
OPERAATIO: | TOIMINTA: |
login | istunnon aloitus ja käyttäjän tunnistus |
logout | istunnon lopetus |
submit | sanoman lähetys |
message status inquery | sanoman tilan kysely |
message retrieval | sanoman vastaanottaminen |
change password | salasanan vaihtaminen |
message cancel | lähetetyn sanoman peruuttaminen |
Operaatioiden syntaksista pari esimerkkiä:
<STX>01<TAB>Id<TAB>Passwd<TAB>sess_dcs<TAB>chksum<ETX><LF>
positiivinen vaste:
<STX>Ack<TAB>C:01<TAB>chksum<ETX><LF>
<STX>03<TAB>dest<TAB>s_msg<TAB>vp<TAB>orig<TAB>pid<TAB>fd
<TAB>chksum<TAB><ETX><LF>
positiivinen vaste:
<STX>Ack<TAB>C:03<TAB>chksum<ETX><LF>
<STX>05<TAB>chksum<ETX><LF>
positiivinen vaste:
<STX>Ack<TAB>C:05<TAB>dest<TAB>orig<TAB>s_msg<TAB>scts<TAB>
chksum<ETX><LF>
Komennot ovat siis yleisesti muotoa: alkutunniste, operaatiokoodi,
parametrilista jossa parametrit on eroteltu kontrollimerkillä
(osa parametreistä voi olla optionaalisia), tarkistussumma
ja lopputunniste.
CIMD voidaan käynnistää erilaisilla käyttäjäprofiileilla.
Osa optioista mahdollistaa operaattorin asettaa rajoituksia tietyille
käyttäjille tai käyttäjäryhmille. Myös
istunnon aloitus ilman loginia on mahdollinen, mutta tällöin
käyttäjä ei voi vastaanottaa sanomia.
Erilaisia lyhytsanomasovelluksia on jo toteuttu runsaasti ja lisää
on kehitteillä koko ajan. Erityisesti Ruotsissa on käytössä
muutamia tärkeitä sovelluksia [7]. Suomessa teleoperaattorit
tuntuvat suhtautvan nihkeämmin sovelluskehitykseen.
Jakelupalvelut ovat tärkeä jo olemassaoleva lyhytsanomien
sovellusalue. Systeemi toimii seuraavasti: toimintaohjeet syötetään
sovellukselle, joka lähettää lyhytsanoman jakeluautoa
ajavalle kuriirille. Tämä kuittaa sanoman tai kysyy
mahdollisesti lisäohjeita lähettämällä
sanoman sovellukselle. Kun työ on tehty, kuriiri lähettää
vahvistuksen ja systeemi voi laskuttaa asiakasta välittömästi.
Tällainen sovellus on toteutettu Ruotsissa ja Italiassa.
Suomessa ICL on kehittämässä vastaanvantyylistä
logistiikkasovellusta.
Puhepostin tapaan myös saapuneesta sähköpostista
voidaan lähettää ilmoitus vastaanottajan GSM-puhelimeen
lyhytsanomana. Käyttäjän ei tarvtse tarkistaa itse
onko hän vastaanottanut uutta sähköpostia, vaan
ilmoitus tulee automaattisesti. Ilmoitus voi olla joko pelkkä
sanoma, joka ilmoittaa uudesta sähköpostista tai se
voi sisältää sähköpostin lähettäjän,
aiheen tai jopa osan sähköpostista. Tällainen sovellus
on hyödyllinen matkustelevalle sähköpostinkäyttäjälle
esim. myyntimiehelle. Myös erilaisia sähköposti-lyhytsanoma
gateway sovelluksia on toteuttu ainakin X.400 ja SMTP sähköpostiprotokolliin
sekä Windowsin MS-Mail ja CCmail ohjelmiin. Suomessa molemmat
GSM-operaattorit tarjoavat X.400 gateway palvelua.
Lyhytsanomien avulla voidaan toteuttaa monentyyppisiä informaatiopalveluita.
Tilaaja voi saada palveluun liittyviä sanomia automaattisesti
esim. päivittäin tai hän voi pyytää haluamaansa
informaatiota lähettämällä lyhytsanoman GSM-puhelimestaan
palveluntarjoajan sovellukselle.
Yksi esimerkki tällaisesta palvelusta on uutispalvelu. Tässä
palvelussa uutisotsikot lähetetään GSM-puhelimeen
pari kertaa päivässä lyhytsanomina. Sanoman mukana
tulee puhelinnumero, johon soittamalla palvelun tilaaja saa lisää
informaatiota lähetetyistä uutisotsikoista. Tätä
palvelua tarjoaa Suomessa Aamulehti molempien GSM-operaattorien
välityksellä ja STT Telen välityksellä.
Toinen mahdollinen palvelu on sääpalvelu. Tilaaja voi
lähettää lyhytsanoman palveluntarjoajalle, jossa
hän tiedustelee säätietoja tietyllä kohdealueella,
esim. kesämökillä, merellä tai ulkomailla.
Vastauksena tulee lyhytsanoma, joka sisältää säätiedoituksen.
Tällainen palvelu on toteutettu ainakin Hollannissa ja Ruotsissa.
Erilaisia pankkiasioihin, osakekursseihin ja valuuttakursseihin
liittyviä palveluita on myös toteutettu runsaasti. Näissä
palveluissa tilaajalle lähetetään tietoja tilitapahtumista
tai osakekurssien ja valuuttakurssien muutoksista lyhytsanomina.
Ruotsissa ja Hollannissa oleva palvelu mahdollistaa tietyn osakkeen
kurssin tiedustelemisen ja vastaus tulee lyhytsanomana. Pisimmälle
viety finanssipalvelu on Reutersin lyhytsanomapalvelu.
Reuters käyttää ns. Reuter Terminaleja (RT). Ne
ovat PC:itä Reutersin asiakkaiden tiloissa. Nämä
PC:t ovat kytketty Reutersin tietokantoihin ja niihin lähetetään
jatkuvasti finanssitietoja ja uutisotsikoita Reutersilta. RT:n
käyttäjä voi nyt käyttää lyhytsanomien
avulla RT:tä ja saada informaatiota, vaikka hän olisi
poissa RT:n läheisyydestä. Reuter lyhytsanomapalvelun
avulla on mahdollista:
RT:n käyttäjä voi määritellä toimintamoodiin
sanomien lähetykselle. Sanoma voidaan lähettää
päivittäin, osakekurssin muuttuessa tai kun kurssi ylittää
määritellyn vaihteluvälin. Reutersilla on oma lyhytsanomakeskus
Lontoossa, joka on yhdistetty toisaalta Reutersin omaan verkkoon
ja toisaalta GSM-verkkoon.
EU:n PROMISE-projekti tutkii kannettavan matkainformaatiosysteemin
kehittämistä. Tässä projektissa lyhytsanomia
käytetään monenlaisen tiedon levittämiseen.
Ainakin seuraavaa informaatiota voidaan jakaa lyhytsanomien avulla:
Hyvä esimerkki on linja-autojen aikataulusovellus. Käyttäjä
voi lähettää kyselyn lyhytsanomana, jossa hän
ilmoittaa haluavansa olla rautatieasemalla klo 16:00. Tietokantapalvelin
käsittelee kyselyn ja lähettää vastauksen
lyhytsanomana, joka sisältää täydelliset kulkuohjeet
rautatieasemalle tyyliin:
PROMISE:n vaihe 1 päättyi Göteborgissa 1994 ja
vaihe 2 on käynnissä tällä hetkellä [8].
Hollannissa on jo nyt toteutettu ruuhkainformaatiopalvelu, jossa
tilaaja lähettää lyhytsanomassa moottoritien numeron
ja vastauksena tulee liikennetilanne kyseisellä tiellä.
Lyhytsanomien käyttöä yhdessä GPS-paikannusjärjestelmän
kanssa on myös tutkittu. GPS-systeemiltä saatu ajoneuvon
paikkatieto voidaan lähettää lyhytsanomana valvomoon
ja ajoneuvon kulkua voidaan näin valvoa etäältä.
Myös monia muita, kuin edellä mainittuja lyhytsanomasovelluksia
on toteutettu. Seuraavassa esitetään muutamia mielenkiitoisimpia
toteutuksia.
Hälytykset prosessinohjausjärjestelmältä voidaan
lähettää lyhytsanomana valvontahenkilöiden
GSM-puhelimiin. Systeemi voidaan liittää esim. teollisuusprosesseihin,
vartiointisysteemeihin tai tietokonesysteemeihin, jolloin epätavallisissa
tilanteissa järjestelmävastaava tai mikrotukihenkilö
saa ilmoituksen GSM-puhelimeensa.
Numerotiedustelun vastaus voidaan lähettää lyhytsanomana
kyselyn tekijän GSM-puhelimeen. Tällöin kysyjän
ei tarvitse erikseen kirjoittaa numeroa muistiin ja sen jälkeen
näppäillä puhelimelle, vaan numero voidaan ottaa
suoraan vastauksena tulleesta lyhytsanomasta ja tallettaa se puhelimen
muistiin.
Lyhyiden faxien lähetys GSM-puhelimesta voidaan tehdä
lyhytsanomien avulla. Tilaaja lähettää faxin ja
vastaanottajan fax-numeron lyhytsanomana fax-sovellukselle. Sovellus
lähettää faxin ja lisää ennalta määritellyn
otsikon ja mahdollisesti henkilökohtaisen logon tai tervehdyskentän
faxiin.
Jotkin yksittäiset lyhytsanomasovellukset voivat yhdistää
useita edellä mainittuja sovellusideoita. Tälläinen
sovellus on hollantilaisen GIN-yhtiön sovellus, jolle voidaan
lähettää erilaisia informaatiopyyntöjä.
GSM-puhelimesta lähetetään sovellukselle lyhytsanoma,
joka sisältää tietyn avainsanan ja sovellus vastaa
lähettämällä informaatiota kyseiseen avainsanaan
liittyvästä aiheesta. GIN-sovellus lähettää
informaatota mm. seuraavista aiheista [9]:
Seuraavista aiheista on mietty lyhytsanomasovelluksen toteuttamista
enemmän tai vähemmän, mutta julkistettua toimivaa
sovellusta ei ilmeisesti vielä ole julkaistu:
Myös lyhytsanomien mahdollista roolia Mowgli-protokollan
yhteydessä tutkitaan. Mowgli tarjoaa TCP/IP:tä käyttäville
sovelluksille socket-rajapinnan Trumpet Winsocketin tapaan. Lyhytsanomien
osuus olisi todennäköisesti välittää
erilaista kontrolli-informaatiota.
Käytännön esimerkiksi lyhytsanomasovelluksesta voidaan ottaa SendMessage-ohjelma, jonka avulla voidaan lähettää ja vastaanottaa lyhytsanomia PC:ltä.
SendMessagen kehitystyö alkoi kesällä 1994. Tarkoituksena
oli tehdä testi- ja demo-ohjelma, jota voitaisiin käyttää
Nokian CIMD-rajapintaprotokollan esittelyyn ja testaamiseen. Ohjelma
päätettiin tehdä Windows-ympäristöön,
käyttää työkaluna Visual Basic ohjelmistoa
ja käyttää modeemiyhteyttä lyhytsanomakeskuksen
ja sovelluksen välillä. Lisäksi ohjelmasta päätettiin
tehdä saman toiminnallisuuden omaava versio, joka toimisi
kannettavan PC:n ja PCMCIA-datakortin kanssa. Tämä versio
ei siis käytä CIMD-protokollaa sanomien käsittelyyn,
vaan datakortilla olevaa lyhytsanomatulkkia. Kolmantena versiona
tuli mukaan 1995 LAN-versio, jossa yhteys lyhytsanomakeskukseen
otetaan modeemin sijasta lähiverkon yli käyttäen
Telnet-yhteyttä.
Kaikissa kolmessa versiossa on periaattessa sama peruskäyttöliittymä.
Toolbarin yhteydenmuodostusbuttonit ja pull-down valikoitten tekstit
ovat hieman erilaisia, mutta sanomien kirjoitus, lähetys,
vastaanottaminen ja vastaanottajan valinta tapahtuu kaikissa versioissa
samalla tavalla.
SendMessagen modeemiversion peruskäyttöliittymä
Toolbarista löytyvät seuraavat buttonit vasemmalta lukien:
yhteyden muodostus, yhteyden katkaisu, sanoman vastaanottaminen,
vastaaminen sanomaan (reply), sanoman lähetys, sanoman tilan
kysely ja poistuminen ohjelmasta (quit). Toolbarin alta löytyy
pikavalintalistat vastaanottajalle ja vakiosanomille. Näiden
alapuolella on varsinaiset vastaanottajan puhelinnumero ja sanoma
tekstikentät. Vastaanottajan numero ja sanoman teksti otetaan
joko pikavalintalistojen mukaan tai ne voidaan myös kirjoittaa
suoraan ko. kenttiin. Alhaalla vasemmalla on status-kenttä
johon ohjelma kirjoittaa sekä ohjelman omia, että lähetettyjä
sanomia koskevia tilatietoja. Vastaanotetut sanomat näytetään
sanoma tekstikentässä. Toolbarin buttonit ovat harmaita,
jos toiminne ei ole mahdollinen, esim. sanoman lähetys onnistuu
vasta kun yhteys lyhytsanomakeskukseen on ensin avattu.
Vastaanottajatietojen ylläpito tapahtuu kaikissa versioissa
täsmälleen samalla tavalla. Change valikosta löytyy
Phonebook, jossa kaikki vastaanottajat ovat listattuna.
SendMessagen vastaanottajatietojen ylläpitoikkuna
Oikella olevien buttonien avulla voidaan lisätä, muutta
ja poistaa vastaanottajien tietoja sekä luoda lähetyslistoja,
joissa usealle vastaanottajalle lähetetään sama
sanoma. Ylin button valitsee aktiivisen vastaanottajan perusikkunan
pikavalintalistalle.
Teletekniikan kannalta ohjelmien kiinnostavimmat osat ovat yhteydenmuodostus
ja CIMD liikenne, joten esitän tässä takemmin vain
ohjelmien em. toiminnallisuuksia koskevat osat.
Yhteydenmuodostus:
Yhteydenmuodostuksessa käytetään hyväksi Visual
Basic 3.0 Professional-versiosta löytyvää sarjaliikenneportin
ohjauskirjastoa. Sen avulla sarjaportin ohjaaminen onnistuu komennoilla,
jotka ovat muotoa: Comm1.PortOpen = True, Comm1.Output = "Merkkijono"
ja Muuttuja = Comm1.Input. Tässä Comm1 on sarjaliikennekommunikointi-instanssi
eikä käytettävä sarjaliikenneportti.
Yhteyttä muodostettaessa ohjelmakoodi tekee seuraavaa:
Ohjelmakoodi on liitteessä 1.
Sanoman lähetys:
Sanomaa lähetettäessä ohjelmakoodi tekee seuraavaa:
Ohjelmakoodi on liitteessä 2.
Yhteydenmuodostus:
Yhteydenmuodostuksessa käytetään hyväksi Distinctin
tekemää TCP/IP kirjastoa Visual Basicille. Sen avulla
voidaan helposti esim. avata Telnet yhteys lyhytsanomakeskukseen.
Komenneot ovat muotoa: Telnet1.Action = CONNECT, Telnet1.Send
= "Merkkijono" ja Muuttuja = Telnet1.Receive [10]. Kirjaston
toiminta on joissakin erikoistilanteissa hieman puutteelinen.
Virhetilanteet kaatavat joskus koko Visual Basicin ja kahden lähes
samanaikaisen tapahtuman sattuessa (esim. yhteys muodostunut ja
dataa vastaanotettu) jälkimmäinen saattoi joskus hukkua.
Yhteyttä muodostettaessa ohjelmakoodi tekee seuraavaa:
Ohjelman rakenne on siis selvästi yksinkertaisempi, kuin
modeemiversion kohdalla. Itse lyhytsanomaliikenteeseen liittyvä
ohjelmakoodi on lähes täysin samanlaista sekä modeemi-
että LAN-versioissa. Ainoa ero on sarjaliikenteen ohjauskomentojen
korvaaminen Telnet-yhteyden ohjauskomennoilla.
Tämä versio eroaa toiminnallisuudeltaan huomattavasti
edellisistä ohjeman versioista vaikka käyttäjän
näkymä ohjelmaan pysyy lähes samana. Nyt lyhytsanomaliikenne
ei tapahdu sovelluksen ja lyhytsanomakeskuksen välillä
CIMD-protokollan mukaan, vaan sovelluksen ja GSM-puhelimen välillä
PCMCIA-datakortin avulla. Puhelin ei puolestaan välitä
sanoman alkuperästä mitään lähettäessään
ja vastaanottaessaan sanomia vaan toimii aivan kuten sanomat olisivat
kirjoitettu puhelimen näppäimistöltä.
PCMCIA-kortin sanomatulkki on tehty ihmisen käytettäväksi, joten se ei ole kovin hyvä ohjelmointirajapinta. Kortilla pitäisi olla myös ETSI:n suosituksen 07.05 mukainen ohjelmointirajapinta [11], mutta ainakaan vielä kesällä 1994 se ei ollut toimintakunnossa.
Yhteydenmuodostus:
Yhteyttä muodostettaessa ohjelmakoodi tekee seuraavaa:
Sanoman lähetys:
Perustilanne on tässä sama kuin muitten versioitten
tapauksessa, mutta CIMD-protokollan sijasta sanomat lähetetään
viemällä tulkki sanomien lähetystilaan ja antamalla
sitten sanoman vastaanottajan puhelinnumero ja itse sanoma. Tilanteen
tekee monimutkaiseksi kuitenkin se, että tulkki ilmoittaa
uusista vastaanotetuista sanomista milloin tahansa, myös
kesken lähetyssekvenssin. Tämä ilmoitus lisäksi
siirtää tulkin lähetystilasta takaisin perustilaan.
Tämän vuoksi sanomaa lähettävän funktion
pitää koko ajan tarkastaa kortilta tulevaa dataa ja
havaitessaan ilmoituksen uudesta sanomasta näyttää
se ja jatkaa lähetystä kutsumalla itseään
uudestaan.
SendMessage - ohjelmia on käytetty demo- ja testikäytössä
kohta kahden vuoden ajan. Demokäytössä niitä
käytetään esimerkkinä CIMD-rajapintaa käyttävästä
ohjelmasta ja niitä ollaan esitelty lukuisille Nokian asiakkaille
Suomessa ja ulkomailla. Lisäksi ohjelmien Visual Basic koodia
on lähetetty suoraan muutamalle asiakkaalle.
Myös testikäytössä SendMessage-ohjelmista
on ollut paljon hyötyä. Niillä ollaan testattu
CIMD-rajapintaprotokollaa ja sen oikeaa toimintaa. Nokian SMSC:n
virallisessa testiohjelmassa on useita testejä, joissa testataan
CIMD:n toimintaa SendMessagen avulla. Erityisen hyödylliseksi
apuvälineeksi on osoittautunut tässä CommSpy niminen
ohjelma, jonka avulla voi seurata sarjaportista kulkevaa liikennettä
merkki merkiltä. Näin ohjelman ja protokollan lähettämien
protokollakehysten muotoa ja oikeellisuutta on päästy
kätevästi tarkastelemaan. Lisäksi SendMessagesta
on testiversio, joka lähettää sanomia jatkuvasti
silmukassa ja näin saadaan luotua sanomaliikennettä
kapasiteetti- ja rasitustestejä varten.
Koska SendMessage on ollut alusta saakka erillinen PC-ympäristössä
toteutettu projekti, sitä ei ole koskaan laitettu Nokian
SMSC osaston versionhallintasysteemiin. Tämä on joskus
aiheuttanut pieniä ongelmia, koska nimenomaan testikäyttöä
varten ohjelmiin on tehty usein pieniä muutoksia, ja ohjelma
siis elää koko ajan CIMD protokollan kehittyessä
ja saadessa uusia ominaisuuksia.
Lyhytsanomien käyttö painottuu tulevaisuudessa yhä
enemmän sanomapalveluiden suuntaan. Lyhytsanomien käytön
yleistymiseen vaikuttanee voimakkaimmin hinnoittelu, mainonta
ja tajolla olevat sovellukset. Operaattorien panostus edellä
mainittuihin seikkoihin on ratkaiseva. GSM-lyhytsanomapalvelun
sovelluskehitys jatkunee vilkkaana ainakin lähitulevaisuudessa.
Suomessa on vielä toistaiseksi vähän lyhytsanomapalveluita
ja niitä tullaan varmasti näkemään lisää
lähivuosina. Pitemmän ajan kehitys on vielä epävarmaa,
koska lyhytsanoman kohtalo tulevaisuuden matkapuhelinjärjestelmissä
on vielä avoinna, mutta luultavasti se tulee olemaan mukana
muodossa tai toisessa.
[1] ETSI GSM 03.40. European digital cellular telecommunications
system (Phase 2); Technical realization of the Short Message
Service (SMS) Point-to-Point (PP), 1995.
[2] Hutteger Nina. Lyhytsanomien hyödyntäminen, Nokia
internal document, 1995.
[3] DX 200 MSC/HLR Short Message Services, Nokia training document,
1995.
[4] Nokia Cellular Data: Cellular Data Card, esite.
[5] Nokia Cellular Data: Cellular Ware, esite.
[6] Gustafsson Patrik. Computer Interface to Message Distribution,
Nokia customer document, 1995.
[7] Torvinen Olli, Nokia SMSC Integrates the Value-added Services,
Nokia internal document, 1995.
[8] PROMISE. For a better choice in transport, esite.
[9] GSM Information Network. GIN User Manual, 1995.
[10] Distinct: Distinct TCP/IP SDK Visual Edition, 1993, 1994
[11] Nokia Cellular Data: Cellular Data Card DTP-2 User's Guide,
1994
Liite 1.
'Initializes the modem, calls to SMSC, makes the UNIX
'login, makes the CIMD login and checks for new messages.
'
Sub Connect_Click ()
Login = Chr$(2) & "01" & Chr$(9)
& UsrSettings.TMDLogin.Text & Chr$(9) & UsrSettings.TMDPasswd.Text
& Chr$(9)
Connect.Enabled = False
Connect.Picture = LoadPicture(Path$ & "phone.bmp")
UsrSettings.TMDPasswd.Enabled = False
If ModSettings.Port1.Value Then
Comm1.CommPort = 1
ElseIf ModSettings.Port2.Value Then
Comm1.CommPort = 2
ElseIf ModSettings.Port3.Value Then
Comm1.CommPort = 3
Else
Comm1.CommPort = 4
End If
If ModSettings.bps9600.Value Then
br$ = "9600"
ElseIf ModSettings.bps2400.Value Then
br$ = "2400"
Else
br$ = "14400"
End If
If ModSettings.Bits7.Value Then
db$ = "7"
Else
db$ = "8"
End If
If ModSettings.Stop1.Value Then
sb$ = "1"
Else
sb$ = "2"
End If
If ModSettings.Par(0).Value Then
pa$ = "E"
ElseIf ModSettings.Par(1).Value Then
pa$ = "N"
ElseIf ModSettings.Par(2).Value Then
pa$ = "O"
ElseIf ModSettings.Par(3).Value Then
pa$ = "M"
Else
pa$ = "S"
End If
Comm1.DTREnable = True
Comm1.RTSEnable = True
Comm1.Settings = br$ & "," & pa$ & "," & db$ & "," & sb$
Comm1.InputLen = 0
Comm1.PortOpen = True
Comm1.Output = "ATE0V0X3" + Chr$(13)
Status.Caption = "Initializing modem"
Wait 3
If Comm1.InBufferCount >= 1 And Val(Comm1.Input) = 0 Then
Status.Caption = "OK"
Else
Status.Caption = "Modem not found"
Wait 2
Comm1.PortOpen = False
Connect.Enabled = True
Connect.Picture = LoadPicture(Path$ & "phone3.bmp")
Exit Sub
End If
Comm1.Output = "ATDT" + UsrSettings.DialNum.Text + Chr$(13)
Status.Caption = "Dialing to SMSC"
Do
Dummy = DoEvents()
Loop Until Comm1.InBufferCount >= 1
Inp1$ = Comm1.Input
If Val(Inp1$) = 6 Then
Status.Caption = "No dial tone"
HangUp
Exit Sub
ElseIf Val(Inp1$) = 7 Then
Status.Caption = "Busy"
Wait 2
Comm1.PortOpen = False
Connect.Enabled = True
Connect.Picture = LoadPicture(Path$ & "phone3.bmp")
Exit Sub
ElseIf Val(Inp1$) = 8 Or Val(Inp1$) = 3 Then
Status.Caption = "No answer"
Comm1.PortOpen = False
Connect.Enabled = True
Connect.Picture = LoadPicture(Path$ & "phone3.bmp")
Exit Sub
ElseIf Val(Inp1$) >= 9 Then
Status.Caption = "Connect"
End If
Wait 2 'for Radiolinja testing
Status.Caption = "Logging in"
Do
Dummy = DoEvents()
Wait 1
Temp$ = Temp$ & Comm1.Input
Loop Until InStr(1, Temp$, "login", 1) > 0
Wait 2
Comm1.Output = UsrSettings.Login.Text & Chr$(10)
If Len(UsrSettings.Passwd.Text) > 0 Then
Do
Dummy = DoEvents()
Wait 1
Temp1$ = Temp1$ & Comm1.Input
Loop Until InStr(1, Temp1$, "password", 1) > 0
Comm1.Output = UsrSettings.Passwd.Text & Chr$(10)
End If
Do
Dummy = DoEvents()
Wait 1
Temp2$ = Temp2$ & Comm1.Input
Loop Until InStr(1, Temp2$, "CIMD rel", 1) > 0 Or InStr(1, Temp2$, "smsc", 1) > 0 Or InStr(1, Temp2$, "incorrect", 1) > 0
If InStr(1, Temp2$, "incorrect", 1) > 0 Then
Status.Caption = "Login incorrect"
HangUp
Exit Sub
End If
Status.Caption = "Starting CIMD"
Wait 1
Dummy = Comm1.Input
Comm1.Output = Login & Checksum(Login) & Chr$(3) & Chr$(10)
Do
Dummy = DoEvents()
Wait 1
Inp1$ = Inp1$ & Comm1.Input
Loop Until InStr(1, Inp1$, "C:01", 0) > 0
If InStr(Inp1$, Chr$(6)) < 1 Then
Geterr (Inp1$)
HangUp
Exit Sub
End If
Disconnect.Enabled = True
Disconnect.Picture = LoadPicture(Path$ & "phone4.bmp")
ReadMes
Enable4
UsrSettings.M_Change.Enabled = True
End Sub
Liite 2
'Sends the submit a message command to CIMD in a loop which
'upper limit is defined by length of the delivery list. For
'normal recipient the loop is done once. Ack send if
'delivery query option in TMD subsc. is ON.
'
Sub Send_Click ()
If Len(Message.Text) = 0 Or Len(DestNum.Text) < 2 Then
MsgBox "Empty message or too short phonenumber", , "Send"
Exit Sub
End If
Timer1.Enabled = False
Send.Enabled = False
Send.Picture = LoadPicture(Path$ & "envelop1.bmp")
ReadNext.Enabled = False
ReadNext.Picture = LoadPicture(Path$ & "mail3.bmp")
GetStatus.Enabled = False
GetStatus.Picture = LoadPicture(Path$ & "eyeglas2.bmp")
Num% = 1
Do
Place = 1
Search$ = NameList.List(NameList.ListIndex)
Submit = Chr$(2) & "03" &
Chr$(9) & DestNum.Text & Chr$(9) & ConvertMessage()
& Chr$(9) & Trim$(UsrSettings.ValPer.Text) & Chr$(9)
& Chr$(9) & Chr$(9) & "i0" & Chr$(9)
If Mid$(Search$, 1, 1) = Chr$(248) Then
TmpStr1$ = Trim$(Findlist(Search$))
Num% = GetLen(TmpStr1$)
End If
For j% = 1 To Num%
Inp1$ = ""
If Mid$(Search$, 1, 1) = Chr$(248) Then
Dest$ = Getnext(TmpStr1$)
Submit = Chr$(2) & "03" & Chr$(9) & Dest$ & Chr$(9) & ConvertMessage() & Chr$(9) & Trim$(UsrSettings.ValPer.Text) & Chr$(9) & Chr$(9) & Chr$(9) & "i0" & Chr$(9)
End If
Comm1.Output = Submit & Checksum(Submit)
& Chr$(3) & Chr$(10)
Status.Caption = "Sending message..."
Do
Dummy = DoEvents()
Wait 1
Inp1$ = Inp1$ & Comm1.Input
Loop Until InStr(1, Inp1$, "C:03", 0) > 0 Or (InStr(1, Inp1$, "C:04", 0) > 0 And InStr(1, Inp1$, Chr$(3), 0) > 0)
i% = InStr(1, Inp1$, "C:04", 0)
If i% > 0 Then
i% = i% + 5
Sta$ = GetIt(Inp1$, i%)
i% = i% + 1
Desc$ = GetIt(Inp1$, i%)
Status.Caption = Sta$ + " " + Desc$
Wait 2
Comm1.Output = Chr$(2) & Chr$(6) & Chr$(9) & "11" & Chr$(3) & Chr$(10)
ElseIf InStr(Inp1$, Chr$(6)) < 1 Then
Geterr (Inp1$)
Status.Caption = "Message not sent"
Wait 2
Enable4
Status.Caption = "Ready to send messages"
Exit Sub
Else
Status.Caption = "Message sent"
End If
If UsrSettings.Looped = True Then
ReadMes
Wait CInt(UsrSettings.Delay.Text)
End If
Next j%
Loop Until UsrSettings.Looped = False
Wait 2
Status.Caption = "Ready to send messages"
Enable4
End Sub