https://d226lax1qjow5r.cloudfront.net/blog/blogposts/how-to-send-sms-messages-with-python-flask-and-vonage/python-flash_sms.png

Python、Flask、VonageでSMSメッセージを送信する方法

最終更新日 November 1, 2023

所要時間:16 分

今日、ほとんどの人がSMSを使っている。テキストメッセージは、友人とチャットしたり、重要な最新情報を入手したり、2FAのような基本的なセキュリティタスクを処理したりするシンプルで便利な方法を提供します。もしあなたが開発者なら、Pythonは同じようなシンプルさと利便性を提供し、世界で最も人気のあるプログラミング言語の1つとなっている。

では、この2つの方法を一緒にして、Pythonを使ってSMSメッセージを送るのはどうだろう?

このチュートリアルでは、PythonとFlaskを使ってSMSを送信する方法を紹介します。アプリケーションを作成するための優れた出発点となる小さなコードサンプルを用意しました。

Vonage API アカウント

Python SMSアプリを作成するには、Vonage APIアカウントが必要です。Vonage Messages API を使うには メッセージ APIを使うには アプリケーションを作成する必要があります。

開く API設定.API keysタブの下に、APIキーとAccount secret(APIシークレット)があります。これらの認証情報は後で使用します。

Vonage Application SettingsVonage Application Settings

Vonage Python SDKのインストール

まず、ラップトップ/サーバーに Python 3がインストールされていることを確認してください。その後、venv を使って必要なパッケージだけの隔離された環境を作ります。

インストール virtualenvpip 経由で。

pip install virtualenv

仮想環境を作る

python3 -m venv venv

仮想環境をアクティブにする

source venv/bin/activate

インストール Vonage Python SDK

pip install vonage

Python言語シェルREPLの実行

python

インポート Vonage Python SDK

import vonage

再利用可能で、Vonage API キーとその秘密を知っている Vonage Client オブジェクトを作成します。

client = vonage.Client(key='YOUR-VONAGE-API-KEY', secret='YOUR-VONAGE-API-SECRET')

使用方法 send_message methodを使ってSMSを送信します。Vonage API "を関連するSender ID (SMS送信者名)に置き換えることができます。

client.sms.send_message({"from": "Vonage APIs", "to": "**6**84**7*", "text": "A text message sent using the Vonage SMS API"})

期待される出力

{'messages': [{'to': '**6**84**7*', 'message-id': '59a00000-1c17-40c9-40c9-5ebc****4196', 'status': '0', 'remaining-balance': '**.12347500', 'message-price': '0.03430000', 'network': '2**0*'}], 'message-count': '1'}

以下の情報を解析できる辞書を受け取る:メッセージは正常に送信されたか?ステータス":"0 "は、すべて正常であることを意味します。SMSは何通に分割されましたか?メッセージの送信にいくらかかりましたか?SMSのシンボル数と受信者の国によって異なります。

携帯電話の通知を確認すると、SMSメッセージが届いているはずです。そうでない場合は、応答内容を確認してください。

Screenshot of an SMS message sent with the Vonage SMS APIScreenshot of an SMS message sent with the Vonage SMS API

SMS配信の監視とトラブルシューティングは、Vonage APIダッシュボード Vonage APIダッシュボード

PythonとFlaskでSMS送信者を作成する

FlaskとPythonを使って、SMSを送信する小さなWebアプリケーションを作ってみましょう。このアプリケーションには、電話番号とSMSメッセージを入力するフォームが必要です。ユーザが "Send SMS" を押すと、Vonage SMS API を使って SMS を送信する 2 番目のビューに投稿されます。server.py ファイルを作成し、関連するコードをそこに貼り付けます。

from dotenv import load_dotenv
from flask import Flask, flash, redirect, render_template, request, url_for
import vonage

from os import environ as env

# Load environment variables from a .env file:
load_dotenv('.env')

# Load in configuration from environment variables:
VONAGE_API_KEY = env['VONAGE_API_KEY']
VONAGE_API_SECRET = env['VONAGE_API_SECRET']
VONAGE_NUMBER = env['VONAGE_NUMBER']

# Create a new Vonage Client object:
client = vonage.Client(
   key=VONAGE_API_KEY, secret=VONAGE_API_SECRET
)

# Initialize Flask:
app = Flask(__name__)
app.config['SECRET_KEY'] = env['FLASK_SECRET_KEY']

@app.route('/')
def index():
   """ A view that renders the Send SMS form. """
   return render_template('index.html')

@app.route('/send_sms', methods=['POST'])
def send_sms():
   """ A POST endpoint that sends an SMS. """
   # Extract the form values:
   to_number = request.form['to_number']
   message = request.form['message']
   # Send the SMS message:
   result = client.sms.send_message({
       'from': VONAGE_NUMBER,
       'to': to_number,
       'text': message,
   })
   # Redirect the user back to the form:
   return redirect(url_for('index'))

でテンプレートを作成してみましょう。 templates/index.html次のHTMLは、Bootstrap CSSフレームワークを含み、2つのフィールドを持つフォームをレンダリングします: to_number送信先の電話番号と messageユーザーがSMSメッセージを入力できるようにします。

<!doctype html>
<html lang="en">
   <head>
       <!-- Required meta tags -->
       <meta charset="utf-8">
       <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  
       <!-- Bootstrap CSS -->
       <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.3.1/dist/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
  
       <title>Send an SMS</title>
     </head>
<body>
<script src="https://code.jquery.com/jquery-3.5.0.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.14.7/dist/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.3.1/dist/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
<div class="container">
   <h1>Send an SMS</h1>
   <form action="/send_sms" method="POST">
       <div class="form-group"><label for="destination">Phone Number</label>
           <input id="to_number" class="form-control" name="to_number" type="tel" placeholder="Phone Number" /></div>
       <div class="form-group"><label for="message">Message</label>
           <textarea id="message" class="form-control" name="message" placeholder="Your message goes here"></textarea></div>
       <button type="submit" class="btn btn-primary">Send SMS</button>
   </form>
</div>
</body>
</html>

このチュートリアルでは、python-dotenv ライブラリを使って .envファイルをロードします。サーバを起動する前に、設定を .envファイルで設定する必要があります。以下から始めて、詳細を記入してください:

# Do not use this in production: FLASK_DEBUG=true # Replace the following with any random value you like: FLASK_SECRET_KEY=RANDOM-STRING_CHANGE-THIS-Ea359 # Sender ID (or SMS sender name), VONAGE_BRAND_NAME VONAGE_NUMBER=Vonage APIs # Get the following from ${CUSTOMER_DASHBOARD_URL}/settings VONAGE_API_KEY=paste-your-api-key VONAGE_API_SECRET=paste-your-api-secret

作成する requirements.txtを作成し、関連する依存関係を このファイル

以下のコマンドでアプリを起動する。

FLASK_APP=server.py flask run

オープン http://localhost:5000/をブラウザで開き、"Send an SMS Using the Python Application "の章に移動します。

コードソースからのデプロイ

あるいは、用意されたコード・サンプルを使ってアプリケーションをデプロイすることもできる。アプリケーションをデプロイするには、レポジトリをクローンする必要があります。 gitを使用してリポジトリをクローンし .envを更新します。

ソースコードをクローンする。

git clone https://github.com/obvonage/tutorial-sms-flask-python-sdk

プロジェクトフォルダーに移動する。

cd tutorial-sms-flask-python-sdk

依存関係をインストールします。

pip install -r requirements.txt

以下のコマンドでアプリを起動する。

FLASK_APP=server.py flask run

期待される出力

* Serving Flask app 'server.py' * Debug mode: on WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Running on http://127.0.0.1:5000 Press CTRL+C to quit * Restarting with stat * Debugger is active! * Debugger PIN: 648-303-150

次に http://localhost:5000/をブラウザで開くと、次のウェブページが表示されます。

Pythonアプリケーションを使ってSMSを送信する

Python App for Sending SMS Using Vonage Python SDKPython App for Sending SMS Using Vonage Python SDK

このインターフェイスを使ってSMSを送信してみましょう。Numbersが国際形式であることを確認してください。SMSを送信 "をクリックし、携帯電話を確認してください!このアプリケーションのソースコードは こちら.

まとめ

おめでとうございます!これでSMSを送信するアプリケーションができました。また Vonage メッセージ APIを使用して、Viber Business Messages、Facebook Messenger、WhatsApp でメッセージを送信することもできます。

私たちにできることをお知らせください!私たちの VonageコミュニティSlackまたは ツイッター.

続きを読む

シェア:

https://a.storyblok.com/f/270183/400x409/b965ab37c0/oleksii-borysenko.png
Oleksii Borysenkoヴォネージの卒業生

Vonageのデベロッパー・アドボケイト、作家、ストーリーテラー。AI/ML、ユニファイド・コミュニケーション、教育技術、クラウド技術、オープンソースに関心を持つ。