私のアプリケーションはSMSメッセージを人々に送信しますが、携帯電話として入力された番号は固定電話である場合があります(これはユーザーエラーであるか、ユーザーが自分の連絡先番号が携帯電話であるかどうかを実際に知らない場合です)電話または固定電話。)
番号が固定電話なのか携帯電話なのかを教えてくれるウェブサイトをいくつか見つけましたが、それらはプログラマティックAPIを提供していません。番号がSMSメッセージを受信できるかどうかをWebアプリケーションが把握できる方法を知っている人はいますか?
テストSMSメッセージは一方向だと思いますが、私の現在のSMSゲートウェイは、固定電話番号を取得し、固定電話番号を教えてくれないのに失敗しますSMSをに送信しようとしました。これは携帯通信会社にフォローアップしますが、固定電話または携帯電話番号の場合は、ユーザーが電話番号を入力できるようにする簡単な方法が必要です。 。
更新:これを理解する方法があります。 http://www.phonevalidator.com を見てください。電話番号を照会して、それが固定電話か携帯電話かを判断できます。
JavaScriptに次のURLでポップアップを開くことができます: " http://www.phonevalidator.com/results.aspx?p= " + phoneNumber
これは無料のサービスではありませんが、Targusという会社(バッグ会社ではありません)には、電話情報を照会するためのAPIがあります。彼らはそれが固定電話なのか携帯電話なのかを知ることができ、検証に取り組むことさえできます。実行するクエリの数に基づく料金(クエリの数セント)。 http://www.targusinfo.com/
フォローアップ:2011年2月24日にTARGUSinfoに連絡したところ、営業担当者から、数十万から数百万のレコードセットのみを処理し、通常、顧客はリアルタイムアクセスのためにAPIに接続されていると言われました。小さなレコードセットのセル番号と固定電話番号を区別することは、「彼らが支援できるものではありません」。
私はそれを見つける唯一の本当の方法は連絡先SMSゲートウェイサービスプロバイダーです。それらのリストはここにあります例えば:
http://en.wikipedia.org/wiki/SMS_gateways
とにかく、その代わりに、次のことをお勧めします。
ユーザーが自分のプロファイルに携帯電話番号を挿入するときは、テストSMSを確認コードとともにこの番号に送信します。番号がユーザーによって確認されない場合は、わざわざ送信しないでくださいSMSメッセージ。
実際には、SMSの受信を許可する固定電話事業者がいます。 text2voiceゲートウェイまたは拡張機能を備えた電話端末のいずれか。さらに、ヨーロッパでは、携帯電話事業者が「仮想陸上回線」の提供を開始しました。これは、実際には1つの特定の基地局に割り当てられたGSM携帯電話です。しかし、それらは固定電話の番号付けスキームに従います。
再開—固定電話番号へのSMSの送信を許可しないのは間違っています。
ここでいくつかの答えを組み合わせようとしています...
ダニエルは
JavaScriptに次のURLでポップアップを開くことができます: " http://www.phonevalidator.com/results.aspx?p= " + phoneNumber
これはまだ機能しますか?再現できないようです。それを機能させることができれば、次のようなスクリプトを使用できるかもしれません...
#!/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";
本当にそれをしたいかどうかはわかりません...番号が電話または固定電話プロバイダーによって予約されているかどうかを知りたい場合は、あなたの国の電話会社の監督機関からのいくつかの文書で範囲を見つけることができるはずです(米国で誰がそれをしているのかわからない-それは http://www.nanpa.com/ )かもしれない。これらのドキュメントは通常公開されています。
しかし、問題は、携帯電話番号!= SMSを受信できることです。番号の移植とすべての「ユニファイドコミュニケーション」のアイデアにより、ローカル番号を携帯電話にリダイレクトしたり、非地理的な番号でSMSを処理したり、ローカルの「特別な」番号で受信したSMSをFacebookメッセージとして書き換えたりすることができます;)たとえば、私のローカルの「ランドライン」番号は、別の国および他のいくつかの場所の携帯電話にリダイレクトされます。
存在しない/その他の奇妙な番号に送信されたメッセージに対して課金されるべきではないので、誰かがそれらを受信できるかどうかを確認するための良い方法かもしれません。 SMSゲートウェイを適切に制御できる場合は、配信レポートがアクティブで、有効期限が==即時メッセージ(正式な名前を忘れた)のメッセージを送信できます。テスト/ウェルカムメッセージを送信するだけです-受け入れられない場合は、その番号を利用不可としてマークできます。それ以外の場合は、「携帯電話番号」の代わりに「SMSを受け入れる番号」を要求できます。
次のスクリプトは
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";
別のオプションは、ユーザーにリストから携帯電話プロバイダーを選択させることです。ちょっとした考え。
米国とカナダに固定回線/携帯電話の検出を提供し、番号がライブかデッドか、番号が移植されている無線通信事業者などを検出するサービスがあります。完全なWebAPIがあります。
Www.hlrcheck.comでアカウントにサインアップすると、アカウントが検証され、テスト用に無料のクレジットが追加されます。現在ベータ版ですが、完全リリースの候補が間近に迫っています。
ここで説明するすべてのソリューションは静的な番号パターンルックアップですが、特定の携帯電話番号が有効である(そしてSMSを受信する準備ができている)かどうかを判断する唯一の信頼できる方法は、HLRルックアップを実行することです。 HLRはHomeLocation Registerの略で、リアルタイムの加入者情報を備えたモバイルネットワーク事業者データベースです。 HLRルックアップにはいくつかのAPIサービスがあります。 www.hlr-lookups.com。
コアモバイルネットワークにアクセスできれば、これを行うことを想像できます。これはSS7APIですが、WebAPIではありません。 Web APIを提供するサービスは、データベースに依存するのではなく、SS7ネットワークのプロキシとして機能するに違いありません。他の唯一の選択肢は、数値ポーラビリティデータベースをクエリすることです。最終的に、通話を終了するには、すべてのネットワークオペレーターが、接続する必要のある他のオペレーターを決定する必要があります。
固定電話と携帯電話番号の通常の形式のリストを作成してみませんか?たとえば、私がいる場所では、固定電話は常に次の形式に従います。
9xxxx xxxx
と携帯電話は常に:
04xx xxx xxx
サービスを提供している地域の固定電話/携帯電話番号の一般的な形式のリストを簡単に作成できます。次に、米国の番号が固定電話か携帯電話かを調べたい場合は、それを比較して、固定電話の形式と携帯電話の形式のどちらに一致するかを確認します。
電話番号を検証するためによく行われるもう1つの方法は、SMSを介して一時的なPINをユーザーの携帯電話に送信し、番号を検証するためにそのPINを入力するようにユーザーに依頼することです。