Level up your Twilio API skills in TwilioQuest, an educational game for Mac, Windows, and Linux. Download Now

メニュー

Expand
Rate this page:

Thanks for rating this page!

We are always striving to improve our documentation quality, and your feedback is valuable to us. How could this documentation serve you better?

PythonとFlaskを使用した予定リマインダー

このウェブアプリケーションでは、Twilio を使って、近く予定されているアポイントメントを思い出させるために、テキストメッセージをお客様に送信する方法を示します。

Flask を使って、ユーザーインターフェイスをサポートするウェブアプリケーションを構築し、Celery を使って、然るべき時点でリマインダーテキストメッセージをお客様に送信します。

このチュートリアルでは、このアプリケーションを実行するための主要なコードをいくつか紹介します。コードを実行する方法については、GitHub のプロジェクトの README をお読みください。

Yelpが飲食店に対してレストランの予約確認に、いかにしてSMSを使用しているのか見てみましょう。

さぁ、はじめましょう! 下のボタンをクリックして開始します。

はじめましょう!

Twilio を使うようにアプリケーションを設定する

Twilio APIを使用して備忘録のテキストメッセージを送信できるようにする前に、アカウントの資格情報を構成することが必要です。 これらはTwilio Consoleで見つかります。 また、SMS 用の電話番号も必要です。電話番号を探すか、またはここで新しいものを購入できます。

これらの環境変数を .env ファイルに取り込み、autoenv を使って、プロジェクトを開くたびにこれを適用します。このアプリケーションの設定方法については、プロジェクトの README をお読みください。

        
        
        
        
        .env.example

        これで構成については準備ができました。 ここからは、アプリケーション構造について見ていきましょう。

        Let's look at the application structure

        アプリケーション構造

        Application オブジェクトは、Flask アプリの中核です。 アプリを初期化し、URL を設定して、すべての環境変数にプルします。

        celeryメソッドは、皆さんのFlaskアプリケーションからの設定とコンテキストを使用してCeleryを構成するためのひな型です。 今回のアプリケーションではCeleryのブローカーとしてRedisを使用します。 しかし他の利用可能なCeleryブローカーを使用することも可能です。

        Celery をマシンでローカルに実行するには、README の指示に従ってください。

              
              
              
              
              application.py

              Applicationの準備が整ったら、Appointment modelを作成しましょう。

              Let's create some appointments

              アポイントメントモデル

              アポイントメントモデルは非常にシンプルです。name および phone_number フィールドで、リマインダーの送信先を指定します。timetimezonedelta フィールドで、リマインダーをいつ送信するかを指定します。

              SQLAlchemy を使って、モデルを駆動し、一緒に使用する最適な ORM インターフェイスを提供します。

              さらに、リマインダーの送信に適した時間を設定できるよう、メソッド get_notification_time を追加しました。便利な arrow ライブラリーにより、この種の時間計算は簡単です。

                    
                    
                    
                    
                    models/appointment.py

                    アポイントメントモデル

                    models/appointment.py

                    続いて、このモデルを使用して新規Appointmentを作成し、備忘録を受け受ーリングします。

                    新しいリマインダーのスケジューリング

                    新しいリマインダーのスケジューリング

                    このビューは、新しいアポイントメントの作成と新しいリマインダーのスケジューリングを処理します。/appointment URL に送信された POST データを受け入れます。

                    WTForms を使って、forms/new_appointment.py で定義した NewAppointmentForm という名前のクラスを使い、フォームデータを検証します。

                    その後、arrow を使って、アポイントメントの時刻のタイムゾーンを UTC 時刻に変換します。

                    その後、新しい Appointment オブジェクトを保存し、定義した send_sms_reminder という名前の Celery タスクを使ってリマインダーをスケジュールします。

                          
                          
                          
                          
                          views/appointment.py

                          次では、このタスクを見てみましょう。

                          send_sms_reminderタスクを作成する

                          Twilio API クライアントをセットアップする

                          tasks.py モジュールには、send_sms_reminder タスクの定義が含まれています。このモジュールの上部で、twilio-python ライブラリーを使って、Client の新しいインスタンスを作成します。

                          この client オブジェクトを使い、send_sms_reminder 関数で Twilio API を使ってテキストメッセージを送信します。

                                
                                
                                
                                
                                tasks.py

                                ここではsend_sms_reminderを見てみましょう。

                                Twilio API でリマインダーメッセージを送信する

                                リマインダーの送信

                                これは、appointment.create ビューで呼び出した send_sms_reminder 関数です。関数は appointment_id パラメーターから始まります。このパラメーターを使って、データベースから Appointment オブジェクトを取得します。これが Celery のベストプラクティスです。

                                テキストメッセージの本文を構成するには、arrow を使って、アポイントメントに保存されている UTC 時刻をお客様のローカルなタイムゾーンに戻します。

                                その後、メッセージ自体の送信は client.messages.create() を呼び出すだけです。お客様の電話番号を to 引数として、Twilio 番号を from_ 引数として使います。

                                      
                                      
                                      
                                      
                                      tasks.py

                                      一丁あがり! 近く予定されているアポイントメントのリマインダーを送信するために、Flask アプリケーションをすべて設定しました。

                                      関連トピック

                                      関連トピック

                                      このサンプルアプリケーションがお役に立つことを願っています。

                                      TwilioおよびFlaskを使用するPython開発者でしたら、下記のチュートリアルもお楽しみいただけるでしょう:

                                      クリック トゥー コール

                                      ウェブページのボタンを押して、電話を介して訪問者をライブサポートまたはセールス担当者に接続します。

                                      二要素認証

                                      テキストメッセージを介した二要素認証を追加することで、Flask アプリのログイン機能のセキュリティを強化します。

                                      これは役に立ちましたか?

                                      Thanks for checking out this tutorial! If you have any feedback to share with us, please reach out on Twitter... we'd love to hear your thoughts, and know what you're building!

                                      Andrew Baker Agustin Camino David Prothero Kat King Gonzalo Fernandez de Aguirre
                                      Rate this page:

                                      ヘルプが必要ですか?

                                      誰しもが一度は考える「コーディングって難しい」。そんな時は、お問い合わせフォームから質問してください。 または、Stack Overflow でTwilioタグのついた情報から欲しいものを探してみましょう。