2009-04-13 6 views
17

Meine Anwendung sendet SMS-Nachrichten an Personen, aber die als Handy eingegebenen Nummern sind manchmal Festnetzanschlüsse (dies ist ein Benutzerfehler oder der Benutzer nicht wirklich weiß, ob die Kontaktnummer ist ein Handy oder Festnetz.)Web-basierte API, die mir sagen kann, ob eine Nummer ein Festnetz- oder Mobiltelefon ist?

Ich habe ein paar Websites gefunden, die mir sagen können, ob eine Nummer ein Festnetz oder ein Handy ist, aber sie bieten keine programmatischen APIs an. Ist jemandem bekannt, wie eine Webanwendung herausfinden kann, ob eine Nummer SMS empfangen kann?

Ich denke, eine Test SMS Nachricht ist eine Möglichkeit, aber meine aktuelle SMS-Gateway schlägt schwer, wenn es eine Festnetznummer bekommt und mir nicht die Festnetznummer, die es versucht, schickte die SMS an. Ich werde das mit meinem Netzbetreiber verfolgen, aber ich würde eine einfache Möglichkeit lieben, den Benutzer die Eingabe von Telefonnummern zu erlauben, wenn sie eine Festnetz- oder eine Zellnummer sind.

Aktualisierung: Es gibt Möglichkeiten, dies herauszufinden. Schauen Sie sich http://www.phonevalidator.com an, sie können eine Telefonnummer abfragen und herausfinden, ob es sich um ein Festnetz- oder Mobiltelefon handelt.

+2

Dies ist auch ein potenzielles Problem der Privatsphäre. Überträgt die vertrauliche Information des Benutzers an eine unzuverlässige dritte Partei wirklich die Art, wie Sie das lösen wollen? –

Antwort

4

Sie JavaScript ein Popup mit der URL öffnen müssen: "http://www.phonevalidator.com/results.aspx?p=" + phonenumber

+0

Wenn Sie mehr erfahren möchten, können Sie auch auf Npa und Nxx Informationen aus Zahlen nachlesen, es ist eine gute Information: http://ezinearticles.com/?Best-Place-for-Perform-an-NPA-NXX-Lookup&id = 1830567 –

+2

Sieht so aus, als ob das nicht mehr funktioniert, sie haben jetzt eine Captcha-Validierung, um zu verhindern, dass Bots die Seite treffen. –

5

Ich fürchte, der einzige wirkliche Weg, um es herauszufinden, ist Kontakt SMS-Gateway-Service-Provider. Eine Liste von ihnen kann hier zum Beispiel zu finden:

http://en.wikipedia.org/wiki/SMS_gateways

Wie dem auch sei, statt dass ich schlage vor, die folgenden Schritte ausführen:

Wenn der Benutzer Handy-Nummer in seinem Profil einfügt, Test SMS senden zu dieser Nummer mit Bestätigungscode. Wenn die Nummer vom Benutzer nicht verifiziert wird, sollten Sie später keine SMS versenden.

+0

Das scheint nicht richtig zu sein. Ich habe ein Beispiel für eine Website gegeben, die herausgefunden hat, ob # ein Festnetz oder eine Zelle ist. In meinem Fall sind die Nummern für Dritte, so dass ich die Person, die die Telefonnummer tatsächlich besitzt, nicht ohne einen guten Grund kontaktieren kann. – MikeN

+0

Sie sollten auch wissen, dass ein solcher Dienst nicht 100% genau sein kann, besonders wenn Sie mit internationalen Telefonnummern arbeiten. –

+0

Eigentlich, anstatt THEM eine SMS zu senden, bitten Sie sie, Ihnen eine SMS zu senden, die etwas enthält, wenn Sie sie empfangen können. Auf diese Weise werden die Kosten für alle Beteiligten minimiert. –

1

Das folgende Skript gibt

646-826-3879 LANDLINE 

für die Stack-Überlauf-Hotline.

#!/usr/bin/perl -w 
use strict; 
use warnings; 

use LWP::Simple; 
use LWP::Simple::Cookies (autosave => 1, file => "$ENV{'HOME'}/lwp_cookies.dat"); 

my $usage = "Usage: $0 <phone_number>\n\nwhere phone_number is on format XXX-XXX-XXXX or XXXXXXXXX"; 

die $usage unless scalar @ARGV == 1; 

my $number = shift @ARGV; 
die $usage unless $number =~ /(\d\d\d)-?(\d\d\d)/; 
my $NPA = $1; 
my $NXX = $2; 

#GET /search.asp?frmNPA=646&frmNXX=826&frmCity=&frmState=&frmZip=&frmCounty=&frmCompany=&search.x=0&search.y=0 HTTP/1.0 
my $doc = get 'http://www.area-codes.com/search.asp?frmNPA=' . $NPA . '&frmNXX=' . $NXX . '&frmCity=&frmState=&frmZip=&frmCounty=&frmCompany=&search.x=0&search.y=0'; 

# html format: 
#... 
# <td><strong>NXX Use Type:</strong></td> 
#  <td>LANDLINE</td> 
#... 
my $next = 0; 
my $result = ""; 
grep { 
    if (/NXX Use Type:/) { 
     $next = 1; 
    } else { 
     if ($next) { 
      $next = 0; 
      $result = $_; 
     } 
    } 
} split(/\n/, $doc); 

$result =~ /<[^>]*>(.*)<[^>]*>/; 

print "$number\t$1\n"; 
+0

Dies ist eine sehr interessante Idee (um eine der Seiten zu screenen), aber die Seite von area-codes.com ist falsch. Es meldet Handys auch als Festnetztelefone (sogar in der Vorwahl 917 von NY Handy.) Ich weiß auch nicht, wie skalierbar es ist, sie bieten keine API an. Wenn sie meinen Webserver auf programmatische Weise hart auf ihrer Seite finden, werden sie mich auf die schwarze Liste setzen. – MikeN

5

Tatsächlich gibt es Festnetzbetreiber, die SMS empfangen können. Entweder über das text2voice Gateway oder das Telefonterminal mit erweiterten Funktionen. Darüber hinaus haben in Europa Mobilfunkbetreiber begonnen, "virtuelle Landleitungen" anzubieten, bei denen es sich tatsächlich um GSM-Mobiltelefone handelt, die einer bestimmten Basisstation zugewiesen sind. Aber sie folgen dem Nummernschema der Landnummern.

Fortsetzen — nicht erlaubt Senden von SMS an Festnetznummer ist falsch.

+0

Vielen Dank, dass Sie einen interessanten Punkt angesprochen haben. Mein SMS-Produkt ist auf den US-Markt ausgerichtet und ich würde gerne SMS an jedes Telefon senden, das sie erhalten würde. Aus der Sicht meines Benutzers fordere ich sie auf, das Mobiltelefon einer Person einzugeben, hauptsächlich für SMS-Nachrichten, aber für den Benutzer ist es auch wichtig, dass diese Nummer von der Person mitgenommen wird, um sie zu kontaktieren, wenn sie nicht zu Hause sind. – MikeN

0

Eine andere Möglichkeit wäre, den Benutzer seinen Mobilfunkanbieter aus einer Liste auswählen zu lassen. Nur ein Gedanke.

2

Ich bin mir nicht sicher, ob Sie das wirklich tun wollen ... Wenn Sie wissen möchten, ob eine Nummer von einem Telefon oder Festnetzanbieter reserviert ist, sollten Sie in der Lage sein, die Bereiche in einigen Dokumenten aus Ihrem Land zu finden Telco Supervisioning Entity (nicht sicher, wer das in den USA tut - es könnte http://www.nanpa.com/ sein). Diese Dokumente sind normalerweise öffentlich.

Aber das Problem ist, dass Handy-Nummer! = SMS empfangen kann. Mit Nummernportierung und all den "Unified Communication" Ideen können Sie leicht lokale Rufnummern auf Handys umleiten lassen, nicht-geografische Rufnummern mit sms und lokale "spezielle" Rufnummern, die Ihre eingehenden SMS als Facebook-Nachrichten umschreiben;) Zum Beispiel meinen lokalen "Festnetz" Nummer wird auf ein Handy in einem anderen Land und einigen anderen Standorten umgeleitet.

Sie sollten keine Gebühren für eine Nachricht zahlen, die an eine nicht existierende/ansonsten seltsame Nummer gesendet wird. Es könnte also eine gute Möglichkeit sein, zu überprüfen, ob jemand sie empfangen kann. Wenn Sie eine gute Kontrolle über das SMS-Gateway haben, können Sie eine Nachricht mit aktivem Zustellungsbericht und Ablaufdatum == sofortige Nachricht (den offiziellen Namen vergessen) senden. Senden Sie einfach eine Test-/Willkommensnachricht. Wenn diese nicht akzeptiert wird, können Sie die Nummer als nicht verfügbar markieren. Andernfalls können Sie einfach nach einer "Nummer, die SMS annimmt" statt einer "Handynummer" fragen.

0

Warum nicht eine Liste des üblichen Formats für die Festnetz- und Handynummern erstellen? Zum Beispiel, wo ich gelegen Festnetz folgt immer diesem Format:

9xxxx xxxx 

und Handys sind immer:

04xx xxx xxx 

Sie können ganz einfach eine Liste des allgemeinen Formats von Festnetz/Mobilfunknummern machen in der Bereich, den Sie bedienen. Wenn Sie dann herausfinden möchten, ob eine US-Nummer Festnetz- oder Mobilfunknummer ist, vergleichen Sie sie einfach und sehen Sie, ob sie mit dem Festnetz- oder Mobilfunknummernformat übereinstimmt.

Eine andere Sache, die oft durchgeführt wird, um Telefonnummern zu validieren, besteht darin, einen temporären Pin per SMS an das Handy des Benutzers zu senden und sie zu bitten, diesen Pin einzugeben, um ihre Nummer zu bestätigen.

+6

Leider gibt es in Nordamerika keine Trennung von Festnetz- und Mobiltelefonnummern auf diese Weise. Sie alle teilen den gleichen Nummerierungsplan ohne Unterscheidung. Und mit Nummernportabilität können Kunden von einem Festnetz- zu einem Mobilfunkanbieter wechseln, ohne ihre Telefonnummer zu ändern. –

+1

Es ist eine gute Idee, funktioniert einfach nicht überall. Sorry, du hast alle Down-Stimmen bekommen - einige Entwickler sind nur ... weißt du. +1 für den Versuch, über alternative Wege nachzudenken. – xil3

5

Es ist kein kostenloser Service, aber eine Firma namens Targus (nicht die Taschenfirma) hat eine API zum Abfragen von Telefoninformationen. Sie können feststellen, ob es Festnetz oder Zelle ist, sogar Adressvalidierung. Die Gebühr basiert auf wie viele Abfragen Sie tun (ein paar Cent pro Abfrage). http://www.targusinfo.com/

Followup: Ich kontaktierte TARGUSinfo am 24. Februar 2011 und wurde von ihren Vertriebsmitarbeiter gesagt, dass sie nur mit Datensätzen in der Arbeit Hunderte-of-Tausende bis Millionen und in der Regel sind ihre Kunden in ihre API gesteckt für Echtzeitzugriff. Die Unterscheidung zwischen Zellenzahlen und Festnetznummern für kleinere Datensätze ist "nicht etwas, mit dem sie helfen können".

0

Ich kann mir vorstellen, dies zu tun, wenn ich Zugang zum Kernnetz hatte. Das ist eine SS7-API, keine Web-API. Ich würde wetten, dass jeder Dienst, der eine Web-API anbietet, als Proxy für das SS7-Netzwerk agiert, anstatt sich auf Datenbanken zu verlassen. Die einzige andere Alternative wäre es, die Datenbank für die Anzahl der Porosität abzufragen. Um einen Anruf zu beenden, müssen schließlich alle Netzbetreiber bestimmen, mit welchem ​​anderen Netzbetreiber sie sich verbinden müssen.

1

Der Versuch, einige Antworten hier zu kombinieren ...

Daniel erwähnt, dass

Sie haben können JavaScript öffnet ein Popup mit der folgenden URL: "http://www.phonevalidator.com/results.aspx?p=" + telefonnummer

Funktioniert das noch? Ich kann es nicht reproduzieren. Wenn wir das bekommen zu arbeiten, dann können wir vielleicht ein Skript wie die folgenden verwenden ...

#!/usr/bin/perl -w 
use strict; 
use warnings; 

use LWP::Simple; 

my $usage = "Usage: $0 <phone_number>\n\nwhere phone_number is on format XXX-XXX-XXXX or XXXXXXXXX"; 

die $usage unless scalar @ARGV == 1; 

my $number = shift @ARGV; 
die $usage unless $number =~ /(\d\d\d)-?(\d\d\d)/; 
my $NPA = $1; 
my $NXX = $2; 

#GET /search.asp?frmNPA=646&frmNXX=826&frmCity=&frmState=&frmZip=&frmCounty=&frmCompany=&search.x=0&search.y=0 HTTP/1.0 
my $doc = get 'http://www.phonevalidator.com/results.aspx?p=' . $NPA . $NXX; 

# html format: 
#... 
#              <td class="style16"> 
#        Phone Line Type: 
#       </td> 
#       <td class="style13"> 
#        <span id="PhoneTypeLabel">LANDLINE</span> 
#       </td> 
# 
#... 
my $result = ""; 
grep { 
    if (/PhoneTypeLabel/) { 
     $result = $_; 
    } 
} split(/\n/, $doc); 

$result =~ /<[^>]*>(.*)<[^>]*>/; 

print "$number\t$1\n"; 
0

haben wir einen Service, das Festnetz/Mobilfunkdetektion für USA und Kanada liefert, und auch wenn die Zahl erfaßt ist Live oder Dead, auf welchen Mobilfunkanbieter die Nummer portiert ist usw. Es gibt eine vollständige Web-API.

Wenn Sie sich für ein Konto bei www.hlrcheck.com anmelden, werde ich es validiert und fügen Sie einige kostenlose Kredite für Sie zum Testen. Momentan sind wir in der Betaversion, aber der Release-Kandidat steht kurz bevor.

0

Alle hier genannten Lösungen sind statische Nummernmuster-Lookups, aber die einzige zuverlässige Möglichkeit, herauszufinden, ob eine bestimmte Handynummer gültig ist (und bereit ist, SMS zu empfangen), ist eine HLR-Suche. HLR steht für Home Location Register, eine Datenbank für Mobilfunknetzbetreiber mit Echtzeit-Abonnenteninformationen. Es gibt mehrere API-Dienste für HLR-Suchvorgänge, z. www.hlr-lookups.com.

Verwandte Themen