Inbound calls: connect a SIP trunk and route a number
MoreVoice answers your phone numbers over SIP. You connect the line your carrier gives you, then add inbound routes that send each call to the right place by the number that was dialled and the number that is calling. This page explains how both work today, in the web app, and what the API will add.
Connections
Section titled “Connections”A connection is one SIP line. There are two kinds:
| Kind | In the app | How calls reach MoreVoice |
|---|---|---|
| Registration account | Registration account | MoreVoice registers to your provider like a desk phone (username and password), and the provider sends calls to that registration. |
| SIP trunk | SIP trunk | Your carrier sends calls straight to MoreVoice’s address. It usually authenticates by IP address, so a username is only needed if the trunk uses digest authentication. |
Connections speak plain SIP over UDP with G.711 audio (A-law, standard in Israel and Europe, and μ-law, standard in the US). Calls on every connection run through the same engine: AI agents, routing, recordings and limits work the same way. A connection can also run through the optional FreeSWITCH front end instead of the built-in SIP stack; nothing else changes.
Who may send calls
Section titled “Who may send calls”MoreVoice accepts a new inbound call (INVITE) only when it comes from the provider: from an IP address of the connection’s host, or from one of its Allowed inbound IPs (single addresses or CIDR ranges, for example 185.10.0.0/24). Anything else is rejected with 403 Forbidden.
When several connections could own a call (two extensions on the same PBX, for example), MoreVoice picks the one whose username or caller IDs match the dialled number.
Capacity
Section titled “Capacity”Each connection has limits that protect your line and your carrier:
- Max channels: simultaneous calls on the connection (
0= unlimited). - Reserved for inbound: a share of the channels that outbound calls can’t use, so customers can always get through.
- Max calls / second: the pace of new outbound calls.
When no channel is free, the call is refused with the reply you choose in When full: 486 Busy, or 503 Unavailable, which lets a carrier with a backup route fail over. Turning off Answer inbound calls refuses every inbound call on the connection with 486 Busy.
Inbound routes
Section titled “Inbound routes”An inbound route (a “rule” in the app) matches calls and names who answers. Each rule has:
- Connection: one connection, or Any connection.
- Dialled number (DID) and Caller number patterns.
- Who answers: an AI agent (assistant), an IVR or AI flow, a queue of human agents, one person, or a conference room.
- An order, and an on/off switch.
Patterns
Section titled “Patterns”Both patterns use the same three forms. Spaces, dashes and brackets are ignored, so 03-555 0100 and 035550100 are the same number.
| Pattern | Matches | Example |
|---|---|---|
| Exact number | Only that number | 035550100 |
Prefix ending in * |
Every number that starts with it | 03* matches every Tel Aviv number |
| Empty | Any number |
The number is compared as the carrier sends it. If your carrier sends international format, write the patterns that way too (+9723*).
How a call is routed
Section titled “How a call is routed”-
The rules are checked from the top down. The first enabled rule whose connection, dialled-number pattern and caller pattern all match is used. In the app you change the order with Move up and Move down.
-
Inside the matching rule, the target is chosen in this order:
- an IVR or AI flow, if it has a published version;
- a conference room (the caller is asked for the room’s PIN);
- one person, through their own forwarding rules; the rule’s assistant answers if that person has been deactivated;
- a queue of human agents, if the queue is enabled;
- the rule’s assistant.
If none of the rule’s targets can take the call (for example, the flow isn’t published and the queue is turned off, with no assistant set), MoreVoice moves on to the next rule.
-
If no rule matches, the connection’s Default assistant for inbound calls answers. If the connection has none, the most recently edited assistant answers.
-
If there is still no one to answer, the call is refused with
480.
Route changes apply to the next call; calls in progress are not affected, and the SIP connections are not restarted.
Set it up in the app
Section titled “Set it up in the app”-
Open SettingsSIP / Phone. The Phone system card turns the SIP stack on and shows its public address. Give this address to your carrier for a trunk.
-
Click New SIP trunk or New SIP account, fill in the host and credentials from your carrier, set the limits, and click Save connection.
-
Under Inbound routing, add a Rule: pick the connection, enter the Dialled number (DID) and Caller number patterns, choose who answers in Answer with, and click Save rule.
-
Call the number. The call appears under Live calls while it runs, and in the call log afterwards, with the route that answered it.