Once connected to the website, a common login screen will let the user login to the system and reach the configuration area.

Four sections can be identified In the work area:

Tenant Dropdown: Use this drop down to select the tenant to work on. Please remember only the authorized tenants are shown. Even if you are an admin, you will only see the tenants enabled on your account.
Language selection menu: The portal language is automatically chosen based on the language accepted by the browser. Use this menu to chose another language. The setting will be valid for the entire session.
Left menu: Use this menu for accessing the configuration, Status and Admin Sections.
Configuration Area: The configuration area is used to control every working aspect of the PBX. It can used by admins and end users. The options selected within this menu are applied only to the selected tenant using the “Tenant Dropdown”.




The list of extensions defined for the selected tenant are shown along with the caller-id, username and password associated. You can create one or multiple new extensions using the buttons on the right.

Define SIP Extension – The definition of an extension is comprised of multiple sections. The most important one is the general one, where you can define the internal number for the extension and the password.

The username is automatically generated based on the extension number and the code assigned to the tenant. Extension number and SIP accounts are tied together. The username format <extension>-<tenant code> is mandatory (see later for exceptions) and cannot be changed.

The number assigned to an extension for a tenant can be the same number assigned to another extension for another tenant. Broadtela Hosted PBX is completely multi-tenant, so each tenant configuration is completely independent from others. This is a general rule and applies to every aspect of the configuration.

Number: The 3 or 4 digit number that is the extension number.
Name: The name provided will be used as CallerID for internal calls. This means the CallerID on the phone will be overwritten with the one specify here. If you don’t want to have the CallerID forced to the one configured, but rather you want to use the CallerID coming from the phone (for example because the extension is not assigned to a single phone, but because it is assigned to another PBX with multiple extensions) you can set the “Trunk” checkbox. The trunk setting will effect also incoming call to the phone (or PBX). If the “Trunk” checkbox is set, the SIP INVITE sent to the account will include the number dialed.
Username: Username is automatically generated adding the tenant code to the number provided. The format used by default is using the “-”, but some phones has been found to not accept the minus sign. The joining character can be changed by pressing on the green double arrows.
Password: Password can be auto generated clicking on the “Generate” button. A new password is generated every time using the random number generated. It is highly advisable to use long and completely random passwords.
Codecs: Every extension can have a broad range of codecs allowed. For video phones only select one of the video codecs for all extensions.
DTMF Mode: DTMF Mode is selectable between auto, info, inband and RFC 2833. Please check the phone configuration and the provider support for choosing the right DTMF setting. The most widely accepted format is RFC 2833.
NAT: This setting is important when the phone is behind a NAT. Use force_rport, comedia in almost all the cases. If you experience one way audio, then check the NAT setting.
Can Reinvite: Allows two endpoints, like two phones or the phone and the provider, to exchange the RTP data directly, without routing through the PBX. Usually if one of the party is behind NAT, you may experience one way audio. Usually set to No.
Qualify: Allows the PBX to contact periodically the phone to check if it is still online. This has the benefit of taking “open” the connection tracking on the firewall you can have between the phones and the Internet. Connections are made every second. If you have slow phones, you can increase the time to wait for an answer.
Call groups/Pickup groups: Defines who is permitted to perform a pick-up for which calls. If call group and pickup group matches, then it is possible to pickup using the specified feature code. Note you need to define the feature code to use.
Voicemail MWI: Sets the voicemail box for the Message Waiting Indicator.
Call Limit: Defines the number of contemporary calls a phone can receive. If the call limit is set to 1, then the Call Waiting feature is disabled.
Do Not Disturb (DND): Sets the extension to DND.


Inbound Dial Timeout: Sets the time in seconds one extension have to ring before going to the “No Answer” additional destination. You can avoid setting a Dial Timeout value and the default value will be used. – “A good default is 13”

Recording –

Always Record: Sets the recording preference for the extensions. If set to “Yes”, all the phone calls made and received by the extensions are recorded. If set to “Yes, but allows stopping” or “No, but allows starting”, then the recording can be respectively turned off or on by using the *1 DTMF sequence while on the phone. The recorded file will be available for download in the Status/Call History menu.
Email recording to: Email address to email recording to.

Security –

Host: Permit only from IP allows to restrict the allowed IP address the phone can connect from, really increasing the security of the peer.
Usually Host parameter is set to “dynamic”, allowing the peer to register and the registration IP is used for contacting the peer. Some phone or

PBX systems cannot register, so the IP needs to be specified in the Host field.

Transport: Allows you to improve the security of the call by choosing TLS as transport, which is encrypted or falling back to UDP or TCP.
RTP Encryption (SRTP): Set SRTP Encryption on or off
Outbound Destinations: Permits to restrict the numbers the extension can dial. In other words, the destination allowed can be restricted. For example, the phone placed in the kitchen of the office can be restricted to place international calls. The Outbound destination can be:
All Allowed: Allowing every number
All Prohibited: The phone cannot place outbound calls
Allowed if matches: The call is allowed if the number dialed match the Regex associated
Prohibited if matches: The call is prohibited if the number dialed match the Regex associated

Outbound calls – section allows to manage how the call is managed when dialing out the hosted virtual pbx.

Block External Caller ID: Use of the callerid can be blocked by selecting this checkbox. Also can be selected/unselected using a feature code.
External CID number: Can be chosen among various formats, usually resembling the E.164 standard. The various options can be enabled or disabled using the administration settings.

Area Code allows to specify a prefix to add to numbers when the number of digits entered is between the number of digits specified next, inclusive. For example, if you area code is 055 and your local area numbers are from 4 to 7 digits, you can enter the following data and your number will be automatically completed with the area code. So, if you enter 453131, automatically the number dialed will be 055453131.

Routing Profile permits to assign to the extension a different routing profile than the one assigned to the tenant.

Find me/Follow me Configuration allows to define a simple “next hop” for calls when the dialed number is busy or not available.

Additional Destinations permits to specify the destination of the call when the extension is not answering, Busy or Offline. A special destination “Unconditional” allows to redirect the phone calls to another destination. Every kind of Additional Destination can be enabled or

 disabled using Feature Codes Delete of Extension To delete an extension, it is enough to just press on the delete button at the end of the extension definition. A message will request confirmation. Due to the way Asterisk Realtime Architecture works, it is advisable to unregister the extension before deleting it. Unregistering the extension will clear it from the asterisk peer cache denying any other operation for the deleted extension. DIDs To every tenant can be assigned a group of DIDs, numbers to be dialed from the outside. Each DID can be configured to reach a certain extension or Queue or Hunt Group or IVR or any combination of the elements defined for the tenant. The same DID cannot be assigned to more than one tenant and there is no correlation between the dialing profile assigned to a tenant, the trunk provider used and the incoming DID. For this reason is highly important the incoming INVITE from the trunk provider contains all the info to identify correctly the DID it is addressing. Due to the fact there is a lack of strong standardization among trunk providers on how to transmit the DID information, a “best guess” is used to identify the correct DID, using any of the format currently in use around the world.


A DID can be configured to accept voice, fax or try to guess the calling party (if voice of fax). Autodetection relies on signalling at the start of the call and cannot be always reliable. Once a fax call has been sent to a phone, it cannot be sent back to be processed as fax.

The number must be entered in three parts, starting with the international prefix, the area code and the number. Even if your telephone standard doesn’t allow the usage of any “short” form for dialing the number, requesting for example, to dial always the area code, the number is requested to be entered this way. Using the Admin/Settings menu is possible to enable the use of a “single box DID” to just enter the number in a single box. Comment is just a comment and it is not used in any way. Voice section allows to define how to route the call when a voice call is received. Always record permits to force the recording of the call, whichever is the future of the call. Recordings will be available through the Call History menu. Using the Prefix CallerID is possible to define a string to be added to any CallerID number received to identify for example the DID the call is coming from. The same can be achieved by defining a Custom Destination. Destination multiple drop down allow to define the list and the order of the objects receiving the call. Fax section allows to define what to do with the call if a fax is received on the number defined. Receiving Fax over the Internet has often a low success rate, even if T.38 protocol is used. Receive fax can be used to select if autodetect, force or disallow the reception of a Fax over the current DID. Fax Protocol can be selected among T.38 (the preferred way to receive faxes, T.38 with fallback to G.711 or only G.711. Email destinations box permits to enter one or multiple comma delimited email address to forward the received fax. Received fax are sent in PDF format. Partially received faxes are sent in the same way. It is possible to store the fax received for later reviewing using the Store Fax Received control.

Media Files

Media files are used for music on hold, welcome messages and for every kind of message played to the user. Each media file is internally addressed by its MD5 sum and a local copy is stored on each node to reduce the load on the database server. A name can be assigned to the media file to easy identify in the system. To reduce the asterisk load when playing, it can be automatically converted into slin format (16 bit Signed Linear PCM).


Conditions allow to manage the call flow, playing for example a different messages or rou based on hours, or days, or calling party.

Several type of Condition can be configured: Weektime Caller ID Weekday Date a complete week planner allows to easily identify in which day/hour to trigger the destination. the routing decision is made using the Caller ID of the call. For example, allowing coworkers calling the main number to reach directly the support staff without waiting in the Queue. allows to route calls based on the day of the week permits to route the calls based on specified dates. A date, like Christmas, can be made “recurring”, so it will trigger every day, regardless the year. Extension Status the routing decision is made based on the status of an extension. This condition is really powerful when connected to the custom setting of extension status. AGI Script execs an AGI script and check the variable AGIRESULT. If set to true, the condition is matched, otherwise the “not match” condition is followed.


IVR allows to define Interactive Voice Response to manage voice menus. Welcome Message is the media file to play to the calling user while waiting for the user choice Menu selection timeout is the time in seconds to wait for the user choice before going to the “On timeout” destination. Digit timeout is used when the “Allow Dialing Extensions” or the “Allow Dialing Features Code” is selected allows to determine the amount of seconds to wait before considering the

number entered as “complete” Loop on timeout permits to continue to play the welcome message and to wait for the selection every time the Menu selection timeout expires. Loop on wrong key press allows to restart playing the welcome message and to wait for the selection if the user choose an unsupported key. Allow Dialing Extensions permits to the calling user to dial directly an extension instead of picking one of the digits. Allow Dialing Feature Codes, like above, but for feature codes.

Hunt List

Hunt List permits to define a list of extensions or external numbers to dial at all once or in sequence. The Type of the Hunt List can be: Ring All – All extensions and external numbers can be dialed all at once Cycle – Extension and external numbers are dialed in the order specified and once the bottom of the list is reached, the “hunt” starts over. Sequence – Extensions and external numbers are dialed in the order specified. When the bottom of the list is reached, the destination specified in the “On timeout” is followed Check if exten are in use allows to skip dialing extension already in use Request confirm to answer if set, requests the dialed user to accept or reject the call. If the call is rejected, the hunt list continues trying to locate a phone Ring Time allows to specify the time each extension or external number has to be dialed before skipping to the next item. 

Conference Rooms

A conference room or meeting room is a virtual place where all phones dialing are joined in a single conversation. Conference rooms can be protected by a PIN and a special Admin PIN is reserved to the administrator, so he can mute/unmute partecipants. The maximal number of users allowed in the conference can be set. The conference can be recorded. The audio file is available through the Call History.


Call queue permits to hold all the incoming call in a queue and distribute the calls to the agents available.

Strategy can be one of the following: Ring All – All agents are rang at the same time Round Robin – agents are rang, one at the time, in a round robin way Random – agents are rang in a random order Least Recent – The least recent agent is rang Fewest Calls – The agent with the fewest calls is rang Linear – agents are rang in the order specified. Due to some asterisk limitation, it is not possible to change the Strategy of a already defined Queue to “Linear”. The queue needs to be destroyed and recreated. Always Record allows to always record the call. The call record is available trough the Call History. Play to the caller permits to define if playing the defined Music on Hold for the tenant or a generic Ringing Agents lists the agents in the queue. For each extensions, two kind of agent are available, the first is normal and the “following to A.D.” permits to forward the call to the Additional Destination defined for the extension. Queue timeout is the amount of time the caller can be hold in the queue before being sent to the destination specified in the “On timeout” Agent Timeout is the amount of time an agent is ring before moving on the next agent. A special action can be configured when No Available Members are present in the queue. Periodic Announce section allows definition of the announce to play to the callers in the queue with the Announce Frequency. The Periodic Announce can be chosen between the media file loaded. The user can exit the Queue by pressing the “Queue Exit Key” and he will be directed to the destinations chosen by the “On Exit Key”. A special destination can be selected, named “Exit the Queue and call back when it is your turn” allowing the caller to hangup the call and being called back when he is in front of the queue, ready to be served. The position of the user can be played with the “Announce Pos. Frequency”, if different than zero.

It is possible to redefines the messages usually played to the user choosing them between the media file uploaded

Paging and Intercom

Almost all SIP phones allows to page them and use as intercom: the ability to establish a mono directional or bidirectional communication without making them ring. The number defined can be called directly by all extensions and it can be chosen if to make a bidirectional call (intercom) or just use the service as paging device.


A flow is a predefined set of destinations that can be used in other Configuration directive. It is like a Macro, allowing to use the same steps of destinations in several place and maintain in a single location.

Custom Destinations

Custom Destinations allow the definition of custom destinations to be used in other Configuration settings. There are several type of custom destinations: Forward call to – will permit to forward the call to an outbound number, using a timeout for the dialing. The dialing timeout has to be entered separated by a comma. The CallerID can be chosen among the usual Caller ID available and use the Original Caller ID of the call received.

Alter Caller ID to – will permit to change the Caller ID to a custom one. Standard Asterisk variables, like ${CALLERID(num)} can be used. Alter Caller ID Name to – will permit to change the Caller ID Name to a custom one. Standard Asterisk variables, like ${CALLERID(name)} can be used. Custom Dial() with param – will permit to use the Dial Command as argument to a generic Dial command Use Feature Code – Like to “Forward call to”, but a feature code can be used Set Extension to not in use: Set the extension state to “not in use” Set Extensions to in use: Set the extension state to “in use” Toggle Extension state: Change the extension state from “in use” to “not in use” or vice versa.


DISA stands for Direct Inward System Access and is a way to let inbound callers to reach any internal extension. Once answered the system will play a message inviting the caller to enter the extension number to be connected to. The system allows also to dial outbound numbers, usually protected by a PIN code. The Welcome message is played to the calling party, usually asking to enter the extension to dial. If present, the PIN is requested to access this feature. It is highly advisable to set a PIN when outbound calls are allowed.

Feature Codes

Feature Codes are the key to access any aspect of the PBX, trigger special features or just performs tricky operations. Feature codes can start with the * (star) or with the # (sharp) and can be associated to a number of action from the following list. When requested, the special string [NUM] and [EXT] can be used in the feature code. The [NUM] will be replaced with the number dialed. For example, if a feature code is set to *62[NUM] for “Mask the callerid on calling [NUM]” then if the number *625558764 is dialed, then the [NUM] is assigned to the

number 5558764. The [EXT] instead will be replaced with an extension number. If a feature code is set to *8[EXT] to Pickup Extension [EXT] and you have defined extension 100, then dialing *8100, the extension 100 will be picked up. Feature code *1 is reserved (due to asterisk limitation) to enable/disable recordings. List standard feature codes:

Feature Code Description Answer the call Usually not needed, it just answer the call Barge with extension [EXT] Barge with extension [EXT] Dial by name directory Access to Dial by name directory menu Dial by name using the [NUM] dialed Use the dialed [NUM] to call using dial by name Disable FMFM extension Disable FMFM for the calling extension Disable on busy forwarding for calling extension Disable on busy forwarding for calling extension Disable on no answer forwarding for calling extension Disable on no answer forwarding for calling extension Disable on offline forwarding for calling extension Disable on offline forwarding for calling extension Disable unconditional forwarding for calling extension Disable unconditional forwarding for calling extension Echo test Perform an echo test, repeating all what is said Enable FMFM Enable FMFM for the calling extension Enable on busy forwarding for calling extension Enable on busy forwarding for calling extension Enable on no answer forwarding for calling extension Enable on no answer forwarding for calling extension Enable on offline forwarding for calling extension Enable on offline forwarding for calling extension Enable unconditional forwarding for calling extension Enable unconditional forwarding for calling extension Force Recording of the call Activate the recording for the call Hangup the call Hangup the call Intercom with extension [EXT] (two way audio) Perform an intercom (two way audio) with the extension dialed [EXT] Login to all Queues Login the calling extension to all queue Logout from all Queues Logout the calling extension to all queue Mask the callerID on calling [NUM] Activate the Privacy Mode while calling the
Feature Code Description [NUM] Page extension [EXT] (one way audio) Perform a page (on way audio) with the extension dialed [EXT] Park the call Park the call Pickup Extension [EXT] Pickup extension dialed [EXT] Pickup Group Pickup a call from the current group Play Beep Play a simple beep Play the callerid of the calling party Play the callerid of the calling party Record a Message Record a message. The message is recorded and added to the list of media files with the date and time of the recordings. Usually it is renamed and used in some menu Retrieve the voicemail of the calling extension Retrieve the voicemail of the calling extension Retrieve the voicemail of the [EXT] dialed Retrieve the voicemail of the extension [EXT] Say the parked calls extensions List the parking lot used by calls parked Set Extension [EXT] state to in use Set the state of the extension [EXT] to “IN USE” Set Extension [EXT] state to not in use Set the state of the extension [EXT] to “NOT IN USE” Set FMFM number to [NUM] and enable it Set the number [NUM] dialed as FMFM for the calling extension. Set on busy forwarding for calling extension to [NUM] If the [NUM] dialed is not an internal extension, then the [NUM] is checked among the Custom Destinations. If one of the Custom Destinations is matching the [NUM], then it is used, otherwise a new Custom Destination is automatically created and set as Busy Forwarding. Set on no answer forwarding for calling extension to [NUM] If the [NUM] dialed is not an internal extension, then the [NUM] is checked among the Custom Destinations. If one of the Custom Destinations is matching the [NUM], then it is used, otherwise a new Custom Destination is automatically created and set as No Answer Forwarding. Set on offline forwarding for calling extension to [NUM] If the [NUM] dialed is not an internal extension, then the [NUM] is checked among the Custom Destinations. If one of the Custom Destinations is matching the [NUM], Feature Code Description then it is used, otherwise a new Custom Destination is automatically created and set as Offline Forwarding. Set unconditional forwarding for calling extension to [NUM] If the [NUM] dialed is not an internal extension, then the [NUM] is checked among the Custom Destinations. If one of the Custom Destinations is matching the [NUM], then it is used, otherwise a new Custom Destination is automatically created and set as Unconditional Forwarding. Spy extension [EXT] Spy on extension [EXT] Toggle state of extension [EXT] Change the state of the Extension [EXT] from IN USE to NOT IN USE and vice versa Unmask the callerID on calling [NUM] Remove the Privacy Mode while calling the [NUM] Voicemail for Extension [EXT] Retrieve the voicemail for extension [EXT] Wait five seconds Wait five seconds Wait one second Wait one second Wakeup Alarm – Disable the time set List all wake up alarms set for the calling extension and allow to delete one of them Wakeup Alarm – Play the time set List all wake up alarms set for the calling extension Wakeup Alarm – Set the time from DTMF HHMM Set a wake up alarm by requesting to enter the hour in the HHMM format New Feature Codes are automatically created when any of the object is created, as follows: Object Feature Code Extensions Allowing to dial the extension listed Custom Destinations Allowing to dial the destination defined Media Files Rerecord, Playback and Background the media file Conditions Check condition IVRs Execute IVR Hunt Lists Execute hunt lists Conference Rooms Access conference room Queues Access queue Flows Execute flows Object Feature Code DISA Access DISA Voicemails Send the call to the voicemail Whisper to extension [EXT] Whisper to extension [EXT]

Short Numbers

Short numbers are a way to assign shortcut for dialing numbers.

CallerID Black List

It is possible to avoid to receive calls from a list of caller ID by entering them in this list. Calls from those numbers will be hangup directly.

Call Campaigns

AGI Scripts

It is possible to use AGI Scripts as normal call flow elements or as conditions. AGI Scripts are usually located in /var/lib/asterisk/agi-bin and some examples are provided along with the AGI used by MiRTA PBX. Each AGI Script can have at least 5 parameters and some can be assigned by the admin 24 and others can be assigned by the user. When the AGI Script is used as a condition, the variable AGIRESULT is tested and if it is TRUE, the call flow as the condition is matched. A simple AGI Script to say the date and time. Remember to set the execution bit.

  1. !/usr/bin/php

<?php require_once(‘phpagi/phpagi.php’); $agi = new AGI(); $agi­>exec(‘sayUnixTime’,$argv[1].”,”.$argv[2].”,”.$argv[3]); ?>



Phone Books

Phone Books

Manage Phone Books


Provisioning is the action of configuring a phone automatically, by providing only basic information. MiRTA PBX supports a wide range of phone provisioning with a general file format. New phones brand and model can be added using the Admin/Provisioning menu.


Files used for provisioning are usually text or XML file containing informations like the user and password and the ip address or hostname of the SIP server. Informations contained in the provisioning files need to keep confidential and the leakage of these information can lead to unauthorized usage of voice traffic. To avoid any snooping on provisioning content, usage of HTTPS is recommended. Be aware some phones requires a valid SSL certificate to provision using HTTPS. The correct provisioning file is requested based on the MAC address of the phones. To avoid any brute forcing of the MAC address, a special password is needed in the URL to recover the file. Based on the model of the phone, a special string needs to be append to the end of the provisioning URL, like {mac}.cfg for Panasonic phones or {MA}.xml on Cisco phones. Check your phone manual for the right way to identify the MAC address in the provisioning URL.

New Phone

Each phone can be named. The phone name is just used as reference and is not used anywhere else. Model permits to select the provisioning template to use. Provisioning templates can be created using the Admin/Provisioning menu. Mac Address is the key identifying the phone needing to be provisioned. Password is a random key needed to prevent any brute forcing of the mac address. It is

needed to be added to the provisioning URL. Based on the definition of the phone model, one or multiple lines can be present, allowing to select one or multiple accounts from the Extensions defined for the tenant. One or multiple button layouts can be defined and assigned to the phone. Autoprovision Values When configuring the provision for a phone, you make a connection between the extensions in the pbx and the lines in the phone. Unfortunately it is not enough. The phone requests additional configuration you can enter by using the Autoprovision Values button. Two kind of autoprovision values can be needed: The general one can be configured by clicking on the name and MAC address of the phone on the right and will be used to configure values defined in the template file applying on the whole phone. The line related one can be configured by clicking on the Line desired and usually are already prefilled with values read from the extension configuration. Other values, like the server name and SIP port needs to be manually filled. Please refer to the Admin/Provisioning section on how to defined predefined values and build custom templates.

Button Layouts

Custom Files


Every tenant can have its own settings.
The following aspect can be customized: Recover VM messages dialing your own same number. Dialing your own same number is not really useful, so why don’t assign this action to recover the VM messages? Dial timeout identify the standard time the dialing command will ring an extension or an external number before reporting as “no answer”. Remember the dialing time can be adjusted for each extension. Max call duration sets the maximal time, in second, a call can last connected. Dialout digit allow you to define a digit to use for dialing out. If not set, all not local numbers are dialed outbound Voicemail Message Language let’s you specify the default language to use in the Voicemail. This value can be set for each voicemail. Parking log timeout specifies how long in second a call can stay parked before returning to the parking extension. Save pcap of every call let’s you capture the pcap of every call received by the PBX for debug purpose. Call logs are saved in the database for easy recovery. The tool used for capturing the traffic is Voipmonitor Voicemail autodelete after days let’s you decide how many days of Voicemail to keep online. Deleted messages cannot be recovered. Default CallerID for autocreated custom destinations. This is the callerid to use when the system needs to generate a Custom Destination, like for example when an unconditional transfer is set using a feature code. 26 Recording format. The recording format for monitoring calls can be choosen between Uncompressed 16-bit PCM Audio in Wav container and MS GSM audio, still in Wav container. API Key. The API Key is used for the proxyapi.php API script. Music On Hold allows to choose the files to use as Music On Hold for the given tenant. If no files are choosen the standard asterisk Music On Hold files are used. The files need to be in wav or slin format. Alternatively, a binary source of music can be selected, like a public streaming service entering the URL in the “Streaming Service” field, like http://s9.voscast.com:7136/ Web calls are calls generated using an HTTP request. A simple proof of concept is supplied with the webcall.php script. The generation of calls can be restricted using a password or by IP. The webcall.php script can be run either from the command line or by invoking using GET or POST method. When run in CLI mode, the arguments are in order: source number, destination number, tenant code and secret key. When run in GET/POST mode, the following variables needs to be assigned: source, dest, tenant, secret. For example, getting the URL: https://demo.mirtapbx.com/mirtapbx/webcall.php? source=104&dest=102&tenant=DEVEL&secret=H63JpSdPEWequMpr Will make extension 104 to ring, once answered, extension 102 is dialed.

Status Menu

Using the Status menu, a complete overview of the status of the system can be obtained. As other parts of the system, status is realtime. The info reported by the Status menu are related to the selected Tenant and are available to the not-admin profile.

Call History

The info for every call, internal or external, inbound or outbound is saved in the Call History along with basic information regarding the source and the destination. For every call the info regarding the start time, the caller ID, the extension source of the call (if call is originated by the internal network), destination, duration, answered duration (billsec), disposition, cost and if any recording is available for the call. Call History is retained for the amount of days configured in the Admin/Settings menu.

The disposition of the call is a link to access additional information gathered by the VoIPMonitor system. Info like the progress time, who hangup, the codec used in the call, the IP of the caller and the called are easily shown few seconds after the call has ended. A basic MOS calculator is included. The packet jitter and the latency can be easily show in the graphs following the raw data above.

A basic decoding of the call SIP message is available under the graphs. Using the floppy disk link is possible to download the complete pcap of the call or just check a detailed pcap dump.

Queue History

The info reported in the Call History are not enough when the call is processed using a Queue. More info for each call using the queue system can be found in the Queue History. Along with the Date, the Queue name and the Caller ID, a detailed disposition of the call is shown with the agent who get the call, the hold time of the caller and the call time. The original position of the caller when accessed the queue is also reported. More detail of the call can be seen following the DETAIL link.


Info on all the connected peers are shown along with all the info gathered during the registration process, like the brand and firmware version of the phone and even the internal IP address. Using the big red cross is possible to unregister a phone. Unregistering a phone is needed every time the configuration for the phone, like its password or the codec are changed. Some phone model, like Tiptel and Yealink, allow to remotely reboot the phone using the circled red arrow.


Using this menu, the status of all the conference rooms taking place on the server, for the selected tenant can be shown.


All faxes received by the system for the selected tenant can be viewed here if the fax has been configured for storage

Voicemail Messages

Voicemail messages received by the tenant can be viewed here if they are configured for storage


The actual balance of the selected tenant can be seen Using the insert button at the bottom, the admin can charge or load the account with some money.

Web Call Panel


Several statistics are available in the system for inbound, outbound and queue/agents calls. Clicking on the values will show the calls counted.

Stats are available for User Activity showing Outbound Calls Answered, Busy, No Answered and Failed, Inbound Answered, Busy, No Answered and Failed. Stats are available for DID Activiy showing Inbound Calls Answered, Busy, No Answered and Failed for each DID. Stats are available also for Queue Activity and Agent Activity, showing the calls entered in the queue and how the call ended, if answered, transferred, abandoned or time out, along with the holding time.

The same values can be read divided by each agent and each queue:

Realtime Status

Admin section

The access to this part of the menu is allowed only to Admin users and usually any setting made is valid for all tenants.


MiRTA PBX uses Asterisk Realtime Architecture so informations are pulled by asterisk directly from the database. Unfortunately some information cannot be stored in the database. Outbound providers or Trunks cannot be stored in the database, so they need to be defined in the sip.conf file by hand and asterisk needs to be reloaded to read that info. Be warned that reloading the sip part of asterisk makes all realtime peers to be disconnected. In other words, if you reload asterisk or just the sip part, all phones will lost their registration and cannot receive any call until a new registration takes part. Unfortunately it is not possible to trigger the registration from the PBX. The phone has a timer and it makes a new registration only when the time is arrived. It is suggested to use a low timer, maybe 60 seconds, to make registrations more frequent. Even if the provider or trunks are not realtime, they needs to be identified in the interface to be able to manage them. There is no limit in the number of providers that can be addressed. For every provider a custom Name can be choosen. That name will be used in the other screen to identify the provider. The Peer Name needs to match the name given in the sip.conf The Technology is the type of provider. For now only SIP and DAHDI provider have been widely tested. Additional Headers are additional SIP headers your provider might request. Penalty is the number of calls processed by the Provider and it is used to distribute calls among providers whit a round robin strategy. Status permits to temporary disable a provider. Provider Costs To be able to route calls using the Least Coast Route (LCR), you need to define the costs for every destination using each provider. Every row can be changed using the buttons at the left bottom corner. To make it easier to load the data, a CSV import function is available. CSV import Once the file has been loaded in the system using the “Load file” button, the format of the file needs to be selected, by providing the Delimiter, the Enclosure, the Decimal point used and the Escape value. It is important to decide what to do with the old data already associated with the Provider Costs. If you want to add the loaded file to the current costs or to replace.

Once these values has been set, a first check will show in the table the decoded values by pressing the “Check” button. The check button can be pressed multiple time while the settings are adjusted. Once the fields are correctly decoded, it is time to assign each field in the file loaded to the field in the Provider Cost Table. It is possible to apply some adjustment by using the available action drop down. For Prefix you can add a prefix or remove some digits from the start of the prefix For the Cost per Minute you can set the value to a specified amount, increase or decrease by a specified amount or increase or decrease by a percentage entered like 10%


Billing menu allows to access to the billing part of the system

Balance Dashboard

Using the Balance Dashboard is possible to have a general view of all the tenants account with the credit or debit associated. A date filter is available to restrict the balance to the selected dates. It is possible to recalculate the balance in case the call rates have been changed or to export the data in a CSV file.

Outbound Call Rates

Each tenant has associated a client or call rate. Using this menu is possible to define a client rate. An unlimited number of client rates can be defined. The client rate section is similar to the Provider Cost seen before, but with some additional columns available for the Setup Cost and the Rounding Time.

The data can be loaded using a CSV file as in the Provider Cost

Inbound Call Rates


Provisioning of phones is phone independent by providing the framework to create a template and use some variable. Variables are predefined in the system, but more can be added easily.

Phone Models

Several phone models can be defined. For each phone model the number of lines needs to be defined, usually with the starting and ending line number. The MAC request contains the text file that needs to be delivered to the phone for the provisioning. Please inquire for your phone model to receive the correct template.


PBX Nodes

The MiRTA PBX system can be composed of several pbx nodes. License is enforced only for 45  the number of pbx nodes. They need to be defined in the system along with the IP and a manager user to connect to the manager interface of asterisk. In the main screen, the number of connected peers for each node is shown. The manager user and password are usually stored in /etc/asterisk/manager.conf on each PBX node. It is a good idea to restrict access to the manager interface to just the web server and the other PBX nodes. 

Routing Profiles

Routing profiles permit to define how outbound calls are managed and which provider has to be selected. They permit basic call alteration, like remove of digits or add of prefix. LCR can be enabled to allow the selection of the cheaper provider available. Once created, you can manage the call profile using the “Manage” link on the right. It is easy to duplicate a Call profile using the “Duplicate” link. The call profile needs to define for every node, based on the regular expression specified, what action to do. It can be possible to add some digits, like the international prefix or removed some digits, like the area code. Following some usefull regular expression: ^ means start of number ^00.* matches any number starting with 00 ^0[1-9].* matches any number starting with 0 but with the second digit other than zero When a number is dialed, the list of routing profile matching is selected. They are ordered based on Priority and then for Order. When multiple providers are selected with the same priority and order, the penalty is taken into account and the call is sent to the provider with the lower penalty adjusted (multiplied) with the weight. Once a call is processed, the penalty for the provider selected is increased. LCR can be enabled for a destination. In this case the call is routed using the provider with the lower price for that destination.

Call routing are configured in the following screen.

CallerID Mods


There is no limits on the number of tenant that can be defined. When defining a tenant you need to provide some informations that cannot be altered after the tenant creation, like the tenant code and the parking lot start and end number. Once these informations have been assigned to a tenant, they cannot be altered. Parking lot start and end number can really be changed, but not using the web interface. The code is the string that will be used to identify each tenant user. It will be appended to each number to uniquely identify each user. Alert email is not yet used. It will be used when the anti fraud system will be completed. Default timezone allows to have tenants in different time zones. The routing profile is selected and allow to specify how the tenant will dial out and which 49  providers (trunks) will be used. The billing code is just a label, it can be used to link the tenant with an external billing software. Call rate is used to define which client rate to apply to the tenant calls. Payment type specify if checking or not for the tenant balance before authorizing an outbound call. If the “Postpaid” mode is selected, no check is done and the client can make as much calls as he wants. In “Prepaid” mode, for every call the actual tenant balance is checked and the max duration of the call is reduced to allow the tenant to spend only the 50% of his remaining credit. This way the tenant, even with very little funds, can make multiple contemporary calls because each call will “book” only 50% of the remaining credit. Max number of features allows to define how many Extensions, IVRs, Hunt List, etc. etc. the client is allowed to have. If the number is zero, then the menu entry will be hidden. Tenants Conduits Each tenant is completely separate from each other, but it can be useful to be allowed to call from one tenant extension to another tenant extension directly. It can be in both ways or just one way. The classical example is the head quarter and the foreign office. The head quarter needs to call any extension in the foreign office, while the foreign office needs to use any of the public available DIDs. To achieve this configuration, a conduit is created on the head quarter tenant specifying a prefix and the destination tenant. Any extension on the destination tenant can be dialed by dialing the prefix followed by the extension number. The caller ID is adjusted as needed. If no conduit is present to allow the called extension to call back the caller, then the external caller ID is used.


There are two kind of users in the system, admin and not admin. A “not admin” user can 50  manage only the list of tenants assigned and have access to only the “Configuration” and “Status” menu. A “not admin” user will be not be able to change or add new DIDS. An “admin” user can see all tenants or just the tenants assigned to him. Please keep in mind an admin can always change the list of tenants assigned to him. If the “Admin sees all tenants” option is selected, then admin users can manage all the tenants regardless by the fact if they are assigned or not assigned. Order of the tenants is not important.

User Profiles

DIDs List

When a system runs a large number of tenants and hosts a large number of DIDs, can be usefull to have a complete list of all the DIDs configured in the system. The list can be exported in CSV format.



Admin Stats


It is possible to provide your own translation to the MiRTA PBX. Just select your language and edit any sentence with your language equivalent.



Using these settings, the system can be adjusted to suits any needs. The Software version can be checked against the latest version released. Every night, at midnight, a script will contact a central host and pull all versions details available, alerting if any new version is available. Upgrades needs to be done on each node and the database will be upgraded only when an user log on. It is highly advisable to apply upgrade during off hours and report immediately any issue detected. Dialing section permits to configure the codes used for dialing. International prefix is the prefix used to place international calls. Usually 00 for European Countries and most of the other country in the world, it is 011 for the United States. Trunk prefix is in use only in some countries. Voice message language is the default language to use for prompts in the voicemail messages. Please enter the letters used for the asterisk sounds directory. License key contains the license. The license is usually bound to the URL used to access the web interface and contains the max number of nodes authorized. Only the asterisk servers count as nodes. The API Key is used for the proxyapi.php API interface. Data Retention specifies the number of days to retain the call pcap and call graph and the Call history days. A batch job is run at midnight cleaning all the unwanted data. Recordings allows to specify where to store recordings. If Filesystem is choosen, the records files will be stored in the specified folder. Recording format allows to specify which codec to use for the recordings. PCM uncompressed is the one with better quality and needs around 1 MByte of space for every minute. GSM is highly compressed and needs just 100KByte of space for every minute of recording. An optional script recompressing every recording file to MP3 format is available but the resulting quality is really low. Test it service allow to place a form on a web page to allow potential clients to place a call between two numbers. A trytestit.html page is available in the /pbx folder to show how to use the test it service. A limit on the call duration can be applied and a captcha can be requested to be solved to allow the call to be placed. For extra security, the IP of the web server hosting the application can be listed to restrict potential abuse of the service. It is strongly suggested to choose a tenant with a very restrictive Call Routing, so no premium rate calls can be made using the testit service. The last part of the configuration allows to Show status of extension by placing a small flag beside each extension to show the state (green for registered, red for offline). Single box DID will compact the DID to just a single box. It is highly discouraged to use this feature. DID select forms allows you to specify which format for the DID will be made available in the Caller ID selection. Ignore digits after # allows the usage of some phones automatically appending garbage at the end of each speed dial key. Admins see all tenants allow the admin users to manage any tenant defined in the system. Use advanced filters enable advanced filters in almost all data windows. Having advanced filters activated is needed to be albe to correclty select the statistical details. Proxy API An interface based on a REST API is available to perform a series of operations on the pbxes. To be able to access the proxyapi.php script, a set of parameters needs to be used: reqtype – identify the type of request tenant – is the tenant code for the request performed key – is the API Key to use for authentication. It can be the general API Key defined in the Admin/Settings or the tenant specific key defined in the Configuration/Settings format – optional, can be json or plain and select the format for the response All parameters can be passed using a GET or a POST method.

HELP This is the simplest request type and return a basic help on every request type For example: https://demo.mirtapbx.com/mirtapbx/proxyapi.php?reqtype=HELP&tenant=DEVEL&key=uq9VMJK8CEJ78MZR Will return: Parameters: reqtype – Request type tenant – Sometime optional if the Admin API key is used key – Use the Admin API key or the Tenant API key format – Optional, can be json or plain Request type (reqtype): COUNTPEERS – Return the number of peers on each node and the total

          - Additional parameters:
            tenant - optional if using the Admin API key,
                     returns only peers from the selected tenant

PEERS – Show the peers registered on all nodes of the network

          - Additional parameters:
            tenant - optional if using the Admin API key,
                     returns only peers from the selected tenant

DIAL – Dial a number and connect to another number

            Additional parameters:
            tenant - tenant where to place the call
            source - first number to dial
            dest - number to connect

CHANNELS – Show the channels for the selected tenant

            Additional parameters:
            tenant - optional, show channels for the tenant

HANGUP – Hangup a channel

            Additional parameters:
            tenant - optional, tenant for the channel to hangup
            channel - channel to hangup

TRANSFER – Transfer a channel

            Additional parameters:
            tenant - optional, tenant for the channel to transfer
            channel - channel to transfer
            extrachannel - extra channel to transfer (optional)
            dest - number to transfer the channel to

In case of wrong API key, no message is returned on the screen, but the error is logged in the web server error log. COUNTPEERS Parameters: tenant (optional) Return the number of peers on each node, plus the total of peers defined. If the tenant parameter is used (mandatory if the tenant key is used), only the number of peers belonging to the selected tenant are returned. PEERS Parameters: tenant (optional) Returns the name of the peers on each node with additional informations. If the tenant parameter is used (mandatory if the tenant key is used), only mandatory if the tenant key is used), only the peers belonging to the selected tenant are returned. DIAL Parameters: tenant, source, dest

Two additional parameters are needed, source and dest. A call will be placed in the selected tenant (always mandatory), dialing source and once answered, dialing dest. CHANNELS Parameters: tenant (optional) Returns the list of active channels on each node with additional informations. If the tenant parameter is used (mandatory if the tenant key is used), only the channels belonging to the selected tenant are returned. HANGUP Parameters: tenant (optional) Ends a channel. TRANSFER Parameters: tenant (optional), channel, extrachannel (optional), dest Transfer a channel to another extension. If the tenant parameter is used (mandatory if the tenant key is used), only a channel beloging to the tenant can be transferred. If the extrachannel is used, then both the channel and the extrachannel are transferred to the dest destination. Database Integrations MiRTA PBX database is quite stable and can be used to perform any direct integration with external provisioning or billing systems. Billing For integrating the billing in an external software, it is important to understand how the call cost is computed and stored in the system. The main table to refer is asteriskcdrdb.cdr. This is the standard asterisk table with some columns added. In particular, altought the new Asterisk 12 assure now the uniqueness of the uniqueid+sequence columne, a real, database driven, unique column ID has been added and it will be used for computing costs. Costs of completed calls are computed by a batch script every minute. When a prepaid profile is used, a temporary cost is inserted to prevent the client to run over its credit. Every day the sum of all the costs of the calls are consolidated in a single record in the bi_billings table Details for call costs are stored in the cc_callcosts table with the following structure: cc_id – ID of the call cost, used as link in the asteriskcdrdb.cdr table with the column cdr_cc_id cc_te_id – Tenant ID cc_uniqueid –Uniqueidofthecall.Bewarnedthatisnotauniqueidasonecaneasilythink, but it is a unique identification for the call, but a call in asterisk can have several legs and so multiple records with the same uniqueid can be present in the cdr cc_cdr_id – Link with the column ID in the asteriskcdrdb.cdr table cc_cost – Call cost cc_bi_id – Link with the column bi_id in the bi_billings table Consolidated billings can be found in the bi_billings table with the following structure: bi_id – ID of the call cost, used as link in the cc_callcosts table with the column cc_bi_id bi_te_id – Tenant ID bi_description – A description of the cost or the credit loaded on the customer account bi_date – Date of the billing bi_amount – Credit or Debit for the client SIP TAPI integration SIP TAPI integration is made using the freely available SIPTAPI application: http://sourceforge.net/projects/siptapi/

      • IMPORTANT ***

The SIP TAPI integration is made by dialing your own extension and then connecting to the destination. It is important the “Recover VM messages dialing your own same number” is set to No. The following example has been made using version 0.2.13. Download and uncompress the zip package On 32bit Windows

1. Copy siptapi.tsp from 32bit folder into your Windows system32 directory (usually C:\Windows\System32) 2. Install and configure SIPTAPI using the telephony options from control panel On 64bit Windows

1. Copy siptapi.tsp from 64bit folder into your Windows system32 directory (usually C:\Windows\System32). This gives you full TAPI support with 64 and 32bit TAPI applications 2. If you want to configure SIPTAPI not only from the telephony control panel and from 64bit applications, but also from 32bit applications, copy the 32bit siptapi.tsp from 32bit folder into your WoW64 directory (usually C:\Windows\SysWow64) 3. Install and configure SIPTAPI using the telephony options from control panel Open Control Panel and click on the Phone and Modem Option

In the Advanced tab add a new Provider Select “SIP TAPI Service Provider…” and press Add. Configure it by entering the PBX host address, the extension and the password Open you TAPI compatible application, like Outlook and dial any contact. You need to configure the application to dial using the SIPTAPI.