Najjednoduchší spôsob, ako poslať SMS z Kotlinu, je použiť vstavanú HTTP/Rest SMS API
Ozeki SMS Gateway. Keď použijete toto API, budete posielať SMS správy
vydaním HTTP POST požiadavky na SMS bránu. HTTP POST požiadavka bude
obsahovať správu formátovanú v JSON formáte. SMS brána
pošle túto SMS na príjemcove telefónne číslo a vráti HTTP 200 OK odpoveď
na vašu požiadavku. (Obrázok 1)
Obrázok 1 - Ako poslať SMS z Kotlinu
Ukážka kódu Kotlin na odoslanie SMS nižšie demonštruje, ako môžete odoslať SMS pomocou
http rest SMS API Ozeki SMS Gateway s použitím knižnice Kotlin Ozeki.Libs.Rest.
Táto knižnica je poskytovaná bezplatne a môžete ju použiť a upraviť
v ktoromkoľvek z vašich projektov.
MainActivity.kt
package send.sms
import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.text.method.ScrollingMovementMethod
import androidx.annotation.RequiresApi
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import Ozeki.Libs.Rest.Configuration
import Ozeki.Libs.Rest.Message
import Ozeki.Libs.Rest.MessageApi
class MainActivity : AppCompatActivity() {
@RequiresApi(Build.VERSION_CODES.O)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val btnSendRequest:android.widget.Button = findViewById(R.id.btnSendRequest)
val inputToAddress:android.widget.EditText = findViewById(R.id.inputToAddress)
val inputMessage:android.widget.EditText = findViewById(R.id.inputMessage)
val logBox:android.widget.TextView = findViewById(R.id.logBox)
logBox.movementMethod = ScrollingMovementMethod()
val configuration = Configuration(
username = "http_user",
password = "qwe123",
apiurl = "http://10.0.2.2:9509/api"
)
val api = MessageApi(configuration)
btnSendRequest.setOnClickListener {
if (inputToAddress.text.toString() != "" && inputMessage.text.toString() != "") {
GlobalScope.launch(Dispatchers.IO) {
val msg = Message()
msg.ToAddress = inputToAddress.text.toString()
msg.Text = inputMessage.text.toString()
inputToAddress.text.clear()
inputMessage.text.clear()
val response = api.Send(msg)
logBox.text = String.format("%s\n%s", logBox.text, response.toString())
}
}
}
}
}
Môžete použiť triedu Message na vytvorenie
SMS a triedu MessageApi na odoslanie SMS do SMS brány.
SMS brána prepošle vašu správu do mobilnej siete buď prostredníctvom bezdrôtového
pripojenia alebo cez internet.
Stiahnuť SendSms.kt
Zdrojový kód vysvetlený v tomto článku je možné stiahnuť, používať a upravovať bezplatne. Stiahnuť:SendSms.kt.zip (148Kb)
Čo obsahuje súbor SendSms.kt.zip?
Súbor SendSms.kt.zip obsahuje príklad projektu, ktorý má v sebe knižnicu
Ozeki.Libs.Rest. S touto knižnicou môžete odosielať, mazať,
označovať a prijímať SMS správy vytvorením MessageApi a použitím metód Send(),
Delete(), Mark() a Receive(). (Obrázok 2)
Obrázok 2 - Adresár SendSms.kt
Ako odoslať SMS z Kotlinu (Rýchle kroky)
Na odoslanie SMS z Kotlinu:
Nainštalujte Ozeki SMS Gateway
Pripojte Ozeki SMS Gateway k mobilnej sieti
Odošlite testovaciu SMS z Ozeki GUI
Vytvorte HTTP SMS API používateľa
Android Studio
Stiahnite si vyššie uvedený príklad projektu
Vytvorte SMS vytvorením nového objektu Message
Vytvorte API na odoslanie vašej správy
Použite metódu Send na odoslanie vašej správy
Prečítajte si odpoveď na konzole
Skontrolujte záznamy v SMS gatewey
Nainštalujte Ozeki SMS Gateway a vytvorte HTTP API používateľa
Po nastavení prostredia môžete spustiť svoj Kotlin kód.
HTTP API URL na odoslanie SMS z Kotlinu
Na odoslanie SMS z Kotlinu bude váš Kotlin musieť odoslať HTTP požiadavku na SMS gateway.
API URL je uvedené nižšie. Upozorňujeme, že IP adresa (127.0.0.1) by mala
byť nahradená IP adresou vášho SMS gateway. Ak je Ozeki SMS Gateway
nainštalovaný na rovnakom počítači, kde beží JavaScriptová SMS aplikácia,
môže to byť 127.0.0.1. Ak je nainštalovaný na inom počítači, mala by to
byť IP adresa toho počítača.
http://127.0.0.1:9509/api?action=rest
HTTP autentifikácia na odoslanie SMS z Kotlinu
Na autentifikáciu Kotlin SMS klienta musíte odoslať používateľské meno a heslo v
base64 kódovanom reťazci na server v HTTP požiadavke. Používa sa formát: base64(username+":"+password).
V Kotline môžete na toto kódovanie použiť nasledujúci kód:
var usernamePassword = "%s:%s".format(username, password)
return "Basic %s".format(Base64.getEncoder().encodeToString(usernamePassword.toByteArray()))
Napríklad, ak zakódujete používateľské meno 'http_user' a heslo 'qwe123', dostanete
nasledujúci base64 kódovaný reťazec: aHR0cF91c2VyOnF3ZTEyMw==. Na odoslanie
HTTP hlavička požiadavky na odoslanie SMS z Kotlinu
Na odoslanie SMS správ musíte do HTTP požiadavky zahrnúť nasledujúce riadky ako hlavičky.
Upozorňujeme, že obsahujeme hlavičku Content-Type a Authorization.
Na odoslanie SMS bude vaša Kotlin aplikácia odosielať HTTP požiadavku podobnú
nižšie uvedenej. Upozorňujeme, že táto požiadavka obsahuje časť HTTP hlavičky a
časť tela HTTP. Telo HTTP je reťazec dát zakódovaný v JSON. Obsahuje
číslo príjemcu a text správ.
Keď SMS brána prijme túto požiadavku, vygeneruje HTTP odpoveď. HTTP odpoveď bude obsahovať stavový kód, ktorý indikuje, či bola odosielateľská požiadavka SMS úspešná alebo nie. Taktiež vráti štruktúru zakódovanú v JSON, ktorá poskytuje užitočné informácie o odoslaní správy.
Ako poslať SMS z Kotlinu pomocou SMS API a vyššie uvedeného príkladu projektu (Video tutoriál)
Toto video vám ukáže, ako stiahnuť a použiť projekt SendSms.kt. Keď otvoríte príklad projektu, môžete si všimnúť, že obsahuje balík s názvom Ozeki.Libs.Rest. Tento balík obsahuje MessageApi a všetko potrebné na odoslanie SMS pomocou Kotlinu.
Ako skontrolovať, že SMS bola prijatá HTTP používateľom
Po odoslaní SMS je dobré skontrolovať vašu SMS bránu, aby ste videli, čo prijala. Log môžete skontrolovať otvorením detailov HTTP používateľa v konzole na správu Ozeki SMS brány. Na konci vyššie uvedeného videa môžete vidieť, ako skontrolovať, či bola požiadavka prijatá http_user. (Obrázok 3)
Obrázok 3 - Projekt SendSms.kt v Android Studiu
Ako vyzerá používanie aplikácie
Na obrázku 4 môžete vidieť, ako vyzerá aplikácia po odoslaní správy. Ako vidíte, vaše predchádzajúce odoslané správy budú uložené ako log pod textovým poľom 'Message'. Môžete vidieť všetky informácie o správe, ako odosielateľ, text a výsledok odosielacieho procesu.
Obrázok 4 - Príklad aplikácie SendSms pred a po odoslaní správy
Ako skontrolovať, že SMS bola odoslaná do mobilnej siete
Posledným krokom pri overovaní procesu je pozrieť sa na logy pripojenia k mobilnej sieti. Možno budete musieť pred odoslaním správy zapnúť logovanie v konfigurácii pripojenia, aby ste videli logy. Ak je logovanie povolené, uvidíte telefónne číslo a text správy, ktorú ste odoslali.
Ako pridať Ozeki.Libs.Rest do vlastného projektu
Knižnicu Ozeki.Libs.Rest je možné stiahnuť, používať a upravovať bezplatne. Stiahnuť:Ozeki.Libs.Rest.kt.zip (7.66Kb)
Ak sa rozhodnete vytvoriť svoju aplikáciu sami len s knižnicou Ozeki.Libs.Rest, je potrebné vykonať niekoľko zmien v základnej aplikácii. Aby ste mohli použiť knižnicu Ozeki.Libs.Rest, musíte ju umiestniť do priečinka java v hlavnom adresári.
V nasledujúcom videu vám ukážem, ako stiahnuť a pridať knižnicu Ozeki.Libs.Rest do vlastného projektu.
Závislosti
Je dôležité spomenúť, že knižnica Ozeki.Libs.Rest má niektoré závislosti. Aby ste ju mohli používať, musíte tieto závislosti pridať do Gradle Scripts.
Kód 1 - Zoznam závislostí, ktoré je potrebné zahrnúť.
V nasledujúcom videu sa naučíte, ako pridať vyššie spomenuté závislosti.
Začne sa kopírovaním kódu a prevedie vás až k úspešne pridaným závislostiam.
Video je dlhé len 53 sekúnd, ale obsahuje všetky potrebné kroky na dokončenie procesu.
Tento návod môžete ľahko sledovať.
Prístup k internetu
Aby vaša aplikácia mohla odosielať HTTP požiadavky, musíte jej umožniť pripojenie k internetu.
V nasledujúcom videu vám ukážem, ako povoliť prístup k internetu pre vašu Kotlin aplikáciu.
Kód 2 - Povolenie prístupu k internetu pre vašu Kotlin aplikáciu.
android:usesCleartextTraffic="true"
Kód 3 - Umožnenie odosielania HTTP požiadaviek
Ako povoliť internetové pripojenie pre vašu aplikáciu (Videonávod)
Musíte pridať oba tieto riadky do súboru AndroidManifest.xml.
V nasledujúcom videu vám ukážem, kam by ste mali vložiť vyššie uvedené kódy.
Video začne kopírovaním kódu a prevedie vás až k úspešne pridanému internetovému pripojeniu.
Toto video je podrobné a ľahko sa sleduje.
Záver
Cieľom tohto sprievodcu bolo ukázať vám, ako odosielať SMS správy z Kotlinu pomocou HTTP SMS API Ozeki SMS Gateway.
Tieto získané vedomosti vám umožňujú zostať v kontakte so svojimi zákazníkmi pomocou jednoduchého Kotlin kódu.
Medzinárodné zasielanie správ je možné aj s Ozeki SMS Gateway, pretože funguje v každej krajine a môže odosielať a prijímať SMS cez rôzne mobilné pripojenia.
Nezabudnite pokračovať v štúdiu tu, navštívte ďalšie stránky s návodmi na webovej stránke Ozeki pre viac informácií.
Pozrite si ďalšie sprievodce o používaní Kotlinu, začnite s Ako odosielať viacero SMS z Kotlinu.
Teraz je vašou prvou úlohou stiahnuť si Ozeki SMS Gateway a začať ho používať!
More information
Kotlin send SMS with the HTTP rest API (code sample)