The NALENND™ Telephone Number Type Identifier Database is used to determine whether a United States or Canadian telephone number is wireless (cellular), VoIP (voice over IP) or landline (wire line) based on the block type of current telecom carrier numbering resource assignments.
Updated monthly, the database lists all active telephone NPA (area code), NXX (exchange prefix) and thousands block identifier combinations. The NPA, NXX and thousands block identifier are used to identify the first seven digits of a ten digit North American telephone number.
This data provides a first step for those applications seeking U.S. FCC TCPA compliancy. These wireless do not call rules prohibit the initiation of telephone calls using automatic telephone dialing systems or an artificial or prerecorded voice to telephone numbers assigned to a paging service, cellular telephone service, specialized mobile radio service, or other radio common carrier service, or any service for which the called party is charged for the call.
While this database can correctly identify approximately 96% of all telephone numbers as either landline, VoIP or wireless, both the NALENND™ Telephone Number Type Identifier Database and the iconnectv Wireless Ported Number database which contains United States nationwide ported telephone numbers that have been moved from landline to wireless and wireless to landline are required for those applications seeking 100% compliance with United States wireless do not call rules.
Produced: on or before 5th calendar day monthly
Current Release: May 3, 2018
Distribution Frequency: monthly
Distribution Format: Internet download
|Data Field||Premium Edition||Standard Edition|
|Area Code (NPA)||Yes||Yes|
|Exchange Prefix (NXX)||Yes||Yes|
|1,000 Block Identifier||Yes||Yes|
|ISO 3166 Country Code||Yes||No|
|State or Province Abbreviation||Yes||No|
|Time Zone (UTC)||Yes||No|
|Daylight Savings Time (DST)||Yes||No|
|Number Type (BLOCKTYPE)||Yes||Yes|
The Premium Edition database provides the information required to determine if a United States or Canadian telephone number is wireless or landline based on original carrier allocation. This version additionally provides information to determine the time zone based on the geographic area associated with the telephone number.
CREATE DATABASE if not exists `nalennd`; USE `nalennd`; DROP TABLE IF EXISTS `tcpa`; CREATE TABLE `tcpa` ( `NPA` CHAR(3) NOT NULL, `NXX` CHAR(3) NOT NULL, `BLOCK` CHAR(1) NOT NULL, `COUNTRY` CHAR(2) NOT NULL, `STATE` CHAR(2) NOT NULL, `UTC` CHAR(6) NOT NULL, `DST` CHAR(1) NOT NULL, `BLOCKTYPE` CHAR(1) NOT NULL, `RESERVED` VARCHAR(128) DEFAULT NULL, PRIMARY KEY (`NPA`,`NXX`,`BLOCK`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;Sample Data
The Standard Edition database provides the minimum information required to determine if a United States or Canadian telephone number is wireless or landline based on original carrier allocation.
CREATE DATABASE if not exists `nalennd`; USE `nalennd`; DROP TABLE IF EXISTS `tcpa`; CREATE TABLE `tcpa` ( `NPA` CHAR(3) NOT NULL, `NXX` CHAR(3) NOT NULL, `BLOCK` CHAR(1) NOT NULL, `BLOCKTYPE` CHAR(1) NOT NULL, `RESERVED` VARCHAR(128) DEFAULT NULL, PRIMARY KEY (`NPA`,`NXX`,`BLOCK`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;Sample Data
Determining whether a telephone number is wireless or landline is accomplished through a simple SQL query to the NALENND™ data table. Assuming we have the telephone number (352) 357-1234 we would issue the following query. Upon success we would then retrieve the line type from the result set.
SELECT BLOCKTYPE FROM tcpa WHERE NPA='352' AND NXX='357' AND BLOCK='1' LIMIT 1;
While the NALENND™ Telephone Number Type Identifier Database can identify approximately 97% of all United States telephone numbers as wireless or landline, for full TCPA Wireless-do-not-call compliancy the NALENND™ must be augmented with the iconnectv Intermodal Ported Telephone Number data. Thus if we have loaded both the NALENND™ and the iconnectv data in to our database we could use a simple SQL stored procedure to query the data.
Note this particular procedure is written for MySQL, implementing in other SQL platforms will be similar.
CREATE DEFINER=`root`@`%` PROCEDURE `linetype`(phone CHAR(10)) READS SQL DATA BEGIN DECLARE ltype CHAR(1) DEFAULT null; DECLARE ported CHAR(1) DEFAULT 'N'; SELECT `btype` INTO ltype FROM `tcpa` WHERE `NPA`=SUBSTRING(phone,1,3) AND `NXX`=SUBSTRING(phone,4,3) AND `BLOCK`=SUBSTRING(phone,7,1) LIMIT 1; IF (ltype IS NOT NULL) THEN /* we have found the number block in our NALENND data, check iconnectv to see if ported */ IF (ltype = 'S') THEN IF EXISTS(SELECT 1 FROM `landline2wireless` WHERE `number`=phone LIMIT 1) THEN /* number has been ported, was originally a landline */ SET ported = 'Y'; SET ltype = 'W'; ELSE SET ltype = 'L'; END IF; ELSE IF EXISTS(SELECT 1 FROM `wireless2landline` WHERE `number`=phone LIMIT 1) THEN /* number has been ported, was originally wireless */ SET ported = 'Y'; SET ltype = 'L'; ELSE SET ltype = 'W'; END IF; END IF; END IF; SELECT ltype,ported; END
To use the stored procedure, again using the telephone number (352) 357-1234, we would issue our SQL query like so.
We would then retrieve the ltype and ported values from our result set.