Веб-API, который может сказать мне, является ли номер стационарным или сотовым телефоном? [закрытый]

мое приложение отправляет SMS-сообщения людям, но номера, введенные в качестве их сотового телефона, иногда являются наземными линиями (это ошибка пользователя или пользователь не знает, является ли контактный номер у них сотовым телефоном или стационарным телефоном.)

Я нашел несколько веб-сайтов, которые могут сказать мне, является ли номер стационарным или сотовым телефоном, но они не предлагают programatic API. Кто-нибудь знает, как веб-приложение может выяснить, может ли номер получать SMS-сообщения?

I думаю, тестовое SMS-сообщение-Это один из способов, но мой текущий SMS-шлюз терпит неудачу, когда он получает номер стационарного телефона и не говорит мне номер стационарного телефона, на который он пытался отправить SMS. Я буду следить за этим с моим оператором, но я хотел бы простой способ позволить пользователю вводить номера телефонов, если они являются стационарным или сотовым номером.

обновление: Есть способы выяснить это. Взгляните на http://www.phonevalidator.com, они могут запросить номер телефона и выяснить, если это это стационарный или мобильный телефон.

12 ответов


вы можете открыть всплывающее окно JavaScript с url-адресом: "http://www.phonevalidator.com/results.aspx?p=" + номер_телефона


Я боюсь, что единственный реальный способ узнать это-связаться с поставщиками услуг SMS gateway. Список их можно найти здесь, например:

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

в любом случае, вместо этого я предлагаю сделать следующее:

когда пользователь вставляет номер мобильного телефона в свой профиль, отправьте тестовое SMS на этот номер с кодом подтверждения. Если номер не проверен пользователем, не трудитесь отправлять ему SMS-сообщения позже.


на самом деле есть операторы наземной линии, которые позволяют получать SMS. Или шлюзом text2voice или терминалом телефона с расширенной возможностью. Кроме того, в Европе операторы сотовой связи начали предлагать "виртуальные наземные линии", которые фактически являются сотовыми телефонами GSM, закрепленными за одной конкретной базовой станцией. Но они следуют схеме нумерации наземных линий.

возобновление-не позволяет отправлять SMS на номер наземной линии неправильно.


Это не бесплатный сервис, но компания Targus (не компания bag) имеет API для запроса информации о телефоне. Они могут сказать, стационарный это или мобильный, даже адрес проверки. Плата основана на том, сколько запросов вы делаете (несколько центов за запрос). http://www.targusinfo.com/

Followup: я связался с TARGUSinfo в феврале. 24, 2011 и было сказано их торговым представителем что они только работают с рекордными наборами в сотнях тысяч к миллионам и вообще их клиенты подключены к API для доступа в режиме реального времени. Различать мобильные номера и номера для небольших наборов записей "не то, что они могут помочь."


Я не уверен, что вы действительно хотите это сделать... Если вы хотите сказать, зарезервирован ли номер callphone или стационарным провайдером, вы должны иметь возможность найти диапазоны в некоторых документах от контролирующего telco субъекта вашей страны (не уверен, кто это делает в США-это может быть http://www.nanpa.com/). Эти документы обычно являются публичными.

но проблема в том, что номер мобильного телефона != возможность получения sms. С переносом номеров и всеми идеями "Единой коммуникации" на сегодняшний день можно легко иметь местные номера перенаправления на мобильные телефоны, негеографических чисел обработки SMS-сообщений и местные "особые" номера переписывают ваши входящие смс-ки как facebook сообщения ;) например мой местный "городской" номер переадресовываются на мобильный в другую страну и пару других мест.

вы не должны взимать плату за сообщение, отправленное на несуществующий / в противном случае странный номер, поэтому это может быть хороший способ проверить, может ли кто-то их получить. Если у вас есть хороший контроль над SMS-шлюзом, вы можете отправить сообщение с активным отчетом о доставке и сроком действия = = немедленное сообщение (забыл официальное название). Просто отправьте тестовое / приветственное сообщение - если оно не принято, вы можете пометить номер как недоступный. В противном случае вы можете просто попросить "номер, который принимает SMSes" вместо "номера мобильного телефона".


следующий скрипт возвращает

646-826-3879    LANDLINE

для горячей линии переполнения стога.

#!/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:  <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 = ;
my $NXX = ;

#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\n";

попытка объединить некоторые ответы здесь...

Даниэль упомянул об этом

вы можете открыть всплывающее окно JavaScript с url-адресом: "http://www.phonevalidator.com/results.aspx?p=" + номер_телефона

это все еще работает? Я не могу его воспроизвести. Если мы сможем заставить это работать, тогда, возможно, мы сможем использовать следующий сценарий...

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

use LWP::Simple;

my $usage = "Usage:  <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 = ;
my $NXX = ;

#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\n";

другим вариантом было бы, чтобы пользователь выбрал своего поставщика мобильных телефонов из списка. Просто мысль.


почему бы не составить список обычного формата для стационарных и мобильных телефонов? Например, где я нахожусь стационарные телефоны всегда следуют этому формату:

9xxxx xxxx

и мобильные телефоны всегда:

04xx xxx xxx

вы можете легко составить список общего формата стационарных / мобильных номеров в районе, который вы обслуживаете. Затем, когда вы хотите узнать, является ли номер США стационарным или мобильным, просто сравните его и посмотрите, соответствует ли он формату стационарного телефона или номеру мобильного телефона формат.

еще одна вещь, которая часто делается для проверки номеров телефонов, - это отправить временный pin-код через SMS на мобильный телефон пользователя и попросить их ввести этот pin-код для проверки их номера.


Я могу себе это представить, если бы у меня был доступ к основной мобильной сети. Это API SS7, а не веб-API. Я бы поспорил, что любая служба, которая предлагает веб-API, действует как прокси-сервер для сети SS7, а не полагается на базы данных. Единственной альтернативой было бы сделать запрос в базу данных количество porability. В конце концов, чтобы завершить вызов, все операторы сети должны определить, к какому другому оператору им нужно подключиться.


мы имеем обслуживание которое обеспечивает фиксированную линию / клетчатое обнаружение для США и Канады, и также обнаруживает если номер жив или мертв, то который беспроволочный несущая номер перенесена к etc. Есть полный веб-API.

Если вы зарегистрируетесь для учетной записи на www.hlrcheck.com я проверю его и добавлю несколько бесплатных кредитов для тестирования. На данный момент мы находимся в бета-версии, но полный выпуск кандидата неизбежен.


все решения, упомянутые здесь, - это статические поисковые запросы, но единственный надежный способ выяснить, является ли данный номер сотового телефона действительным (и готовым к получению SMS), - это выполнить поиск HLR. HLR означает Home Location Register, который представляет собой базу данных оператора мобильной связи с информацией о абоненте в реальном времени. Существует несколько API-сервисов для поиска HLR, например www.hlr-lookups.com - ...