You need as many SIP channels as the most calls you will have at the same moment, plus a margin. Work it out from busy-hour traffic: calls per hour times average minutes, divided by 60, gives erlangs. An Erlang B table then gives channels for a blocking target. 200 calls an hour at 3 minutes needs 18 channels at 1%.
Set your trunk's concurrent-call limit: Create a SIP trunk on Edesy — per-minute billing, unanswered calls free.
What a channel is (and isn't)
A SIP channel is one simultaneous call. Inbound and outbound share the same pool. Channels are not tied to phone numbers or to people: 3 numbers and 40 staff can share a 12-channel trunk, and one number can carry 30 calls at once if the trunk allows it.
On a PRI line, channels come in fixed blocks of 30. On a SIP trunk the limit is a setting. On Edesy it is the max concurrent calls field on each termination trunk. That makes sizing a planning question rather than a hardware order. See SIP trunk vs PRI line for the background.
Step-by-step: size your trunk
- Find your busiest hour. Export call records from your PBX, dialer or contact center and count calls (inbound plus outbound) in the busiest hour of a normal busy week. Ignore one-off spikes, but note them.
- Find the average call length in minutes for that hour, counting connected time only.
- Convert to erlangs: busy-hour calls x average minutes / 60.
- Pick a blocking target. 1% means one call in a hundred at peak finds every channel busy. Use 0.5% for sales or support lines where a lost call is expensive.
- Look up channels in the table below or the Erlang B calculator.
- Add headroom for growth and for calls you didn't see in the data (test calls, transfers that use two legs).
Erlang B table: channels needed
We computed these with the standard Erlang B formula, the same one the calculator uses.
| Busy-hour calls | Avg length | Traffic (erlangs) | Channels at 1% | Channels at 0.5% |
|---|---|---|---|---|
| 20 | 3 min | 1 | 5 | 5 |
| 60 | 3 min | 3 | 8 | 9 |
| 100 | 4 min | 6.7 | 14 | 15 |
| 200 | 3 min | 10 | 18 | 19 |
| 300 | 4 min | 20 | 30 | 32 |
| 600 | 3 min | 30 | 42 | 44 |
Two things stand out. Small traffic needs proportionally more spare channels (1 erlang still needs 5 channels for 1% blocking). And a 30-channel PRI is exactly full at 20 erlangs: at 30 erlangs it would block about 13% of busy-hour calls.
Rules of thumb by use case
Erlang B assumes a blocked caller gives up. That is right for trunks, IVRs and bots, which answer calls themselves. If callers wait in a queue for human agents, size agents with Erlang C first; see Erlang B vs Erlang C.
| Use case | How to size | Watch out for |
|---|---|---|
| Office PBX | Erlang B from busy-hour records; a rough start is 1 channel per 3 to 5 staff | Month-end or results-day peaks |
| Contact center | Agents with Erlang C, then channels = agents on calls + callers waiting in queue | Queue length at peak, not average |
| IVR or AI voice agent (inbound) | Erlang B on total call volume; every caller holds a channel | Call length grows when bots ask more questions |
| Outbound broadcast or AI campaign | Campaign max concurrent calls | Unanswered rings still hold a channel while ringing |
| Agent dialer (progressive/power) | Free agents x pacing (1.0, 1.5 or 2.0) + connected calls | Raising pacing raises channels in use |
| Transfers to mobiles | Count 2 channels per forwarded call | Both legs run through the trunk |
Bandwidth per channel
Channels also need bandwidth. With G.711 (the codec Edesy trunks carry, A-law or u-law) plan for roughly 80 to 90 kbps each way per active call, including IP, UDP and RTP overhead.
| Simultaneous calls | Upload and download needed (approx.) |
|---|---|
| 5 | 0.5 Mbps each way |
| 10 | 1 Mbps each way |
| 30 | 2.7 Mbps each way |
| 50 | 4.5 Mbps each way |
Leave at least 30% spare, and keep large uploads (backups, video calls) from saturating the link during business hours. Poor bandwidth shows up as choppy audio, not as blocked calls.
What happens when you run out
When every channel is busy, the next call is rejected. Inbound callers usually hear a busy tone or a network message; outbound attempts fail with a SIP error that your PBX or dialer logs. On Edesy, failed calls carry a detailed outcome and the SIP response code in the call record and status callback, so you can tell capacity failures apart from wrong numbers or unreachable phones.
Setting it on Edesy
- Create a termination trunk in voice-app.edesy.in.
- Note the max concurrent calls value on the trunk page and set the same number as Maximum Channels in your PBX, so the PBX stops before the trunk rejects.
- For campaigns, set the campaign's max concurrent calls below the trunk limit, leaving room for inbound.
- Ask support to raise the trunk limit when your sizing says you need more.
Billing does not change with the limit: calls are Rs 0.50/min with a 60-second pulse, unanswered calls free, plus number rental (mobile Rs 499/mo, landline Rs 449/mo, toll-free Rs 999/mo), all excluding 18% GST.
More on the SIP trunking page and in the SIP trunking docs. Running an AI agent? See SIP trunks for AI voice agents.
Common mistakes
- Sizing from daily totals instead of the busiest hour.
- Sizing by headcount for a contact center or campaign.
- Forgetting that a forwarded or transferred call uses two channels.
- Setting the PBX's channel limit higher than the trunk's, so calls fail at the trunk instead of queuing.
- Planning channels but not bandwidth.
Create your trunk and start with the number the table gives you.