我的应用程序向人们发送短信,但是作为手机输入的号码有时是陆线(这是用户错误或用户不知道他们的联系号码是手机还是固定电话。)< / p>
我发现一些网站可以告诉我一个号码是固定电话还是手机,但它们不提供程序化API。是否有人知道网络应用程序可以判断一个号码是否可以接收短信?
我猜测试短信是一种方式,但我现在的短信网关在获得固定电话号码时失败并且没有告诉我它试图发送短信的固定电话号码。我会跟我的运营商联系,但如果他们是固定电话或手机号码,我会很乐意让用户输入电话号码。
更新: 有办法解决这个问题。看看http://www.phonevalidator.com,他们可以查询电话号码并确定它是固定电话还是手机。
答案 0 :(得分:5)
我担心找到它的唯一真正方法是联系短信网关服务提供商。可以在此处找到它们的列表,例如:
http://en.wikipedia.org/wiki/SMS_gateways
无论如何,我建议不要这样做:
当用户在自己的个人资料中插入手机号码时,请使用确认码将测试短信发送到此号码。如果用户未验证号码,请不要在以后向其发送短信。
答案 1 :(得分:5)
实际上有陆地线路运营商允许接收短信。通过text2voice网关或具有扩展功能的电话终端。此外,在欧洲,手机运营商已开始提供“虚拟陆线”,实际上是分配给一个特定基站的GSM蜂窝电话。但他们确实遵循陆线编号方案。
恢复 - 不允许向固定电话号码发送短信是错误的。
答案 2 :(得分:5)
这不是免费服务,但是一家名为Targus(不是行李公司)的公司有一个用于查询电话信息的API。他们可以判断它是固定电话还是电池,甚至是地址验证。根据您执行的查询次数收取费用(查询几美分)。 http://www.targusinfo.com/
跟进:我于2011年2月24日联系了TARGUSinfo,他们的销售代表告诉他们,他们只使用数十万到数百万的记录集,通常他们的客户可以实时插入他们的API访问。区分较小记录集的单元格数和地面行数是“他们无法协助的事情。”
答案 3 :(得分:5)
您可以让JavaScript打开一个带有url的弹出窗口: “http://www.phonevalidator.com/results.aspx?p=”+ phoneNumber
答案 4 :(得分:2)
以下脚本返回
646-826-3879 LANDLINE
用于Stack Overflow热线。
#!/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";
答案 5 :(得分:2)
我不确定你是否真的想这样做...如果你想告诉一个电话号码或固定电话提供商是否保留了号码,你应该可以在你所在国家的电信公司的某些文件中查找范围监督实体(不确定谁在美国这样做 - 可能是http://www.nanpa.com/)。这些文件通常是公开的。
但问题是手机号码!=能够接收短信。随着号码移植和所有“统一通信”的想法,现在您可以轻松地将本地号码重定向到手机,非地理号码处理微笑和本地“特殊”号码重写您的传入的微笑作为Facebook消息;)例如我的本地“固定电话”号码被重定向到另一个国家和其他几个地点的手机。
您不应该向发送给不存在的/其他奇怪号码的邮件收费,因此这可能是检查某人是否可以接收邮件的好方法。如果您可以很好地控制SMS网关,则可以发送一条消息,其中包含有效的发送报告和到期==立即消息(忘记了正式名称)。只需发送测试/欢迎消息 - 如果不接受,您可以将号码标记为不可用。否则,您只需要一个“接受短信的号码”而不是“手机号码”。
答案 6 :(得分:2)
尝试在这里结合一些答案......
丹尼尔提到了
您可以让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";
答案 7 :(得分:0)
另一种选择是让用户从列表中选择他们的手机提供商。只是一个想法。
答案 8 :(得分:0)
为什么不列出固定电话和手机号码的常用格式?例如,我所在的固定电话始终遵循以下格式:
9xxxx xxxx
和手机总是:
04xx xxx xxx
您可以轻松列出您所服务区域内固定电话/手机号码的一般格式。然后,当想要查明美国号码是固定电话还是移动电话时,只需比较它,看它是否与固定电话格式或手机号码格式匹配。
通常用于验证电话号码的另一件事是通过短信向用户的手机发送临时引脚,并要求他们输入该引脚以验证其号码。
答案 9 :(得分:0)
如果我可以访问核心移动网络,我可以想象这样做。这是一个SS7 API,但不是Web API。我敢打赌,任何提供Web API的服务都可以充当SS7网络的代理,而不是依赖于数据库。唯一的另一种选择是查询号码可用性数据库。最终,要终止呼叫,所有网络运营商都需要确定他们需要连接哪个其他运营商。
答案 10 :(得分:0)
我们提供的服务可以为美国和加拿大提供固定线路/蜂窝网络检测,还可以检测该号码是实时还是死机,该号码被移植到哪个无线运营商等。有一个完整的网络API。
如果您在www.hlrcheck.com注册一个帐户,我会对其进行验证并添加一些免费的积分供您测试。我们目前处于测试阶段,但即将发布候选版本。
答案 11 :(得分:0)
这里提到的所有解决方案都是静态数字模式查找,但唯一可靠的方法来确定给定的手机号码是否有效(并准备接收SMS)是执行HLR查找。 HLR代表归属位置寄存器,它是具有实时用户信息的移动网络运营商数据库。 HLR查找有几种API服务,例如www.hlr-lookups.com。