2009-04-13 26 views
17

Ứng dụng của tôi gửi tin nhắn SMS cho mọi người, nhưng những con số được nhập vào như điện thoại di động của họ đôi khi là đường đất (đây là lỗi người dùng hoặc người dùng không thực sự biết số điện thoại liên lạc của họ là điện thoại di động hoặc điện thoại cố định.)API dựa trên web có thể cho tôi biết liệu một số có phải là điện thoại cố định hoặc điện thoại di động không?

Tôi tìm thấy một vài trang web có thể cho tôi biết nếu một số là điện thoại cố định hoặc điện thoại di động, nhưng chúng không cung cấp API có lập trình. Có ai biết cách một ứng dụng web có thể tìm ra liệu một số có thể nhận tin nhắn SMS không?

Tôi đoán tin nhắn SMS thử nghiệm là một chiều nhưng cổng SMS hiện tại của tôi không gặp khó khăn khi số điện thoại cố định và không cho tôi biết số điện thoại cố định đã gửi SMS. Tôi sẽ theo dõi điều này với nhà cung cấp dịch vụ của mình, nhưng tôi rất thích một cách dễ dàng để người dùng nhập số điện thoại nếu họ là số điện thoại cố định hoặc số di động.

Cập nhật: Có nhiều cách để tìm hiểu điều này. Hãy xem http://www.phonevalidator.com, họ có thể truy vấn số điện thoại và tìm hiểu xem đó có phải là điện thoại cố định hoặc điện thoại di động hay không.

+2

Đây cũng là vấn đề về quyền riêng tư tiềm ẩn. Việc truyền thông tin bí mật của người dùng đến một bên thứ ba không đáng tin cậy có thực sự là cách bạn muốn giải quyết vấn đề này không? –

Trả lời

4

Bạn có thể mở JavaScript một popup với url: "http://www.phonevalidator.com/results.aspx?p=" + PhoneNumber

+0

Nếu bạn muốn tìm hiểu thêm, bạn cũng có thể đọc thông tin npa và nxx từ các số, đó là một số thông tin tốt: http://ezinearticles.com/?Best-Place-to-Perform-an-NPA-NXX-Lookup&id = 1830567 –

+2

Có vẻ như điều này không hoạt động nữa, giờ đây họ có xác thực xác thực để ngăn bot truy cập trang web. –

5

Tôi e rằng cách thực sự duy nhất để tìm ra là liên hệ với nhà cung cấp dịch vụ SMS gateway. Một danh sách của họ có thể được tìm thấy ở đây ví dụ:

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

Dù sao, thay vì đó tôi đề nghị làm như sau:

Khi người dùng chèn số điện thoại di động vào hồ sơ của mình, gửi kiểm tra tin nhắn SMS đến số này với mã xác nhận. Nếu số không được xác minh bởi người dùng, đừng bận tâm gửi tin nhắn SMS đến nó sau này.

+0

Điều đó có vẻ không đúng. Tôi đưa ra một ví dụ về một trang web mà con số ra nếu # là một điện thoại cố định hoặc di động. Trong trường hợp của tôi, các con số dành cho bên thứ 3 nên tôi không thể liên lạc với người thực sự sở hữu số điện thoại mà không có lý do chính đáng. – MikeN

+0

Bạn cũng nên biết rằng dịch vụ đó không thể chính xác 100%, đặc biệt nếu bạn làm việc với các số điện thoại quốc tế. –

+0

Trên thực tế, thay vì gửi THEM SMS, hãy yêu cầu họ gửi cho bạn tin nhắn SMS chứa nội dung nào đó, nếu bạn có thể nhận được tin nhắn đó. Bằng cách đó, chi phí được giảm thiểu cho tất cả các bên. –

1

Các kịch bản sau trả

646-826-3879 LANDLINE 

cho đường dây nóng 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"; 
+0

Đây là một ý tưởng thực sự thú vị (để sàng lọc một trong các trang web), nhưng trang web area-codes.com là sai. Nó báo cáo điện thoại di động như điện thoại cố định là tốt (ngay cả những người trong mã vùng điện thoại di động NY 917.) Tôi cũng không biết làm thế nào khả năng mở rộng nó được, họ không cung cấp một API. Nếu họ thấy máy chủ web của tôi nhấn mạnh trang web của họ theo cách lập trình, họ sẽ đưa tôi vào danh sách đen. – MikeN

5

Thực tế có các nhà điều hành đường bộ cho phép nhận SMS. Hoặc bằng cổng text2voice hoặc thiết bị đầu cuối điện thoại có khả năng mở rộng. Hơn nữa, ở châu Âu các nhà khai thác di động đã bắt đầu cung cấp "đường đất ảo", mà trên thực tế, điện thoại di động GSM được gán cho một trạm gốc cụ thể. Nhưng họ làm theo kế hoạch đánh số dòng đất.

Tiếp tục — không cho phép gửi SMS tới số điện thoại cố định là sai.

+0

Cảm ơn bạn đã nêu lên một điểm thú vị. Sản phẩm SMS của tôi được nhắm mục tiêu tại thị trường Hoa Kỳ và tôi rất sẵn lòng gửi tin nhắn SMS đến bất kỳ điện thoại nào nhận được chúng. Theo quan điểm của người dùng, tôi yêu cầu họ nhập vào điện thoại di động của một người, chủ yếu cho tin nhắn SMS, nhưng với người dùng họ cũng có thể quan tâm nếu số điện thoại đó được người đó mang theo khi họ không ở nhà. – MikeN

0

Một tùy chọn khác sẽ là để người dùng chọn nhà cung cấp điện thoại di động của họ từ danh sách. Chỉ là một ý nghĩ.

2

Tôi không chắc chắn nếu bạn muốn thực hiện điều đó ... Nếu bạn muốn biết số điện thoại có được đặt trước bởi nhà cung cấp điện thoại hoặc điện thoại cố định hay không, bạn có thể tìm thấy phạm vi trong một số tài liệu từ quốc gia của bạn thực thể giám sát viễn thông (không chắc ai thực hiện điều đó ở Hoa Kỳ - có thể là http://www.nanpa.com/). Những tài liệu này thường được công khai.

Nhưng vấn đề là số điện thoại di động! = Có thể nhận sms. Với porting số và tất cả các ý tưởng "truyền thông hợp nhất" ngày nay bạn có thể dễ dàng có số địa phương chuyển hướng đến điện thoại di động, số không địa lý xử lý tin nhắn và số "đặc biệt" địa phương viết lại tin nhắn của bạn như tin nhắn facebook;) số được chuyển hướng đến một thiết bị di động ở một quốc gia khác và một vài địa điểm khác.

Bạn không nên bị tính phí cho thư được gửi tới số không tồn tại/số khác lạ, vì vậy, đó có thể là cách hay để kiểm tra xem ai đó có thể nhận được chúng hay không. Nếu bạn có quyền kiểm soát tốt cổng SMS, bạn có thể gửi tin nhắn có báo cáo phân phối đang hoạt động và hết hạn == tin nhắn tức thời (quên tên chính thức). Chỉ cần gửi tin nhắn thử nghiệm/chào mừng - nếu nó không được chấp nhận, bạn có thể đánh dấu số là không có sẵn. Nếu không, bạn chỉ có thể yêu cầu "số chấp nhận SMS" thay vì "số điện thoại di động".

0

Tại sao không tạo danh sách định dạng thông thường cho số điện thoại cố định và số di động? Ví dụ, điện thoại cố định, nơi tôi đang nằm luôn luôn làm theo định dạng này:

9xxxx xxxx 

và điện thoại di động luôn:

04xx xxx xxx 

Bạn có thể dễ dàng thực hiện một danh sách các định dạng chung của điện thoại cố định/số điện thoại di động trong khu vực bạn đang phục vụ. Sau đó, khi muốn tìm hiểu xem một số của Hoa Kỳ là điện thoại cố định hay di động, chỉ cần so sánh nó và xem liệu nó có khớp với định dạng số điện thoại cố định hay định dạng số điện thoại di động hay không.

Một việc khác thường được thực hiện để xác thực số điện thoại là gửi mã PIN tạm thời qua SMS tới điện thoại di động của người dùng và yêu cầu họ nhập mã pin đó để xác thực số của họ.

+6

Thật không may, ở Bắc Mỹ không có sự tách biệt điện thoại cố định so với số điện thoại di động theo cách này. Tất cả đều chia sẻ cùng một kế hoạch đánh số mà không có bất kỳ sự phân biệt nào. Và, với số lượng khách hàng di chuyển có thể chuyển từ điện thoại cố định sang nhà cung cấp dịch vụ di động mà không thay đổi số điện thoại của họ. –

+1

Đó là một ý tưởng hay, không hoạt động ở mọi nơi. Xin lỗi bạn đã có tất cả các phiếu bầu xuống - một số nhà phát triển chỉ ... bạn biết đấy. 1 để cố gắng nghĩ ra những cách khác. – xil3

5

Đây không phải là dịch vụ miễn phí, nhưng một công ty có tên Targus (không phải công ty túi) có API để truy vấn thông tin điện thoại. Họ có thể biết đó là điện thoại cố định hay di động, thậm chí là xác nhận địa chỉ. Khoản phí dựa trên số lượng truy vấn bạn thực hiện (một vài xu một truy vấn). http://www.targusinfo.com/

followup: Tôi đã liên lạc với TARGUSinfo trên 24 tháng hai năm 2011 và được cho biết bởi đại diện bán hàng của họ rằng họ chỉ làm việc với bộ hồ sơ trong hàng ngàn hàng trăm-of-cho hàng triệu người và thường khách hàng của họ được cắm vào API của họ cho truy cập thời gian thực. Việc phân biệt giữa số ô và số dòng đất cho các tập bản ghi nhỏ hơn là "không phải thứ gì đó mà chúng có thể hỗ trợ."

0

Tôi có thể hình dung điều này, nếu tôi có quyền truy cập vào mạng di động cốt lõi. Đó là một API SS7, tuy nhiên, không phải là một API Web. Tôi sẽ đặt cược rằng bất kỳ dịch vụ nào cung cấp Web API hoạt động như một proxy cho mạng SS7, thay vì dựa vào cơ sở dữ liệu. Cách duy nhất khác sẽ là truy vấn cơ sở dữ liệu porability số. Cuối cùng, để chấm dứt cuộc gọi, tất cả các nhà khai thác mạng cần phải xác định toán tử nào khác mà họ cần kết nối.

1

Cố gắng kết hợp một số câu trả lời ở đây ...

Daniel nói rằng

Bạn có thể có JavaScript mở cửa sổ bật lên có url: "http://www.phonevalidator.com/results.aspx?p=" + phoneNumber

Điều này vẫn hoạt động? Tôi không thể tái tạo nó. Nếu chúng ta có thể nhận được rằng để làm việc, thì có lẽ chúng ta có thể sử dụng một kịch bản như sau ...

#!/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"; 
0

chúng ta có một dịch vụ cung cấp dòng cố định/phát hiện di động cho Hoa Kỳ và Canada, và cũng có thể phát hiện nếu số là Live hoặc Dead, mạng di động không dây được chuyển đến. Có API đầy đủ trên web.

Nếu bạn đăng ký tài khoản tại www.hlrcheck.com, tôi sẽ xác minh tài khoản và thêm một số khoản tín dụng miễn phí để bạn kiểm tra. Chúng tôi đang ở giai đoạn thử nghiệm vào lúc này, nhưng ứng cử viên phát hành đầy đủ sắp xảy ra.

0

Tất cả các giải pháp được đề cập ở đây là tra cứu mẫu số tĩnh nhưng cách đáng tin cậy duy nhất để biết liệu số điện thoại di động có hợp lệ (và sẵn sàng nhận SMS) hay không là thực hiện Tra cứu HLR. HLR là viết tắt của Home Location Register, là một cơ sở dữ liệu mạng di động với thông tin người đăng ký thời gian thực. Có một số dịch vụ API để tra cứu HLR, ví dụ: www.hlr-lookups.com.

Các vấn đề liên quan