Numbersの検証

2027年2月4日をもって、VonageはVonage Number Insightsを終了いたします。継続的なサポートを確保し、よりスケーラブルで将来性のあるソリューションを提供するため、当社の強化されたソリューションへの移行をお勧めします: Vonage Identity Insights API.Vonage Identity Insight APIは、複数の電話番号関連データセットを1つの柔軟なAPIに統合し、電話番号に関するリアルタイムの情報を要求したり、番号のフォーマット、キャリアの詳細、SIMスワップ、加入者照合などのインサイトを1回の呼び出しで自由に組み合わせて取得できるようにします。

をご確認ください。 Numbersインサイト移行ガイドAPIの相違点、必要な変更点、スムーズな移行のためのベストプラクティスに関する詳細なガイダンスを提供しています。

Number Insight APIは、顧客が提供した番号を検証し、詐欺を防止し、将来その顧客に再び連絡できるようにします。また、番号の書式や携帯電話か固定電話かなど、その他の便利な情報も提供します。

Number Insight APIには3つの製品レベルがある:

  • 基本API:番号がどの国のものかを検出し、その情報を使って番号を正しくフォーマットする。
  • 標準API:番号が固定電話か携帯電話かを判断し(音声とSMSのどちらかを選択)、バーチャル番号をブロックします。
  • 高度なAPI:Numbersに関連するリスクを計算します。

についてもっと知る 基本、標準、高度API. :Number Insight Basic APIへのリクエストは無料です。その他のAPIレベルは有料です。詳しくは APIリファレンス をご覧ください。

について RubyサーバーSDK を使えば、Number Insight APIに簡単にアクセスできる。また、Pricing APIなどの他のAPIと連携することもできます。つまり、電話番号の検証やサニタイズだけでなく、テキストメッセージや音声通話の送信料金を確認することができます。 コストを計算する セクションを参照してください。

このチュートリアルでは

Ruby Server SDKを使って電話番号をサニタイズし、検証する方法を学びます。

始める前に

このチュートリアルを完成させるには

プロジェクトの作成

をクローンする。 チュートリアル・ソースコード リポジトリ

git clone git@github.com:Nexmo/ruby-ni-customer-number-validation.git

プロジェクトフォルダに移動する:

cd ruby-ni-customer-number-validation

をコピーする。 .env-example ファイルを .env と編集 .env からAPIキーとシークレットを設定します。 ダッシュボード:

VONAGE_API_KEY="(Your API key)" VONAGE_API_SECRET="(Your API secret)"

依存関係をインストールする

走る bundle install プロジェクトの依存関係をインストールする。

コード・チュートリアル

チュートリアル・プロジェクトはアプリケーションではなく、Number Insight APIの操作方法を示すコード・スニペット集です。このチュートリアルでは、各スニペットを順番に実行し、その動作を学びます。

国の決定

このサンプルでは、Number Insight Basic APIを使って、ある番号がどの国のものかを調べます。

コードを実行する

を実行する。 snippets/1_country_code.rb ルビーファイル:

ruby snippets/1_country_code.rb

これは、国際形式の電話番号と、その番号が登録されている名前、コード、プレフィックスを返します。

仕組み

まず、コードは nexmo で設定したAPIキーとシークレットをクライアント・オブジェクトに渡します。 .env ファイル:

require 'vonage'
vonage = Vonage::Client.new(
  api_key: ENV['VONAGE_API_KEY'],
  api_secret: ENV['VONAGE_API_SECRET']
)

そして、Number Insight Basic APIを呼び出し、次のように渡します。 number についての洞察を提供する:

puts vonage.number_insight.basic(number:  "442079460000")

Numbersを消毒する

ユーザーが国際形式でない電話番号を入力する場合があります。つまり、国のプレフィックスが含まれていません。このサンプルでは、Numbers Insight Basic APIを使って電話番号を正しくフォーマットする方法を紹介します。

ほとんどのVonage APIは電話番号が国際フォーマットであることを想定しているので、Number Insight Basic APIを使って番号をサニタイズしてから使うことができる。

コードを実行する

を実行する。 snippets/2_cleanup.rb ルビーファイル:

ruby snippets/2_cleanup.rb

これは、提供されたローカル番号 (020 3198 0560英国(GB)番号)を国際書式で使用する。 44 接頭辞

"442031980560"

仕組み

国際形式の電話番号を取得するには、ローカル形式の電話番号と国コードを指定してNumbers Insight Basic APIを呼び出す:

番号の種類(固定電話か携帯電話か)を決定する。

Number Insight Standard APIは、Basic APIよりも多くの電話番号情報を提供するが、Basic APIが提供するすべてのデータを含む。最も便利な機能の1つは、次のことを教えてくれることです。 タイプ そうすれば、その番号に連絡する最良の方法を判断することができる。

コードを実行する

を実行する。 snippets/3_channels.rb ルビーファイル:

ruby snippets/3_channels.rb

この電話番号は英国の固定電話に割り当てられており、SMSよりも音声の方が良い選択肢であることがわかる:

仕組み

番号のタイプを決定するには、Number Insight Standard APIを呼び出し、ここで示すように、国番号付きのローカル番号を渡す:

を渡すこともできます。 number を指定することなく、国際形式で country:

そして、現在のキャリア情報を見つけ、それを使って番号の種類(携帯電話か固定電話か)を表示することができる:

コストを計算する

NumberInsightのAPIと 価格 APIを一緒に使うことで、その番号がどのネットワーク上にあり、その番号に電話をかけたり、SMSを送ったりするのにいくらかかるかを調べることができる。

コードを実行する

を実行する。 snippets/4_cost.rb ルビーファイル:

ruby snippets/4_cost.rb

応答は、SMSメッセージの送信料金、またはその電話番号への音声通話の1分あたりの料金を示す:

{
      :sms => [{
                "type" => "landline",
               "price" => "0.03330000",
            "currency" => "EUR",
              "ranges" => [441, 442, 443],
        "network_code" => "GB-FIXED",
        "network_name" => "United Kingdom Landline"}],
    :voice => [{
               "type" => "landline",
              "price" => "0.01200000",
           "currency" => "EUR",
             "ranges" => [441, 442, 443],
       "network_code" => "GB-FIXED",
       "network_name" => "United Kingdom Landline"}]
}

この出力は、この番号が固定電話であり、音声通話に最適であることを示している。

仕組み

このコードではまず、Number Insight Standard APIを呼び出し、番号が現在登録されているネットワークや、発信国に関する情報を提供する(この機能はBasic APIでも利用可能):

insight = vonage.number_insight.standard(
  number:  '020 3198 0560',
  country: 'GB'
)

# Store the network and country codes
current_network = insight.current_carrier.network_code
current_country = insight.country_code

そして 価格 APIを使用して、その国のすべてのキャリアの電話番号とテキスト番号を取得します:

Ruby REST Client APIで価格データを取得するためのその他のオプションは以下の通りです:

  • vonage.pricing.sms.list() または vonage.pricing.voice.list() - の価格データを取得する。 すべて 国々
  • vonage.pricing.sms.prefix(prefix) または vonage.pricing.voice.prefix(prefix) - のように、特定の国際プレフィックスコードの価格データを取得する。 44 イギリス代表

コードは次に、その番号が属する特定のネットワークのコストを調べ、その情報を表示する:

# Retrieve the network cost from the pricing data
sms_cost = sms_pricing.networks.select{|network| network.network_code == current_network}
voice_cost = voice_pricing.networks.select{|network| network.network_code == current_network}

p({
  sms: sms_cost,
  voice: voice_cost
})

携帯電話番号の認証

Number Insight Advanced APIを使用すると、番号を検証して、その番号が本物である可能性が高いかどうか、顧客と連絡を取るための信頼できる方法であるかどうかを判断できます。携帯電話番号の場合、その番号がアクティブかどうか、ローミング中かどうか、到達可能かどうか、IPアドレスと同じ場所にあるかどうかを調べることもできます。Advanced APIには、Basic APIとStandard APIのすべての情報が含まれています。

コードを実行する

を実行する。 snippets/5_validation.rb ルビーファイル:

ruby snippets/5_validation.rb

この場合、応答はNumbersが valid.

電話番号から数桁を削除してプログラムを再実行すると、Number Insight Advanced APIは、その番号が次のようにレポートします。 not_valid.

Number Insight Advanced APIが有効な番号かどうかを判断できない場合、次のような応答が返されます。 unknown:

"unknown"

仕組み

このコードでは、Basic APIで利用可能だが、Advanced APIにも含まれている機能を使って、以前と同じように番号の国際表現を要求している:

また valid_number フィールドを返します。このフィールドの値は valid, not_valid または unknown.

結論

このチュートリアルでは、番号の国際形式を検証して決定し、その番号への通話料金やSMSメッセージの送信料金を計算する方法を学びました。

リソースと参考文献