Skip to content

DID pool

A DID is an incoming number: a call arriving from a DID provider is matched to the DID by the called number and the provider’s connection, then delivered to the account, IVR application or sub-customer the DID is assigned to. Charging groups attach a monthly fee and an incoming tariff to the DID on the selling side and the provider’s cost on the buying side. Ranges let you manage a block of numbers as one object and split it into sub-ranges.

Open DIDs & IVR Apps → DID Pool in the left sidebar; charging groups are under DIDs & IVR Apps → Charging Groups. The URLs are /dids.php and /dids_charging_groups.php. Both need the DID pool enabled for your customer; resellers see the DIDs delegated to them and can assign them further, but only the root customer can select a Vendor and Connection on a rule or create Buying charging groups.

Screenshot "admin-panel/did-pool" has not been generated yet — see scripts/screenshots/screens.yml.
Column Meaning
(icon) Warning when a DID accepts calls from any source because its rule has no vendor and connection
DID Number/Range The number, or start - end for a range, linking to the form
Description Free text
Assigned to Acct. account, IVR application or Cust. sub-customer; empty when not assigned
Country, Dest. Description Looked up from the Destinations table by the longest prefix
Status Smart Dialing for … when the number is used as a hot-dial DID; otherwise empty

The filter takes a DID with is like / is not like (% as wildcard) and Assigned to with Any, Not Assigned or a specific account, IVR application or customer. Filters adds Inc. DID/CLD, Country, Dest. Description and Description. The top level shows top-level numbers and ranges; Open Range Allocations in a row drills into a range and shows its sub-ranges and numbers. Delete removes a DID or range after a confirmation.

  1. Click Add.
  2. Keep Type at Number and enter DID: the canonical E.164 number used for billing and in the account’s CDRs. Leaving the field copies it into Incoming DID/CLD.
  3. Select Assigned to: Not Assigned, an IVR application, an Acct. account or a Cust. sub-customer. An account receives the calls on its registered device; a customer gets the number delegated into its own DID pool.
  4. Select a Selling Charging Group or keep No Charge.
  5. Under Authentication Rules set Incoming DID/CLD to the number exactly as the provider sends it, with any technical prefix, and select the provider’s Vendor and Connection. Add a CLI Translation Rule if the provider delivers caller numbers in a local format, and a Buying Charging Group if you track what the provider charges you.
  6. Click Save & Close.

For a block of numbers set Type to Range and enter Range Start and Range End. Open the range afterwards to add sub-ranges or single numbers and assign them; a number inside a range that is not allocated answers 404 Not Found. See DID ranges.

Field Meaning
Type Number or Range
DID or Range Start, Range End The canonical number, or the bounds of the range
Assigned to Who receives the calls, or Not Assigned
Selling Charging Group Fee and incoming tariff charged to the assignee
Description Free text. For a delegated DID it edits the delegation’s description
DID Translation Rule Rewrites the number before routing. Hidden when the DID is delegated to a customer

The Authentication Rules table holds one or more rules per DID with Type, Incoming DID/CLD, Incoming CLI, CLI Translation Rule, Vendor, Connection and Buying Charging Group. The rules exist only on top-level numbers and ranges; numbers allocated inside a range use the rules of the range. The first rule cannot be deleted. Incoming DID/CLD is checked against the DID or range when you save; a rule’s buying group must use the vendor’s currency.

  • Remote rules match a call from the provider. Incoming DID/CLD is the called number as the provider sends it; empty means the DID itself. Incoming CLI, when set, must match the caller’s number exactly, with no wildcards, so you can accept a number only from given callers. Add several remote rules when a DID arrives from more than one provider.
  • A Late rule lets the switch find the DID after a call was already authenticated to an account, by digest or by an account’s authentication rule. The account’s translation rules are applied first; when the resulting CLD equals the DID, the call goes to the DID’s assignee as an on-net call. Without a Late rule such calls are routed out like any other number. A DID takes one Late rule; its other fields stay empty. See On-net routing.

A DID delegated to you by a wholesaler shows its number read-only: you can assign it, set a selling group and a description, but not change the number, its rules, or delete it.

Column Meaning
Name, Description How the group appears in the DID form
Type Selling charges the DID’s owner; Buying records the provider’s cost on a rule. Buying groups are available to the root customer only
Incoming Tariff, Price For selling groups: the incoming tariff and the monthly fee

The form has Name, Description, Type and Currency under Basic Parameters; Type and Currency are locked once the group is used. Selling Parameters hold the Incoming Tariff of type Incoming Tariff in the same currency, a one-off Setup Fee and the Monthly Fee. Buying Parameters hold the provider’s price in the familiar Interval 1 / Price 1 / Interval N / Price N form with Connect Fee, Free Seconds, Grace Period and Post Call Surcharge. A group can be deleted only while no DID, delegation or rule references it. See Charging groups.

Download exports the current level of the pool with the active filters in your download format. The columns are Action, Id, DID, DID Range End, Description, Incoming DID/CLD, CLI Translation Rule, DID Translation Rule, Vendor, Connection, Assigned to IVR, Assigned to Account, Assigned to Customer, Selling Charging Group, Country, Dest. Description, Status, Buying Charging Group and Incoming CLI; assignments and groups are exported as ids.

Upload takes a .csv or .xlsx file and opens Map CSV Columns. Only DID is required. The Action column or its default decides what happens per row: A adds, U updates by Id, S updates by the DID value, AS updates or adds, D deletes. A non-empty DID Range End makes the row a range. Blank id columns mean “not assigned” or No Charge, so an update row with empty assignment columns unassigns the number. Failed rows come back as a DIDs errors file with an Error Message column.