RubyおよびRailsによる従業員目録
SMSを使用して照会できる従業員目録の実装方法を学びます。 貴社への情報のリクエストはTwilio電話番号にテキスト・メッセージを送信するだけで行えます。
ここでは、高いレベルでどのように機能するのかについて示します。
- エンドユーザーはTwilio電話番号に従業員の名前の入ったSMSを送信します。
- エンドユーザーはリクエストされた従業員の情報を受信します。
TwilioのSMSリクエストを処理する
Twilio電話番号がSMSを受信すると、TwilioはTwiML命令を尋ねるべく https://jp.twilio.com/docs/glossary/what-is-twilio-markup-language-twiml にPOSTリクエストを発行します。
アプリケーションが3つの起こりうるシナリオ(完全一致、複数の部分一致、または一致なし)を識別すると、TwilioにTwiMLレスポンスを送信します。 レスポンスはTwilioに、SMSメッセージ (Message)をユーザーに返信するよう指示します。
それぞれのシナリオについて、詳しく見ていきましょう。
完全な従業員一致を検索する
これはもっとも単純なシナリオです。 データベースに、Twilio番号に送信されたSMSに記述したものと氏名が完全に一致する従業員を検索することが期待されるデータベースのクエリーを実行します。 一致がヒットすると、その従業員の情報を含むメッセージが構築、TwiML命令としてTwilioに返信されます。
一致が見つからなかった場合は、単一部分一致を試みます。 これが次の起こりうるシナリオです。
従業員の単独部分一致を検索する
データベースに従業員の完全一致が見つからない場合は、Fuzzily Gemを使用して近似一致の検索を試みます。このシナリオでは、1件の部分一致が取得できたことを検証します。 単一部分一致が見つかった場合は、ユーザーはそれが含まれる候補を受信します。 ユーザーにはこのSMSに対して yes
の単語で返信する機会が与えられます。 その場合は、ユーザーは選択された従業員の情報を受け取ります。
少し後の段階で、TwilioのCookieを使用してSMSのやりとりに向けて候補を保存する方法をお見せします。
これで各従業員の検索方法が分かりましたので、どのようにして複数の結果を取得できるか見ていきましょう。
従業員の複数部分一致を検索する
現時点で、すでに従業員の完全一致と単一部分一致によるユーザーのクエリーの使用を試みました。ここでは、2つ以上の結果を返す部分一致を行なってみましょう。 直前のシナリオと同様、TwilioのCookieを使用して候補を保存します。 そしてここでの唯一の違いは、エンドユーザーが従業員の全情報を取得すべく、候補の一人を参照する番号で返信できるように候補の通し番号を含むハッシュを保存する必要があるということです。
最後のシナリオはシンプルです。 これまでのいずれのシナリオも発生しなかったということは、ユーザーの照会に一致する従業員がいないということです。 この場合、ユーザーに照会がデータベースの従業員と一致しなかった旨を伝える返信を行います。
これで、検索機能がひととおり出来上がったので、検索候補をブラウザー内のCookieでキャッシュして最適化する方法を見ていきましょう。
Cookieへの候補の保存
ユーザーが従業員目録の検索により部分一致が得られた場合、2つ以上の候補で返信をします。 次回エンドユーザーがSMSを送信した際に、これが新しい従業員の照会ではなく、候補のいずれかの選択であることが分かるように、これらの候補を保存する必要があります。
Twilio Cookieを使用して、候補を保存します。これによって複数の電話番号とTwilioの機能を使用したアプリケーションとの間のSMSのやりとりを捕捉することができます。
一丁あがり!Ruby on Railsを使って、従業員目録を実装しました。 これで、Twilio電話番号にSMSを送ることで、従業員情報を取得できるようになりました。
関連トピック
Twilio を使う Ruby 開発者であれば、以下のチュートリアルもお楽しみください。
Ruby Quickstart for Programmable Voice
Twilio クライアントを使って、ブラウザーから電話へ、およびブラウザーからブラウザーへの通話を簡単に行う方法を学びます。
Ruby - Rails および Twilio を使用して、ETA 通知を実装する方法について学びます。
これは役に立ちましたか?
このチュートリアルをお読みいただき、ありがとうございます。ご意見やご感想などございましたら、ぜひお聞かせください。 ご意見やご感想などございましたら、ぜひお聞かせください。 @twilioにツイートして、ご意見をお寄せください!
ヘルプが必要ですか?
誰しもが一度は考える「コーディングって難しい」。そんな時は、お問い合わせフォームから質問してください。 または、Stack Overflow でTwilioタグのついた情報から欲しいものを探してみましょう。