https://d226lax1qjow5r.cloudfront.net/blog/blogposts/receive-an-sms-with-python-dr/receive-an-sms-with-python.png

PythonでSMSメッセージを受信する方法

最終更新日 October 11, 2023

所要時間:7 分

この記事は2025年8月に更新されました。

はじめに

このチュートリアルでは、Vonage APIの助けを借りてPythonでSMSメッセージを受信する方法を紹介します。

VonageにはSMSを受信するためのAPIが2種類あります: SMS APIはSMSメッセージのみに使用され、Messages APIはWhatsAppのような他のチャンネルを使用することができます。このチュートリアルでは メッセージ APIを使います。

受信SMSメッセージは、一般にアクセス可能な ウェブフック.この記事では、そのWebhookを設定し、Vonageアカウントと接続する方法を説明します。

前提条件

受信SMSメッセージを受信するためのPythonアプリを作成するには、以下のプログラムが必要です。

パイソン

Flaskライブラリを使用するにはPythonが必要です。公式の Python ダウンロードページを参照してください。

フラスコ

使用方法 フラスコを使います。Flaskをインストールする前に、以下のようにプロジェクトディレクトリを作成し、そこに移動します:

mkdir receive_sms
cd receive_sms

Pythonと一緒にインストールされているpipパッケージマネージャを使ってFlaskをインストールすることができます。以下のターミナルコマンドを使用して、新しく作成したフォルダ内にFlaskをインストールします。

pip install flask

Vonage API

Vonage Messages APIを使用するには、Vonage APIアカウントが必要です。Vonage APIダッシュボードにアクセスし、APIキーとAPIシークレットをご確認ください。

Vonage CLI

Vonage CLI Vonage CLIパッケージを使用すると、ダッシュボードのUIで購入する代わりにVonageのバーチャル番号を購入できます。また、テストSMSを送信するために使用することができます。

以下のコマンドを実行し、ターミナルにVonage CLIをグローバルにインストールします:

npm install -g @vonage/cli

CLIでVonageの電話番号を購入するには、まずAPI認証情報を次のように設定します。 vonage config:set --apiKey=XXXXXX --apiSecret=XXXXXXで利用可能な番号を検索し vonage numbers:search [Alpha-2 Country Code]を使って購入します。 vonage numbers:buy [Number] [Country Code].

または、以下の方法で直接番号を取得することもできます。 番号購入セクションから直接取得することもできます。

Vonage APIを使ってPythonでSMSメッセージを受信する方法

Python、Flask、そして Vonage CLI のインストールに成功したら、いよいよ始めましょう。以下では、PythonがVonage APIからテキストメッセージを受信できるように、これらのツールの使い方を説明します。SMSメッセージを受信するPythonアプリケーションを作成するには、以下の4つのステップに従うだけです:

  1. SMS受信用のWebhookを作成する

  2. ウェブフックのURLを一般公開する

  3. Vonageアカウントの設定

  4. テストSMSメッセージの送受信

1.インバウンド SMS 用の Webhook を作成します。

PythonでSMSを受信するための最初のステップは、受信テキストメッセージ用のWebhookを作成することです。

VonageアカウントでSMSメッセージを受信すると、VerifyはWebhookがあるかどうかを確認します。Webhookが見つかれば、お客様のアプリケーションにメッセージを転送できます。Webhookは、単一の番号またはアカウント内のすべての番号で動作するように設定することができます。

着信メッセージを処理するために、ウェブフック・ハンドラーはリクエストを受け付けるように設計されます。 POSTリクエストを受け付けるように設計します。これを容易にするために、受信リクエストを処理する専用の Flask エンドポイントを作成します。

Flaskプロジェクトに sms-receive.pyファイルを作成し、以下のコードを追加します:

from flask import Flask, request, jsonify
  
app = Flask(__name__)
  
@app.route("/webhooks/inbound-message", methods=['POST'])
def inbound_message():
 if request.is_json:
    data = request.get_json()
    print(data)
 else:
    data = dict(request.form) or dict(request.args)
    print(data)
 return "200"
  
if __name__ == '__main__':
 app.run(host="", port=3000)

このコードがどのように機能するのか、紐解いてみよう。先ほどのコード・スニペットでは

  • という名前のウェブフックエンドポイントを定義しました。 /webhooks/inbound-message.このエンドポイントは、受信メッセージのペイロードに含まれるデータの受信と解析を行います。

@app.route("/webhooks/inbound-message", methods=['POST'])
def inbound_message():
  • この request.get_json()メソッドは、リクエストがJSON形式であるかどうかをVerifyするために使用される。リクエストがJSON形式でない場合、リクエストボディまたはURLクエリストリング内のキー/値のペアが request.formrequest.argsを使って取得される。

if request.is_json:
    data = request.get_json()
  • リクエストデータは解析され、変数 data変数に格納され print.

data = request.get_json()
print(data)

最後に、アプリケーションをポート 3000.

if __name__ == '__main__':
 app.run(host="", port=3000)

ウェブフックのURLを公開する

受信 SMS メッセージを受信するには、Python アプリケーションの webhook エンドポイントが公衆インターネット経由でアクセスできる必要があります。これによりVonageはSMSを受信するたびにエンドポイントにリクエストを出すことができます。

通常、本番モードでエンドポイントを追加するには、パブリック・ドメインのサーバーが必要です。しかし、開発モードでのテストには ngrokを使用してサーバー環境を模倣します。.

ngrokは公式サイトからダウンロードまたはインストールできる。 ウェブサイト.チェック ngrokのウェブサイトをチェックしてください。


次に、ターミナルでngrokを起動する:

ngrok http 3000

ngrokが起動すると、以下のような公開URLが生成される:

https://f9db-102-89-43-137.eu.ngrok.io -> http://localhost:80

次に、新しく生成されたngrok URLにエンドポイントを追加して、次のようにWebhook URLを形成することができます:

さて、このチュートリアルの次のセクションでアプリケーションを作成する際に、このURLが必要になります。

Vonageアカウントの設定

次に、SMSメッセージ用の正しいAPIを使用するようにVonage Accountを設定する必要があります。ここでは メッセージAPIを使用することにします。

この設定を調整するには、ダッシュボードの 設定ページに進みます。次に SMS設定セクションでMessages APIを選択します。

Select Messages API in the dashboard Settings pageMessages

次に アプリケーションページでアプリケーションを作成する。

をクリックします。 + アプリケーションの作成ボタンをクリックします。

に希望の名前を入力します。 名前フィールドに入力してください。

機能セクションで メッセージを選択し、Webhookを入力します。 受信URL.私たちの チュートリアルチュートリアルをご覧ください。 ステータスURLを設定する方法をご覧ください。

Setting webhook URLs to receive inbound messages.Messages Webhooks

クリック 新規アプリケーションの作成をクリックしてください。その後、新規作成された申請ページにリダイレクトされます。このページでは、電話番号のリンク、またはバーチャル番号の支払いができます。

4.テストSMSメッセージの送受信

これでアプリケーションは受信 SMS メッセージを受信する準備ができました!ngrokサーバーはポート 3000で実行され、Vonage アカウントのバーチャル番号でアプリケーションを設定しました。

これで、別のターミナル・ウィンドウでFlaskアプリケーションを起動し、前のターミナル・ウィンドウをngrokで実行し続けることができる。

python sms-`receive.py

このコマンドを実行すると、Flaskアプリケーションがローカルホストのポートで起動します。 3000.このポートは ngrok によって自動的に検出され、ngrok の公開 URL を使ってアプリケーションを公衆インターネットに提供できるようになります。

次のVonage CLIコマンドを使用して、端末でVonage番号にテストSMSを送信します。

curl -X "POST" "https://rest.nexmo.com/sms/json" \ -d "from=VONAGE_VIRTUAL_NUMBER" \ -d "text=Testing SMS Webhooks!" \ -d "to=YOUR_PERSONAL_NUMBER" \ -d "api_key=XXXXXXXX" \ -d "api_secret=XXXXXXXXX"

Pythonアプリケーションを実行しているターミナルウィンドウで、Webhookが受信SMSを受信したことが確認できるはずです:

{ "messages": [ { "to":"YOUR_PERSONAL_NUMBER", "message-id":"42f2dr19-f80a-1493-a6z3-3bhe27bu0465", "status":"0", "remaining-balance":"9.69450000", "message-price":"0.17430000", "network":"62130" } ],"message-count":"1" }

また、以下のスクリーンショットのようなSMSメッセージが携帯電話に届きます:

Screenshot of SMS received on mobile phoneSMS Screenshot

結論

このチュートリアルを通して、Python を使って SMS メッセージを受信するプロセスを発見しました。これで Vonage Messages API を Python アプリケーションに統合し、これらのアプリケーションで受信テキストメッセージを扱うことができるようになります。

ご質問がある場合、またはあなたが作っているものを共有したい場合は、こちらをクリックしてください。

最新の開発者向けニュース、ヒント、イベント情報をお届けします。

さらに読む

Messages APIの詳細については、Vonageのリソースをご覧ください:

  1. Messages API の概要

  2. Messages API リファレンス

  3. 連結とエンコード

  4. PythonでSMSを送信する方法

  5. PythonでSMSの受信通知を受け取る方法

シェア:

https://a.storyblok.com/f/270183/400x397/505bfb0eb9/jekayinoluwa-olabemiwo.png
Jekayinoluwa Olabemiwo

Jẹ́káyinOlúwa is a software craftsman and product manager passionate about technology and its impact on people. He works on product management, backend development, DevOps, technical writing, and community strategy. He enjoys dealing in the intersection of software, design, and human interaction. He likes reading and music.