[Asterisk-Users] OT?: International number parsing

Simone Cittadini mymailforlists at gmail.com
Sat Jan 28 06:10:32 MST 2006


Ron hotmail ha scritto:

> The short answer is no, you will never have a situation where the 
> 'local' part of the term number is mistaken for part of the dialcode.
> for example,
> your customer dials 0119647701773352 (Iraq mobile number)
>  
> Iraq                011964
> Iraq-Baghdad   0119641
> Iraq-Mobile      0119647701
>  
> this would cause a match on Iraq, and Iraq-Mobile, but not on baghdad, 
> the 'most' accurate match would be the dialcode with the most digits...
>  

That's the way I'm doing it :

let's MAX_PRE_LENGHT be the maximum lenght for a prefix (as today it's 
10, for 0061891006, Australia Christmas Island)
and DST_LENGTH the lenght of the called number (DST)

for i in range(min(MAX_PRE_LENGTH, DST_LENGTH)):
    probablePrefix = DST[0:min(MAX_PRE_LENGTH, DST_LENGTH)-i]
    select probablePrefix from a table with all the prefixes (and other 
info you can need)
    if we found something that's the prefix, break to the application
    else continue with a smaller try

 From the original post it seems there are two tables, one for the 
country and one for the city, like having one table with
0011964 - Iraq
and one with
Iraq - 1 - Bagdad
Iraq - 7701 - Mobile

I don't know if this speed up things, in my case it surely won't since I 
have a large-grained detail for locating the call (I'm not interested in 
city codes, so for example I've only one entry for Italy, and not a lot 
of entries like 'Italy Milan', 'Italy Rome'...) so a join would slow the 
benefit of smaller values for MAX_PRE_LENGTH, it depends on the application.

Seems that when you need to have fine-grained detail the search is made 
in reverse, for example message boxes for cellular phones :
<black box understanding warning>
if I call (not a real number, but I know a real example I won't post for 
obvious reasons) 345 - 333444555 while the cell is off I get a voice :
"answer 333444555, the phone is off, leave a message"
if I call 345 - 3333333444555 the message is the same : "answer 
333444555, the phone is off, leave a message"
so the search is made backwards, and the application starts as long as 
only one possible match is found.
I don't even think we are talking about relational db here, probably 
some directory to speed up things with a tree-search, anyone working in 
the large who can confirm ?
</black box understanding warning>



More information about the asterisk-users mailing list