Archives

Support Desk Tags

Below are the tags approved for use in FreshDesk. All tickets should have tags on them. You can use more than one tag if the issue warrants it.

Approved Ticket Tags:

 

Training
Transfer
Call Recordings
System Recordings
Voicemail
Auto-Attendant
IVR
Holiday
Time-Specific
New Extension
Fax User
Fax Failure
V-Fax
BLF
Dropped Call
Call Quality
User Panel
Follow Me
FOP2
Blacklist
Conference
Caller ID
Speaker
Paging
Intercom
Incoming Calls
Outgoing Calls
Modem
Router
Switch
Cable
IT Vendor
ISP
MTR
Sansay
Voip Monitor
Edgewater
Asternic
Time Zone (phone)
Time Zone (pbx)
CDR
Queue

8. System Recordings

Very often when configuring a PBX, you’ll need to implement system recordings. Recordings are necessary for IVRs and announcements, and can be quite useful in other places such as queues. System recordings can be made by dialing a feature code from an extension within the PBX or by uploading them through the FreePBX admin interface.

For uploaded recordings, there are some specific technical requirements, otherwise Asterisk will not be able to make use of the recording and may exhibit some unusual behavior. Before uploading a system recording, please be sure it matches the following criteria:

  • .wav file
  • 16 bit
  • Mono
  • 8 KHz (8000 Hz)

The easiest way to verify that the audio file in question is correct is to open a terminal in the same directory as the file and execute the following replacing <filename> with the actual name:

file <filename>.wav

The output for a correctly encoded file should be as follows:

<filename>.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 8000 Hz

Should the audio file you need to upload not be encoded correctly, it’s necessary to re-encode the file. There are multiple methods of doing this and different people prefer different workflows so I’ll not go into explicit detail regarding various methods, but here are some options:

  • Audacity is a free and open source audio editor that can easily handle encoding files in the correct manner.
  • VLC is free and open source media player that also handles file encoding. It’s interface is a little easier to make sense of, however the encoding quality typically isn’t as good.
  • You can encode files directly from a terminal with ffmpeg if you have it installed on your workstation.

Uploading Audio Files

Within the FreePBX admin interface, select Admin from the menu and click on the System Recordings option. Locate the file upload widget following this message:

Alternatively, upload a recording in any supported asterisk format. Note that if you’re using .wav, (eg, recorded with Microsoft Recorder) the file must be PCM Encoded, 16 Bits, at 8000Hz:

Click the Browse button, select the file on your workstation, and then click the Upload button. Once the upload is complete, enter a name for the recording using Ringfree’s standard naming conventions, and click the Save button. You should then see the recording in the list of available System Recordings within the right sidebar.

Creating a Recording from an Extension

System recordings can also be recorded directly from an extension. Generally this is the preferred method for obtaining recordings from customers.

To create a new recording, dial *77 from any extension, wait for the tone, and record. Once you complete the recording simply hang up, or press # to receive options to review and/or re-record the message. If you’re instructing a customer to create a recording, have them provide you with the extension number used for the recording process as you’ll need it in the next step.

Within the System Recordings view in FreePBX, locate the input immediately following this message:

If you wish to make and verify recordings from your phone, please enter your extension number here:

Enter the extension number that you or the customer used and click the button labeled Go. Finally enter a name for the new recording using Ringfree’s standard naming conventions and click the Save button. NOTE: You may not use any spaces in the name.  After clicking Save, You should then see the recording in the list of available System Recordings within the right sidebar.

Implementing System Recordings

Once the recording is saved, it will become immediately available in all places within the PBX that accept/require System Recording input. All of the associated fields use drop-down menus and your new recording will simply be listed in the drop-down.

7. Queues In Depth

In the last article it was mentioned that a full explanation of Queues was beyond the scope of the article. This article aims to provide everything you should practically need to know regarding queues, when to use them over Ring Groups, and the differences in ring strategies.

To queue, or not to queue?

Queues and Ring Groups can largely be used to achieve the same end goal: having an incoming call ring a group or series of extensions. The first thing you should do when considering adding either is to ask yourself a few quick questions to determine which one would be a better fit for the customer:

  1. Does the call always need to ring to the same people? if not, use a queue.
  2. Do you need to report hold time to agents or call position to callers? If so, use a queue.
  3. Will you need to specify a maximum incoming call capacity before rolling calls to an alternate destination? If so, use a queue.
  4. Do you require the fairest and/or most equal call distribution among agents? If so, use a queue.

There are additional edge cases, however these questions will largely determine whether you implement a queue or a ring group.

Why not always use queues?

Because queues can technically perform everything that a ring group can, perhaps you’re wondering why we don’t just disable ring groups and use queues exclusively. The answer is that because of the plethora of options available with queues, a substantially higher degree of human error is often present and configuration changes tend to take much longer. As a general rule, if you do not have a specific need for a queue just use a ring group.

Detailed Queue Configuration

Note that this section will not cover every possible queue configuration option, but it will cover most use cases you’ll encounter.

The first option you’ll find when adding a queue is for defining how agents will log into it. You can specify any series of digits here (preferably a short one) and dynamic agents will be able to dial that series of digits followed by the star key (*) to log into the queue or the star key twice (**) to log out. Note that the ability for agents to log in and out is the most common use case for queues among most Ringfree customers so this will often be one of the first things configured when adding a queue.

Moving on you’ll see the Queue Name (which should follow standard Ringfree naming conventions) and then a Queue Password. The password is optional and is used when you want to further restrict the ability of agents to log into specific queues. Due to availability of the Restrict Dynamic Agents feature (explained below), this option is rarely used.

Call Confirm and Call Confirm Announce are for when you need to play a message to the agent prior to receiving the call. Call Confirm enables the feature and Call Confirm Announce allows you to specify which system recording you’d like to play. This feature is especially useful in situations where extensions forward to numbers outside the phone system.

CID Name Prefix and Wait Time Prefix allow you to prefix the caller ID info for the incoming call with various bits of data. The CID prefix allows any arbitrary string whereas the wait time prefix will prepend the number of minutes the caller has been waiting (rounded to the nearest minute).

Alert Info is used in conjunction with the phone provisioning servers to provide a custom ring tone for calls coming from this queue.

Static Agents are extensions which are always in the queue and can not be logged out. Dynamic Agents are extensions which can be logged in and out. By default any other extension within the phone system can also be logged into the queue, however the Restrict Dynamic Agents option can be enabled to restrict the queue to only those extensions listed.

Agent Restrictions allows you to override the normal extension behavior for calls routed from the queue. There are three options here:

  1. Call As Dialed: Default Extension Behavior
  2. No Follow Me or Call Forward: This overrides all of the forwarding and Follow Me settings for the extensions.
  3. Extensions Only: This does the same as the above, but also ignores any non-extension number in the agent list.

Skip Busy Agents is an option that should almost always be enabled when configuring a queue. It tells the queue to skip any agents that are already on the phone. Given that most extensions have features such as call waiting enabled, it’s possible to have multiple incoming calls to the same extension from the same queue when this is not enabled.

Most of the rest of the configuration options for queues are extremely self explanatory and have ample documentation available via the pop-over text within FreePBX. The other major component that does deserve some additional clarification is Ring Strategies.

Ring Strategies

Ring strategies define the behavior of how an incoming call rings a group or list of numbers. You’ll find them in use in a few places throughout FreePBX, most notably queues, ring groups, and Follow Me. Note that queues offer different ring strategies than ring groups and Follow Me. Different ring strategies can have wildly different ramifications depending on the use case, so it’s extremely important to both understand all of the available options and be able to work with a customer to find the best solution for their needs. Detailed descriptions of the various ring strategies can be found in the pop-over text in the FreePBX interface.

There’s one major caveat when it comes to ring strategies: in the version of FreePBX most commonly deployed within Ringfree, ring strategies other than ringall can sometimes behave erratically. That said, it’s generally wise to test a ring strategy prior to implementing it in a live customer PBX. Testing can easily be done by adding a few temporary extensions, sticking them all in a temporary queue, and registering them all to a desktop sip client like Zoiper.

6. FreePBX Modules and Call Routing

FreePBX contains multiple modules and call routing options that allow for phone systems to be put together with practically any degree of complexity. Here follows a brief description of each:

Announcements

An Announcement in FreePBX simply plays a prerecorded message to the caller and then routes the call to the specified destination. Within the configuration interface you’ll notice options to name the announcement, select which recording to use, set announcement repeating, and a few other lesser used settings. You can then use the Set Destination drop down to specify where the call should go after the announcement finishes. If the call should end after the announcement, then select Terminate Call and Hang Up.

Call Flow Control

This section allows you to set up feature codes (or star codes) to switch call routing between two arbitrary destinations. You set the Call Flow Control as the destination and depending upon the feature code status, it will route to one of two destinations. Basically it’s a glorified A/B switch. In practice this is extremely useful for setting up things like holiday and inclement weather overrides so that the customer can quickly and easily change call routing without having to open a support ticket. A password can be specified for security purposes.

Call Recording

A Call Recording module can be used to force recording behavior for all calls routed through it. For instance if you have an Inbound Route that routes directly to extension 100, you would set up a Call Recording module with extension 100 as its destination and then route the Inbound Route to the Call Recording module instead. This is useful if you want to record all calls that route to a particular ring group or queue and don’t want to bother setting up the recording options for every extension. That said, Call Recording modules are rarely used in practice here at Ringfree.

Conferences

Conferences are a final call routing destination (meaning you can’t route elsewhere from one) that allow multiple parties to communicate simultaneously. Adding a new conference sets up a pseudo-extension that can be set as a routing destination, can be dialed directly from within the phone system, or that users can transfer call to. All calls that eventually end up routed to the conference will be able to communicate with each other. A PIN can be specified to restrict access to the conference. Additionally there are options for things such as defining a max user count and for recording the conference.

Directory

A Directory is an intermediary destination that assists callers with identifying an extension and then transferring them to that extension. The directory prompts callers to dial the first three letters of the desired extension’s Display Name and will identify any matching extensions based on the DTMF tones used. Extensions can easily be added or removed from directories and callers will only have access from a directory to those extensions specified. Alternate destinations can be specified for situations where the caller provides invalid or no input when prompted. Directories are most commonly used as IVR (or auto attendant) options.

Follow Me

Follow Me is a “per extension” set of options that allow for advanced call routing and forwarding options. It can be enabled or disabled for any given extension. Follow Me basically allows you to specify an Initial Ring Time where calls to the extension will ring normally. Following this, you can specify a list of any number of extensions or external phone numbers to ring for an arbitrary amount of time. Additionally you can specify a ring strategy which will define how the extensions and external phone numbers on the list will ring (such as all of them ringing at the same time or them ringing one by one until someone answers).

Additionally you can specify a recording to be played prior to the call being routed to the list, a Caller ID prefix, and a custom ring tone. There are also call confirmation options that allow the recipients to screen incoming calls. You can then define call routing for situations where there is no answer. For instance you can have it follow the normal extension behavior (which by default routes to the extension’s voicemail) or you could have it route to another destination such as an announcement or a ring group.

End users have access to some Follow Me settings through the user interface they can access with their extension and voicemail password. Because of this and the overall versatility of the module, it’s heavily used here at Ringfree and is frequently a part of normal troubleshooting.

IVR

An Interactive Voice Response (or IVR, often referred to as an “auto attendant”) allows you to set up a recording that prompts the caller for DTMF input and will route the call to any number of arbitrary destinations based on that DTMF input. Think of a “press 1 for sales, press 2 for support” sort of thing. Additionally alternate destinations can be specified for invalid or no caller input and the IVR can be set to allow callers to dial extensions directly.

Very often customers will have multiple IVRs for different circumstances (open hours, closed hours, holidays, etc) and IVRs can be set to have other IVRs as some of their destinations thus creating extremely complex call routing trees. IVR configuration is amongst the most straightforward of FreePBX’s options.

Misc Destinations

This module is primarily used in conjunction with custom development to create new destinations outside the scope of what FreePBX offers by default. This feature is practically never used within Ringfree.

Paging and Intercom

This module, often referred to as Off-Network Paging, allows you to specify a group of extensions to be the recipients of a call with one-way audio. It is referred to as Off-Network Paging because many models of phones support Multi-Cast Paging which allows paging functionality over the same network without having to communicate with the PBX. In almost all cases, Multi-Cast is preferred over Off-Network, however there are some cases where this needs to be implemented due to multiple customer locations, decentralized work environments, and/or remote employees. Off-Network Paging does have a Duplex option which enables two-way audio.

Queues

Queues are a means of distributing incoming calls to a list of agents or active extensions. Each queue has a ring strategy which defines the means and order of which incoming calls are routed to each agent. Agents can be either static meaning that they are always active in the queue or dynamic meaning that they can be logged in and out using a feature code. There are many advanced configuration options beyond the scope of this article including agent restrictions, volume adjustments, and caller position announcements. Queues are most useful in call centers and other high volume environments and in situations where you require more granular control over call routing than what is offered by a Ring Group (discussed below).

Ring Groups

Ring Groups are a way of directing an incoming call to multiple extensions. The specifics regarding how each extension rings can be specified by a ring strategy. While configuring a ring group you’ll notice options to prepend an announcement, set specific hold music, set up a Caller ID prefix and/or a custom ring tone, enable/disable call recording, and other various functions. Of note is the Skip Busy Agent option which will tell the ring group to skip extensions already on a call that have call waiting enabled. Finally you can specify a destination for situations where no one in the group answers the phone.

Set Caller ID

The Set Caller ID module is basically an inline filter that allows you to arbitrarily rewrite caller ID information for incoming calls. This is useful in situations where you could have a call routed to an extension in multiple different ways, but want to track how exactly the call was routed.

Time Conditions

Time Conditions are essentially an A/B switch that automatically switches based on date and time information. The date and time information is stored in a Time Group (discussed below). The Time Condition allows you to set two destinations, one for when the current time matches the rules in the Time Group, and a second for when the current time does not match the rules in the Time Group. You can also enable an override feature code for when the customer wants to manually override the current status of the Time Condition.

Time Groups

Time Groups are sets of rules used by Time Conditions. Within the configuration interface you can specify start and finish details for specific times, days of the week, days of the month, and entire months. Each Time Group also allows you to specify multiple rules for each so it would be possible to set a start time for 8:30 am, finish at 12:00 noon, start again at 1:00, and finish at 5:30 (or whatever else the customer is in need of). Time Groups and Time Conditions are exceptionally useful and are in place in the majority of customer PBXs here at Ringfree. Because they support specific months and days of the month, you can even use them certain holiday conditions (though there are usually better ways of handling holidays).

Others

FreePBX has a variety of other modules available, some of which are occasionally in use in Ringfree customer PBXs. It’s beyond the scope of this article to cover every single one of them, but they are generally well documented online. Also, John Knight is a fantastic resource for information on various FreePBX modules.

5. Inbound Routes and Extensions

Two of the most basic configuration items within FreePBX are Inbound Routes and Extensions. They’re also some of the most commonly edited so it should come as no surprise that they’re the subject of a great many tickets. It’s important to note that Inbound Routes represent Direct Inward Dial numbers (or DIDs or just “phone numbers” as they’re more commonly referred). Extensions are the user endpoints within a phone system, essentially a place to make and take calls.

Adding and Editing Inbound Routes

Within the PBX configuration interface (FreePBX), navigate to the Connectivity menu and select the Inbound Routes option. Once done, you’ll notice a fair number of configuration options on the left and a list of any existing Inbound Routes on the right.

Take a quick look at the available configuration options. Some of these you will use often, many of them rarely, some of them not at all. Technically in order to add an Inbound Route, all you need to add is the DID in the DID Number field located toward the top and specify a destination in the Set Destination drop-down located toward the bottom.

For almost all Ringfree related purposes, enter the DID into the DID Number field in eleven digit format with no delimiters or other characters. There are situations that require exceptions to this rule, but none that are in place within Ringfree at this point.

For the Set Destination dropdown, the options here reflect all available destinations currently configured in the phone system. You can therefore route the DID to an extension, an IVR, an announcement, or literally anywhere else.

It’s standard practice within Ringfree to also add a description for each Inbound Route. Generally this will refer to the role of the particular DID within the company. For instance a main number might have a description of Main while a break room fax machine might have the description Break Room Fax. If there is no suitable description available when adding an Inbound Route, copy the DID into the Description field as well.

Here are some of the other options for Inbound Routes:

  • Alert Info: This can be used to specify a specific ring tone for this DID. Setting this up properly generally requires specific configuration to be in place on the provisioning server associated with the phone models in use at the customer premises.
  • CID name prefix: This allows you to specify an arbitrary string to be prepended to the Caller ID (CID) for incoming calls to this DID. This is useful when multiple routes serving different purposes eventually route to some of the same extensions. Calls can then be prefixed with strings such as “Sales:” or “Support:” or whatever else.
  • Music on hold: This allows you to specify particular hold music for this DID.
  • Call Recording: This allows you to define whether calls on this DID can be recorded. This setting can be overridden on a per extension basis by setting it in the extension settings, but this is a convenient way to globally turn it off or on for any given DID.
  • Fax Detect: This setting tells the PBX to try and determine if the call is a voice call or a fax call. When turned on, this allows you to specify an alternate destination for fax calls.

As you can see, there are other options available for Inbound Routes, most of which are rarely if ever used here at Ringfree. The question mark pop-over icons should adequately explain their uses. Should you require further clarification, please consult with David Wessell or John Knight.

Adding and Editing Extensions

To access the Extensions, within FreePBX select the Applications menu and click on the Extensions option. Extensions are quite a bit more complex than inbound routes as you’ll be able to see from the number of configuration options available. To compound this, there are multiple types of extensions that can be configured for different devices. Here at Ringfree we generally use two of them: Generic SIP Device and None (virtual exten). Of the two, Generic SIP Devices (or just SIP extensions) make up the majority of what we work with. The None type extensions (or just virtual extensions) are usually used for things such as general purpose voicemail boxes and call forwarders.

Elect to add a new SIP extension and scroll through the options. You’ll see expected fields such as Call Waiting, Auto Answer, and Voicemail Password along with more advanced options covering things like Queue State Detection, NAT and other limited network options, along with Call Recording.

In order to add a new SIP extension, you technically only need to provide two fields: an extension number and a display name, however doing so opens a major security hole in that the extension will not be password protected. To add a password, or SIP secret, look for the field labeled secret and add it there. FreePBX will display a pop-up and require confirmation if you attempt to add a SIP extension without a password.

You’ll notice that the extension options are broken down into several subsections. You’ll practically never use every option when adding/editing an extension so here follows a brief overview of the various subsections and notable options.

  • Edit Extension: This is your basic extension information such as the extension number and the display name. Note that the extension number can not be edited once an extension is saved.
  • Extension Options: These are settings which are generally set as PBX-wide defaults in other configuration sections in FreePBX. This section allows you to override the default settings for the extension in question. This is especially useful for situations such as when you have users at multiple locations and need to specify different Emergency Caller ID values.
  • Assigned DID/CID: Options for directly associating a DID with the extension.
  • Device Options: Options for the device specific configuration. Note that many of these settings are overridden by settings on the SBCs (such as port). You will generally not mess with these settings beyond the secret and occasionally the mailbox. Note that
  • Call Camp-On Services: Extension specific options for use when the phone system is configured to allow callers to request an automated call back when an agent becomes available. Use of these options is either rare or nonexistent within Ringfree as of the time of this writing.
  • Fax: Allows the extension to receive faxes. Because Ringfree makes use of an external vFax provider, these options are never used.
  • Recording Options: These options allow you to define specific behavior for how the extension is allowed to record calls. Options provided cover automatic and on-demand recording.
  • Voicemail: The voicemail options are used for the vast majority of extensions. Options here include enabling voicemail, specifying a password, forwarding voicemail messages to an email address, etc.
  • VmX Locator: Options for when a caller reaches the extension’s voicemail and wants to perform another action. This acts as a sort of miniature auto-attendant allowing you to define alternate destinations when certain keys are pressed while listening to the voicemail greeting. There are multiple uses for this feature, both explicit and discreet.
  • Optional Destinations: This section allows you to override the default behavior of where a call is routed should no one answer or if the user is already on the phone. This (along with the VmX Locator options) effectively allows the extension to be used as an intermediary destination within the call routing. One use would be to direct a call back to a queue or ring group if the particular extension is already in use.

Because of the amount of interaction you’ll have with extensions, you’ll quickly get up to speed regarding the specific options.

Submitting and Applying Changes

FreePBX stores all of the various configuration options in a MySQL database and submitting any changes within the interface will update said database. However the actual changes will not go live immediately. Asterisk (the actual PBX) requires a dial plan to be written which tells it how to behave under any given circumstances and simply writing changes to a database will not cause changes to the dial plan.

After making any changes within FreePBX, you’ll notice a red Apply Config option appear toward the top center of the interface. Clicking this option will then cause FreePBX to generate a new dial plan using the information in the database and then it will reload Asterisk so that it takes any changes live.

Note that due to the nature of how FreePBX stores data and writes dial plans and due to the nature of how Asterisk operates, there is no way to undo any changes. That said, please abide by the old saying “measure twice, cut one” and be sure to double check any changes before submitting or applying them.

4. Intro to Papal and FreePBX

Ringfree’s customer and PBX management platform, called Papal Mainframe (or just Papal), serves as the primary interface for a large portion of what we do here at Ringfree. Specifically Papal serves as a central point for accessing customer information, PBX information, PBX configuration interfaces, and provisioning server interfaces. Support staff will typically make heavy use of all of these so all of them will be covered in some introductory detail in this article.

Customer Information

To access the customer information section of Papal, click on the phone icon in the upper left corner or search using the search bar in the upper right corner. In the customer list, click on the left-most icon that resembles a list to access the customer.

On the main customer information page, you’ll notice billing address information, contact information, and general account notes. On this page you have the ability to edit the billing address information and notes. Notes provided here are intended to serve as general notes regarding the account. Location specific configuration notes should be added on the Locations page.

Across the top of the customer information page are links to several other subsections of customer data: Contacts, Locations, Numbers, and Extensions. On the right you’ll also find links to the customer’s PBX and billing pages. The specific functions of each page are as follows:

  • Contacts: Here is where customer contacts are added, managed, and deleted. Contacts can be flagged as an account’s primary, secondary, or billing contact, and can be specified as to whether or not they are authorized to make changes to the account. This is one area you should check when verifying a contact.
  • Locations: All customers have at least one location while many of them have several. Instead of relying on a single universal place for location specific configuration details, each individual location should have an entry here containing those details. As we transition from Autotask to Freshdesk, there will be a lot of holes here that need to be filled, so please confer with David Wessell if there are configuration details not present. This section should be filled out during the customer on-boarding process and edited to stay current.
  • Numbers: This section provides a quick and simple interface for managing Direct Inward Dial numbers (or DIDs) across all the places in the Ringfree infrastructure that require DID specific information. Notably Papal, the PBX, and the SBC. In order for a phone number to work properly with Ringfree’s service and be appropriately billed for, it must be added in all places.
  • Extensions: At present, the Extensions page provides a quick and easy way to view existing user extensions along with their description, type, and SIP secret (or password). In the future, this page will be used to assist in managing per-extension billing.

PBX Information

To access the PBX information section of Papal, click on the icon in the upper left that resembles 3 servers (or 3 lines, or a modern menu icon) or search using the search bar in the upper right corner. In the PBX list, click on the left-most link labeled View.

There is little function to the PBX information page without administrative privileges, but this page serves as a quick and easy way to access commonly needed information regarding any specific PBX. In this context, a PBX is a Ringfree OS instance (along with FreePBX and Asterisk) running on a container within one of the nodes.

Users with administrative privileges will have access to node and vendor management options from this page.

PBX Configuration Interface

To access a PBX configuration interface, or the FreePBX admin interface, search for either the customer or the PBX or click the associated links in the upper left corner of Papal to load a complete list. In a PBX list, click on the pbxadmin link toward the center of the entry. In a customer list, click on the linked PBX hostname toward the center of the entry. The resulting page will be the FreePBX admin interface which by default will load the extensions view.

The specifics associated with FreePBX configuration will be covered in a later article, but the overall goal is simple: to associate inbound routes (DIDs) with appropriate intermediary and final destinations and to provide outbound routes for the extensions to use in order to make outbound phone calls. In virtually all cases, the latter will be handled during the customer on-boarding process and will rarely (if ever) require further attention whereas inbound configuration changes are extremely common.

Each inbound route represents a DID (or phone number) that is routed to the PBX. For the route to be functional, it requires a destination. That destination can be an intermediary destination such as a time condition, auto-attendant (IVR), or queue, or it can be a final destination such as a voicemail box or an announcement. Intermediary destinations require another intermediary or final destination to be specified thus creating the capacity for extremely complex call routing. Interestingly, user extensions can be used as both types of destinations depending on how they’re configured.

There are additional options not associated with call routing within the PBX Configuration interface. Commonly used options are Call Detail Records or CDRs and a bulk phone reboot tool. There are also views for managing customer recordings, hold music, and other odds and ends.

Provisioning Server Interfaces

Ringfree operates two provisioning servers: one for Polycom phones often referred to as PPT (for Polycom Provisioning Tool, also sometimes called “the PPT server”); and one for Yealink phones, often referred to as YConf. In both cases,  you’re provided with an interface where you can specify a device’s MAC address and input information necessary to register and label extensions. Within PPT you can optionally specify additional configuration files and define a number of line keys. Within YConf you can define specific line key behavior and specify arbitrary configuration options.

3. Intro to Ringfree’s Infrastructure

Ringfree makes use of a combination of proprietary and open source technologies in order to provide phone service to its customers. The phone service itself is provided by the Asterisk IP PBX software with a variety of tools and platforms built around it in order to guarantee reconfigurability, scalability, and most importantly reliability.

ringfree(1)

Ringfree OS

There is a popular open source project called FreePBX which, in the most basic of terms, is a glorified Asterisk configuration interface. FreePBX offers their own CentOS based Linux distribution containing their software along with Asterisk and a number of other preconfigured tools assembled with the goal of being able to quickly and easily deploy a fully functional IP PBX.

Ringfree maintains a highly optimized fork of the FreePBX distribution called Ringfree OS which contains Ringfree specific tools and configurations. Each Ringfree OS instance has two web interfaces for PBX management: an admin interface capable of administering almost any aspect of the PBX, and an end use interface with configuration options limited to a few extension features specific to a single extension.

Nodes and Containers

Ringfree operates several physical servers dubbed nodes which serve as hosts to numerous virtual machines called containers. The virtualization platform is OpenVZ and the overwhelming majority of the containers run Ringfree OS. When a new customer is being on-boarded, a new container with a new Ringfree OS instance is created and configured for that customer’s specific requirements.

Each node is capable of handling numerous dozens of Ringfree OS containers. While those make up the bulk of what’s on the nodes, there are other containers which contain web servers, phone provisioning servers, and other bits of infrastructure to be described later.

Session Border Controllers

One of the primary pieces of infrastructure within Ringfree are Session Border Controllers, or SBCs, manufactured by Sansay. Within Ringfree, the terms Sansay and SBC are used almost interchangeably. The SBCs control VoIP traffic to and from the various Ringfree OS containers in addition to working as a strong layer of security.

Use of the SBCs allows Ringfree to direct all VoIP traffic to a single public IP address thus obscuring the IP addresses of the Ringfree OS containers. There are numerous methods used by hackers to take advantage of IP PBX software in the wild and the SBCs mitigate the overwhelming majority of them.

Because the SBCs are so critical to Ringfee’s operation, they are deployed as pairs configured for full replication and failover.

Papal Mainframe

As you can imagine, managing hundreds of IP PBXs at a time can be a somewhat daunting process. To assist with this, a PBX management platform called the Papal Mainframe (a Dr. Who reference) was developed. Papal serves as a means of quickly accessing the admin and user interfaces for all of the Ringfree OS containers. Additionally it contains customer data, hardware provisioning options, DID management, and will soon contain the bulk of Ringfree’s internal billing.

The server where Papal operates is in a datacenter completely independent of the rest of Ringfree’s infrastructure. Papal is a stateless application written in PHP and can be deployed on most Linux servers capable of handling a standard LAMP stack and occasionally running a Java application necessary for communication with the SBCs.

Customer Premises Equipment

The bulk of customer premises equipment, or CPE, in use for Ringfree’s phone service are IP phones manufactured by Polycom and Yealink. In past years Ringfree primarily deployed Polycom units and in 2016 this shifted to Yealink for a variety of reasons beyond the scope of this article. There are occasionally other brands of phones in use, normally by customers who had existing equipment prior to moving their phone service.

Additional VoIP CPE sometimes includes Mediatrix ATAs in use for fax machines, Panasonic wireless DECT phones, paging devices manufactured by companies such as Algo, and Yealink DECT range extenders.

In almost all cases Ringfree or an IT provider will make recommendations to customers regarding their internal networking equipment and ISP. While Ringfree does not maintain internal networks or ISP relations for customers, it is necessary to ensure that the network can be reliably configured for VoIP traffic.

Provisioning Servers

Many forms of IP phones and related equipment can be set up for remote provisioning. Ringfree operates provisioning servers for Polycom and Yealink devices. Functionally a SIP device requires four settings to be able to communicate with a Ringfree operated PBX: hostname, username, password, and outbound proxy; so the provisioning servers provide this information along with other settings proprietary to the manufacturer.

Compatible IP phones can be configured to communicate with Ringfree’s provisioning servers directly from the hardware supplier. Compatible IP phones sourced elsewhere can generally be configured to communicate with the associated provisioning server directly within the phone’s configuration.

Provisioning servers have several notable benefits over per-device configuration. Most notably they allow for system wide changes to be rolled out in a substantially more rapid fashion. Additionally they allow for Ringfree employees to quickly and effectively reprovision phones and diagnose various provisioning issues.

Other Infrastructure

Ringfree operates a number of other servers to perform various tasks. Included are a VoipMonitor server, an internal Nagios server, a Shinken server, an HAProxy and Apache Reverse NAT server, and a few others. Specific information regarding these servers is outside the scope of normal day to day operations and as such they will be addressed in other documentation later on.

1. Company Policies

As with most employers, Ringfree has a fair number of policies in place in order to ensure optimal treatment of customers and employees while maintaining a successfully operating business. Here follows company policies that pertain to employment and the general office environment.

Holidays and Inclement Weather

Ringfree follows postal holidays as paid time off.  Additional days may be added and support will follow evening and weekend time conditions.  In the event of inclement weather the office will be closed and customer support will be provided remotely.

Benefits and Reimbursements

Ringfree will provide health insurance coverage for employees in the form of a monthly reimbursement or a company health plan up to the amount of $300.

Illness

If it is contagious, do not bring it to work.  Stay home.  Remote work will be paid as regular office time.

Evaluations

Evaluations will be performed after the first 90 days and then once yearly to determine pay raises and job performance.

Paid Time Off and Scheduling

New employees will start employment with 80 hours of PTO.  Abnormal availability or office hours will be marked on the company calendar as A for available, S for Semi-Available, or U for Unavailable.

Agreements

Employment at Ringfree Communications will require the following agreements and contracts: Non-compete and Non-disclosure.  NC is an at will employment state.

Petty Cash

Leave Receipts.  Be reasonable.  For shipping and other incidentals when a company credit card is not available.  Food and beverages as needed.  Be reasonable.  NOT FOR ESCORTS AND/OR STRIPPERS OR ILLEGAL SUBSTANCES.

Office Responsibilities

Common areas and bathrooms are maintained by the property manager while interior offices are maintained by the tenants.  Each person is responsible for keeping their office and personal spaces clean.  Common office areas and cleaning duties like dishes, garbage, recycling, and general cleaning will be taken on by the entire staff.  The first person in the office in the morning will be responsible for unlocking doors, and the last person to leave will be responsible for office shutdown procedures that include turning off small appliances, lights, HVAC, and locking doors.

End of Employment

All company owned equipment shall be returned on the last day of employment during the exit interview.

Equipment

Laptops, Monitors, Keyboards, Mouse or Trackpad, and Desk Phone will be provided by Ringfree Communications.  If any of this equipment contains information about Ringfree, customers, or IT partners, it must be password protected. Optionally some personal devices such as mobile phones may be used for some purposes (notably email). Any personal devices in use for any Ringfree related activities must also be password protected.

2. Support Policies

Customer support is one of the most important responsibilities within Ringfree and it’s up to every employee to do their part in maintaining the highest degree of support possible whenever it’s required of them. As a company, Ringfree lives and dies by its quality of support as it’s a major selling point over other competing telephone solutions. As such, there are policies in place to ensure that support is managed effectively, efficiently, and in the friendliest manner possible.

General Support

Ringfree offers remote support through the main telephone number and through an email ticketing system. System wide changes must be submitted by an authorized contact from the customer’s organization (see below). 

General Support is available Monday through Friday 8:30 a.m. – 5:30 p.m., and after hours emergency support is available for a system wide outage. Daily Operations and Scheduling are a vital part of our operations. It is imperative that at least one Ringfree employee be working support at any given time. It’s is preferable for there to be two employees with an eye on the support queue (a primary and a backup).

Authorized Contacts

Authorized contacts will be noted in Papal (Ringfree’s internal PBX and customer management platform) and in the ticketing system. It is the responsibility of the Ringfree employee to verify contact authorization for any changes beyond a single user extension.

In the event that a non-authorized user attempts to make system changes, it is necessary to reach out to an authorized contact prior to moving forward. Authorization of new contacts is at the discretion of David Wessell, Molly Wessell, and John Knight.

Ticket Triage

Critical: Any issue with immediate business impact should be marked as Critical and responded to immediately. This includes voice quality issues, service outages, incorrectly routed DIDs, anything related to the customer’s ability to dial 911 or other emergency services, etc. Note that all Critical issues reported via phone should be transferred to the appropriate party immediately. If it is necesarry to get off of the phone with the customer for testing, please set appropriate expectations for a callback.

High: Issues with non-immediate business impact should be marked as High and responded to within 15 minutes of the submission of the ticket. This includes configuration changes, BLF updates, reboots, training assistance, etc.

Medium: Any issue involving an expected time delay should be marked as Medium and responded to within 15 minutes of the submission of the ticket. This includes ordering hardware, ordering DIDs, custom development, etc.

Service Life Agreement

All new tickets submitted during business hours are to be responded to within 15 minutes of the initial submission.  If the ticket can’t be resolved and responded to in 15 minutes, an introductory response to manage customer expectation is required.  Action Needed tickets are to be responded to in 15 minutes or less during support hours. Critical tickets are to be handled immediately.

Ticket Notes

All tickets should be thoroughly documented with internal notes. These notes should support the goal of allowing any other Ringfree employee to take over the ticket with a clear direction at anytime. Notes should include troubleshooting steps taken to investigate and resolve any issues along with any steps taken to meet the customer’s needs.  Any temporary changes performed anywhere within the phone system should be documented with the original settings along with the changes made. Tracking numbers should be included in any ticket requiring a hardware purchase.

Ticket Ownership

All tickets require an owner or primary resource.  If the employee resolving the ticket changes, there will be an official notification to the customer and a change of owner documented within the ticketing system.

Ticket Resolution and Closure

All issue resolutions must be verified prior to marking a ticket as Resolved. The majority of issues will require customer verification. Tickets requiring single or mass phone reboots can generally be verified via the Asterisk command line interface as can temporary holiday changes.

Time Sensitive Tickets

Try to avoid creating tickets that require specific actions at certain times such as temporary configuration changes. Instead we prefer for the customer to call or email with any changes when those changes should be implemented. There will certainly be cases where time sensitive tickets are required due to holidays and other extraneous circumstances, but as a general rule please try to avoid them.

Information Disclosure

Do not disclose proprietary information to customers or IT Partners during the resolution of a ticket. This includes carrier and vendor information, specifics regarding Ringfree’s infrastructure, source code, information regarding other customers and IT Partners, customer contact information, etc.

Rebooting Hardware

Phones and other hardware should be rebooted at the customer’s convenience. In the case of mass phone reboots, this will often require action outside of the customer’s business hours.

Actions Requiring Managerial Approval

Please seek managerial approval prior to the following actions:

  • Resetting any customer premises equipment to factory defaults
  • Issuing an RMA for the return of any customer equipment
  • Going on site at a customer location for any reason
  • Ordering non-standard equipment (paging devices, range extenders, etc)