我的应用程序发送短信的人,但数字进入了他们的手机,有时陆线(这是用户错误或者用户并不真正知道他们是否有联系电话是手机或座机。)

我找到了几个网站,可以告诉我,如果一个号码是固定电话或手机,但他们没有提供程序化的API。是任何人都知道的一种方式的Web应用程序可以计算出,如果一个号码可以接收短信?

我想测试简讯是一种方式,但是当它得到一个固定电话号码,并没有告诉我它试图发送短信到固定号码我目前的短信网关出现故障硬盘。我会用我的运营商跟进,但我会爱一个简单的方法,让用户在如果他们是固定电话或手机号码输入电话号码。

更新: 有办法弄清楚这一点。看看 http://www.phonevalidator.com ,他们可以查询一个电话号码,如果它弄清楚是一个陆线或蜂窝电话。

有帮助吗?

解决方案

您可以打开的JavaScript的URL的弹出: “ http://www.phonevalidator.com/results.aspx?p= ” + phoneNumber的

其他提示

恐怕只有真正的方式来发现它是接触SMS网关服务商。它们的列表可以在这里找到,例如:

http://en.wikipedia.org/wiki/SMS_gateways

总之,代替我建议做如下:

当用户将手机号码到他或她的个人资料,发送短信的测试向此号码验证码。如果号码不被用户验证,不打扰以后发送SMS消息给它。

其实有在允许接收SMS陆地线路的运营商。无论是text2voice网关或电话终端与扩展能力。此外,欧洲的手机运营商已经开始提供“虚拟陆线”,这是在分配给一个特定基站事实上GSM手机。但他们遵循陆地线路编号方案。

恢复 - 不允许发送短信到陆线数是错误的

这不是一个免费的服务,但一个名为泰格斯公司(不是皮包公司)的查询电话信息的API。他们可以告诉如果是固定电话或手机,甚至地址验证。根据你有多少疑问做的电荷(几毛钱的查询)。 http://www.targusinfo.com/

跟帖:我接触TARGUSinfo于2011年2月24日,被他们的销售代表告诉记者,他们只在记录台的工作以百万计,通常他们的客户正在进入它们的实时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";

我不知道,如果你想这样做真的...如果你想知道一个数量由callphone或固定电话提供商保留的,你应该能够从你的国家的电信公司发现一些文件范围监管实体(不知道谁做,在美国 - 这可能是 http://www.nanpa.com/)。这些文档通常是公开的。

但问题是,移动电话号码!=能够接收SMS。随着数量的移植和所有的“统一通信”的理念如今你可以轻松拥有本地号码重定向到手机,非地理数字处理的短信和地方“特”号重写传入的短信如Facebook消息;)比如我的地方“座机”号被重定向到另一个国家和几个其他的位置的移动。

您不应该收取发送到一个不存在的邮件/否则陌生的号码,所以它可能是检查是否有人能接受他们的好方法。如果你有过短信网关很好的控制,你可以发送送达报告活跃和过期==即时消息的消息(忘了正式名称)。只需发送一个测试/欢迎消息 - 如果它不被接受,你可以标记的数量为不可用。否则,你可以要求一个“数字接受的短信”,而不是“手机号码”。

尝试一些答案这里将结合...

丹尼尔提到

  

您可以打开的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";

另一种选择是让用户从列表中选择他们的手机供应商。只是一个想法。

为什么不为固定电话和手机号码通常格式的名单?例如,在我位于陆线始终遵循此格式:

9xxxx xxxx

和移动台总是:

04xx xxx xxx

您可以轻松地进行固定电话/手机号码在你所服务的区域的一般格式的列表。然后,想找出一个美国号码是固定电话或手机,只是比较一下,看看它是否与座机格式或手机号码格式相匹配的时候。

这往往是做验证电话号码的另一件事,是通过短信发送一个临时密码到用户的手机,并要求他们以输入引脚,以验证它们的数量。

我可以想像这样做,如果我有接入到核心移动网络。这是一个SS7 API,虽然不是Web API。我敢打赌,它提供了一个Web API的任何服务作为代理到SS7网络,而不是依赖于数据库。唯一的其他替代方法是查询号码porability数据库。最后,为了终止呼叫,所有的网络运营商需要以确定它们需要连接到哪个其它操作符。

我们有提供固定线/美国和加拿大的细胞的检测,并且还检测该号码是否活的或死一个服务,该服务的无线运营商的号码被携带到等有一个完整的网络API。

如果您注册了在www.hlrcheck.com帐户我会得到它验证,并添加一些免费的信用为您测试。我们在此刻的测试版,但充满候选发布版已迫在眉睫。

在这里提到的所有解决方案都是静态的数字模式查找,但要弄清楚一个给定的手机号码是否有效(并准备接收SMS)的唯一可靠方法是执行HLR查询。 HLR代表归属位置寄存器,这与实时用户信息的移动网络运营商的数据库。有对HLR查询,例如一些API服务www.hlr-lookups.com。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top