Phone System and Configuration
Call routing and automation flow spanning two third-party services for Voice-over-IP (VoIP) operation from publicly switched telephone network (PSTN) to virtual and physical endpoints.
- Call Termination: Google Voice and Callcentric
- Callcentric Inbound/Call Treatments
- Callcentric IVR Setup
Call Termination: Google Voice and Callcentric
Background
Early 2022 the 833-NYC-MESH number was parked at NumberBarn until further research could be done on how to implement the number. In the meantime the Google for Nonprofits platform was used to get access to Google Voice for a preliminary IVR/auto-attendant solution for routing calls to particular Google Workspace users and email to Slack for voicemail.
Google Voice does not support porting-in toll-free numbers for terminating calls and thus an external provider must be used in conjunction with the 833-NYC-MESH number. Currently, Callcentric has been chosen as our SIP provider due to widespread adoption, low rates, and positive testimonial, though the features it provides can all be replicated using a SIP Trunk->IP PBX architecture.
Routing
The 833-NYC-MESH number is ported into Callcentric for inbound termination and outbound origination. Currently, the Call Treatments feature forwards all incoming calls to the Google Voice auto-attendant "Hotline - Main", though the beta IVR setup through Callcentric's internal portal is partially configured and can be switched over at any time for testing.
Pricing
After a rigorous cost-benefit analysis on the plans available through Callcentric compared to the cost of expanding the Google Voice service further, multiple scenarios were drawn out to compare the price per a fixed number of minutes per month.
This Google Sheet has the pricing for pay-as-you-go inbound and outbound calls (which results in a double charge due to the forward to the Google Voice Hotline Root is billed as well as the inbound to the toll-free number), the 500-minute package for outbound calls (to eliminate the double charge for forwarding to Google Voice and regular outbound calls, and eliminating forward to Google Voice all together and handle calls entirely internally.
Based on findings after testing the plans and billing behavior in Callcentric, it was determined that the 500-minute package makes the most sense for preserving Google Voice auto-attendant integration while saving a small amount of funds, while switching entirely to Callcentric for IVR handling is most cost-effective, though there are drawbacks to needing to manually configure SIP endpoints for all users (though those endpoints are more flexibly configured than Google Voice Users.
Callcentric Cost Calculator - Google Sheets
Callcentric Inbound/Call Treatments
Call Treatments in this context are practically synonymous with Inbound Routes, which may be more commonly seen in VoIP configuration software. NYC Mesh owns two direct-inbound-dialing (DID) numbers registered with Callcentric, toll-free DID 833-NYC-MESH (18336926374) and local DID 13475147546. For more information about how calls are routed through the Callcentric portal, see this separate page, but this page outlines both currently used and unused options that can and are be used in routing NYC Mesh calls.
Interface
"Treatments"
- 833 to GV: Catches calls coming from the toll-free DID and forwards to the Google Voice "Hotline - Main" auto-attendant.
- 347 Ring Group: Catches calls coming from the local DID and does a simultaneous ring between the Mesh Room desk-phone and the voice@nycmesh.net Google Voice User, which is responsible for voicemail.
- 833 to IVR: Future setup to catch calls coming from the toll-free DID and forwards to the internal IVR: 1 - Main - Language.
- 347 IVR: Testing route to catch calls coming from the local DID and forwards to the internal IVR: 1 - Main - Language. This is not for production use, but to avoid incurring costs when configuring the Callcentric IVR through the toll-free rate plan.
Parameters
The Callcentric-provided documentation can be found here.
The main nuance with the currently-implemented setup is the use of "Ring for (seconds)". In all Treatments and IVRs, any SIP extensions are set to time out at 20 seconds of ringing, while the forward to the Google Voice endpoints is set to 60 seconds of ringing. This is to allow the Google Voice endpoint to connect the call to its voicemail for now.
Callcentric IVR Setup
Callcentric has a built-in IVR utility that allows for practically infinite permutations of menus, auto attendant scripts, and scriptable interactive call flows using Call Treatments. The flow itself can be found here, but this page is solely to contain the scripts for uploaded recordings for all announcement and menu audio files when read through NaturalReader software "Guy Online (Natural) (Free)" voice read at x1 speed extracted using Audacity software using the Windows WASAPI loopback device as an audio recording into a WAV file, which can be easily uploaded through the portal as described below.
Setup
On the left, you can add and configure IVRs and their menu trees which follow the structure and naming convention listed in the below section. On the right, MP3 or WAV audio files below 1Mb can be uploaded to be used within the IVRs. There is a built-in validator to ensure there are audio files in the mandatory places for calls to be handled correctly.
When adding an IVR or clicking "modify" on an existing IVR, the Edit IVR screen will open. On the left, the Announcement Audio selection is for audio files to be played only once when entering the IVR, and the Menu Audio selection is for audio files to be played after the Accountment Audio, and repeatedly after User error events such as timeout or invalid entry. This audio can be controlled in the User error audio selection, which currently only plays a built-in female voice "Sorry".
On the right, there are multiple options to route calls based on user entry, between direct transfers to extensions, sending to other IVRs, or connecting to other menus through a transfer. Depending on the setting of Repeat on error, after the error limit is reached the call will terminate.
Call Tree Key
Audio file names are based off of the menus where they are used, either as a menu option or as an announcement. Files that begin with 0 refer to common elements shared among multiple root hotlines. Items in red are options are either planned but not implemented or ideas pending discussion.
IVRs in the 0 zone:
- 0. a. iv. Common - English - Org Info
Non-Default Parameters: Timeout: 0 sec
Comment: with no Last Route setting configured, the call just drops per the documentation. It would be nice to send this back "up" a menu but unfortunately it doesn't appears that there is any option that allows you to select the previous IVR menu.
Hotline Roots:
- Main - Language (Root Hotline)
a. Main - English - Menu
Non-Default Parameters: Repeat on error: 3, User error audio: Sorry
i. To Get Connected: Simultaneous ringing to Mesh Room and Marco/VM
ii. Tech Support: Single forward to Marco/VM
iii. Buildings Projects Fiber: Single foward to Mesh Room
iiii. Org Info: Special forward to IVR 0.a.iv - Org Info
b. Grand - Spanish- Menu (doesn't exist yet!)
c. Grand - Chinese- Menu (doesn't exist yet!) - Grand - Language (Root Hotline)
a. Grand - English - Menu
Non-Default Parameters: Repeat on error: 3, User error audio: Sorry
i. To Get Connected: Simultaneous ringing to Mesh Room and Marco/VM
ii. Tech Support: Single forward to Marco/VM
iiii. Org Info: Special forward to IVR 0.a.iv - Org Info
b. Grand - Spanish- Menu (doesn't exist yet!)
c. Grand - Chinese- Menu (doesn't exist yet!)
Text-to-Speech Audio Files and Scripts
Comment: The pound keys are not truly configurable in Callcentric, and despite the script advising its use to repeat the menu, it triggers the User error audio and subsequently the Last route if pressed after the third failure, which disconnects the call.
0a - Root - Language - English
To continue in English, press 1.
0ai - Root - English - Get Connected
To get connected to the mesh, press 1.
0aii - Root - English - Tech Support
For technical support, press 2.
0aiv - Root - Org Info
For more information about our organization, press 4.
0aiv - Root - Org Info - Info
NYC Mesh is a community network offering fast, affordable, and fair access to the Internet for all New Yorkers. By joining NYC Mesh, you can access the Internet while helping your neighbors get better and more accessible internet access. NYC Mesh is a neutral network and we do not monitor, collect, or store any user data or content.
For more information about our community network, visit our website at n y c mesh dot net, and find a list of frequently asked questions and answers at n y c mesh dot net slash f a q.
1 - Main - Language - Thank You
Thank you for calling NYC Mesh.
1aiii - Main - English - Buildings Projects Fiber
For buildings, projects, and fiber installs, press 3.
2 - Grand - Thank You
Thank you for calling NYC Mesh at Grand Street Guild.
Incomplete Recordings
The Callcentric call handling only has IVRs with English. The entry points for other languages would be formatting along the lines of the below:
0b - Root - Language - Spanish
0C - Root - Language - Chinese