Jak wysłać SMS z Python flask

Najprostszym sposobem wysyłania SMS z Python flask 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ść 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 python flask
Rysunek 1 - Jak wysłać SMS z Python flask

Kod Python do wysyłania SMS na telefon

Poniższy przykładowy kod Python do wysyłania SMS demonstruje, jak możesz wysyłać SMS przy użyciu interfejsu HTTP REST SMS API Ozeki SMS Gateway z wykorzystaniem biblioteki Python ozekilibsrest. Ta biblioteka jest dostarczana bezpłatnie i możesz jej używać oraz modyfikować w dowolnych swoich projektach.

SendSms.py

		from flask import Flask, render_template, request
		from ozekilibsrest import Configuration, Message, MessageApi
		app = Flask(__name__)
		
		configuration = Configuration(
		    username="http_user",
		    password="qwe123",
		    api_url="http://127.0.0.1:9509/api"
		)
		
		api = MessageApi(configuration)
		
		logs = []
		
		
		@app.route('/', methods=['GET', 'POST'])
		def index():
		    if request.method == 'POST':
		        message = Message(
		            to_address=request.form['to_address'],
		            text=request.form['text']
		        )
		        log = api.send(message)
		        logs.append(log)
		    return render_template('SendSms.html', logs=logs)
		
		
		if __name__ == '__main__':
		    app.run()
	

Kod 1 - SendSms.py

SendSms.html

		<!DOCTYPE html>
		<html lang="en">
		    <head>
		        <meta charset="UTF-8">
		        <title>Wyślij SMS z Ozeki SMS Gateway</title>
		        <link rel="stylesheet"
		        href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
		        integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"
		        crossorigin="anonymous">
		    </head>
		    <body>
		        <form action="/" method="POST" class="form-group" style="width: 40%;
		        margin-top: 10vh; margin-left: 30%;
		        display: flex; flex-direction: column;
		        height: 30vh; justify-content: space-evenly;">
		            <b>Adres odbiorcy:</b>
		            <input class="form-control" type="text"
		                   name="to_address" placeholder="+36201111111"
		                   autocomplete=false>
		            <b>Treść:</b>
		            <input class="form-control"
		                   type="text" name="text"
		                   placeholder="Hello world!"
		                   autocomplete=false>
		            <input class="btn btn-primary"
		                   style="font-weight: 600;"
		                   type="submit"
		                   name="submit"
		                   value="WYŚLIJ">
		        </form>
		        <ul style="width: 40%; margin-left: 30%; height: 40vh; overflow-y: scroll;"
		            class="list-group card">
		            <li class="list-group-item card"><b>Logi:</b></li>
		            {% if logs %}
		                {%for log in logs%}
		                    <li class="list-group-item">{{ log }}</li>
		                {%endfor%}
		            {% endif  %}
		        </ul>
		    </body>
		</html>
	

Kod 2 - SendSms.html

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

Ten przykład wysyłania SMS w Python flask może być używany w dowolnej aplikacji Python. Aby go użyć, musisz zainstalować pakiet ozekilibsrest za pomocą polecenia pip install ozekilibsrest oraz pakiet flask za pomocą polecenia pip install flask. Po zainstalowaniu pakietów musisz dodać dyrektywę from ozekilibsrest import Configuration, Message, MessageApi oraz from flask import Flask, render_template, request w sekcji nagłówka Twojego kodu źródłowego Python. To pozwoli Ci używać klas dostarczanych przez bibliotekę ozekilibsrest. Możesz użyć klasy Message do tworzenia SMS. Możesz użyć klasy MessageApi do wysyłania SMS do bramki SMS. Bramka SMS przekaże Twoją wiadomość do sieci komórkowej albo poprzez połączenie bezprzewodowe, albo przez Internet.

Pobierz SendSms.py

Kod źródłowy omówiony w tym artykule można pobrać, używać i modyfikować bezpłatnie.
Pobierz: SendSms.py.zip (1.42Kb)

Co znajduje się w folderze SendSms.py?

Folder SendSms.py zawiera skrypt przykładu SMS w Python, który pokaże Ci, jak wysyłać wiele wiadomości SMS przy użyciu Python.

katalog send sms py
Rysunek 2 - Co znajduje się w SendSms.py.zip

Jak zainstalować bibliotekę ozekilibsrest

Aby zainstalować bibliotekę ozekilibsrest, musisz otworzyć wiersz poleceń i użyć następującego polecenia. To zainstaluje bibliotekę ozekilibsrest oraz jej zależności.

		pip install ozekilibsrest
	

Kod 3 - Polecenie do zainstalowania biblioteki ozekilibsrest

Jak zainstalować bibliotekę flask

Aby zainstalować bibliotekę flask, musisz otworzyć wiersz poleceń i użyć następującego polecenia. To zainstaluje bibliotekę flask oraz jej zależności.

		pip install flask
	

Kod 4 - Polecenie do zainstalowania biblioteki flask

Jak wysłać SMS z Pythona (Proste wytyczne)

Aby wysłać SMS z Pythona:

  1. Pobierz i zainstaluj Pythona
  2. Zainstaluj bibliotekę ozekilibsrest za pomocą pip lub codna
  3. Zainstaluj bibliotekę flask za pomocą pip lub codna
  4. Zainstaluj użytkownika HTTP API
  5. Włącz Logowanie zdarzeń komunikacji w zakładce Zaawansowane
  6. Pobierz plik SendSMS.py
  7. Otwórz plik SendSms.py w notatniku Windows
  8. Zmień dane na swoje
  9. Uruchom aplikację Ozeki SMS Gateway
  10. Uruchom kod Pythona SendSms.py, otwierając go
  11. 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 Pythona, najpierw musisz zainstalować Ozeki SMS Gateway. Bramka SMS może być zainstalowana na tym samym komputerze, na którym tworzysz swój kod w Pythonie w Python IDLE lub Notatniku. Po instalacji kolejnym krokiem jest podłączenie Ozeki SMS Gateway do sieci komórkowej. Możesz utworzenie użytkownika HTTP SMS API. Utwórz użytkownika z nazwą "User1" i hasłem "qwe123", aby przykład działał bez modyfikacji.

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

URL API HTTP do wysyłania SMS z Pythona

Aby wysłać SMS z Pythona, Twój Python będzie musiał wysłać żądanie HTTP do bramki SMS. URL API jest pokazany poniżej. Pamiętaj, ż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 Python, 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 z Pythona

Aby uwierzytelnić klienta SMS w Pythonie, 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 Pythonie możesz użyć następującego kodu do wykonania tego kodowania:

		def create_authorization_header(username, password):
		    username_password = f'{ username }:{ password }'
		    return f'Basic { b64encode(username_password.encode()).decode() }'
	

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 z Pythona

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

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

Żądanie HTTP do wysyłania SMS z Pythona

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

		POST /api?action=sendmsg HTTP/1.1
		Connection: Keep-Alive
		Content-Length: 336
		Content-Type: application/json
		Authorization: Basic aHR0cF91c2VyOnF3ZTEyMw==
		Host: 127.0.0.1:9509
		
		{
		  "messages": [
		    {
		      "message_id": "b570dbae-3a05-456d-9dad-a02161b16f1c",
		      "to_address": "+36201111111",
		      "text": "Hello, World!",
		      "create_date": "2021-06-11 11:20:02",
		      "valid_until": "2021-06-18 11:20:02",
		      "time_to_send": "2021-06-11 11:20:02",
		      "submit_report_requested": true,
		      "delivery_report_requested": true,
		      "view_report_requested": true,
		      "tags": []
		    }
		  ]
		}
	

Odpowiedź HTTP otrzymana przez przykład SMS w Pythonie

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

		HTTP/1.1 200 OK
		User-Agent: OZEKI 10.3.116 (www.myozeki.com)
		Content-Type: application/json; charset=utf8
		Last-Modified: Fri, 11 Jun 2021 11:17:49 GMT
		Server: 10/10.3.116
		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": "b570dbae-3a05-456d-9dad-a02161b16f1c",
		        "from_station": "%",
		        "to_address": "+36201111111",
		        "to_station": "%",
		        "text": "Hello, World!",
		        "create_date": "2021-06-11 11:20:02",
		        "valid_until": "2021-06-18 11:20:02",
		        "time_to_send": "2021-06-11 11:20:02",
		        "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 już zainstalowałeś Ozeki SMS Gateway i podłączyłeś go do sieci komórkowej. Aby móc wysyłać SMS-y na telefon komórkowy z Pythona, musisz skonfigurować konto użytkownika HTTP API w Ozeki SMS Gateway.

Utwórz nowego użytkownika (Samouczek wideo)

Ten film pokazuje, jak skonfigurować nowe konto użytkownika HTTP API. Zaczyna się od strony głównej Ozeki SMS Gateway i kończy na zakładce Zdarzenia nowego użytkownika. Film pokaże, jak utworzyć i skonfigurować nowego użytkownika. Najlepsze w tym filmie jest to, że trwa tylko 30 sekund, a zawiera wszystkie informacje potrzebne do utworzenia nowego użytkownika HTTP API.

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

Jak wysłać SMS z Pythona za pomocą Python SMS API (Samouczek wideo)

Ten film pokazuje, jak pobrać plik SendSms.py.zip z tej strony oraz jak otworzyć zawartość dołączonego pliku w dowolnym edytorze tekstu, takim jak Windows Notepad. Jeśli obejrzysz film, zauważysz, że zawartość SendSms.py.zip jest umieszczana na pulpicie Windows.

Wideo 2 - Jak pobrać i otworzyć przykładowy projekt (Samouczek wideo)

Przykład SMS w Pythonie: SendSms.py

Poniższy przykładowy kod jest częścią pliku SendSms.py.zip.

jak wysłać sms za pomocą skryptu python
Rysunek 3 - SendSms.py

Aby wysłać SMS za pomocą powyższego przykładowego projektu, musisz uruchomić skrypt Pythona za pomocą polecenia python SendSms.py. Po uruchomieniu skryptu zauważysz, że w wierszu poleceń pojawi się informacja, że należy otworzyć adres http://127.0.0.1:5000. Tam zobaczysz swój pierwszy projekt w Python Flask, który może wysłać wiadomość SMS do Ozeki SMS Gateway.

uruchamianie skryptu sendsms python
Rysunek 4 - Wynik działania skryptu SendSms.py

wynik skryptu python
Rysunek 5 - Strona internetowa SendSms.html

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

Po wysł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 Ozeki SMS Gateway. Poniższy film pokazuje, na co zwrócić uwagę. Film zaczyna się od otwartego kodu i kończy na szczegółach wysłanej wiadomości. Dowiesz się, jak uruchomić projekt, jak wygląda projekt podczas działania i jak wygląda plik dziennika po jego zakończeniu. Film trwa tylko 42 sekundy i jest łatwy do zrozumienia. Nie będziesz miał problemu z jego śledzeniem.

Wideo 3 - Jak wysłać SMS za pomocą powyższego skryptu Pythona (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 wysłanej wiadomości.

Sprawdź, czy żądanie zostało zaakceptowane (Samouczek wideo)

W poniższym filmie zobaczysz, jak sprawdzić, czy klient SMPP pomyślnie wysłał Twoją wiadomość. Dowiesz się, jak otworzyć zakładkę Zdarzenia użytkownika SMPP i na co zwrócić uwagę. Film trwa tylko 18 sekund, ale będzie bardzo pomocny.

Wideo 4 - Jak sprawdzić, czy żądanie zostało zaakceptowane przez klienta SMPP (Samouczek wideo)

SMS odebrany na telefonie (Samouczek wideo)

Na poniższym filmie zobaczysz, jak wygląda przychodząca wiadomość wysłana z Ozeki SMS Gateway. Zaczyna się od ekranu głównego telefonu z Androidem i kończy na otwartej wiadomości. Trwa tylko 18 sekund i możesz zobaczyć cały proces odbierania wiadomości.

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

Podsumowanie

Powyższy przewodnik wyjaśnił kroki wysyłania SMS-ów z Pythona Flask. Jak widać, Ozeki zapewnia wszystkie narzędzia potrzebne do dostarczania wiadomości, więc jeśli kroki zostały dokładnie wykonane, wysyłanie wiadomości z Pythona nie jest już problemem. Ozeki SMS Gateway odgrywa ogromną rolę w dostarczaniu wiadomości – bez tego programu nie można dotrzeć do użytkowników mobilnych. Warto zauważyć, że Ozeki SMS Gateway działa w każdym kraju, więc wiadomości można wysyłać międzynarodowo za pomocą tego rozwiązania.

Nie kończ czytania tutaj, przejrzyj stronę z tutorialami Ozeki i dowiedz się więcej o odbieraniu SMS-ów w Pythonie.

Następnym krokiem jest pobranie Ozeki SMS Gateway i rozpoczęcie pracy!

More information