Eine Zahl validieren

Die Number Insight API hilft Ihnen, die von Kunden angegebenen Numbers zu validieren, um Betrug zu verhindern und sicherzustellen, dass Sie den Kunden in Zukunft wieder kontaktieren können. Sie liefert Ihnen auch andere nützliche Informationen, z. B. wie die Nummer zu formatieren ist und ob es sich um eine Mobil- oder Festnetznummer handelt.

Die Number Insight API hat drei Produktstufen:

  • Grundlegende API: Ermitteln Sie, zu welchem Land eine Nummer gehört, und verwenden Sie die Information, um die Nummer richtig zu formatieren.
  • Standard-API: Feststellen, ob es sich bei einer Nummer um eine Festnetz- oder Mobilfunknummer handelt (um zwischen Sprach- und SMS-Kontakt zu wählen) und Blockieren virtueller Nummern.
  • Erweiterte API: Berechnen Sie das mit einer Zahl verbundene Risiko.

Erfahren Sie mehr über die Basis-, Standard- und erweiterte APIs. Hinweis: Anfragen an die Number Insight Basic API sind kostenlos. Für die anderen API-Stufen fallen Kosten an. Siehe die API-Referenz für weitere Informationen.

Die Ruby Server SDK ermöglicht den einfachen Zugriff auf die Number Insight API. Sie ermöglicht Ihnen auch die Arbeit mit anderen APIs, wie z. B. der Pricing API. Das bedeutet, dass Sie nicht nur eine Telefonnummer validieren und bereinigen, sondern auch die Kosten für das Senden von Textnachrichten und Sprachanrufen an diese Nummer bestätigen können, wie wir in der die Kosten zu berechnen Abschnitt dieses Lernprogramms.

In diesem Lernprogramm

Sie lernen, wie Sie Telefonnummern mit dem Ruby Server SDK bereinigen und validieren können.

Bevor Sie beginnen

Für die Durchführung dieses Tutorials benötigen Sie

Das Projekt erstellen

Klonen Sie die Quellcode des Tutorials Repository:

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

Wechseln Sie in den Projektordner:

cd ruby-ni-customer-number-validation

Kopieren Sie die .env-example Datei zu .env und bearbeiten .env um Ihren API-Schlüssel und Ihr Geheimnis über die Dashboard:

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

Installieren Sie die Abhängigkeiten

ausführen. bundle install um die Abhängigkeiten des Projekts zu installieren.

$ bundle install
Fetching gem metadata from https://rubygems.org/...
Resolving dependencies...
Using bundler 1.16.4
Using dotenv 2.1.1
Using jwt 2.1.0
Using vonage 7.2.0
Bundle complete! 2 Gemfile dependencies, 4 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.

Code-Durchgang

Das Lernprojekt ist keine Anwendung, sondern eine Sammlung von Codeschnipseln, die Ihnen zeigen, wie Sie mit der Number Insight API arbeiten können. In dieser Schritt-für-Schritt-Anleitung werden Sie jedes Snippet nacheinander ausführen und lernen, wie es funktioniert.

Bestimmen Sie das Land

Dieses Beispiel verwendet die Number Insight Basic API, um herauszufinden, zu welchem Land eine Nummer gehört.

Ausführen des Codes

Führen Sie die snippets/1_country_code.rb Ruby-Datei:

ruby snippets/1_country_code.rb

Hier werden die Telefonnummer im internationalen Format sowie der Name, die Vorwahl und die Vorwahl, unter der die Nummer registriert ist, angezeigt.

{
    "status" => 0,
    "status_message" => "Success",
    "request_id" => "923c7054-3201-4146-b6df-23bfe929cd03",
    "international_format_number" => "442079460000",
    "national_format_number" => "020 7946 0000",
    "country_code" => "GB",
    "country_code_iso3" => "GBR",
    "country_name" => "United Kingdom",
    "country_prefix" => "44"
}

Wie es funktioniert

Zunächst erstellt der Code die nexmo Client-Objekt mit dem API-Schlüssel und dem Geheimnis, die Sie in der .env Datei:

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

Dann ruft es die Number Insight Basic API auf und übergibt die number einen Einblick zu geben:

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

Numbers säubern

Es kann sein, dass Ihr Benutzer eine Telefonnummer angibt, die nicht im internationalen Format ist. Das heißt, sie enthält nicht die Ländervorwahl. Dieses Beispiel zeigt Ihnen, wie Sie die Number Insight Basic API verwenden können, um die Nummer richtig zu formatieren.

Die meisten Vonage-APIs erwarten, dass eine Telefonnummer im internationalen Format vorliegt. Daher können Sie die Number Insight Basic API verwenden, um Numbers zu bereinigen, bevor Sie sie verwenden.

Ausführen des Codes

Führen Sie die snippets/2_cleanup.rb Ruby-Datei:

ruby snippets/2_cleanup.rb

Dies gibt die angegebene lokale Nummer zurück (020 3198 0560, ein Großbritannien (GB) Nummer) im internationalen Format mit dem 44 Vorwahl:

"442031980560"

Wie es funktioniert

Um eine Telefonnummer im internationalen Format abzurufen, rufen Sie die Number Insight Basic API mit einer Telefonnummer im lokalen Format und einer Landesvorwahl auf:

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

p insight.international_format_number

Bestimmen Sie die Art der Nummer (Festnetz oder Handy)

Die Number Insight Standard API liefert mehr Informationen über eine Telefonnummer als die Basic API, enthält aber alle Daten, die die Basic API liefert. Eine der nützlichsten Funktionen ist, dass sie Ihnen Folgendes mitteilt Typ der Nummer, mit der Sie es zu tun haben, damit Sie den besten Weg finden, die Nummer zu kontaktieren.

Ausführen des Codes

Führen Sie die snippets/3_channels.rb Ruby-Datei:

ruby snippets/3_channels.rb

Sie sehen, dass diese Telefonnummer einem britischen Festnetzanschluss zugewiesen ist, so dass Sprache eine bessere Option als SMS ist:

{
    "network_code" => "GB-FIXED",
            "name" => "United Kingdom Landline",
         "country" => "GB",
    "network_type" => "landline"
}

Wie es funktioniert

Um die Art der Nummer zu bestimmen, rufen Sie die Number Insight Standard API auf und geben entweder eine lokale Nummer mit der Landesvorwahl ein, wie wir es hier demonstrieren:

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

Sie könnten auch die number im internationalen Format ohne Angabe des country:

insight = vonage.number_insight.standard(
  number:  "442031980560"
)

Dann können wir die aktuellen Betreiberinformationen finden und damit die Art der Nummer (Handy oder Festnetz) anzeigen:

p insight.current_carrier

Berechnen Sie die Kosten

Sie können die Number Insight APIs und Preisgestaltung APIs zusammen, um festzustellen, in welchem Netz sich die Nummer befindet und wie viel es kostet, die Nummer anzurufen oder eine SMS an sie zu senden.

Ausführen des Codes

Führen Sie die snippets/4_cost.rb Ruby-Datei:

ruby snippets/4_cost.rb

Die Antwort gibt die Kosten für den Versand einer SMS-Nachricht oder den Minutenpreis für einen Sprachanruf an die Telefonnummer an:

{
      :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"}]
}

Diese Ausgabe zeigt, dass die Nummer ein Festnetzanschluss ist und sich daher am besten für Sprachanrufe eignet, die Sie zu einem Preis von 0,12 EUR pro Minute tätigen können.

Wie es funktioniert

Der Code ruft zunächst die Number Insight Standard API auf, die Informationen über das Netz, in dem die Nummer derzeit registriert ist, sowie über das Herkunftsland liefert (eine Funktion, die auch in der Basic API verfügbar ist):

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

Sie verwendet dann die Preisgestaltung API, um die Kosten für Anrufe und SMS an die Nummer für alle Betreiber in diesem Land abzurufen:

# Fetch the voice and SMS pricing data for the country
sms_pricing = vonage.pricing.sms.get(current_country)
voice_pricing = vonage.pricing.voice.get(current_country)

Weitere Optionen zum Abrufen von Preisdaten in der Ruby REST Client API sind:

  • vonage.pricing.sms.list() oder vonage.pricing.voice.list() - zum Abrufen von Preisdaten für alle Länder
  • vonage.pricing.sms.prefix(prefix) oder vonage.pricing.voice.prefix(prefix) - um Preisdaten für eine bestimmte internationale Vorwahl abzurufen, z. B. 44 für das Vereinigte Königreich.

Der Code ermittelt dann die Kosten für das jeweilige Netz, zu dem die Nummer gehört, und zeigt diese Informationen an:

# 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
})

Bestätigen Sie eine Mobiltelefonnummer

Mit der Number Insight Advanced API können Sie eine Number validieren, um festzustellen, ob sie wahrscheinlich echt ist und eine zuverlässige Möglichkeit darstellt, Ihren Kunden zu kontaktieren. Bei mobilen Numbers können Sie auch feststellen, ob die Nummer aktiv, roamingfähig und erreichbar ist und sich am selben Ort wie die IP-Adresse befindet. Die erweiterte API umfasst alle Informationen der Basis- und Standard-APIs.

Ausführen des Codes

Führen Sie die snippets/5_validation.rb Ruby-Datei:

ruby snippets/5_validation.rb

In diesem Fall gibt die Antwort an, dass die Nummer valid.

"valid"

Wenn Sie ein paar Ziffern aus der Telefonnummer entfernen und das Programm erneut ausführen, meldet die Number Insight Advanced API, dass die Nummer not_valid.

"not_valid"

Wenn die Number Insight Advanced API nicht feststellen kann, ob die Nummer gültig ist oder nicht, erhalten Sie eine Antwort von unknown:

"unknown"

Wie es funktioniert

Der Code fordert wie zuvor die internationale Darstellung der Nummer an, wobei eine Funktion verwendet wird, die in der Basis-API verfügbar ist, die aber auch in der erweiterten API enthalten ist:

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

Es gibt auch die folgenden Informationen zurück und zeigt sie an valid_number Feld aus der Antwort. Der Wert dieses Feldes ist einer der folgenden valid, not_valid oder unknown.

p insight.valid_number

Schlussfolgerung

In diesem Lernprogramm haben Sie gelernt, wie Sie das internationale Format einer Nummer überprüfen und bestimmen und die Kosten für einen Anruf oder eine SMS an diese Nummer berechnen können.

Ressourcen und weiterführende Literatur