![]() |
Also, does anyone have a good set of dialrules for dealing with 10-digit dialing? (Like, for example Portland, Oregon?)
! $Id: dialrules,v 1.2 2002/05/23 20:05:14 darren Exp $ ! ! HylaFAX (tm) Dialing String Processing Rules. ! ! This file describes how to process user-specified dialing strings ! to create three items: ! ! CanonicalNumber: a unique string that is derived from all dialing ! strings to the same destination phone number. This string is used ! by the fax server for ``naming'' the destination. ! ! DialString: the string passed to the modem for use in dialing the ! telephone. This string should be void of any characters that might ! confuse the modem. ! ! DisplayNumber: the external, displayable, form of a number that ! does not include private information which should not be displayed ! to clients. ! Area=${AreaCode} ! local area code Country=${CountryCode} ! local country code IDPrefix=${InternationalPrefix} ! prefix for placing an international call LDPrefix=${LongDistancePrefix} ! prefix for placing a long distance call ! WS=" " ! our notion of white space ! ! Convert a phone number to a canonical format: ! ! +<country><areacode><rest> ! ! by (possibly) stripping off leading dialing prefixes for ! long distance and/or international dialing. ! CanonicalNumber := [ #.* = ! strip calling card stuff [abcABC] = 2 ! these convert alpha to numbers [defDEF] = 3 [ghiGHI] = 4 [jklJKL] = 5 [mnoMNO] = 6 [prsPRS] = 7 [tuvTUV] = 8 [wxyWXY] = 9 [^+0-9]+ = ! strip white space etc. ^${IDPrefix} = + ! replace int. dialing code ^${LDPrefix} = +${Country} ! replace l.d. dialing code ^[^+]{10} = +${Country}& ! otherwise, insert canon form ] ! ! Process a dialing string according to local requirements. ! These rules do only one transformation: they convert in-country ! international calls to long-distance calls. ! DialString := [ [-${WS}.]+ = ! strip syntactic sugar [abcABC] = 2 ! these convert alpha to numbers [defDEF] = 3 [ghiGHI] = 4 [jklJKL] = 5 [mnoMNO] = 6 [prsPRS] = 7 [tuvTUV] = 8 [wxyWXY] = 9 ^[+]${Country} = ${LDPrefix} ! long distance call ^[+] = ${IDPrefix} ! international call ^800[0-9]{7} = 1& ! 8001234567 to 18001234567 ^888[0-9]{7} = 1& ! similarly for 1888 numbers ^877[0-9]{7} = 1& ! 1877... ^866[0-9]{7} = 1& ! 1866... ! ! ! For dialing from Toronto, Ontario, Canada ! - original Area Code 416 ! - recently (around 2001) 647 overlay was added in the same area ! - surrounding region is 905, to which 289 was recently overlaid ! - from 416, some 905 exchanges are local (don't need a 1 prefix to dial) ! while others are long distance (need a 1 prefix) ! - this web site http://members.dandy.net/~czg/search.php was very ! handy for getting the list of which exchanges are local ! ! ^1(905[0-9]{7}) = \1 ! chop the 1 from all 905s and then add it ^905213[0-9]{4} = 1& ! back for exchanges known to be long ^905220[0-9]{4} = 1& ! distance from Toronto (416/647) ^905227[0-9]{4} = 1& ^905228[0-9]{4} = 1& ^905229[0-9]{4} = 1& ^905242[0-9]{4} = 1& ^905243[0-9]{4} = 1& ^905244[0-9]{4} = 1& ^905246[0-9]{4} = 1& ^905251[0-9]{4} = 1& ^905252[0-9]{4} = 1& ^905259[0-9]{4} = 1& ^905260[0-9]{4} = 1& ^905261[0-9]{4} = 1& ^905262[0-9]{4} = 1& ^905263[0-9]{4} = 1& ^905269[0-9]{4} = 1& ^905295[0-9]{4} = 1& ^905296[0-9]{4} = 1& ^905297[0-9]{4} = 1& ^905304[0-9]{4} = 1& ^905308[0-9]{4} = 1& ^905309[0-9]{4} = 1& ^905312[0-9]{4} = 1& ^905314[0-9]{4} = 1& ^905315[0-9]{4} = 1& ^905317[0-9]{4} = 1& ^905318[0-9]{4} = 1& ^905319[0-9]{4} = 1& ^905320[0-9]{4} = 1& ^905321[0-9]{4} = 1& ^905322[0-9]{4} = 1& ^905323[0-9]{4} = 1& ^905324[0-9]{4} = 1& ^905325[0-9]{4} = 1& ^905327[0-9]{4} = 1& ^905328[0-9]{4} = 1& ^905329[0-9]{4} = 1& ^905331[0-9]{4} = 1& ^905332[0-9]{4} = 1& ^905333[0-9]{4} = 1& ^905335[0-9]{4} = 1& ^905336[0-9]{4} = 1& ^905340[0-9]{4} = 1& ^905341[0-9]{4} = 1& ^905342[0-9]{4} = 1& ^905344[0-9]{4} = 1& ^905345[0-9]{4} = 1& ^905346[0-9]{4} = 1& ^905347[0-9]{4} = 1& ^905348[0-9]{4} = 1& ^905349[0-9]{4} = 1& ^905351[0-9]{4} = 1& ^905352[0-9]{4} = 1& ^905353[0-9]{4} = 1& ^905354[0-9]{4} = 1& ^905355[0-9]{4} = 1& ^905356[0-9]{4} = 1& ^905357[0-9]{4} = 1& ^905358[0-9]{4} = 1& ^905359[0-9]{4} = 1& ^905360[0-9]{4} = 1& ^905371[0-9]{4} = 1& ^905372[0-9]{4} = 1& ^905373[0-9]{4} = 1& ^905374[0-9]{4} = 1& ^905375[0-9]{4} = 1& ^905376[0-9]{4} = 1& ^905377[0-9]{4} = 1& ^905378[0-9]{4} = 1& ^905379[0-9]{4} = 1& ^905380[0-9]{4} = 1& ^905381[0-9]{4} = 1& ^905382[0-9]{4} = 1& ^905383[0-9]{4} = 1& ^905384[0-9]{4} = 1& ^905385[0-9]{4} = 1& ^905386[0-9]{4} = 1& ^905387[0-9]{4} = 1& ^905388[0-9]{4} = 1& ^905389[0-9]{4} = 1& ^905390[0-9]{4} = 1& ^905392[0-9]{4} = 1& ^905393[0-9]{4} = 1& ^905396[0-9]{4} = 1& ^905397[0-9]{4} = 1& ^905404[0-9]{4} = 1& ^905429[0-9]{4} = 1& ^905430[0-9]{4} = 1& ^905431[0-9]{4} = 1& ^905432[0-9]{4} = 1& ^905433[0-9]{4} = 1& ^905434[0-9]{4} = 1& ^905435[0-9]{4} = 1& ^905436[0-9]{4} = 1& ^905438[0-9]{4} = 1& ^905439[0-9]{4} = 1& ^905440[0-9]{4} = 1& ^905441[0-9]{4} = 1& ^905442[0-9]{4} = 1& ^905443[0-9]{4} = 1& ^905444[0-9]{4} = 1& ^905447[0-9]{4} = 1& ^905448[0-9]{4} = 1& ^905449[0-9]{4} = 1& ^905468[0-9]{4} = 1& ^905473[0-9]{4} = 1& ^905476[0-9]{4} = 1& ^905478[0-9]{4} = 1& ^905481[0-9]{4} = 1& ^905512[0-9]{4} = 1& ^905514[0-9]{4} = 1& ^905515[0-9]{4} = 1& ^905516[0-9]{4} = 1& ^905517[0-9]{4} = 1& ^905518[0-9]{4} = 1& ^905520[0-9]{4} = 1& ^905521[0-9]{4} = 1& ^905522[0-9]{4} = 1& ^905523[0-9]{4} = 1& ^905524[0-9]{4} = 1& ^905525[0-9]{4} = 1& ^905526[0-9]{4} = 1& ^905527[0-9]{4} = 1& ^905528[0-9]{4} = 1& ^905529[0-9]{4} = 1& ^905531[0-9]{4} = 1& ^905536[0-9]{4} = 1& ^905537[0-9]{4} = 1& ^905540[0-9]{4} = 1& ^905541[0-9]{4} = 1& ^905543[0-9]{4} = 1& ^905544[0-9]{4} = 1& ^905545[0-9]{4} = 1& ^905546[0-9]{4} = 1& ^905547[0-9]{4} = 1& ^905548[0-9]{4} = 1& ^905549[0-9]{4} = 1& ^905560[0-9]{4} = 1& ^905561[0-9]{4} = 1& ^905562[0-9]{4} = 1& ^905563[0-9]{4} = 1& ^905570[0-9]{4} = 1& ^905571[0-9]{4} = 1& ^905572[0-9]{4} = 1& ^905573[0-9]{4} = 1& ^905574[0-9]{4} = 1& ^905575[0-9]{4} = 1& ^905576[0-9]{4} = 1& ^905577[0-9]{4} = 1& ^905578[0-9]{4} = 1& ^905579[0-9]{4} = 1& ^905592[0-9]{4} = 1& ^905594[0-9]{4} = 1& ^905623[0-9]{4} = 1& ^905627[0-9]{4} = 1& ^905628[0-9]{4} = 1& ^905630[0-9]{4} = 1& ^905631[0-9]{4} = 1& ^905632[0-9]{4} = 1& ^905633[0-9]{4} = 1& ^905634[0-9]{4} = 1& ^905636[0-9]{4} = 1& ^905637[0-9]{4} = 1& ^905638[0-9]{4} = 1& ^905639[0-9]{4} = 1& ^905641[0-9]{4} = 1& ^905643[0-9]{4} = 1& ^905644[0-9]{4} = 1& ^905645[0-9]{4} = 1& ^905646[0-9]{4} = 1& ^905648[0-9]{4} = 1& ^905650[0-9]{4} = 1& ^905651[0-9]{4} = 1& ^905655[0-9]{4} = 1& ^905656[0-9]{4} = 1& ^905657[0-9]{4} = 1& ^905658[0-9]{4} = 1& ^905659[0-9]{4} = 1& ^905661[0-9]{4} = 1& ^905662[0-9]{4} = 1& ^905663[0-9]{4} = 1& ^905664[0-9]{4} = 1& ^905665[0-9]{4} = 1& ^905666[0-9]{4} = 1& ^905667[0-9]{4} = 1& ^905668[0-9]{4} = 1& ^905674[0-9]{4} = 1& ^905675[0-9]{4} = 1& ^905679[0-9]{4} = 1& ^905680[0-9]{4} = 1& ^905681[0-9]{4} = 1& ^905682[0-9]{4} = 1& ^905684[0-9]{4} = 1& ^905685[0-9]{4} = 1& ^905687[0-9]{4} = 1& ^905688[0-9]{4} = 1& ^905689[0-9]{4} = 1& ^905690[0-9]{4} = 1& ^905692[0-9]{4} = 1& ^905697[0-9]{4} = 1& ^905701[0-9]{4} = 1& ^905704[0-9]{4} = 1& ^905708[0-9]{4} = 1& ^905714[0-9]{4} = 1& ^905715[0-9]{4} = 1& ^905716[0-9]{4} = 1& ^905718[0-9]{4} = 1& ^905719[0-9]{4} = 1& ^905720[0-9]{4} = 1& ^905721[0-9]{4} = 1& ^905722[0-9]{4} = 1& ^905723[0-9]{4} = 1& ^905725[0-9]{4} = 1& ^905728[0-9]{4} = 1& ^905730[0-9]{4} = 1& ^905732[0-9]{4} = 1& ^905733[0-9]{4} = 1& ^905734[0-9]{4} = 1& ^905735[0-9]{4} = 1& ^905736[0-9]{4} = 1& ^905741[0-9]{4} = 1& ^905743[0-9]{4} = 1& ^905745[0-9]{4} = 1& ^905753[0-9]{4} = 1& ^905765[0-9]{4} = 1& ^905768[0-9]{4} = 1& ^905772[0-9]{4} = 1& ^905774[0-9]{4} = 1& ^905775[0-9]{4} = 1& ^905776[0-9]{4} = 1& ^905777[0-9]{4} = 1& ^905778[0-9]{4} = 1& ^905779[0-9]{4} = 1& ^905786[0-9]{4} = 1& ^905788[0-9]{4} = 1& ^905797[0-9]{4} = 1& ^905802[0-9]{4} = 1& ^905806[0-9]{4} = 1& ^905809[0-9]{4} = 1& ^905818[0-9]{4} = 1& ^905830[0-9]{4} = 1& ^905834[0-9]{4} = 1& ^905835[0-9]{4} = 1& ^905836[0-9]{4} = 1& ^905853[0-9]{4} = 1& ^905868[0-9]{4} = 1& ^905869[0-9]{4} = 1& ^905871[0-9]{4} = 1& ^905885[0-9]{4} = 1& ^905892[0-9]{4} = 1& ^905894[0-9]{4} = 1& ^905895[0-9]{4} = 1& ^905898[0-9]{4} = 1& ^905899[0-9]{4} = 1& ^905902[0-9]{4} = 1& ^905920[0-9]{4} = 1& ^905921[0-9]{4} = 1& ^905922[0-9]{4} = 1& ^905923[0-9]{4} = 1& ^905924[0-9]{4} = 1& ^905925[0-9]{4} = 1& ^905928[0-9]{4} = 1& ^905929[0-9]{4} = 1& ^905931[0-9]{4} = 1& ^905932[0-9]{4} = 1& ^905933[0-9]{4} = 1& ^905934[0-9]{4} = 1& ^905935[0-9]{4} = 1& ^905937[0-9]{4} = 1& ^905938[0-9]{4} = 1& ^905945[0-9]{4} = 1& ^905952[0-9]{4} = 1& ^905953[0-9]{4} = 1& ^905954[0-9]{4} = 1& ^905955[0-9]{4} = 1& ^905957[0-9]{4} = 1& ^905960[0-9]{4} = 1& ^905961[0-9]{4} = 1& ^905962[0-9]{4} = 1& ^905963[0-9]{4} = 1& ^905966[0-9]{4} = 1& ^905967[0-9]{4} = 1& ^905971[0-9]{4} = 1& ^905972[0-9]{4} = 1& ^905973[0-9]{4} = 1& ^905974[0-9]{4} = 1& ^905975[0-9]{4} = 1& ^905977[0-9]{4} = 1& ^905978[0-9]{4} = 1& ^905979[0-9]{4} = 1& ^905980[0-9]{4} = 1& ^905982[0-9]{4} = 1& ^905983[0-9]{4} = 1& ^905984[0-9]{4} = 1& ^905985[0-9]{4} = 1& ^905986[0-9]{4} = 1& ^905987[0-9]{4} = 1& ^905988[0-9]{4} = 1& ^905989[0-9]{4} = 1& ^905991[0-9]{4} = 1& ^905992[0-9]{4} = 1& ^905993[0-9]{4} = 1& ^905994[0-9]{4} = 1& ^1(289[0-9]{7}) = \1 ! chop the 1 (if there) from 289s, then add it ^289213[0-9]{4} = 1& ! back for exchanges known to be long dist ^289213[0-9]{4} = 1& ^289231[0-9]{4} = 1& ^289237[0-9]{4} = 1& ! So far there are only 22 exchanges in 289 ^289241[0-9]{4} = 1& ! and the 14 shown are not local to 416 ^289251[0-9]{4} = 1& ! (these are: 314,221,889,360,242,259,885,888) ^289260[0-9]{4} = 1& ! http://members.dandy.net/~czg/search.php ^289321[0-9]{4} = 1& ! as of 20030910 ^289331[0-9]{4} = 1& ^289395[0-9]{4} = 1& ^289439[0-9]{4} = 1& ^289669[0-9]{4} = 1& ^289821[0-9]{4} = 1& ^289886[0-9]{4} = 1& ^289887[0-9]{4} = 1& ^519[0-9]{7} = 1& ! all 519s are long dist, so add the 1, ^1(519927[0-9]{4}) = \1 ! except 519-927-xxxx (Caledon) so chop the 1 ^705[0-9]{7} = 1& ! all 705s are long dist ] ! ! Strip private information from the dial string which should not be ! displayed to clients. By default, DisplayNumber is not set. ! ! DisplayNumber := [ ! ]