My own experiences with Voice over Internet (VoIP), as opposed to plain old telephone service (POTS), haven't been all positive - sometimes the call quality and reliability can be an issue, especially if you do not enjoy access to a really fast internet connection. However, if you do have a very good internet connection or you use a hosted service such as we are now using for OGO, the quality can be excellent. In such cases, the much lower cost of VoIP makes it an easy choice, especially for a small not-for-profit cooperative like OGO.
There are a lot of VoIP service providers that one can choose from. I have used Flowroute, VoIP.ms, and Spout. Of these three, my favourite is Spout, which is also the youngest and the smallest. They are Canadian owned, and offer a decent range of features and high quality service. Spout is particularly well-suited for OGO's needs as they are located in Western Canada and they bill in Canadian dollars (unlike, say, voip.ms which is Canadian but bills in USD). I have also found the staff who work at Spout to be very friendly and helpful, both with setup/configuration and with troubleshooting or with service issues.
It was important to me that if I ever leave the co-op or get hit by a bus, that someone else would be able to maintain the system and work with the provider to keep things running. I felt very comfortable choosing a company like Spout which prides themselves on helpful customer service and being readily available to support their customers.
At my day job, Morningstar Interactive, our staff at both offices use Aastra 6757i IP phones, which I have been really happy with - they are packed with features, easy to use, and very customizable (you can use Aastra's proprietary XML framework to write web apps that run on the LCD screen). But hardware IP phones like that are fairly expensive, and are most useful for teams with many employees. OGO by contrast has only one employee at this time - our Executive Director, Christian. Because Christian is often out and about, promoting OGO at events, checking up on the cars, meeting with partners, etc., it wasn't a huge advantage to buy an IP phone that would live at the OGO office.
Rather, we decided to use two methods of receiving calls: softphones and cell phones. A softphone is just a phone application that runs on a computer or smartphone. Under our setup now, when a call comes in during business hours, the system will check to see if any OGO staff or board members are signed in using a softphone application on their computer, such as the free Telephone.app for OS X. If someone is online using a softphone, then that phone will ring and the staff member can answer the call on their computer. Otherwise, if no staff members are online on a softphone, calls will simply be forwarded to the cell phone of whichever staff member[s] are "on call" that day. That may be one person (thanks Christian!) or multiple people, in which case everyone's cell phone will ring simultaneously until one person answers.
When people call after hours, we don't want our staff phones to ring, but rather we want to give the callers a menu with answers to frequently asked questions (our hours, etc.) and a voicemail box. Also, if one of our members should have an urgent problem with one of our cars after-hours, we need to give them the option to press a button and be put through to our 24/7 on call staff/volunteers. The system that can be programmed to manage these features, play menus, receive voicemails, route calls, forward calls to cell phones, manage "on call" schedules, etc. is typically called a PBX (or more simply a "[business] phone system").
Almost any computer can run the software needed to act as a PBX. At Morningstar's Vancouver office, I set up our PBX on a Raspberry Pi (thanks to Asterisk for Raspberry Pi):
For OGO, however, I opted to use Spout's Hosted PBX. This was for two reasons: First, because Spout's staff are responsible for maintaining the hardware and network, so I don't have to worry about problems occurring while I am not available to fix them. Second, because the Hosted PBX is located in the same data centre as Spout's other equipment, call quality should not ever be affected by poor network conditions. By contrast, if I had installed a server at the OGO office, call quality would be dependent on the Internet connection between the OGO office and Spout.
The Hosted PBX has been working very well, and I'm planning to continue using it for the foreseeable future. Even if we add a physical phone or two at the OGO office, it will likely make sense for us to continue using the Hosted PBX due to its simplicity and reliability.
The Hosted PBX costs CAD $40 per month, and our phone number costs $3.49 per month. We then pay for usage at a cost of between 1.1 and 2.2 cents/minute on all calls, whether incoming or outgoing (2.2 cents only applies when forwarding an incoming call to a cell phone). Because our call volume is fairly low, our total monthly cost stays below $50. One nice bonus with this setup is that there is no significant limit on the number of incoming callers we have at any one time, other than our staff's availability to answer calls. But nobody should ever get a busy signal, as many callers can use the menu system and voicemail simultaneously.
For comparison, the best non-VoIP deal seems to be Shaw's Business Phone package, which I also use for one of Morningstar's offices. Shaw charges $35.95/mo for the phone line and basic features like voicemail. However, that would support only one caller at a time and has no ability to support menus, time-based call routing, forwarding to multiple cell phones at once, and other features that we enjoy from Spout's Hosted PBX for about the same price. Shaw also offers a hosted PBX system, but they charge per user per month, which gets expensive very quickly as staff head counts grow.
As far as I know, the most popular way of running a PBX is to use Asterisk together with FreePBX. Asterisk is the core PBX software, and FreePBX is a web-based interface for configuring Asterisk more easily. The Asterisk+FreePBX pair is one of the preconfigured options that Spout provides for their Hosted PBX, which is nice because they do most of the setup and configuration work when you order the Hosted PBX. Once our Hosted PBX was setup by Spout, I ordered a Kelowna-based phone number from them as well, then signed in to the FreePBX web-based administration app to configure all the settings.
Configuration of the phone number, menus, and voicemail within FreePBX was straightforward and is well documented elsewhere. Alya Ramadan from CBC's Daybreak South was kind enough to record professional menu prompts for us, which I converted to WAV files and uploaded using the FreePBX "recordings" menu.
For each staff member or volunteer that may be on call, I created an "extension" (e.g. extension 110 for Braden). Then, I used the "Follow Me" feature for each extension to program in that person's cell phone number so that the system can forward calls to cell phones as needed:
(The pound symbol is needed to allow forwarding calls to external numbers.)
Then, once all the extensions were set up, I created two "ring groups": "calls during office hours", and "after-hours on call". Now, changing who is on call, either during office hours, or after, is fairly straightforward: we sign in to the FreePBX website, click "Ring Groups", choose which ring group to edit, then list the extension numbers of each staff person that we want to be on call:
I hope this may be useful to others in a similar situation! Feel free to ask any questions in the comments below or contact me by email.