Ответ 1
У вас есть JavaScript, чтобы открыть всплывающее окно с URL: " http://www.phonevalidator.com/results.aspx?p=" + номер телефона
Мое приложение отправляет SMS-сообщения людям, но номера, введенные в качестве их сотового телефона, иногда являются наземными линиями (это ошибка пользователя или пользователь не знает, есть ли у них контактный номер - сотовый или стационарный.)
Я нашел несколько веб-сайтов, которые могут сказать мне, является ли номер стационарным или мобильным телефоном, но они не предлагают программные API. Кто-нибудь знает о том, как веб-приложение может выяснить, может ли номер получать SMS-сообщения?
Я думаю, что тестовое SMS-сообщение является одним из способов, но мой текущий шлюз SMS терпит неудачу, когда он получает стационарный номер и не сообщает мне номер стационарного телефона, на который он пытался отправить SMS. Я буду следить за этим с помощью своего оператора, но мне бы очень хотелось, чтобы пользователь вводил номера телефонов, если они являются стационарным или номером ячейки.
Обновление: Есть способы понять это. Посмотрите http://www.phonevalidator.com, они могут запросить номер телефона и выяснить, является ли он стационарным или сотовым телефоном.
У вас есть JavaScript, чтобы открыть всплывающее окно с URL: " http://www.phonevalidator.com/results.aspx?p=" + номер телефона
Я боюсь, что единственный реальный способ узнать это - обратиться к поставщикам услуг SMS-шлюза. Список их можно найти здесь, например:
http://en.wikipedia.org/wiki/SMS_gateways
В любом случае вместо этого я предлагаю сделать следующее:
Когда пользователь вставляет номер сотового телефона в свой профиль, отправьте тестовое SMS на этот номер с кодом подтверждения. Если номер не подтвержден пользователем, не беспокойтесь, отправляя в него SMS-сообщения позже.
На самом деле есть операторы наземных линий, которые позволяют получать SMS. Либо через текстовый шлюз или телефонный терминал с расширенными возможностями. Более того, в Европе операторы сотовых телефонов начали предлагать "виртуальные наземные линии", которые на самом деле являются сотовыми телефонами GSM, назначенными одной конкретной базовой станции. Но они следуют схеме нумерации наземных линий.
Возобновление — не позволяя отправлять SMS на номер линии земли, является неправильным.
Это не бесплатный сервис, но компания под названием Targus (а не компания сумки) имеет API для запроса информации о телефоне. Они могут определить, является ли это стационарной или ячейкой, даже проверка адреса. Плата зависит от количества запросов (несколько центов за запрос). http://www.targusinfo.com/
Последующее наблюдение: я связался с TARGUSinfo 24 февраля 2011 года, и их представителям продаж сообщили, что они работают только с наборами записей сотен тысяч до миллионов, и обычно их клиенты подключаются к их API в режиме реального времени доступ. Дифференциация между номерами ячеек и номерами наземных линий для меньших наборов записей - это не то, с чем они могут помочь.
Я не уверен, если вы хотите сделать это на самом деле... Если вы хотите узнать, зарезервирован ли номер телефона для звонка или стационарного провайдера, вы можете найти диапазоны в некоторых документах из вашей страны. (не уверен, кто это делает в США - это может быть http://www.nanpa.com/). Эти документы обычно публикуются.
Но проблема в том, что мобильный номер!= способен получать смс. В настоящее время с переносом номеров и всеми идеями "единого общения" вы можете легко перенаправлять локальные номера на мобильные телефоны, негеографические номера, обрабатывающие смс и локальные "специальные" номера, переписывающие ваши входящие сообщения как сообщения facebook;) Например, мои локальные "стационарные" номера, номер перенаправляется на мобильный телефон в другой стране и в нескольких других местах.
Вам не следует взимать плату за сообщение, отправленное на несуществующий/иначе странный номер, поэтому может быть хорошим способом проверить, может ли кто-нибудь их получить. Если у вас есть хороший контроль над шлюзом SMS, вы можете отправить сообщение с сообщением о доставке активным и истечением срока действия == немедленное сообщение (забыли официальное название). Просто отправьте тестовое/приветственное сообщение - если оно не принято, вы можете пометить номер как недоступный. В противном случае вы можете просто попросить "номер, который принимает SMS" вместо "номера мобильного телефона".
Следующий script возвращает
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: $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";
Попытка объединить некоторые ответы здесь...
Даниэль упомянул, что
У вас есть JavaScript, чтобы открыть всплывающее окно с URL: " http://www.phonevalidator.com/results.aspx?p=" + номер телефона
Это все еще работает? Я не могу воспроизвести его. Если мы сможем это сделать, возможно, мы сможем использовать script, как показано ниже...
#!/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";
Другим вариантом является выбор пользователем поставщика сотовых телефонов из списка. Просто мысль.
Почему бы не составить список обычного формата для стационарных и мобильных номеров? Например, когда я нахожусь на стационарных линиях, всегда следуйте этому формату:
9xxxx xxxx
и мобильные телефоны всегда:
04xx xxx xxx
Вы можете легко составить список общего формата стационарных/мобильных номеров в области, в которой вы работаете. Затем, когда вы хотите узнать, является ли номер в США стационарным или мобильным, просто сравните его и посмотрите, соответствует ли он формату стационарного или мобильного номера.
Еще одна вещь, которая часто делается для проверки номеров телефонов, заключается в том, чтобы отправить временный контакт с помощью SMS на мобильный телефон пользователя и попросить их ввести этот вывод, чтобы проверить их номер.
Я могу представить, как это сделать, если бы у меня был доступ к основной мобильной сети. Однако API SS7, а не веб-API. Я бы поспорил, что любая служба, которая предлагает веб-API, действует как прокси-сервер в сети SS7, вместо того, чтобы полагаться на базы данных. Единственной альтернативой было бы запросить базу данных числовой базы. В конце концов, для завершения вызова все сетевые операторы должны определить, к какому другому оператору необходимо подключиться.
у нас есть услуга, которая обеспечивает фиксированное/сотовское обнаружение для США и Канады, а также определяет, является ли это число "Живой" или "Мертвый", какой беспроводной оператор переносит номер и т.д. Существует полный веб-API.
Если вы зарегистрируетесь для учетной записи на сайте www.hlrcheck.com, я получу ее для проверки и добавлю бесплатные кредиты для тестирования. На данный момент мы находимся в стадии бета-тестирования, но кандидат на полный выпуск неминуем.
Все решения, упомянутые здесь, являются поисками шаблонов статических чисел, но единственный надежный способ выяснить, действительно ли данный номер сотового телефона (и готов принять SMS) - выполнить поиск HLR. HLR означает "Регистр местоположений на дому", который представляет собой базу данных оператора мобильной сети с информацией о подписке в реальном времени. Существует несколько служб API для поиска HLR, например. www.hlr-lookups.com.