# Providers

Providers administration tasks.

# Overview

Providers are global carrier trunks or external services used by routing profiles, inbound DIDs, SMS delivery, and cost handling. Use **Admin &gt; Providers** to create SIP, PJSIP, IAX2, DAHDI, LOCAL, or SMS providers and to review live channel counters.

<figure id="bkmrk-providers-list-with-">![Providers list with fictional documentation providers.](https://manual.mirtapbx.com/uploads/images/gallery/2026-06/Ysvprovider-list.png)<figcaption>Providers list with fictional documentation providers.</figcaption></figure>## Technology Selection

<table id="bkmrk-technologyuse-fortyp"><thead><tr><th>Technology</th><th>Use for</th><th>Typical fictional example</th></tr></thead><tbody><tr><td>`SIP`</td><td>Legacy chan\_sip carrier trunks or IP-authenticated SIP gateways.</td><td>`Docs Telecom SIP Trunk` at `203.0.113.20`</td></tr><tr><td>`PJSIP`</td><td>Modern res\_pjsip carrier trunks with endpoint, AOR, auth, and identify rows.</td><td>`Docs Telecom PJSIP Trunk` with TLS/SRTP</td></tr><tr><td>`IAX2`</td><td>IAX2 gateways or legacy interconnects.</td><td>`Docs IAX2 Gateway` on port `4569`</td></tr><tr><td>`DAHDI`</td><td>Analog, PRI, or hardware channel-group routing controlled outside SIP/PJSIP realtime.</td><td>`Docs Analog Gateway`</td></tr><tr><td>`LOCAL`</td><td>Local PBX routing targets that should be selected like a provider.</td><td>`Docs Local Route`</td></tr><tr><td>`SMS`</td><td>SMS delivery via HTTP, JSON, SOAP, SIP MESSAGE, SMSPortal, or AGI script.</td><td>`Docs SMS JSON Gateway`</td></tr></tbody></table>

## Configuration Workflow

- Create or open a provider from **Admin &gt; Providers**.
- Complete the shared identity, outbound, and inbound fields that apply to the selected technology.
- For SIP, PJSIP, or IAX2, enable **Use Realtime Account** when MiRTA PBX should maintain the Asterisk realtime rows.
- Save the provider only after replacing the fictional documentation values with carrier-supplied production values.
- Assign providers to routing profiles and test inbound DID matching, outbound dialing, caller ID presentation, and SMS delivery.

## Operational Notes

- Provider changes are global and can affect multiple tenants, routing profiles, DIDs, and SMS routes.
- Use documentation-reserved IP addresses and example domains only for training material; never use them in production trunks.
- Provider-level CallerID and CallerID Name override extension-derived caller ID for every call through the provider.
- Max outbound channels prevents a trunk from being overused. When the limit is reached, routing can continue to another provider.

# Shared Provider Fields

These fields appear on the provider page before technology-specific realtime options. Some fields are hidden when they do not apply to the selected provider technology.

## Information

<figure id="bkmrk-provider-information">![Provider Information fields filled with fictional SIP values.](https://manual.mirtapbx.com/uploads/images/gallery/2026-06/provider-shared-information.png)<figcaption>Provider Information fields filled with fictional SIP values.</figcaption></figure><table id="bkmrk-fieldapplies-topurpo"><thead><tr><th>Field</th><th>Applies to</th><th>Purpose</th><th>Fictional example</th></tr></thead><tbody><tr><td>**Name**</td><td>All technologies</td><td>Friendly provider name shown in provider lists, route choices, reports, and provider-cost screens.</td><td>`Docs Telecom SIP Trunk`</td></tr><tr><td>**Peer Name**</td><td>All technologies</td><td>Stable technical identifier used by routing and, for realtime accounts, by Asterisk peer or endpoint rows. Keep it unique and avoid spaces.</td><td>`docs_telecom_sip`</td></tr><tr><td>**Technology**</td><td>All technologies</td><td>Selects the provider driver or service type. It controls which realtime and SMS fields are visible.</td><td>`SIP`, `PJSIP`, `IAX2`, `DAHDI`, `LOCAL`, or `SMS`</td></tr><tr><td>**Status**</td><td>All technologies</td><td>Controls whether the provider is usable. Enabled allows inbound and outbound use, Disabled removes it from routing, Only Inbound keeps inbound handling only.</td><td>`Enabled`</td></tr><tr><td>**Provider Costs**</td><td>Existing providers</td><td>Opens the provider-cost editor for rating or cost data associated with the provider.</td><td>Open costs for `Docs Telecom SIP Trunk`</td></tr></tbody></table>

## Outbound Calls

<figure id="bkmrk-outbound-calls-field">![Outbound Calls fields with fictional caller ID, digit, header, and routing values.](https://manual.mirtapbx.com/uploads/images/gallery/2026-06/provider-shared-outbound.png)<figcaption>Outbound Calls fields with fictional caller ID, digit, header, and routing values.</figcaption></figure><table id="bkmrk-fieldapplies-topurpo-1"><thead><tr><th>Field</th><th>Applies to</th><th>Purpose</th><th>Fictional example</th></tr></thead><tbody><tr><td>**Additional Header 1-6**</td><td>SIP, PJSIP, IAX2, SMS</td><td>Adds SIP headers or SMS HTTP headers. Use one header per field in `Header-Name: value` format.</td><td>`X-Account-Code: docs-demo`</td></tr><tr><td>**CallerID Presentation**</td><td>SIP, PJSIP, IAX2, DAHDI, LOCAL</td><td>Controls privacy and screening information sent when routing calls through the provider.</td><td>`Auto Privacy, CallerID not screened`</td></tr><tr><td>**Digits to Add**</td><td>All outbound providers</td><td>Prepends digits to the called number before the call or SMS is sent to the provider.</td><td>`+1`</td></tr><tr><td>**Number of digits to Remove**</td><td>All outbound providers</td><td>Removes leading digits from the called number before adding any outbound prefix.</td><td>`1`</td></tr><tr><td>**CallerID Modifications**</td><td>Voice providers</td><td>Optional outbound caller ID modification rule applied before the call leaves through this provider.</td><td>`No Modifications` or `Docs US E164 CallerID`</td></tr><tr><td>**CallerID**</td><td>Voice providers</td><td>Forces a caller ID number for every call using the provider. Leave blank to use extension-derived caller ID.</td><td>`+15551230000`</td></tr><tr><td>**CallerID Name**</td><td>Voice providers</td><td>Forces a caller ID name for every call using the provider. Leave blank to use extension-derived caller ID name.</td><td>`Docs Main`</td></tr><tr><td>**CallerID allowed regex**</td><td>Voice providers</td><td>Validates caller ID numbers accepted by the carrier. If the current caller ID does not match, MiRTA PBX falls back to DID, extension, or tenant defaults.</td><td>`^\+1555[0-9]{7}$`</td></tr><tr><td>**Max outbound channels**</td><td>All outbound providers</td><td>Limits concurrent outbound channels. When the limit is reached, routing skips to another provider. Use Unlimited for no limit.</td><td>`12`</td></tr><tr><td>**Penalty**</td><td>All outbound providers</td><td>Provider selection weight used by routing and round-robin choices. Lower penalty is preferred.</td><td>`10`</td></tr><tr><td>**Ignore SIP Cause codes**</td><td>Voice providers</td><td>Continues to another provider even when this provider returns a SIP failure cause.</td><td>`checked` for fallback routing</td></tr><tr><td>**Ignore BUSY**</td><td>Voice providers</td><td>Continues to another provider when this provider returns BUSY and the route should keep searching.</td><td>`checked` for multi-carrier routes</td></tr></tbody></table>

## Inbound Calls

<figure id="bkmrk-inbound-calls-fields">![Inbound Calls fields with fictional DID normalization and user variables.](https://manual.mirtapbx.com/uploads/images/gallery/2026-06/provider-shared-inbound.png)<figcaption>Inbound Calls fields with fictional DID normalization and user variables.</figcaption></figure><table id="bkmrk-fieldapplies-topurpo-2"><thead><tr><th>Field</th><th>Applies to</th><th>Purpose</th><th>Fictional example</th></tr></thead><tbody><tr><td>**Inbound Digits to Add**</td><td>Inbound voice providers</td><td>Prepends digits to the inbound DID or called number before destination matching.</td><td>`+1`</td></tr><tr><td>**Inbound Number of digits to Remove**</td><td>Inbound voice providers</td><td>Removes leading digits from the inbound DID or called number before adding any inbound prefix.</td><td>`0`</td></tr><tr><td>**DID Modifications**</td><td>Inbound voice providers</td><td>Optional modification rule applied to inbound called numbers before DID matching.</td><td>`Docs US DID Normalize`</td></tr><tr><td>**Same provider IN and OUT**</td><td>Inbound and forwarded voice calls</td><td>Controls whether calls entering from the provider may also be sent out through the same provider.</td><td>`Yes`</td></tr><tr><td>**Allow custom extensions**</td><td>Inbound voice providers</td><td>Allows inbound calls from the provider to match custom extensions. Use only for trusted providers.</td><td>`unchecked`</td></tr><tr><td>**Normalize number**</td><td>Inbound voice providers</td><td>Removes URI or signaling decoration before matching the number to PBX destinations.</td><td>`checked`</td></tr><tr><td>**Get number from**</td><td>Inbound SIP/PJSIP-style signaling</td><td>Chooses where the inbound called number is read from: standard Request-URI, SIP To header, or a fixed value.</td><td>`SIP To: Header`</td></tr><tr><td>**Set to**</td><td>When Get number from is Set to</td><td>Fixed DID or destination number used instead of a number from signaling.</td><td>`+15551239999`</td></tr><tr><td>**Variable name 1-3**</td><td>Inbound voice providers</td><td>Custom inbound channel variable name stored with the `USR-` prefix for routing or dialplan logic.</td><td>`ProviderName`</td></tr><tr><td>**Variable value 1-3**</td><td>Inbound voice providers</td><td>Value assigned to the matching custom inbound channel variable.</td><td>`Docs Telecom SIP Trunk`</td></tr></tbody></table>

## Save, Delete, and Back

<table id="bkmrk-fieldapplies-topurpo-3"><thead><tr><th>Field</th><th>Applies to</th><th>Purpose</th><th>Fictional example</th></tr></thead><tbody><tr><td>**Save**</td><td>All providers</td><td>Stores the provider and creates, updates, or removes realtime account rows as required by the selected technology and Use Realtime Account.</td><td>Save after replacing all fictional values.</td></tr><tr><td>**Delete**</td><td>Existing providers</td><td>Deletes the provider and removes related realtime rows for SIP, PJSIP, or IAX2 providers.</td><td>Delete an unused `Docs Test Provider` after checking routing references.</td></tr><tr><td>**Back**</td><td>All providers</td><td>Returns to the Providers list without submitting the form.</td><td>Use after reviewing settings.</td></tr><tr><td>**Floating Save**</td><td>Long forms</td><td>Lets administrators save from lower sections without scrolling back to the bottom button row.</td><td>Visible while editing realtime account fields.</td></tr></tbody></table>

# SIP Provider

Use SIP technology for chan\_sip provider trunks. SIP providers can create and maintain a global `sipfriends` realtime row when **Use Realtime Account** is enabled.

<figure id="bkmrk-sip-realtime-account">![SIP realtime account settings with fictional chan_sip trunk values.](https://manual.mirtapbx.com/uploads/images/gallery/2026-06/provider-sip-realtime.png)<figcaption>SIP realtime account settings with fictional chan\_sip trunk values.</figcaption></figure>## Common Realtime Fields

<table id="bkmrk-fieldapplies-topurpo"><thead><tr><th>Field</th><th>Applies to</th><th>Purpose</th><th>Fictional example</th></tr></thead><tbody><tr><td>**Use Realtime Account**</td><td>SIP, PJSIP, IAX2</td><td>Creates and maintains the Asterisk realtime peer, endpoint, AOR, auth, or IAX row for the provider.</td><td>`checked`</td></tr><tr><td>**Transport**</td><td>SIP, PJSIP</td><td>SIP signaling transport. For PJSIP this maps to transport objects such as `transport-udp`, `transport-tcp`, or `transport-tls`.</td><td>`UDP` or `TLS`</td></tr><tr><td>**RTP Encryption (SRTP)**</td><td>SIP, PJSIP</td><td>Enables SRTP media encryption when supported by the provider. PJSIP stores this as `media_encryption=sdes`.</td><td>`No` for standard UDP SIP, `Yes` for TLS/SRTP trunks</td></tr><tr><td>**Host**</td><td>SIP, PJSIP, IAX2</td><td>Remote provider address. Use an IP address when inbound realtime matching must identify the carrier by source IP.</td><td>`203.0.113.20`</td></tr><tr><td>**Port**</td><td>SIP, PJSIP, IAX2</td><td>Remote signaling port. Defaults are commonly 5060 for SIP/PJSIP and 4569 for IAX2.</td><td>`5060`</td></tr><tr><td>**Outbound Proxy**</td><td>SIP, PJSIP</td><td>Proxy URI or host used for outbound signaling when required by the carrier.</td><td>`sip-proxy.example.invalid`</td></tr><tr><td>**Username**</td><td>SIP, PJSIP, IAX2</td><td>Authentication username sent to the provider. PJSIP stores this in `ps_auths.username`, chan\_sip as `defaultuser`.</td><td>`docs_sip_user`</td></tr><tr><td>**Password**</td><td>SIP, PJSIP, IAX2</td><td>Authentication secret for the provider. Use a unique carrier-supplied or generated secret.</td><td>`FictionalSecret-2026`</td></tr><tr><td>**Qualify**</td><td>SIP, PJSIP</td><td>Enables SIP OPTIONS reachability checks and controls timeout behavior.</td><td>`Yes`</td></tr><tr><td>**Qualify Frequency**</td><td>SIP, PJSIP</td><td>Interval in seconds between provider reachability checks.</td><td>`60 secs`</td></tr><tr><td>**Codecs**</td><td>SIP, PJSIP, IAX2</td><td>Allowed audio codecs. MiRTA PBX stores `disallow=all` and the selected allow list.</td><td>`alaw`, `ulaw`, `g722`</td></tr><tr><td>**Session Expires**</td><td>SIP, PJSIP</td><td>Maximum SIP session refresh interval in seconds.</td><td>`1800`</td></tr><tr><td>**DTMF Mode**</td><td>SIP, PJSIP</td><td>DTMF signaling method. PJSIP maps RFC 2833 to `rfc4733`.</td><td>`RFC 2833/RFC 4733`</td></tr><tr><td>**RTP Keepalive**</td><td>SIP, PJSIP</td><td>Sends RTP keepalive packets to help keep NAT bindings and media paths active.</td><td>`5` seconds</td></tr></tbody></table>

## SIP-Only Fields

<table id="bkmrk-fieldapplies-topurpo-1"><thead><tr><th>Field</th><th>Applies to</th><th>Purpose</th><th>Fictional example</th></tr></thead><tbody><tr><td>**From User**</td><td>SIP only</td><td>chan\_sip `fromuser` value used in the SIP From header.</td><td>`+15551230000`</td></tr><tr><td>**From Domain**</td><td>SIP only</td><td>chan\_sip `fromdomain` value used when the provider requires a specific domain in the From header.</td><td>`sip.example.invalid`</td></tr><tr><td>**Send RPID**</td><td>SIP only</td><td>Controls whether caller identity is sent using Remote-Party-ID, P-Asserted-Identity, or both.</td><td>`PAI`</td></tr><tr><td>**Trust RPID**</td><td>SIP only</td><td>Controls whether inbound Remote-Party-ID or P-Asserted-Identity data is trusted for caller identity.</td><td>`PAI`</td></tr><tr><td>**Trust Outbound for CallerID Presentation**</td><td>SIP only</td><td>Controls how prohibited caller presentation is handled in RPID/PAI headers.</td><td>`Legacy`</td></tr><tr><td>**Session Timers**</td><td>SIP only</td><td>chan\_sip session timer policy: accept remote requests, originate timers, or refuse timers.</td><td>`Accept`</td></tr><tr><td>**Progress inband**</td><td>SIP only</td><td>Controls whether Asterisk generates in-band progress audio before answer.</td><td>`Yes`</td></tr><tr><td>**NAT**</td><td>SIP only</td><td>chan\_sip NAT behavior. `force_rport,comedia` is common for symmetric RTP and response routing.</td><td>`force_rport,comedia`</td></tr><tr><td>**Call response timer (ms) - T1**</td><td>SIP only</td><td>Milliseconds to wait for response to SIP messages.</td><td>`500`</td></tr><tr><td>**Call setup timer (ms) - B**</td><td>SIP only</td><td>Maximum milliseconds to wait for call setup before autocongestion when no provisional response arrives.</td><td>`5000`</td></tr><tr><td>**Can Reinvite**</td><td>SIP only</td><td>Allows Asterisk to attempt direct media re-invites. Use No when recording, NAT, or media control should keep Asterisk in the RTP path.</td><td>`No`</td></tr><tr><td>**Allow Transfer**</td><td>SIP only</td><td>chan\_sip `allowtransfer`. When enabled, the peer may request SIP REFER transfers.</td><td>`No`</td></tr><tr><td>**Insecure**</td><td>SIP only</td><td>chan\_sip authentication matching option. Port, Invite is common for IP-authenticated trunks.</td><td>`Port, Invite`</td></tr></tbody></table>

## Fictional SIP Example

```
Name: Docs Telecom SIP Trunk
Peer Name: docs_telecom_sip
Technology: SIP
Host: 203.0.113.20
Port: 5060
Username: docs_sip_user
From User: +15551230000
From Domain: sip.example.invalid
NAT: force_rport,comedia
Insecure: Port, Invite
```

# PJSIP Provider

Use PJSIP technology for res\_pjsip provider trunks. MiRTA PBX maintains related `ps_endpoints`, `ps_aors`, `ps_auths`, and `ps_endpoint_id_ips` rows when realtime is enabled.

<figure id="bkmrk-pjsip-realtime-accou">![PJSIP realtime account settings with fictional res_pjsip trunk values.](https://manual.mirtapbx.com/uploads/images/gallery/2026-06/provider-pjsip-realtime.png)<figcaption>PJSIP realtime account settings with fictional res\_pjsip trunk values.</figcaption></figure>## Common Realtime Fields

<table id="bkmrk-fieldapplies-topurpo"><thead><tr><th>Field</th><th>Applies to</th><th>Purpose</th><th>Fictional example</th></tr></thead><tbody><tr><td>**Use Realtime Account**</td><td>SIP, PJSIP, IAX2</td><td>Creates and maintains the Asterisk realtime peer, endpoint, AOR, auth, or IAX row for the provider.</td><td>`checked`</td></tr><tr><td>**Transport**</td><td>SIP, PJSIP</td><td>SIP signaling transport. For PJSIP this maps to transport objects such as `transport-udp`, `transport-tcp`, or `transport-tls`.</td><td>`UDP` or `TLS`</td></tr><tr><td>**RTP Encryption (SRTP)**</td><td>SIP, PJSIP</td><td>Enables SRTP media encryption when supported by the provider. PJSIP stores this as `media_encryption=sdes`.</td><td>`No` for standard UDP SIP, `Yes` for TLS/SRTP trunks</td></tr><tr><td>**Host**</td><td>SIP, PJSIP, IAX2</td><td>Remote provider address. Use an IP address when inbound realtime matching must identify the carrier by source IP.</td><td>`203.0.113.20`</td></tr><tr><td>**Port**</td><td>SIP, PJSIP, IAX2</td><td>Remote signaling port. Defaults are commonly 5060 for SIP/PJSIP and 4569 for IAX2.</td><td>`5060`</td></tr><tr><td>**Outbound Proxy**</td><td>SIP, PJSIP</td><td>Proxy URI or host used for outbound signaling when required by the carrier.</td><td>`sip-proxy.example.invalid`</td></tr><tr><td>**Username**</td><td>SIP, PJSIP, IAX2</td><td>Authentication username sent to the provider. PJSIP stores this in `ps_auths.username`, chan\_sip as `defaultuser`.</td><td>`docs_sip_user`</td></tr><tr><td>**Password**</td><td>SIP, PJSIP, IAX2</td><td>Authentication secret for the provider. Use a unique carrier-supplied or generated secret.</td><td>`FictionalSecret-2026`</td></tr><tr><td>**Qualify**</td><td>SIP, PJSIP</td><td>Enables SIP OPTIONS reachability checks and controls timeout behavior.</td><td>`Yes`</td></tr><tr><td>**Qualify Frequency**</td><td>SIP, PJSIP</td><td>Interval in seconds between provider reachability checks.</td><td>`60 secs`</td></tr><tr><td>**Codecs**</td><td>SIP, PJSIP, IAX2</td><td>Allowed audio codecs. MiRTA PBX stores `disallow=all` and the selected allow list.</td><td>`alaw`, `ulaw`, `g722`</td></tr><tr><td>**Session Expires**</td><td>SIP, PJSIP</td><td>Maximum SIP session refresh interval in seconds.</td><td>`1800`</td></tr><tr><td>**DTMF Mode**</td><td>SIP, PJSIP</td><td>DTMF signaling method. PJSIP maps RFC 2833 to `rfc4733`.</td><td>`RFC 2833/RFC 4733`</td></tr><tr><td>**RTP Keepalive**</td><td>SIP, PJSIP</td><td>Sends RTP keepalive packets to help keep NAT bindings and media paths active.</td><td>`5` seconds</td></tr></tbody></table>

## PJSIP-Specific Fields

<table id="bkmrk-fieldapplies-topurpo-1"><thead><tr><th>Field</th><th>Applies to</th><th>Purpose</th><th>Fictional example</th></tr></thead><tbody><tr><td>**Transport**</td><td>PJSIP only</td><td>Maps to the selected PJSIP transport object. Use TLS when the carrier requires encrypted signaling.</td><td>`TLS`</td></tr><tr><td>**Host and Port**</td><td>PJSIP only</td><td>Used to build the AOR contact and, when Host is an IP address, the endpoint identify match.</td><td>`198.51.100.30:5061`</td></tr><tr><td>**Username and Password**</td><td>PJSIP only</td><td>Stored in `ps_auths`. If username is empty, MiRTA PBX does not attach username/password auth.</td><td>`docs_pjsip_user`</td></tr><tr><td>**Outbound Proxy**</td><td>PJSIP only</td><td>PJSIP outbound proxy string for the endpoint.</td><td>`sip:edge.example.invalid;transport=tls`</td></tr><tr><td>**Send RPID**</td><td>PJSIP only</td><td>Maps to PJSIP `send_rpid` and `send_pai`.</td><td>`PAI`</td></tr><tr><td>**Direct Media**</td><td>PJSIP only</td><td>Allows PJSIP to attempt direct RTP. Disable when NAT, recording, transcoding, or media control requires Asterisk in the RTP path.</td><td>`No`</td></tr><tr><td>**Allow Transfer**</td><td>PJSIP only</td><td>PJSIP `allow_transfer`. When enabled, the endpoint may request SIP REFER transfers.</td><td>`No`</td></tr><tr><td>**RTP Encryption (SRTP)**</td><td>PJSIP only</td><td>Stores `media_encryption=sdes` when enabled.</td><td>`Yes`</td></tr><tr><td>**Qualify Frequency and Timeout**</td><td>PJSIP only</td><td>Stored on the AOR as `qualify_frequency` and `qualify_timeout`.</td><td>`60 secs`</td></tr></tbody></table>

## Fictional PJSIP Example

```
Name: Docs Telecom PJSIP Trunk
Peer Name: docs_telecom_pjsip
Technology: PJSIP
Transport: TLS
RTP Encryption: Yes
Host: 198.51.100.30
Port: 5061
Outbound Proxy: sip:edge.example.invalid;transport=tls
Send RPID: PAI
Direct Media: No
Allow Transfer: No
```

# IAX2 Provider

Use IAX2 technology for IAX trunks and legacy interconnects. IAX2 uses fewer signaling fields than SIP/PJSIP and stores its realtime account in `iaxfriends`.

<figure id="bkmrk-iax2-realtime-accoun">![IAX2 realtime account settings with fictional gateway values.](https://manual.mirtapbx.com/uploads/images/gallery/2026-06/provider-iax2-realtime.png)<figcaption>IAX2 realtime account settings with fictional gateway values.</figcaption></figure>## IAX2 Fields

<table id="bkmrk-fieldapplies-topurpo"><thead><tr><th>Field</th><th>Applies to</th><th>Purpose</th><th>Fictional example</th></tr></thead><tbody><tr><td>**Host**</td><td>IAX2 only</td><td>Remote IAX2 peer address.</td><td>`203.0.113.45`</td></tr><tr><td>**Port**</td><td>IAX2 only</td><td>Remote IAX2 signaling/media port.</td><td>`4569`</td></tr><tr><td>**Username**</td><td>IAX2 only</td><td>Stored as the IAX2 username used for authentication.</td><td>`docs_iax_user`</td></tr><tr><td>**Password**</td><td>IAX2 only</td><td>IAX2 secret used for authentication.</td><td>`FictionalSecret-2026`</td></tr><tr><td>**Codecs**</td><td>IAX2 only</td><td>Allowed codecs stored in the IAX realtime row.</td><td>`alaw`, `ulaw`</td></tr><tr><td>**Use Realtime Account**</td><td>IAX2 only</td><td>Creates or updates the row in `iaxfriends`.</td><td>`checked`</td></tr></tbody></table>

## Shared Routing Fields

IAX2 providers still use the shared outbound and inbound fields for digit manipulation, caller ID presentation, caller ID fallback, channel limits, penalties, and custom inbound variables.

## Fictional IAX2 Example

```
Name: Docs IAX2 Gateway
Peer Name: docs_iax2_gateway
Technology: IAX2
Host: 203.0.113.45
Port: 4569
Username: docs_iax_user
Codecs: alaw, ulaw
```

# DAHDI Provider

Use DAHDI technology for analog, PRI, or hardware channel-group resources that are managed by the telephony node outside SIP/PJSIP realtime. DAHDI providers do not show the realtime account block.

<figure id="bkmrk-dahdi-provider-field">![DAHDI provider fields with fictional analog gateway values.](https://manual.mirtapbx.com/uploads/images/gallery/2026-06/provider-dahdi.png)<figcaption>DAHDI provider fields with fictional analog gateway values.</figcaption></figure>## DAHDI Field Details

<table id="bkmrk-fieldapplies-topurpo"><thead><tr><th>Field</th><th>Applies to</th><th>Purpose</th><th>Fictional example</th></tr></thead><tbody><tr><td>**Technology**</td><td>DAHDI only</td><td>Use when routing to analog, PRI, or channel-group resources managed by DAHDI outside SIP/PJSIP realtime.</td><td>`DAHDI`</td></tr><tr><td>**Peer Name**</td><td>DAHDI only</td><td>Identifier operators recognize as the DAHDI group or channel target.</td><td>`dahdi_docs_group1`</td></tr><tr><td>**CallerID Presentation**</td><td>DAHDI only</td><td>Controls presentation flags applied before dialing through the DAHDI provider.</td><td>`Auto Privacy and Screen`</td></tr><tr><td>**Digits to Add / Remove**</td><td>DAHDI only</td><td>Normalizes outbound numbers for PSTN gateway expectations.</td><td>Remove `0`, add blank</td></tr><tr><td>**Get number from / Set to**</td><td>Inbound DAHDI use</td><td>Sets or normalizes the inbound called number when signaling does not carry the DID in a SIP-style header.</td><td>`Set to +15551234444`</td></tr><tr><td>**Max outbound channels**</td><td>DAHDI only</td><td>Protects limited analog or PRI capacity.</td><td>`4`</td></tr></tbody></table>

## Shared Fields Still Used

DAHDI providers still use provider name, peer name, status, outbound digit manipulation, caller ID presentation, caller ID overrides, caller ID allowed regex, max outbound channels, penalty, inbound digit manipulation, DID modifications, custom variables, and save/delete controls.

## Fictional DAHDI Example

```
Name: Docs Analog Gateway
Peer Name: dahdi_docs_group1
Technology: DAHDI
Status: Enabled
Max outbound channels: 4
Get number from: Set to +15551234444
```

# LOCAL Provider

Use LOCAL technology when a PBX-local route should be selected by routing profiles like a provider. LOCAL providers do not create SIP, PJSIP, or IAX realtime rows.

<figure id="bkmrk-local-provider-field">![LOCAL provider fields with fictional local route values.](https://manual.mirtapbx.com/uploads/images/gallery/2026-06/provider-local.png)<figcaption>LOCAL provider fields with fictional local route values.</figcaption></figure>## LOCAL Field Details

<table id="bkmrk-fieldapplies-topurpo"><thead><tr><th>Field</th><th>Applies to</th><th>Purpose</th><th>Fictional example</th></tr></thead><tbody><tr><td>**Technology**</td><td>LOCAL only</td><td>Uses a local route target instead of an external SIP/IAX/DAHDI carrier account.</td><td>`LOCAL`</td></tr><tr><td>**Peer Name**</td><td>LOCAL only</td><td>Stable local-route identifier for administrators and routing profiles.</td><td>`docs_local_route`</td></tr><tr><td>**Digits to Add / Remove**</td><td>LOCAL only</td><td>Normalizes the number before local routing.</td><td>No add, remove `0`</td></tr><tr><td>**CallerID and CallerID Name**</td><td>LOCAL only</td><td>Optionally forces caller ID for calls sent through the local route.</td><td>`+15551230000` and `Docs Local`</td></tr><tr><td>**Max outbound channels**</td><td>LOCAL only</td><td>Limits local-route concurrency, or Unlimited when no limit is needed.</td><td>`Unlimited`</td></tr><tr><td>**Inbound options**</td><td>LOCAL when used for inbound-like routing</td><td>Can still normalize destination numbers and set custom variables before matching.</td><td>`Normalize number` checked</td></tr></tbody></table>

## Shared Fields Still Used

LOCAL providers still use common identity, status, outbound digit manipulation, caller ID controls, max outbound channels, penalty, inbound normalization, DID modification, and custom variable fields. Additional SIP/SMS headers and realtime account settings are hidden.

## Fictional LOCAL Example

```
Name: Docs Local Route
Peer Name: docs_local_route
Technology: LOCAL
Status: Enabled
Max outbound channels: Unlimited
Penalty: 50
```

# SMS Provider

Use SMS technology for outbound text-message delivery. SMS providers reuse provider identity, status, outbound digit manipulation, additional headers, channel limits, and penalty fields, then expose protocol-specific delivery fields.

## SMS Field Details

<table id="bkmrk-fieldapplies-topurpo"><thead><tr><th>Field</th><th>Applies to</th><th>Purpose</th><th>Fictional example</th></tr></thead><tbody><tr><td>**SMS Protocol**</td><td>SMS only</td><td>Selects delivery method: Web URL, JSON Web URL, SOAP Web URL, SIP MESSAGE, SMSPORTAL, or AGISCRIPT.</td><td>`JSONWEBURL`</td></tr><tr><td>**SIP Provider**</td><td>SMS SIPMESSAGE</td><td>SIP provider used to send outbound SMS with SIP MESSAGE.</td><td>`Docs Telecom SIP Trunk`</td></tr><tr><td>**SMS URL/AGI Script Name**</td><td>WEBURL, JSONWEBURL, SOAPWEBURL, AGISCRIPT</td><td>HTTP endpoint or AGI script name used for delivery.</td><td>`https://sms.example.invalid/v1/messages`</td></tr><tr><td>**SOAP Action**</td><td>SOAPWEBURL</td><td>SOAPAction header value sent with SOAP SMS requests.</td><td>`SendMessage`</td></tr><tr><td>**HTTP Content Type**</td><td>JSONWEBURL, SOAPWEBURL</td><td>Content-Type header. Leave blank to use the protocol default when acceptable.</td><td>`application/json` or `text/xml`</td></tr><tr><td>**User / Password**</td><td>WEBURL, JSONWEBURL, SOAPWEBURL</td><td>HTTP authentication credentials when required by the SMS provider.</td><td>`docs-json-user` and a fictional secret</td></tr><tr><td>**Client ID / API Secret**</td><td>SMSPORTAL</td><td>SMSPortal credentials. MiRTA PBX uses them to request a bearer token before sending messages.</td><td>`fictional-client-id`</td></tr><tr><td>**Post data**</td><td>WEBURL</td><td>POST body in `param=value&param2=value` format. Values are not automatically URL encoded.</td><td>`to=${SMSDESTNUM}&text=${URIENCODE(${SMSTEXT})}`</td></tr><tr><td>**JSON data**</td><td>JSONWEBURL</td><td>One `field.path:value[:type]` line per JSON field. Dot notation creates nested objects; numeric parts can create JSON arrays.</td><td>`messages.0.content:${SMSTEXT}`</td></tr><tr><td>**SOAP data**</td><td>SOAPWEBURL</td><td>SOAP or XML body sent to the SMS provider.</td><td>`<Text>${SMSTEXT}</Text>`</td></tr><tr><td>**Additional Header 1-6**</td><td>SMS HTTP protocols</td><td>Extra HTTP headers for SMS requests.</td><td>`Authorization: Bearer fictional-token`</td></tr></tbody></table>

## JSON Web URL

<figure id="bkmrk-sms-json-web-url-pro">![SMS JSON Web URL provider with nested JSON fields and fictional values.](https://manual.mirtapbx.com/uploads/images/gallery/2026-06/provider-sms-json.png)<figcaption>SMS JSON Web URL provider with nested JSON fields and fictional values.</figcaption></figure>JSON Web URL post data uses one line per JSON field in `field.path:value[:type]` format. Dot notation creates nested objects. Numeric path parts create numeric object keys which encode as JSON array indexes when sequential. Use `:array` to force a single-value array.

```
sender.number:${SMSSOURCENUM}
sender.name:${SMSNAME}
messages.0.destination:${SMSDESTNUM}
messages.0.content:${SMSTEXT}
message.metadata.tenant:${TENANTNAME}
recipients:${SMSDESTNUM}:array
```

## Web URL

<figure id="bkmrk-sms-web-url-provider">![SMS Web URL provider with fictional POST data.](https://manual.mirtapbx.com/uploads/images/gallery/2026-06/provider-sms-weburl.png)<figcaption>SMS Web URL provider with fictional POST data.</figcaption></figure>Web URL post data is sent as a raw form-style body. The script does not automatically URL encode values, so encode values explicitly when the provider requires it.

## SOAP Web URL

<figure id="bkmrk-sms-soap-web-url-pro">![SMS SOAP Web URL provider with fictional SOAP action and XML data.](https://manual.mirtapbx.com/uploads/images/gallery/2026-06/provider-sms-soap.png)<figcaption>SMS SOAP Web URL provider with fictional SOAP action and XML data.</figcaption></figure>SOAP Web URL sends the configured SOAP/XML body and optional SOAPAction header. Set HTTP Content Type to `text/xml` unless the provider documents a different value.

## SMSPortal

<figure id="bkmrk-smsportal-provider-w">![SMSPortal provider with fictional client credentials.](https://manual.mirtapbx.com/uploads/images/gallery/2026-06/provider-smsportal.png)<figcaption>SMSPortal provider with fictional client credentials.</figcaption></figure>SMSPortal uses the Client ID and API Secret to request a bearer token from the SMSPortal REST API before sending the message payload.

## SIP MESSAGE

<figure id="bkmrk-sms-sip-message-prov">![SMS SIP MESSAGE provider with a fictional SIP provider selection.](https://manual.mirtapbx.com/uploads/images/gallery/2026-06/provider-sms-sipmessage.png)<figcaption>SMS SIP MESSAGE provider with a fictional SIP provider selection.</figcaption></figure>SIP MESSAGE sends the SMS through a selected SIP provider. Choose a SIP provider that is trusted and configured for message delivery.

## AGI Script

AGISCRIPT runs the named AGI script for SMS delivery. Use this only for custom integrations maintained by the PBX administrator. The SMS URL/AGI Script Name field stores the script name.

## Available SMS Variables

<table id="bkmrk-variablemeaning%24%7Bsms"><thead><tr><th>Variable</th><th>Meaning</th></tr></thead><tbody><tr><td>`${SMSDESTNUM}`</td><td>Destination number after SMS routing and digit handling.</td></tr><tr><td>`${SMSSOURCENUM}`</td><td>Source number for the message.</td></tr><tr><td>`${SMSNAME}`</td><td>Peer or sender name available to the SMS script.</td></tr><tr><td>`${SMSTEXT}`</td><td>Message text.</td></tr><tr><td>`${EMERGENCYNOTES}`</td><td>Emergency notes from the extension when available.</td></tr><tr><td>`${TENANTNAME}`</td><td>Tenant name.</td></tr><tr><td>`${BILLINGCODE}`</td><td>Tenant billing code.</td></tr><tr><td>`${EXTRACODE}`</td><td>Tenant extra code.</td></tr><tr><td>`${EXTRAFIELD001}`, `${EXTRAFIELD002}`, `${EXTRAFIELD003}`</td><td>Tenant custom extra fields.</td></tr></tbody></table>