Jak zaplanować wysłanie SMS w Python flask

Najprostszym sposobem na wysłanie zaplanowanego SMS z Pythona 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 zaplanować wysłanie sms w python flask
Rysunek 1 - Jak zaplanować wysłanie SMS w Python flask

Kod Python do wysyłania zaplanowanych SMS na telefon

Przykładowy kod Python do wysyłania SMS poniżej demonstruje, jak możesz wysyłać zaplanowane 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 dowolnym z Twoich projektów.

SendScheduledSms.py

		from flask import Flask, render_template, request
		from ozekilibsrest import Configuration, Message, MessageApi
		from datetime import datetime
		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'],
		            time_to_send=datetime.strptime(request.form.get('time_to_send'),
		            "%Y-%m-%d %H:%M:%S")
		        )
		        log = api.send(message)
		        logs.append(log)
		    return render_template('SendScheduledSms.html', logs=logs)
		
		
		if __name__ == '__main__':
		    app.run()
	

Kod 1 - SendScheduledSms.py

SendScheduledSms.html

		<!DOCTYPE html>
		<html lang="en">
		    <head>
		        <meta charset="UTF-8">
		        <title>Wyślij zaplanowany 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: 40vh;
		        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>
		            <b>Czas wysłania:</b>
		            <input class="form-control"
		                   type="text" name="time_to_send"
		                   placeholder="2021-08-06 16:30:00"
		                   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: 38vh; 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 - SendScheduledSms.html

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

Ten przykład SMS w Python może być używany w dowolnej aplikacji Python. Aby go użyć, musisz zainstalować pakiet ozekilibsrest za pomocą polecenia pip install ozekilibsrest. Po zainstalowaniu pakietu musisz umieścić dyrektywę from ozekilibsrest import Configuration, Message, MessageApi w sekcji nagłówka swojego kodu źródłowego Python. To pozwoli Ci używać klas dostarczonych 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 przez połączenie bezprzewodowe, albo przez Internet.

Pobierz SendScheduledSms.py

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

Co znajduje się w folderze SendScheduledSms.py?

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

zawartość folderu send scheduled sms py
Rysunek 2 - Co znajduje się w SendScheduledSms.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 potrzebne zależności.

		pip install ozekilibsrest
	

Kod 3 - Polecenie do zainstalowania biblioteki ozekilibsrest

Jak zainstalować bibliotekę flask

Aby zainstalować bibliotekę flask, należy otworzyć wiersz poleceń i użyć następującej komendy. Spowoduje to zainstalowanie biblioteki flask oraz wymaganych zależności.

		pip install flask
	

Kod 4 - Polecenie instalacji biblioteki flask

Jak wysłać zaplanowaną wiadomość SMS z Pythona (Szybkie kroki)

Aby wysłać zaplanowaną wiadomość SMS z Pythona:

  1. Pobierz i zainstaluj Python
  2. Zainstaluj bibliotekę ozekilibsrest za pomocą pip lub codna
  3. Pobierz plik SendScheduledSms.py.zip
  4. Wypakuj plik .zip z folderu Pobrane
  5. Otwórz plik SendScheduledSms.py w dowolnym edytorze tekstu
  6. Uruchom Ozeki SMS Gateway
  7. Utwórz użytkownika HTTP API w Ozeki
  8. Uruchom kod SendScheduledSms.py za pomocą wiersza poleceń, aby wysłać testowe wiadomości SMS
  9. Sprawdź skrzynkę Wysłane w Ozeki SMS Gateway

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

Aby móc wysyłać SMS z Pythona, najpierw należy zainstalować Ozeki SMS Gateway. Bramka SMS może być zainstalowana na tym samym komputerze, na którym tworzysz swój kod w Pythonie. Po instalacji kolejnym krokiem jest podłączenie Ozeki SMS Gateway do sieci komórkowej. Możesz utworzenie użytkownika HTTP API do wysyłania SMS. 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 w Pythonie.

URL API HTTP do wysyłania SMS z Pythona

Aby wysłać SMS z Pythona, Twój kod w Pythonie będzie musiał wysłać żądanie HTTP do bramki SMS. URL API jest pokazany poniżej. Należy zauważyć, ż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 Pythonie, 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, należy 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==.

Nagłówek żądania HTTP do wysyłania SMS z Pythona

Aby wysłać wiadomości SMS, należy uwzględnić następujące linie jako nagłówki w żądaniu HTTP. Należy zauważyć, że zawieramy nagłówek Content-Type i Authorization.

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

Żądanie HTTP do wysyłania SMS z Pythona

Aby przesłać wiadomości SMS, Twoja aplikacja w Pythonie wyśle żądanie HTTP podobne do poniższego. Należy zauważyć, że to żądanie zawiera cz Jak pobrać projekt SendScheduledSMS.py (Samouczek wideo)

W poniższym filmie dowiesz się, jak możesz wykorzystać projekt SendScheduledSms.py w Pythonie. Film rozpocznie się od strony pobierania i przeprowadzi Cię przez cały proces aż do otwarcia panelu edytora kodu. Nauczysz się, jak pobrać i otworzyć plik kodu. Film trwa tylko 34 sekundy, ale zawiera wszystkie niezbędne informacje, które pozwolą Ci skutecznie wykorzystać przykładowy plik kodu.

Wideo 1 - Jak pobrać i otworzyć powyższe rozwiązanie (Samouczek wideo)

Przykładowy kod poniżej jest częścią folderu SendScheduledSms.py.zip.

sendscheduledsms.py
Rysunek 3 - SendScheduledSms.py

Aby wysłać SMS za pomocą powyższego projektu przykładowego, musisz uruchomić skrypt Pythona za pomocą polecenia python SendSms.py. Po uruchomieniu skryptu zauważysz, że w wierszu poleceń pojawi się informacja o konieczności otwarcia adresu http://127.0.0.1:5000. Tam zobaczysz swój pierwszy projekt w Pythonie z wykorzystaniem Flask, który umożliwia wysłanie zaplanowanego SMS-a do bramki SMS Ozeki.

send scheduled sms python file
Rysunek 4 - Wynik działania skryptu SendScheduledSms.py

send scheduled sms html file
Rysunek 5 - Rezultat działania skryptu SendScheduledSms.py

Jak używać projektu (Samouczek wideo)

W poniższym klipie zobaczysz, jak można uruchomić kod Pythona SendScheduledSms.py. Film rozpocznie się od otwartego kodu i przeprowadzi Cię przez cały proces aż do zakładki zdarzeń z logiem wysłanej wiadomości. Zobaczysz, jak uruchomić kod i co się stanie, gdy kod zostanie wykonany. Film trwa nieco ponad minutę, ale zawiera wszystkie informacje niezbędne do uruchomienia projektu.

Wideo 2 - Jak używać skryptu SendScheduledSms.py (Samouczek wideo)

Podsumowanie

W tym artykule pokazano kroki wysyłania zaplanowanych SMS-ów w jednym żądaniu z Pythona.

Dzięki tej wiedzy i dostarczonym narzędziom powinieneś być w stanie dotrzeć do wielu klientów za pomocą jednego kodu. Bramka SMS Ozeki odgrywa ważną rolę w tym procesie, ponieważ ten program organizuje dostarczanie wiadomości. Bramka SMS Ozeki działa z wysoką jakością i wydajnością, umożliwiając wysyłanie do 1000 SMS-ów na sekundę.

Kontynuuj naukę na stronach samouczków Ozeki, gdzie możesz przeczytać o tematach takich jak Odbieranie SMS-ów w Pythonie.

Teraz jedyne, co musisz zrobić, to pobrać Bramkę SMS Ozeki i zacząć pracę!

More information