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