Веб-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 - ...