This package is only supported with ASP.NET Core.
This package implements a complete automated voice attendant and voice mail system for your website.
It uses your Twilio account with your phone number(s).
The automated voice attendant is used to answer calls with a greeting ("Press 1 for sales, 2 for support..."), with different greetings for opening/closed hours, weekends and holidays.
The caller can select an extension to call. Depending on the definition of the extension, an automated message is played back or an external phone number is called to connect the caller.
Our demo site at https://demo.yetawf.com has a base install of the IVR package which is active. The phone number to call to use the IVR package is
Of course, no one will answer any extensions so it's safe to try out. The logs will not show your phone number as the incoming phone numbers are not shown on the demo site.
A full install will of course show phone numbers also.
Setting Up Your Phone Number
To fully configure the IVR package, a few simple steps must be performed:
Twilio Phone Number Settings
In order to use the IVR package, a phone number must be purchased from Twilio.
The overall cost of using Twilio to answer a phone number is quite low and with a moderately used phone number is just a few dollars per month.
The cost of purchasing a phone number is currently $1 per month.
First, an account needs to be created at Twilio so a phone number can be purchased.
A wide range of phone numbers is available.
Once the number has been purchased, it needs to be configured. At Twilio's Active Numbers page select your number to access the settings.
Enter a suitable description for your phone number. The only relevant section to configure is labeled "Voice & Fax". The Messaging section is not used.
Select "Voice Calls" for Accept Incoming Calls.
Select "Webhooks, TwiML Bins, Functions, Studio, or Proxy" for Configure With.
Enter the full URL with your domain name for A Call Comes In. This is the URL Twilio uses to communicate with your site to allow it answer a phone call.
The path is "/Softelvdm_IVR/Call/Process" which must be provided as-is. https:// is required. It is not possible to use http://.
Make sure to update your domain name to match.
Configuring The TwilioProcessor Package
The IVR package requires the TwilioProcessor package to be installed and configured.
The TwilioProcessor package documentation describes all the needed steps.
Configuring The IVR Package
Using Admin > Configuration Panel > IVR Settings () the IVR package can be customized.
The IVR Settings page shows several tabs with configuration settings.
The Accounts tab displays the TwilioProcessor package settings. They cannot be modified and are for informational purposes only.
The IVR tab is used to modify the voice used by the IVR package when answering calls.
Visit https://www.twilio.com/console/voice/twiml/text-to-speech to view and test all available voices.
The "Max. Errors" field is used to define how many times the caller can enter an invalid extension before the IVR system hangs up.
The "Live/Test Call Process Url" fields are used to define the URL that processes calls. This is only used for verification/security purposes to decrypt the Twilio security token and only needs to be specified
when the request URL is modified before reaching your site. This typically is the case when using load balancers or proxies.
Voice Mail Tab
The Voice Mail tab is used to define a page to display information for one voice mail and to listen to the voice mail.
This is used when displaying voice mails using User > Voicemails ().
A designed page is not required as YetaWF will show a generated page automatically.
This can be used to show additional information to a user when reviewing voice mails.
The Hours tab is used to define when your business is open, which determines the greeting played when someone calls.
Holidays defined using Admin > Configuration Panel > IVR Holidays take precedence, in which case the holiday greeting is played in all cases.
The Security tab is used to define RSA public and private keys which are used by the IVR package during an active call to insure all requests from Twilio are
legitimate request. It is possible to generate new keys using the "Generate Keys" check box. When new keys are generated, an in-progress calls become invalid and are terminated.
YetaWF uses Twilio's TwiML responses to control the phone call.
This is done by providing TwiML responses using a script, which contains various TwiML snippets for the different stages of a phone call.
The script is located in the IVR package folder
When the sample package script is installed it is named
The script must be renamed to match your phone number, i.e., the phone number you purchased above (Setting Up Your Phone Number). Make sure to include the country code also (+1).
If the script is not renamed, calls will be rejected.
Once renamed, the file must be moved to
Moving it to the AddonsCustom folder insures that the script is not erased when the Softelvdm.IVR package is updated when a new version becomes available.
Assuming your phone number is +18885551212, the final location, full path of your script should be
Initially, no changes to the script are needed. But once it's working correctly you can customize it further by modifying the <Say> tags to change the announcements.
When script changes are made, the site needs to be restarted for them to take effect as the script is cached.
Multiple Phone Numbers
The IVR package can process multiple phone numbers. To add an additional phone number, copy the script and rename it to the addition phone number.
All phone numbers use the same IVR settings, but individual scripts.
Using the IVR Package
Admin > IVR Extensions () is used to define all extensions. Each extensions has one or more external phone numbers associated with it.
When a caller enters an extension, all phone numbers associated with the extension are called at the same time. The first phone number that answers will be the recipient and take over the call.
The caller is announced to the recipient: "I have a call for extension extension from caller's number in caller's city, caller's country. Press 1 to accept, 2 to reject.".
The recipient can press 1 to accept the call, which finally connects the caller to the recipient. If the recipient presses 2, the caller is sent to voice mail and can leave a message for the extension.
Adding an Extension
When adding an extension, multiple external phone numbers can be added which are called when the caller selects the extension.
Each extension can also have one or multiple associated users. Each of these users will be able to review the extension's voice mails using User > Voicemails ().
A user can be associated with multiple extensions. All voice mails for all extensions the user is associated with are shown when using User > Voicemails ().
The automated voice attendant will play a different greeting on holidays, to inform the caller that the company is closed.
The list of holidays can be defined using Admin > IVR Holidays ().
Adding a Holiday
When adding a holiday only the date is relevant. The description is not used by the automated attendant and is only intended for documentation.
Users can review the voice mails for all extensions that they are authorized to access (see Adding an Extension).
The voice mails can be accessed using User > Voicemails ().
This is the only way to access emails. It is not currently possible to access voice mails by phone.
The Softelvdm.IVR package is part of YetaWF, an open source product licensed under the GNU General Public License, version 3 (GPL-3.0) - Copyright - Softel vdm, Inc.