メニュー

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?

Node.jsおよびExpressを使用した予約リマインダー

この Node.js Express Web アプリケーションは、アプリケーションを通じて顧客が作成できる将来のアポイントメントのリマインダーも送信します。これは、毎分実行されるバックグラウンドジョブで行われます。

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

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

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

はじめましょう!

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

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

        
        
        
        
        .env

        アポイントメントリマインダーを送信するには、まずアポイントメントを作成する必要があります。

        Let's create some appointments

        新しいアポイントメントを作成する

        コントローラーで、 必須情報(お客様の名前と電話番号、さらにアポイントメントの日時)を入力し、Appointment モデルに保存します。

        アプリケーション内でmongooseを使用し、MongoDB上にモデルを保存します。

        var AppointmentSchema = new mongoose.Schema({
          name:String,
          phoneNumber: String,
          notification : Number,
          timeZone : String,
          time : {type : Date, index : true}
        });
        
              
              
              
              
              routes/appointments.js

              これで予定(Appointment)を作成できたので、こちらに対するリマインダーをスケジュールする方法を見ていきましょう。

              リマインダージョブをスケジュールする

              リマインダーを送信するようジョブをスケジュールする

              1 分ごとに、アポイントメントデータベースをチェックして、リマインダーの送信を必要とするアポイントメントが近く予定されていないかどうかを確認します。

              これを行うには、node-cronを使用します。

              start関数に実行したいジョブのコードと、その実行間隔を構成します。 それから、次のようにアプリケーションの実行エントリーポイントからこれを呼び出します。 scheduler.start()

                    
                    
                    
                    
                    scheduler.js

                    This start function uses a notificationsWorker, next we'll see how it works.

                    ジョブを実行しましょう!

                    ジョブを実行するためのワーカー関数を作成する

                    実際に反復ジョブロジックを実行するために、アポイントメントが近く予定されていないかデータベースに問い合わせるスタティックモデルメソッドを使用し、必要であればリマインダーを送信するワーカー関数を作成します。

                          
                          
                          
                          
                          workers/notificationsWorker.js

                          Next, let's see how the Appointment job works in detail.

                          リマインダーを必要とするアポイントメントを探す

                          リマインダーを必要とするアポイントメントを探す

                          繰り返しジョブはAppointmentモデルの静的モデルメソッドを使用して直近1分間に予定がないかどうかデータベースを照会し、先ほどTwilioアカウントの資格情報で初期化したTwilio RESTクライアントを使用してリマインダーのメッセージを送信します。

                          アポイントメントはさまざまなタイムゾーンで定義されていることから、近く予定されているすべてのアポイントメントを、タイムゾーンを考慮して適切に問い合わせるために、Moment.js ライブラリを使用します。

                                
                                
                                
                                
                                models/appointment.js

                                あとやるべきことは、実際のSMS送信です。 次はこれについて見ていきましょう。

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

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

                                このコードは、リマインダーの送信が必要な近く予定されているアポイントメントごとに呼び出されます。お客様の電話番号である to フィールド、アカウントの番号である from フィールド、メッセージのテキストが含まれる body フィールドを設定オブジェクトに用意します。次に、このオブジェクトをコールバックと共に sendMessage メソッドに渡し、失敗や成功を記録します。

                                      
                                      
                                      
                                      
                                      models/appointment.js

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

                                      関連トピック

                                      関連トピック

                                      このサンプルアプリケーションがお役に立つことを願っています。Twilio を使う Node.js/Express 開発者であれば、他のチュートリアルもお楽しみください。

                                      ワークフローの自動化

                                      貸し別荘会社のための、スケール可能な状態の自動 SMS ワークフローを構築します。

                                      ブラウザー 通話

                                      ブラウザーから電話へ、およびブラウザーからブラウザーへの通話を簡単に行います。

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

                                      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!

                                      Mario Celi Jose Oliveros Agustin Camino Andrew Baker David Prothero Kat King Hector Ortega
                                      Rate this page:

                                      ヘルプが必要ですか?

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