A dial peer answers three questions about a call: which numbers it handles, how the call goes out and who may use it. The form is laid out in exactly that order, in three numbered sections.
Go to Routing → Dial Peers → CONFIGURE (or + New Dial Peer). First comes Dial Peer Info: Name (required, make it self-explanatory — “Colombia mobile → CarrierX”) and Description. Save it and the three sections appear.
1 · Which numbers this peer handles (Dial Rules)
Two fixed slots, not a list:
- ALLOW — required. It defines what the peer routes. Until you set it the peer routes nothing, and the row is flagged in orange.
- DENY — optional. It carves an exception out of the ALLOW. By default nothing is restricted.
A call uses this peer when it matches the ALLOW and does not match the DENY. Typical shape: ALLOW all of Colombia, DENY the premium ranges you do not want to carry.
The wizard: three ways to write the same thing
Pressing Set Allow rule, Add exception or Edit opens a wizard with three tabs. All three produce the same thing — a pattern on the dialled number — at three levels of detail.
Whole Country (recommended)
You pick a country and NEXIA builds a short rule from its calling code and its number length. It is the default because it keeps the rule stable: who connects and at what price is the tariff's job, not the regex's.
| Country | Generated rule | What it accepts |
|---|---|---|
| Colombia (+57) | ^57[0-9]{10}$ | 12 digits: 57 + 10 |
| Spain (+34) | ^34[0-9]{9}$ | 11 digits: 34 + 9 |
| USA / NANP (+1) | ^1[2-9][0-9]{2}[2-9][0-9]{6}$ | NANP-valid numbers only |
The +1 rule deserves a note: under the NANP neither the area code nor the exchange may
start with 0 or 1, so the rule enforces that and throws out junk like 10001234567
that a plain ^1[0-9]{10}$ would let through. Mind that the +1 zone is shared
(USA, Canada, the Caribbean): this rule covers all of it. For a single +1 country or a single
state, use By Destinations.
The same tab carries the A-Z (all destinations) shortcut: it generates
^[0-9]+$, which matches any E.164 number. That is the “everything else”
peer, usually sitting at the lowest priority (highest number) of the routing group.
The preview shows the generated pattern and comes with a tester: type a number and it tells you MATCH or NO MATCH with the digit count.
By Destinations
You pick a country and its catalogue destinations (Routing → Destinations) appear with their type — Mobile, Fixed, Area, Premium… — and their defining prefixes. Tick the ones you want and NEXIA builds the pattern from those prefixes plus each destination's declared length, sorting longest prefix first so the most specific one wins.
This is for surgical scope: only Colombia Mobile, or a single US state by its area codes. A counter tells you how many prefixes went into the rule. If a destination has no declared length, the wizard says so: that branch will accept any length until you set it in Routing → Destinations.
Manual Regex
For the genuinely irregular. You write the pattern yourself, with two helpers:
- Quick build from a sample number: paste a real number and Detect looks it up in
the catalogue (longest prefix). It returns the destination and country and offers ready-made
regexes: the strict one (exact length), the loose one (any length with that prefix) and broader
variants — from
57310up to Colombia Mobile (573) and up to all of Colombia (57). Use drops it into the field. - Live tester: under the pattern, type a number and the pill shows ✓ Match, ✗ No match or Invalid regex as you type.
Numbers travel through NEXIA in E.164 without the “+”: country code plus
number, digits only (573001234567). Write your patterns against that format. Full
guide in Regex for routes and numbers.
^[0-9]+$) leaves the peer
routing nothing at all — the panel warns you before saving. If what you want is to turn the
peer off, use its Enabled switch instead: a disabled peer is ignored in every routing group
it belongs to, and comes back with its configuration intact.The Simulator
Right under the rules, the Simulator section shows what happens to a call with the current configuration, without routing anything. Type the dialled number and, if the peer filters by origin, the calling number too; press Simulate.
The result is the real evaluation, step by step, as a row of chips:
| Step | What it tells you |
|---|---|
| ALLOW | Whether the number matches the rule (and which rule, in the tooltip). A missing rule is flagged as an error. |
| DENY | blocked if the exception caught it, not hit if not, or a dash when there is no DENY. |
| CALLER | Whether the origin passes section 3's filters. If filters exist and you left the calling number empty, it asks for it. |
| Destination | The catalogue country and destination for that number, with its prefix. Informational: it neither enables nor blocks the call. |
Below that, the verdict: ROUTES or NO ROUTE with the exact reason (“the number does not match the ALLOW rule”, “no termination points assigned”, “no carrier clears the margin floor for this number”…).
When it routes, it also shows the real carrier order — numbered, with each one's P, %, its cost for that number and the margin it leaves — plus a final then STOP chip if the peer has stop hunting. With margin control on, you also get the configured floor, the selling price of that number, and the list of carriers rejected on margin with the reason for each.
2 · How the call goes out
Carrier order
The Try the carriers… dropdown has two options:
- In my order (priority & weight) — your configuration rules: sorted by P ascending and, within the same P, shared by percentage.
- Cheapest first (LCR) — price rules: for each number every carrier's cost rate is compared and the cheapest is tried first. Carriers with no rate for that number sink to the end.
Stop hunting
The checkbox If all carriers here fail, do not try other dial peers. With it on, once this peer's carriers are exhausted the call ends there instead of falling through to the next dial peer in the group.
Termination Points
+ Assign TP adds each carrier. On every row you edit two numbers, saved instantly:
- P (priority): the order. Lower is tried first.
- % (weight): the share among TPs on the same P. Two carriers at P1 with 50 and 50 split the traffic evenly; at 90 and 10 you can trial a new one with 10% of it.
The IP and the Edit TP button both open the termination point, in case you need to fix its IP, its tech prefix or its cost tariff. The × unassigns it from this dial peer; it does not delete it.
With Cheapest first, price decides the order instead of P.
Protect the margin (optional)
It compares what you sell that number for against what each carrier charges you, and drops the ones that do not leave enough. Three fields:
| Field | What it is for |
|---|---|
| Selling tariff to protect | The selling tariff to measure against. Empty = no margin check. |
| Min. margin / min | The floor in money per minute (sell − cost). |
| or min. margin % | The floor as a percentage of the selling rate. |
Set one or both: with both set, a carrier must clear both. Picking the tariff without any floor checks nothing, and the panel says so.
- A carrier that misses the floor is not used for that number — it stays available for every other destination where it does pay off.
- If none clears the floor, that number does not go out through this peer and the call falls through to the next dial peer in the routing group.
- Floor 0 = never lose money. A negative floor tolerates losing up to that much
(
-1, for instance, leaves the check effectively inert). - When the selling or the cost rate for that number is missing, the margin cannot be computed and the carrier is kept: routing never vanishes silently because of a hole in a rate sheet. The Simulator tells you when that happens.
Changes in this section are applied with the section's Save button.
3 · Who is allowed to call (optional)
This section filters by the CALLER ID — the source number — and never by the dialled destination. That is the most common mix-up: to limit destinations, use section 1.
It has the same two slots and the same wizard:
- ALLOW CALLERS — only matching origins may use the peer. Blank: anyone may call.
- BLOCK CALLERS — matching origins are kept out. Blank: nobody is blocked.
Block wins over allow: a number matching both is blocked. The × on each row returns it to the default. These filters take up to 255 characters, so use short forms — Whole Country or a brief manual regex — instead of enumerating prefixes.
Real use cases: letting only one customer's DIDs out through a premium route with verified caller ID, or blocking a source range that is generating irregular traffic.
Used in Routing Groups
At the bottom of the form, this list tells you which routing groups the peer belongs to and with what P and % in each. Check it before changing rules or deleting the peer: it is the list of customers depending on it. The links open each group.
Best practices
- One dial peer per business intent (“LATAM premium”, “Spain cheap landline”), not a giant one with everything: it reads, tests and turns off independently.
- Always start with Whole Country. Drop to By Destinations only when you genuinely need a subset, and to Manual Regex only when the case is irregular.
- After every change, simulate three numbers: one that must pass, one that must not, and an edge case (minimum or maximum length).
- Carrier switch: add it at 10% weight, watch ASR/ACD for a day, and only then move the rest of the traffic.
- Do not use ever-finer rules to block destinations: that belongs to the tariff. See Routing.