フラスコを使用してtwilio呼び出しを行う前に電話番号の検証


数週間前、I wrote about building a tool to make browser-based called to Congress using Twilio.私はまだ実装されていませんでしたが、便利なものは、アプリケーションがオンラインであり、潜在的に誰かの会議のメンバー以外の人に呼び出しをしようとするターゲット(ターゲットは、他の人がアプリを使用している可能性があります経験に影響を与える貴重な計算リソースとtwilio資金を使用して!) — 呼び出しを有効にする能力は、彼らが言っている人に行っています.
アプリが動作する方法は、あなたの郵便番号を入力し、それは通常、あなたの2つの米国上院議員とあなたの米国下院代表のためのダイヤラオブジェクトを返します.したがって、例えば、33026のために、それは上院議員リックスコットとマルコルビオを返します、そして、議会議員デビーワセマンシュルツ.

このデータは、この情報を含むJSONオブジェクトから生成されます.
{'name': name, 'office': office, 'phone': phone, 'unformatted_phone': unformatted_phone, 'urls': urls, 'party': party, 'photo': photo, 'p_phone': p_phone, 'p_unformatted_phone': p_unformatted_phone}
フロントエンドは、ホームページに送信された郵便番号に基づいてこのデータを受信すると、開始とhangupボタンで上記のページを生成して呼び出しを制御します.
フロントエンドのテンプレートでは、既に- Dの郵便番号を投稿し、代表オブジェクトを受け取ります.
<button class='f5 f4-ns dim dib mtl br2 bg-white-10 ba b-red-40 blue-80 link pam call call-customer-button' onclick="params = { 'PhoneNumber': 'number:{{ **phone\_number** }}', 'zipCode': 'zipCode:{{ **zipCode** }}' }; Twilio.Device.connect(params);">

Start Call

</button>
したがって、問題は、誰かが他の数に電話をしたいなら、彼らは、ページ上の要素を検査し、必要に応じてこの値を更新することができます.

そして、バックエンドでは、ボタンをクリックすると、それは実際には、接続を開くには、アプリケーションに戻ってTwitoにブラウザを接続する関数に渡される:

だから、あなたのtwilioアプリコールバックにフラスコには、単にそれは、ポストデータから番号を選択し、それをダイヤルに渡します.number ()関数.あなたのプロジェクトがキャッシュされている場合は、これは理想的ではない、呼び出しの多くを作るので、あなたの補充率が高いですか、または誤用の目標になるかもしれないと思います.それで、私の解決策は、私が書いた関数を実装することでしたが、最初は使いませんでした.

コールバックのPOSTリクエストから郵便番号を受け取り、電話番号をダイヤルしようとした場合、その番号が見つかればOKのステータスとともに応答の電話番号を再確認します.それ以外の場合は、無効な電話番号であることを示すインジケータを返します.
この関数の使用はとても簡単です.

基本的には、番号をダイヤルするのではなく、NumberVerify ()がOKステータスを返すかどうかを調べ、ダイヤルする前にもう一度番号を検証します.
それが無効な数のために空のステータスを返すならば、それは私のコールバックTwimlアプリケーションをダイヤルします.そして、それはNumbersRoundアウトバウンドでセットされます.