Jak wysłać SMS z Scali

Najprostszym sposobem na wysłanie SMS-a z Scali jest użycie wbudowanego interfejsu HTTP/Rest SMS API Ozeki SMS Gateway. Kiedy używasz tego API, będziesz wysyłać wiadomości SMS poprzez wysłanie żądania HTTP Post do bramki SMS. Żądanie HTTP Post będzie zawierać wiadomość sformatowaną w formacie json. Bramka SMS wyśle tę wiadomość SMS na telefon odbiorcy i zwróci odpowiedź HTTP 200 OK na twoje żądanie.

jak wysłać sms z scali
Rysunek 1 - Jak wysłać SMS z Scali

Kod Scali do wysyłania SMS-ów na telefon

Poniższy przykładowy kod SMS w Scali demonstruje, jak możesz wysyłać SMS-y używając interfejsu HTTP REST SMS API Ozeki SMS Gateway z biblioteką Ozeki.Libs.Rest dla Scali. Ta biblioteka jest dostarczana bezpłatnie i możesz jej używać oraz modyfikować w dowolnym z twoich projektów.

SendSms.scala
import Ozeki.Libs.Rest.{ Configuration, Message, MessageApi }


object main  {
  def main(args: Array[String]): Unit = {
      
    val configuration = Configuration(
      Username = "http_user",
      Password = "qwe123",
      ApiUrl = "http://127.0.0.1:9509/api"
    )

    val msg = Message(
        ToAddress = "+36201111111",
        Text = "Hello world!"
    )

    val api = MessageApi(configuration)

    val result = api.Send(msg)

    println(result)
  }
}
	

Kod 1 - SendSms.scala

Jak używać przykładu SMS w Scali:

Ten przykład SMS w Scali może być użyty w dowolnej aplikacji Scala. Aby go użyć, musisz pobrać bibliotekę Ozeki.Libs.Rest. Po pobraniu biblioteki, trzeba dodać do niej referencję w twoim kodzie źródłowym Scali. To pozwoli ci używać klas dostarczonych przez bibliotekę Ozeki.Libs.Rest. Możesz użyć klasy Message do stworzenia SMS-a. Możesz użyć klasy MessageApi, aby wysłać SMS do bramki SMS. Bramka SMS przekaże twoją wiadomość do sieci komórkowej albo przez połączenie bezprzewodowe, albo przez Internet.

Pobierz SendSms.scala

Kod źródłowy omówiony w tym artykule może być pobrany, użyty i zmodyfikowany bezpłatnie.
Pobierz: SendSms.scala.zip (96.4Kb)

Co znajduje się w pliku SendSms.scala.zip?

W pliku SendSms.scala.zip znajdziesz projekt InteliJ z folderem źródłowym i w folderze źródłowym (src) możesz znaleźć bibliotekę Ozeki.Libs.Rest oraz plik main.scala, który zawiera przykładowy kod pokazujący, jak wysłać SMS. Ten przykładowy kod jest wymieniony poniżej.

Rysunek 2 - Co znajduje się w SendSms.scala.zip

Jak wysłać SMS z Scali (Proste wskazówki)

Aby wysłać SMS z Scali:

  1. Zainstaluj użytkownika HTTP API
  2. Włącz Logowanie zdarzeń komunikacyjnych na karcie Zaawansowane
  3. Skonfiguruj Visual Studio
  4. Pobierz, a następnie rozpakuj plik SendSms.scala.zip
  5. Otwórz projekt SendSms.scala w IDE InteliJ
  6. Uruchom aplikację Ozeki SMS Gateway
  7. Uruchom kod Scali SendSend.scala, wykonując go w IDE IntelliJ
  8. Sprawdź logi, aby zobaczyć, czy SMS został wysłany

Zainstaluj Ozeki SMS Gateway i utwórz użytkownika HTTP API

Aby móc wysyłać SMS-y z Scali, najpierw musisz zainstalować Ozeki SMS Gateway. Bramka SMS może być zainstalowana na tym samym komputerze, na którym tworzysz swój kod Scali w dowolnym edytorze tekstu, takim jak Windows Notepad. Po instalacji następnym krokiem jest podłączenie Ozeki SMS Gateway do sieci komórkowej. Możesz wysłać testowego SMS-a z interfejsu Ozeki, aby sprawdzić, czy twoje połączenie z siecią komórkową działa. Ostatnim krokiem przygotowania środowiska jest utworzenie użytkownika HTTP SMS API. Utwórz użytkownika z nazwą "http_user" i hasłem "qwe123", aby przykład działał bez modyfikacji.

Po skonfigurowaniu środowiska możesz uruchomić swój kod Scali.

URL API HTTP do wysyłania SMS-ów z Scali

Aby wysłać SMS z Scali, twoja aplikacja Scala będzie musiała wysłać żądanie HTTP do bramki SMS. URL API jest pokazany poniżej. Zauważ, że adres IP (127.0.0.1) powinien zostać zastąpiony adresem IP twojej bramki SMS. Jeśli Ozeki SMS Gateway jest zainstalowany na tym samym komputerze, na którym działa aplikacja SMS w Scali, może to być 127.0.0.1. Jeśli jest zainstalowany na innym komputerze, powinien to być adres IP tego komputera.

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

Uwierzytelnianie HTTP do wysyłania SMS-ów z Scali

Aby uwierzytelnić klienta SMS w Scali, musisz wysłać nazwę użytkownika i hasło w zakodowanym ciągu base64 do serwera w żądaniu HTTP. Używany format to: base64(nazwa_użytkownika+":"+hasło). W Scali możesz użyć następującego kodu, aby wykonać to kodowanie:

val usernamePassword = "%s:%s".format(Username, Password).getBytes()
val usernamePasswordEncoded = Base64.getEncoder.encodeToString(usernamePassword)
"Basic %s".format(usernamePasswordEncoded)
	

Na przykład, jeśli zakodujesz nazwę użytkownika 'http_user' i hasło 'qwe123', otrzymasz następujący zakodowany ciąg base64: aHR0cF91c2VyOnF3ZTEyMw==. Aby wysłać

Nagłówek żądania HTTP do wysyłania SMS-ów z Scali

Aby wysłać wiadomości SMS, musisz uwzględnić następujące linie jako nagłówki w żądaniu HTTP. Zauważ, że zawieramy typ zawartości i nagłówek Authorization.

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

Żądanie HTTP do wysłania SMS-a z Scali

Aby przesłać SMS, Twoja aplikacja Scala wyśle żądanie HTTP podobne do poniższego. Zauważ, że to żądanie zawiera część nagłówka HTTP i część ciała HTTP. Ciało HTTP to ciąg danych zakodowany w formacie JSON. Zawiera numer odbiorcy i tekst wiadomości.

POST /api?action=sendmsg HTTP/1.1
HTTP2-Settings: AAEAAEAAAAIAAAABAAMAAABkAAQBAAAAAAUAAEAA
Connection: Upgrade, HTTP2-Settings
Upgrade: h2c
Content-Length: 327
Content-Type: application/json
Accept: application/json
Authorization: Basic aHR0cF91c2VyOnF3ZTEyMw==
Host: 127.0.0.1:9509
User-Agent: Java-http-client/16.0.1

{
	"messages": [
		{
			"message_id":"2f8aa62a-bdad-436b-a824-2aba0a79c39f",
			"to_address":"+36201111111",
			"text":"Hello world!",
			"create_date":"2021-07-15T08:59:28",
			"valid_until":"2021-07-22T08:59:28",
			"time_to_send":"+1000000000-01-01T00:00:00",
			"submit_report_requested":true,
			"view_report_requested":true,
			"delivery_report_requested":true
		}
	]
}
	

Odpowiedź HTTP otrzymana przez przykład SMS w Scali

Gdy brama SMS otrzyma to żądanie, wygeneruje odpowiedź HTTP. Odpowiedź HTTP będzie zawierać kod statusu, aby wskazać, czy żądanie wysłania SMS-a zakończyło się sukcesem, czy nie. Zwróci również strukturę zakodowaną w JSON, aby dostarczyć przydatne informacje o przesłaniu wiadomości.

HTTP/1.1 200 OK
User-Agent: OZEKI 10.3.123 (www.myozeki.com)
Content-Type: application/json; charset=utf8
Last-Modified: Thu, 15 Jul 2021 08:08:03 GMT
Server: 10/10.3.123
Transfer-Encoding: chunked

{
	"http_code": 200,
	"response_code": "SUCCESS",
	"response_msg": "Messages queued for delivery.",
	"data": {
	  "total_count": 1,
	  "success_count": 1,
	  "failed_count": 0,
	  "messages": [
	    {
	      "message_id": "2f8aa62a-bdad-436b-a824-2aba0a79c39f",
	      "from_station": "%",
	      "to_address": "+36201111111",
	      "to_station": "%",
	      "text": "Hello world!",
	      "create_date": "2021-07-15 08:59:28",
	      "valid_until": "2021-07-22 08:59:28",
	      "time_to_send": "2021-07-15 08:59:28",
	      "submit_report_requested": true,
	      "delivery_report_requested": true,
	      "view_report_requested": false,
	      "tags": [
	        {
	          "name": "Type",
	          "value": "SMS:TEXT"
	        }
	      ],
	      "status": "SUCCESS"
	    }
	  ]
	}
}
	

Podłącz swoją bramkę SMS do sieci komórkowej i utwórz konto użytkownika HTTP API

Zakładamy, że masz już zainstalowaną bramkę SMS Ozeki i podłączoną do sieci komórkowej. Aby móc wysyłać SMS-y na telefon komórkowy z Scali, musisz skonfigurować konto użytkownika HTTP API w bramce SMS Ozeki.

Wideo 1 - Jak skonfigurować konto użytkownika HTTP API (Samouczek wideo)

Jak wysłać SMS z Scali przy użyciu API SMS w Scali (Samouczek wideo)

To wideo pokazuje, jak pobrać plik SendSms.scala.zip z tej strony. Jeśli obejrzysz wideo, zauważysz, że zawartość SendSms.scala zip jest umieszczana na pulpicie Windows. Zobaczysz również, że uruchamiamy wiersz poleceń, aby wysłać SMS.

Przykład SMS w Scali: SendSms.scala

Poniższy przykładowy kod jest częścią SendSms.scala.

przykładowy kod do wysyłania sms przy użyciu scali
Rysunek 3 - Plik SendSms.scala

Jak sprawdzić, czy SMS został zaakceptowany przez użytkownika HTTP

Po przesłaniu SMS-a warto sprawdzić w bramce SMS, co otrzymała. Możesz sprawdzić log, otwierając szczegóły użytkownika HTTP w konsoli zarządzania bramką SMS Ozeki. Poniższe wideo pokazuje, na co zwrócić uwagę.

Wideo 3 - Jak sprawdzić, czy SMS został zaakceptowany przez użytkownika HTTP (Samouczek wideo)

Jak sprawdzić, czy SMS został wysłany do sieci komórkowej

Ostatnim krokiem weryfikacji procedury jest sprawdzenie logów połączenia z siecią komórkową. Może być konieczne włączenie logowania w konfiguracji połączenia przed wysłaniem wiadomości, aby zobaczyć logi. Jeśli logowanie jest włączone, zobaczysz numer telefonu i tekst wiadomości, którą wysłałeś.

Wideo 4 - Jak sprawdzić, czy SMS został wysłany do sieci komórkowej (Samouczek wideo)

Otrzymywanie wiadomości SMS na telefonie z Androidem

W tym filmie zobaczysz, jak wygląda otrzymywanie SMS-a na telefonie z Androidem. Film rozpocznie się od zwykłej strony głównej Androida, a następnie zobaczysz, jak pojawia się powiadomienie o SMS-ie i jak można otworzyć pełną wiadomość. Film trwa tylko 18 sekund i warto go obejrzeć, ponieważ zobaczysz cały proces odbierania SMS-a.

Wideo 5 - Jak wygląda odbieranie wiadomości SMS na telefonie komórkowym (Samouczek wideo)

Podsumowanie

Ten artykuł miał na celu pokazanie kroków wysyłania SMS-ów w Scala z pomocą Ozeki SMS Gateway. Jeśli kroki zostały wykonane starannie, wysyłanie wiadomości za pomocą kodu w Scala i Ozeki SMS Gateway nie powinno stanowić problemu. Ozeki SMS Gateway pozwala na logowanie wiadomości SMS w bazie danych i oferuje kilka funkcji raportowania, aby dostarczyć więcej informacji na temat komunikacji SMS.

Kontynuuj czytanie na stronie samouczków Ozeki, gdzie można znaleźć więcej interesujących artykułów na tematy takie jak planowanie SMS-ów w Scala.

Jedyne, co teraz pozostaje, to pobrać Ozeki SMS Gateway i zacząć pracę!

More information