In one embodiment, before the server 108 receives a query from a client 104, the server 108 obtains information from a database 120. The information may be local calling area data for different telephone numbers. The first six digits of a telephone number are referred to as NPA-NXX (its prefix). The area code is the first three digits of the prefix (i.e., the NPA, or Number Plan Area). NXX refers to the exchange which is the three digits following the area code. Together, the six digits form a number unique to a specific Central Office (CO). In one embodiment, the information stored in the database 120 is updated periodically (e.g., once a week).
The server 108 can retrieve a specific amount of information from the database 120, such as in one or more files. For example, the server 108 can extract the following files from the database 120:
File 1
1. NPA.1
2. NXX.1
3. Group.1 (local calling group)
File 2
1. NPA.2
2. Group.2 (local calling group)
3. NPA.2 (local calling npa)
4. NXX.2 (local calling nxx)
5. Band (to help identify the type of local service)
File 3
1. NPA.3
2. NXX.3
3. RC.3 (Rate Center)
4. State.3
These files typically originate from a computer system and/or database. They provide the necessary information in a tabular format to help to identify a calling area. The telecommunication provider's operating areas may change. As a result, the files may be updated periodically (e.g., weekly).
A Local Calling Group is a list of telephone exchanges that are local for a given call originating exchange. A rate center is the geographic area used by local exchange carriers to set rate boundaries for billing and for issuing phone numbers.
From these files, the calling area (e.g., local calling area) of a call from a particular NPA.1 and NXX.1 in a state is determined by a list of all exchanges identified by NPA.2 and NXX.2, if:
In one embodiment, the server 108 uses the data retrieved from the database 120 to create local calling area maps (or tables). The server 108 identifies a list of Rate Centers from the records in File—2, that are within the same local calling group (i.e., where NPA.1=NPA.2 and Group.1=Group.2). Thus, for every exchange which is local to an originating exchange, the local rate center, RC, and State are determined from
State=State.3
where
MAPk={RC1, RC2, . . . , RCj, . . . , RCn} for all k=1, 2, . . . , M
RCj=0 if rate center j is not present in the set
where j=1, 2, . . . , n and n is the number of rate centers in a state.
The server 108 uses the above method to create local calling area information (e.g., tables and/or maps) for all existing NPA-NXX's in every state. For example, for NPA-NXX's in the state of California, in one embodiment there are 680 distinct local calling area maps for a particular telephone service provider.
After creating the maps, the server 108 can store the maps (e.g., in its memory or in the database 120). The server 108 then indexes the NPA and Group values so that a local calling area map can be retrieved from the database 120.
Further, rate center polygons 228 may be transmitted to a rule engine 232. The rule engine 232 processes the rate center polygons using one or more rules and transmits its output 236 to the geo-processing module 224. In one embodiment, the rule engine 232 uses the rate center polygons 228 to generate boundary lines for a map.
In one embodiment, the rule engine 232 enables customization of maps (or tables) using one or more rules. In one embodiment, the rules enable the adjustment or customization (e.g., changing of the color) of a map. An example of a rule is to color a specific area code and/or zip code on a map a particular color.
The geo-processing module 224 generates one or more maps (and/or one or more tables) from the resulting data 220 and the output 236 and stores the map(s) (and/or tables) in a maps and tables database 208. In one embodiment, the geo-processing module 224 determines the exact coordinates of a local calling area in terms of, for instance, latitude and longitude.
When a query is received, the server 204 may retrieve information from the maps and tables database 208 to answer the query. The server 204 may also locate and retrieve a map corresponding to the query and provide the map to the party after receipt of a query.
The server receives a query from the client in step 308. The query can include a portion (e.g., the first six digits) of the calling party's telephone number or the entire calling party's telephone number. The server then retrieves a local calling area map from the plurality of local calling area maps based on the query in step 312.
The server transmits a response to the query back to the client in step 316. In one embodiment, the server determines, based on the query, whether to transmit to the client the retrieved local calling area map or a table as the response. Further, the server may determine to transmit an answer to the query indicating whether a specific call is a local call as the response to the query. For example, if the query contains the calling telephone number (or a portion of the calling telephone number) only, then the server may provide the client with the retrieved local calling area map or table (e.g., indicating area codes that are local calls) for the calling telephone number.
The previous and following description describes the present invention in terms of the processing steps required to implement an embodiment of the invention. These steps may be performed by an appropriately programmed computer, the configuration of which is well known in the art. An appropriate computer may be implemented, for example, using well known computer processors, memory units, storage devices, computer software, and other components. A high level block diagram of such a computer is shown in
One skilled in the art will recognize that an implementation of an actual computer will contain other components as well, and that
The foregoing Detailed Description is to be understood as being in every respect illustrative and exemplary, but not restrictive, and the scope of the invention disclosed herein is not to be determined from the Detailed Description, but rather from the claims as interpreted according to the full breadth permitted by the patent laws. It is to be understood that the embodiments shown and described herein are only illustrative of the principles of the present invention and that various modifications may be implemented by those skilled in the art without departing from the scope and spirit of the invention. Those skilled in the art could implement various other feature combinations without departing from the scope and spirit of the invention.