FreeSwitch middleware and configuration for CCNQ4
FreeSwitch CCNQ4 middlewares and configuration
Provisioning
============
Provisioning is done using the CouchDB document conventions.
A typical document will contain at least:
- `type`: `endpoint`, `number`, `number_domain`, …;
- a field named after `type`, for example `endpoint`, which contains the key for the record;
- `_id` is the concatenation of the type, `:`, and the key.
Other fields are specified for each individual document type.
This project uses especially the following extensions:
- `country`: short (two-letter) country name
- `dialplan`: `e164` (global numbers), `national` (ingress and egress, requires country), `centrex` (egress only, requires country)
Here are the main types of documents:
Endpoints
---------
An endpoint is an authenticated line or device on the customer side.
The `_id` for an endpoint may contain:
- `endpoint: ` for static endpoints (authentication is IP-based);
- `endpoint: @ ` for dynamic endpoints (authentication is password-based).
The value for `endpoint_domain` must be a valid DNS name, typically defined using a NAPTR record, or proper SRV records. The document type `domain` can be used to dynamically create DNS domains inside CCNQ4.
Numbers
-------
Numbers might be global numbers (used to route between domain) or local numbers (used inside a domain).
The `_id` for numbers may contain:
- `number: ` where global-number is country-code + national number;
- `number: @ ` where local-number is the number as presented and used by the customer.
Number-domain
-------------
A number-domain is a closed dialplan (such as a national dialplan, or a Centrex dialplan).
The `_id` for number-domains contains `number_domain: `.
Centrex
=======
For Centrex we use the convention `number_domain` === `endpoint_domain`.
### Global Number (`number: `)
Inbound translation from a global number to a local (Centrex) extension:
- `local_number`: `number@number_domain`
### Endpoint (`endpoint: ` or `endpoint: @ `)
For Centrex the foll …