Kako prejeti SMS v Kotlinu

Najenostavnejši način za pošiljanje SMS-ov iz Kotlina je uporaba vgrajenega HTTP/Rest SMS API-ja Ozeki SMS Gateway. Ko uporabljate ta API, boste pošiljali SMS sporočila z izdajo HTTP Post zahteve proti SMS prehodu. HTTP Post zahteva bo vsebovala sporočilo v json formatu. SMS prehod bo poslal ta SMS prejemniku in vrnil HTTP 200 OK odgovor na vašo zahtevo. (Slika 1)

kako prejeti sms v kotlinu
Slika 1 - Kako prejeti SMS v Kotlinu

Kotlin koda za prejemanje SMS-ov na mobilni napravi

Spodnji Kotlin SMS primer kode prikazuje, kako lahko prejmete SMS sporočilo(a) z uporabo http rest sms api Ozeki SMS Gateway z uporabo knjižnice Kotlin Ozeki.Libs.Rest. Ta knjižnica vam je na voljo brezplačno in jo lahko uporabljate in spreminjate v katerem koli od vaših projektov.

Video 1 - Kako prenesti ReceiveSms.kt.zip primer (Video vadnica)

MainActivity.kt
package receive.sms

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import Ozeki.Libs.Rest.*
import android.widget.ArrayAdapter
import kotlinx.coroutines.*

class MainActivity : AppCompatActivity() {
    @DelicateCoroutinesApi
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val listMessages:android.widget.ListView = findViewById(R.id.listMessages)
        val btnSendRequest:android.widget.Button = findViewById(R.id.btnSendRequest)

        val configuration = Configuration(
            username = "http_user",
            password = "qwe123",
            apiurl = "http://10.0.2.2:9509/api"
        )

        val messages_label : ArrayList<Message> = arrayListOf()

        val arrayAdapter = ArrayAdapter<Message>(this, android.R.layout.simple_list_item_1, messages_label)

        listMessages.adapter = arrayAdapter

        val api = MessageApi(configuration)

        btnSendRequest.setOnClickListener {
            GlobalScope.launch(Dispatchers.IO) {
                val result = api.DownloadIncomming()
                val messages = result.Messages
                for (index in 0 until messages.size) {
                    messages_label.add(messages.get(index))
                }
            }
            arrayAdapter.notifyDataSetChanged()
        }
    }
}
	
main_activity.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btnSendRequest"
        android:layout_width="320dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="24dp"
        android:backgroundTint="#FF3F3F"
        android:text="Prenesi prihajajoče"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.505"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/listMessages" />

    <TextView
        android:id="@+id/textMessages"
        android:layout_width="320dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="24dp"
        android:text="Sporočila"
        android:textAlignment="center"
        android:textSize="22sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.505"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <ListView
        android:id="@+id/listMessages"
        android:layout_width="320dp"
        android:layout_height="500dp"
        android:layout_marginTop="24dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textMessages" />
</androidx.constraintlayout.widget.ConstraintLayout>
	

Kako uporabiti Kotlin SMS primer:

Uporabite lahko razred MessageApi za prejemanje SMS sporočil(a) iz SMS prehoda. Vaša zahteva iz vaše naprave bo posredovana do SMS prehoda prek interneta.

Prenesi ReceiveSms.kt

Izvorna koda, razložena v tem članku, je na voljo za brezplačen prenos, uporabo in spreminjanje.
Prenos: ReceiveSms.kt.zip (148Kb)

Kaj je v datoteki ReceiveSms.kt.zip?

Datoteka ReceiveSms.kt.zip vsebuje primer projekta, ki vključuje knjižnico Ozeki.Libs.Rest. S to knjižnico lahko pošiljate, brišete, označujete in prejemate sms sporočila z ustvarjanjem MessageApi in uporabo metod Send(), Delete(), Mark() in Receive(). (Slika 2)

primer projekta za prejemanje sms z uporabo kotlina
Slika 2 - ReceiveSms.kt mapa

Kako prejeti SMS s Kotlinom (Hitri koraki)

Za prejemanje SMS-ov s Kotlinom:

  1. Namestite Ozeki SMS Gateway
  2. Povežite Ozeki SMS Gateway z mobilnim omrežjem
  3. Pošljite testni SMS iz Ozeki GUI
  4. Ustvarite uporabnika HTTP sms api
  5. Android Studio
  6. Prenesite zgornji primer projekta
  7. Ustvarite api za prenos vaših prihajajočih sporočil
  8. Uporabite metodo DownloadIncoming() za prejem vaših sporočil
  9. Preberite odzivno sporočilo na konzoli
  10. Preverite dnevnike v SMS prehodu

Namestite Ozeki SMS Gateway in ustvarite uporabnika HTTP API

Da lahko prejemate SMS s Kotlinom, morate najprej namestiti Ozeki SMS Gateway. SMS gateway lahko namestite na isti računalnik, kjer razvijate svojo kodo Kotlin v Android Studiu. Po namestitvi je naslednji korak povezovanje Ozeki SMS Gateway z mobilnim omrežjem. Lahko pošljete testno SMS sporočilo iz Ozeki GUI, da preverite, ali vaša mobilna omrežna povezava deluje. Zadnji korak pri pripravi okolja je ustvarjanje uporabniškega računa HTTP SMS API. Ustvarite uporabnika z uporabniškim imenom "http_user" in geslom "qwe123", da bo primer deloval brez sprememb.

Ko je okolje pripravljeno, lahko zaženete svojo kodo Kotlin.

URL HTTP API za pošiljanje SMS s Kotlinom

Za prejemanje SMS s Kotlinom mora vaša koda Kotlin poslati HTTP zahtevo do SMS gatewaya. API URL je prikazan spodaj. Upoštevajte, da je treba IP naslov (127.0.0.1) zamenjati z IP naslovom vašega SMS gatewaya. Če je Ozeki SMS Gateway nameščen na istem računalniku, kjer teče vaša JavaScript SMS aplikacija, je to lahko 127.0.0.1. Če je nameščen na drugem računalniku, mora biti to IP naslov tega računalnika.

http://127.0.0.1:9509/api?action=rest
	

HTTP avtentikacija za prejemanje SMS s Kotlinom

Za avtentikacijo SMS odjemalca Kotlin morate poslati uporabniško ime in geslo v base64 kodiranem nizu do strežnika v HTTP zahtevi. Uporabljen format je: base64(uporabniško_ime+":"+geslo). V Kotlinu lahko za to kodiranje uporabite naslednjo kodo:

var usernamePassword = "%s:%s".format(username, password)
return "Basic %s".format(Base64.getEncoder().encodeToString(usernamePassword.toByteArray()))
	

Na primer, če kodirate uporabniško ime 'http_user' in geslo 'qwe123', boste prejeli naslednji base64 kodiran niz: aHR0cF91c2VyOnF3ZTEyMw==. Za pošiljanje

Glava HTTP zahteve za pošiljanje SMS s Kotlinom

Za prejemanje SMS sporočil(a) morate vključiti naslednje vrstice kot glave v HTTP zahtevo. Upoštevajte, da vključujemo tip vsebine in glavo za avtorizacijo.

Content-Type: application/json
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
	

HTTP zahteva za prejemanje SMS s Kotlinom

Za prejemanje prihajajočih SMS sporočil bo vaša aplikacija Kotlin poslala HTTP zahtevo, podobno spodnji. Upoštevajte, da ta zahteva vsebuje del glave HTTP in del telesa HTTP. Telo HTTP je niz podatkov, kodiran v JSON. Vsebuje prejemnikovo številko in besedilo sporočila.

GET /api?action=receivemsg&folder=inbox HTTP/1.1
Connection: Keep-Alive
Accept-Encoding: gzip
Authorization: Basic aHR0cF91c2VyOnF3ZTEyMw==
Host: 10.0.2.2:9509
User-Agent: okhttp/4.2.2
	

HTTP odziv, ki ga prejme primer SMS v Kotlinu

Ko SMS gateway prejme to zahtevo, bo ustvaril HTTP odziv. HTTP odziv bo vseboval statusno kodo, ki označuje, ali je bila zahteva za oddajo SMS uspešna ali ne. Prav tako bo vrnil strukturo, kodirano v JSON, ki vam bo zagotovila koristne podrobnosti o oddaji sporočila.

HTTP/1.1 200 OK
User-Agent: OZEKI 10.3.120 (www.myozeki.com)
Content-Type: application/json; charset=utf8
Last-Modified: Thu, 17 Jun 2021 16:10:48 GMT
Server: 10/10.3.120
Transfer-Encoding: chunked

{
	"http_code": 200,
	"response_code": "SUCCESS",
	"response_msg": "",
	"data": {
	  "folder": "inbox",
	  "limit": "1000",
	  "data": [
	    {
	      "message_id": "ada7ee44-aefc-e746-9376-b76e3674442a",
	      "from_connection": "http_user@localhost",
	      "from_address": "+36203333333",
	      "from_station": "%",
	      "to_connection": "http_user@localhost",
	      "to_address": "http_user",
	      "to_station": "%",
	      "text": "Hello world 3",
	      "create_date": "2021-06-17 16:09:11",
	      "valid_until": "2021-06-24 16:09:11",
	      "time_to_send": "2021-06-17 16:09:11",
	      "submit_report_requested": true,
	      "delivery_report_requested": true,
	      "view_report_requested": true,
	      "tags": [
	        {
	          "name": "Type",
	          "value": "SMS:TEXT"
	        }
	      ]
	    },
	    {
	      "message_id": "fccc6211-c710-c80e-a28f-664ff8b0e964",
	      "from_connection": "http_user@localhost",
	      "from_address": "+36201111111",
	      "from_station": "%",
	      "to_connection": "http_user@localhost",
	      "to_address": "http_user",
	      "to_station": "%",
	      "text": "Hello world 1",
	      "create_date": "2021-06-17 16:09:11",
	      "valid_until": "2021-06-24 16:09:11",
	      "time_to_send": "2021-06-17 16:09:11",
	      "submit_report_requested": true,
	      "delivery_report_requested": true,
	      "view_report_requested": true,
	      "tags": [
	        {
	          "name": "Type",
	          "value": "SMS:TEXT"
	        }
	      ]
	    },
	    {
	      "message_id": "ba782a64-05cd-8ba8-9f4c-e8597ca30b59",
	      "from_connection": "http_user@localhost",
	      "from_address": "+36202222222",
	      "from_station": "%",
	      "to_connection": "http_user@localhost",
	      "to_address": "http_user",
	      "to_station": "%",
	      "text": "Hello world 2",
	      "create_date": "2021-06-17 16:09:11",
	      "valid_until": "2021-06-24 16:09:11",
	      "time_to_send": "2021-06-17 16:09:11",
	      "submit_report_requested": true,
	      "delivery_report_requested": true,
	      "view_report_requested": true,
	      "tags": [
	        {
	          "name": "Type",
	          "value": "SMS:TEXT"
	        }
	      ]
	    }
	  ]
	}
}
	

Kako prejemati SMS sporočila s Kotlinom z uporabo SMS API-ja in zgornjega primernega projekta (Video vadnica)

Ta video vam pokaže, kako prenesti in uporabiti projekt ReceiveSms.kt. Ko odprete primer projekta, boste morda opazili, da obstaja paket z imenom Ozeki.Libs.Rest. To je paket, ki vsebuje MessageApi in vse, kar potrebujete za prejemanje SMS sporočil s Kotlinom.

Video 2 - Kako prejemati SMS sporočila z zgornjo kodo Kotlin (Video vadnica)
Zaključek

Ta vodič je bil napisan, da prikaže korake za prejemanje SMS-ov v Kotlinu z uporabo HTTP uporabnika Ozeki SMS Gateway. Ta rešitev vam pomaga zbirati sporočila, ki jih prejmete v mapi »Prejeto«, in jih premakniti v vaš Kotlin program. Z uporabo te rešitve lahko ohranite svoj sistem sporočil organiziran, kot ste načrtovali.

To je šele začetek, več o upravljanju s sporočili lahko izveste na spletni strani Ozeki. Da ostanete učinkoviti in na tekočem, razvrstite sporočila in preberite naslednji članek o Kako izbrisati SMS v Kotlinu.

Pripravimo se na delo, nastavite Ozeki SMS Gateway zdaj!

More information