Home » Posts tagged 'IncrediblePBX' (Page 21)

Tag Archives: IncrediblePBX

The Most Versatile VoIP Provider: FREE PORTING

The New Gold Standard: Incredible PBX 13-13.10 for Raspbian



Today we are pleased to introduce the 2019 update for Incredible PBX® and the Raspberry Pi® 2 and 3 featuring 70+ new FreePBX® GPL modules and a native Skyetel SIP trunking platform with a $10 service credit and up to $500 of half-price service. In addition to dozens of under-the-covers tweaks, there also are new backup and restore utilities which should ease the pain of backups and future migrations. In fact, today’s build was created using those tools because the image now is perilously close to filling up a 4GB microSD card. Crossing that threshold would mean future images would literally double in size. As always, for diehard users of legacy features, we’ve retained the terrific features we all know and love.

07/01/2019 NEWS FLASH: Please note that this version is not compatible with the Raspberry Pi 4. However, we have just released Incredible PBX LITE for the Raspberry Pi 2, 3, and 4 featuring Raspbian 10 Buster. Tutorial here.

08/07/2019 UPDATE: And, for the pioneers, Incredible PBX 16-15 for the Raspberry Pi 2, 3, and 4 is now available as well.

In addition to becoming a Nerd Vittles Platinum Provider, we have chosen Skyetel as our recommended SIP provider for several reasons that will be important to you. First, their triple-redundant platform has no equal. Not only have they never had an outage affecting customers, but they also are unlikely to ever have such an outage because their servers are scattered across the entire country (and soon the entire world). Let’s put it this way. If Skyetel’s servers all fail, you’ll have a lot more to worry about than restoring your VoIP service. A second reason we chose the Skyetel platform was introduced by us just last week. You now can bring up a fault-tolerant HA server platform using the Skyetel backbone and a cloud-based redundant server for about $1 a month. For Nerd Vittles readers, you can snag up to a $250 usage credit with Skyetel’s new BOGO deposit match. Read our Skyetel article and sign up soon to claim your BOGO service credit. Effective 10/1/2023, $25/month minimum spend required.

Raspberry Pi 3 Performance. Gone are the days of worrying about Raspberry Pi performance. Both the user interface and call quality now match what you’d expect to find on a $300-$500 VoIP server. Even with a Raspberry Pi 2, we have detected no performance degradation thanks to the latest Raspbian 8 OS and a virtually flawless Asterisk 13 platform. For best results, we recommend 32GB Class 10 microSD cards which now are plentiful for under $10.1



Incredible PBX Feature Set. Where to begin? Let’s start with the Alphabet Stew: IAX, SIP, SMS, Opus, and SRTP functionality. Voice Recognition and Text-to-Speech VoIP application support using FLITE, GoogleTTS, PicoTTS, and IBM TTS. SIP URI support for free worldwide calling. And all of your Nerd Vittles favorites: Fax, AsteriDex, Click-to-Dial, News, Weather, Reminders, and Wakeup Calls. Plus hundreds of features that typically are found in commercial PBXs: Conferencing, IVRs and AutoAttendants, Email Delivery of Voicemail, Voicemail Blasting…

10-Layer Network Security Model. Most phone calls cost money. Unlike many of the other "free" VoIP solutions, our most important criteria for VoIP is rock-solid security. If your free server ends up costing you thousands of dollars in phone bills due to fraud, guess what? It wasn’t free at all. Once you plug into a network, there’s a bullseye painted on your checkbook.

No single network security system can protect you against zero-day vulnerabilities that no one has ever seen. Deploying multiple layers of security is not only smart, it’s essential with today’s Internet topology. It works much like the Bundle of Sticks from Aesop’s Fables. The more sticks there are in your bundle, the more difficult it is to break them apart. If a vulnerability suddenly appears in the Linux kernel, or in Asterisk, or in Apache, or in your favorite web GUI, you can continue to sleep well knowing that other layers of security have your back. No one else in the telecommunications industry has anything close. Ours is all open source GPL code so we would encourage everyone to get on board and do your part to make the Internet a safer place!

Do your homework, too. Comparison shop as if your phone bill matters! 😉 Here’s what the latest Incredible PBX release provides at a software cost of exactly zero:

  1. Preconfigured IPtables Linux Firewall
  2. Preconfigured Travelin’ Man 3 WhiteLists
  3. Randomized Port Knocker for Remote Access
  4. TM4 WhiteListing by Telephone (optional)
  5. Fail2Ban Log Monitoring for SSH, Apache, Asterisk
  6. Password Customization
  7. Automatic Update Utility for Security & Bug Fixes
  8. Asterisk Manager Lockdown to localhost
  9. Apache htaccess Security for Vulnerable Web Apps
  10. Security Alerts via RSS Feed in the Incredible PBX GUI


Assembling the Required Raspberry Pi Components

Before you can deploy Incredible PBX, you’ll first need the necessary Raspberry Pi hardware. Here’s the short list and, if you’re in a hurry, the $35 Raspberry Pi 3B+ will cost you 10% more to get it quickly from Amazon using our referral link. It remains one of the world’s best bargains! Assuming you already own an HDMI-compatible monitor and a USB keyboard

  • $35* Raspberry Pi 3B+ from Newark or Amazon
  • $10 Power Adapter (2.5 amps minimum!)
  • $7 32GB microSDHC Class 10 card
  • £12.95 Rainbow or Ninja Pibow case or $7.99 Official RasPi 3B+ case
  • Getting Started with Incredible PBX

    Here’s everything to know about installation and setup. "Automatic" means just watch. Steps #1 and #2 are self-explanatory. For the remaining steps, we’ll further document the procedures in the sections below.

    1. Download and unzip Incredible PBX 13-13.10 image from SourceForge
    2. Transfer Incredible PBX image to microSD card
    3. Boot Raspberry Pi from new microSD card (16GB or larger)
    4. Login to RasPi console as root:password to initialize your server (Automatic)
    5. In raspi-config Advanced Options, Expand FileSystem to fill your SD card
    6. Reboot after writing down your server IP address (Automatic)
    7. Login via SSH or Putty as root:password to set passwords & setup firewall (Automatic)
    8. Register for and configure Skyetel for Incredible PBX, if desired
    9. Add Inbound Route for Skyetel, if desired
    10. Install Incredible Fax: /root/incrediblefax13_raspi3.sh (Credentials: admin:password)

    First Boot of Incredible PBX Using Wi-Fi

    Incredible PBX requires Internet connectivity to complete its automated install. If you’re using a wired network connection, you can skip to the next section. With the Raspberry Pi 3B+, WiFi is built into the hardware. But you still have to insert your SSID name and SSID password to make a connection to your WiFi network. To do so, follow these next steps carefully. Insert the Incredible PBX microSD card into your Raspberry Pi 3B+ and apply power to the hardware. When the bootup procedure finishes, login as root with the default password: password. At the first prompt, DO NOT PRESS THE ENTER KEY. Instead, press Ctrl-C to break out of the setup script. At the command prompt, issue the following commands to bring up the WiFi config file:

    cd /etc/wpa_supplicant
    nano -w wpa_supplicant.conf
    

    If your WiFi network does not require a password, then insert the four line below and save the file: Ctrl-X, Y, then Enter. Now restart your server: reboot. When the reboot finishes, you now should have network connectivity.

    network={
     key_mgmt=NONE
     priority=1
    }
    

    If your WiFi network requires a password, scroll down to the SSID entry and replace YourSSID with the actual SSID of your WiFi network. Make sure you preserve the entry with the quotes as shown. Next, replace YourSSIDpassword with the SSID password of your WiFi network. Save the file: Ctrl-X, Y, then Enter. Now restart your server: reboot. When the reboot finishes, you now should have network connectivity.

    Once the reboot process finishes, you should see an entry on about the middle line displayed on your monitor which reads: "My IP address is…". Write down the IP address shown. You’ll need it in a minute. Skip the next section since you are using a WiFi connection.

    If you don’t see an IP address assigned to your server, then correct the network deficiency (invalid WiFi credentials, DHCP not working, Internet down), and reboot until you see an IP address assigned to your server. DO NOT PROCEED WITHOUT AN ASSIGNED IP ADDRESS.

    First Boot of Incredible PBX Using Wired Connection

    Incredible PBX requires Internet connectivity to complete its automated install. After connecting your server to your local network with a network cable, insert the Incredible PBX microSD card into your Raspberry Pi 3B+ and apply power to the hardware. When the bootup procedure finishes, you should see an entry on about the middle line displayed on your monitor which reads: "My IP address is…". Write down the IP address shown. You’ll need it in the next step.

    If you don’t see an IP address assigned to your server, then correct the network deficiency (cable not connected, DHCP not working, Internet down), and reboot until you see an IP address assigned to your server. DO NOT PROCEED WITHOUT AN ASSIGNED IP ADDRESS.

    Completing the Incredible PBX Initialization Procedure

    The remainder of the install procedure should be completed from a desktop PC using SSH or Putty. This will assure that your desktop PC is whitelisted in the Incredible PBX firewall. Using the console to complete the install is NOT recommended as your desktop PC will not be whitelisted in the firewall. This may result in your not being able to log in to your server. Once you have network connectivity, log in to your server as root from a desktop PC using the default password: password. Accept the license agreement by pressing ENTER. You then will be redirected to raspi-config. This is the utility used to expand your Incredible PBX image to use your entire microSD card. If you fail to complete this step, your microSD card will be restricted to 4GB which already is 95% full. In the raspi-config utility, choose item 7 (Advanced Options). All of the defaults should be satisfactory with the exception of the first item: Expand Filesystem. Choose this option and activate the resizing directive. Review the other items and then exit and reboot your server.

    Once your server reboots and you log back in as root, you will be prompted to change all of your passwords. Write them down and put your cheat sheet in a safe place. It’s your only way back into your server without starting over.

    Finally, if your PBX is sitting behind a NAT-based router, you’ll need to redirect incoming UDP 5060 traffic to the private IP address of your PBX. While this isn’t technically necessary to complete calls with registered trunk providers, there are others such as Skyetel that don’t use SIP registrations where failure to redirect UDP 5060 would cause inbound calls to fail.



    The First Login to the Incredible PBX GUI

    The Incredible PBX GUI is accessed using a web browser pointed to the IP address of your server. As part of the password setup, you created an admin password for the Incredible PBX GUI, a.k.a. FreePBX GUI. Login now using your favorite browser. If you have forgotten your admin password, you can reset it by logging into your server as root using SSH: /root/admin-pw-change. Once you’ve logged into the GUI, your first task is to record the public and private IP addresses for your server. This eliminates 99% of the problems with one-way audio on calls where your server is sitting behind a NAT-based router. Navigate to Settings -> SIP Settings and click on Detect Network Settings in the NAT Settings section of the template. Verify that the entries shown are correct and then click Submit followed by Apply Config.

    Managing a PBX with a Dynamic IP Address

    Many Internet service providers assign dynamic IP addresses to customers. This poses issues with a PBX because SIP phones positioned outside your LAN need to be able to connect to the PBX. It also complicates SIP routing which needs both the public IP address and the private IP address of the PBX in order to route calls properly. In the previous section, you configured your PBX with these two IP addresses. The problem, of course, is that this public IP address may change when your ISP assigns dynamic IP addresses. Luckily, many ISPs rarely update dynamic IP addresses of their customers. For example, our home network has had the same dynamic IP address for more than four years. If this is your situation, then you have little to worry about. If the IP address ever changes, you can simply repeat the steps in the previous section. However, if your ISP regularly changes your public IP address, then you need an automatic way to keep your PBX configured properly. Otherwise you will start experiencing calls with one-way audio or no audio, and remote phones will no longer be able to connect to the PBX. We’ve developed a script to update the public IP address of your PBX. Depending upon your situation, all you need to do is run it hourly or daily to keep your PBX configured properly. To begin, first download the updater script after logging into your server as root:

    cd /root
    wget http://incrediblepbx.com/update-externip.tar.gz
    tar zxvf update-externip.tar.gz
    rm -f update-externip.tar.gz
    

    Try running the script once to make sure it correctly identifies the public IP address of your server: /root/update-externip. Then add an entry to the end of /etc/crontab that schedules the script to run at 12:30 a.m. each night:

    30 0 * * * root /root/update-externip > /dev/null 2>&1
    

    Enabling OPUS Codec with Incredible PBX

    @JoeOIVOV on the PIAF Forum has documented a method to activate the OPUS Codec on the Raspberry Pi. From the Linux CLI, issue the following commands while logged in as root:

    cd /usr/lib/asterisk/modules
    wget http://incrediblepbx.com/codec_opus_open_source.so
    

    Then, use a browser to open the Incredible PBX GUI as admin and navigate to Settings -> Asterisk SIP Settings and scroll down to the Audio Codecs section of the template. Place a check mark beside the opus codec option. Then click Submit and Apply Settings.

    Return to the Linux CLI and issue the following commands to complete the setup and verify:

    fwconsole restart
    asterisk -rx "core show codecs"
    

    Special Thanks to: Walter Sonius on SourceForge

    Configuring Trunks with Incredible PBX

    Before you can actually make and receive calls, you’ll need to add one or more VoIP trunks with providers, create extensions for your phones, and add inbound and outbound routes that link your extensions to your trunks. Here’s how a PBX works. Phones connect to extensions. Extensions connect to outbound routes that direct calls to specific trunks, a.k.a. commercial providers that complete your outbound calls to any phone in the world. Coming the other way, incoming calls are directed to your phone number, otherwise known as a DID. DIDs are assigned by providers. Some require trunk registration using credentials handed out by these providers. Others including Skyetel use the IP address of your PBX to make connections. Incoming calls are routed to your DIDs which use inbound routes telling the PBX how to direct the calls internally. A call could go to an extension to ring a phone, or it could go to a group of extensions known as a ring group to ring a group of phones. It could also go to a conference that joins multiple people into a single call. Finally, it could be routed to an IVR or AutoAttendant providing a list of options from which callers could choose by pressing various keys on their phone.

    We’ve done most of the prep work for you with Incredible PBX. We’ve set up an Extension to which you can connect a SIP phone or softphone. We’ve set up an Inbound Route that, by default, sends all incoming calls from registered trunks to a Demo IVR. And we’ve built dozens of trunks for some of the best providers in the business. Sign up with the ones you prefer, plug in your credentials, and you’re done. The next section of this tutorial will show you the easier way, using Skyetel.

    Unlike traditional telephone service, you need not and probably should not put all your eggs in one basket when it comes to telephone providers. In order to connect to Plain Old Telephones, you still need at least one provider. But there is nothing wrong with having several. And a provider that handles an outbound call (termination) need not be the same one that handles an incoming call (origination) and provides your phone number (DID). Keep in mind that you only pay for the calls you make with each provider so you have little to lose by choosing several. The PIAF Forum also has dozens of recommendations on VoIP providers.

    With the preconfigured trunks in Incredible PBX, all you need are your credentials for each provider and the domain name of their server. Log into Incredible PBX GUI Administration as admin using a browser. From the System Status menu, click Connectivity -> Trunks. Click on each provider you have chosen and fill in your credentials including the host entry. Be sure to uncheck the Disable Trunk checkbox! Fill in the appropriate information for the Register String. Save your settings by clicking Submit Changes. Then click the red Apply Config button.

    Using Skyetel with Incredible PBX

    On the Raspberry Pi platform, all of the Skyetel trunks are preconfigured. All you need to do is sign up for Skyetel service to take advantage of the $10 free credit and Nerd Vittles BOGO offer. First, complete the Prequalification Form here. You then will be provided a link to the Skyetel site to complete your registration. Once you have registered on the Skyetel site and your account has been activated, open a support ticket and request a $10 credit for your account by referencing the Nerd Vittles special offer. Greed will get you nowhere. Credit is limited to one per person/company/address/location. Once you’ve had a chance to kick the tires, fund your account with up to $250, and Skyetel will match your deposit. That gets you up to $500 of half-price VoIP service. Once you have funded your account, you can port in your phone numbers for 60 days at no cost. And you can also take advantage of a 10% discount on your current service. Just open another ticket and attach a copy of your last month’s bill. See footnote 2 for the fine print.2 If you have high call volume requirements, document these in your Prequalification Form, and we will be in touch.

    Unlike many VoIP providers, Skyetel does not use SIP registrations to make connections to your PBX. Instead, Skyetel utilizes Endpoint Groups to identify which servers can communicate with the Skyetel service. An Endpoint Group consists of a Name, an IP address, a UDP or TCP port for the connection, and a numerical Priority for the group. For incoming calls destined to your PBX, DIDs are associated with an Endpoint Group to route the calls to your PBX. For outgoing calls from your PBX, a matching Endpoint Group is required to authorize outbound calls through the Skyetel network. Thus, the first step in configuring the Skyetel side for use with your PBX is to set up an Endpoint Group. A typical setup for use with Incredible PBX®, Asterisk®, or FreePBX® would look like the following:

    • Name: MyPBX
    • Priority: 1
    • IP Address: PBX-Public-IP-Address
    • Port: 5060
    • Protocol: UDP
    • Description: server1.incrediblepbx.com

    To receive incoming PSTN calls, you’ll need at least one DID. On the Skyetel site, you acquire DIDs under the Phone Numbers tab. You have the option of Porting in Existing Numbers (free for the first 60 days after you sign up for service) or purchasing new ones under the Buy Phone Numbers menu option.

    Once you have acquired one or more DIDs, navigate to the Local Numbers or Toll Free Numbers tab and specify the desired SIP Format and Endpoint Group for each DID. Add SMS/MMS and E911 support, if desired. Call Forwarding and Failover are also supported. That completes the VoIP setup on the Skyetel side. System Status is always available here.

    Configuring a Skyetel Inbound Route

    Because there is no SIP registration with Skyetel, incoming calls to Skyetel trunks will NOT be sent to the Default Inbound Route configured on your PBX because FreePBX treats the calls as blocked anonymous calls without an Inbound Route pointing to the 11-digit number of each Skyetel DID. From the GUI, choose Connectivity -> Inbound Routes. You will note that we already have configured a Skyetel template for you. Simply edit the existing entry and plug in the 11-digit phone number (beginning with a 1) of your Skyetel DID . Set the Destination for the incoming DID as desired and click Submit. It defaults to extension 701.

    If your PBX is sitting behind a NAT-based router, you’ll need to redirect incoming UDP 5060 traffic to the private IP address of your PBX. Then place a test call to each of your DIDs after configuring the Inbound Routes.

    If you have installed the Incredible Fax add-on, you can enable Fax Detection under the Fax tab. And, if you’d like CallerID Name lookups using CallerID Superfecta, you can enable it under the Other tab before saving your setup and reloading your dialplan.

    Configuring a Skyetel Outbound Route

    If Skyetel will be your primary provider, it is preconfigured by default on the Raspberry Pi platform so you can use both 10-digit and 11-digit dialing to process outbound calls through your Skyetel account. If you prefer another setup, choose Connectivity -> Outbound Routes.

    There are a million ways to design outbound calling schemes on PBXs with multiple trunks. One of the simplest ways is to use no dial prefix for the primary trunk and then use dialing prefixes for the remaining trunks.

    Another outbound calling scheme would be to assign specific DIDs to individual extensions on your PBX. Here you could use NXXNXXXXXX with the 1 Prepend as the Dial Pattern with every Outbound Route and change the Extension Number in the CallerID field of the Dial Pattern. With this setup, you’d need a separate Outbound Route for each group of extensions using a specific trunk on your PBX. Additional dial patterns can be added for each extension designated for a particular trunk. A lower priority Outbound Route then could be added without a CallerID entry to cover extensions that weren’t restricted or specified.

    HINT: Keep in mind that Outbound Routes are processed by FreePBX in top-down order. The first route with a matching dial pattern is the trunk that is selected to place the outbound call. No other outbound routes are ever used even if the call fails or the trunk is unavailable. To avoid failed calls, consider adding additional trunks to the Trunk Sequence in every outbound route. In summary, if you have multiple routes with the exact same dial pattern, then the match nearest to the top of the Outbound Route list wins. You can rearrange the order of the outbound routes by dragging them into any sequence desired.

    Audio Issues with Skyetel

    If you experience one-way or no audio on some calls, make sure you have filled in the NAT Settings section in the GUI under Settings -> Asterisk SIP Settings -> General. In addition to adding your external and internal IP addresses there, be sure to add your external IP address in /etc/asterisk/sip_general_custom.conf like the following example and restart Asterisk:

    externip=xxx.xxx.xxx.xxx
    

    If you’re using PJSIP trunks or extensions on your PBX, implement this fix as well.

    Receiving SMS Messages Through Skyetel

    Most Skyetel DIDs support SMS messaging. Once you have purchased one or more DIDs, you can edit each number and, under the SMS & MMS tab, you can redirect incoming SMS messages to an email or SMS destination of your choice using the following example:



    Sending SMS Messages Through Skyetel

    We’ve created a simple script that will let you send SMS messages from the Linux CLI using your Skyetel DIDs. In order to send SMS messages, you first will need to create an SID key and password in the Skyetel portal. From the Settings icon, choose API Keys -> Create. Once the credentials appear, copy both your SID and Password. Then click SAVE.

    Next, from the Linux CLI, issue the following commands to download the sms-skyetel script into your /root folder. Then edit the file and insert your SID, secret, and DID credentials in the fields at the top of the script. Save the file, and you’re all set.

    cd /root
    wget http://incrediblepbx.com/sms-skyetel
    chmod +x sms-skyetel
    nano -w sms-skyetel
    

    To send an SMS message, use the following syntax where 18005551212 is the 11-digit SMS destination: sms-skyetel 18005551212 "Some message"

    Configuring a Softphone for Incredible PBX

    We’re in the home stretch now. You can connect virtually any kind of telephone to your new PBX. Plain Old Phones require an analog telephone adapter (ATA) which can be a separate board in your computer from a company such as Digium. Or it can be a standalone SIP device such as ObiHai’s OBi100 or OBi110 (if you have a phone line from Ma Bell to hook up as well). SIP phones can be connected directly so long as they have an IP address. These could be hardware devices or software devices such as the YateClient softphone. We’ll start with a free one today so you can begin making calls. You can find dozens of recommendations for hardware-based SIP phones both on Nerd Vittles and the PIAF Forum when you’re ready to get serious about VoIP telephony.

    We recommend YateClient which is free. Download it from here. Run YateClient once you’ve installed it and enter the credentials for the 701 extension on Incredible PBX. You’ll need the IP address of your server plus your extension 701 password. Choose Applications _> Extensions -> 701 and write down your SIP/IAX Password. You can also find it in /root/passwords.FAQ. Fill in the blanks using the IP address of your Server, 701 for your Username, and whatever Password you assigned to the extension when you installed Incredible PBX. Click OK to save your entries.

    Once you are registered to extension 701, close the Account window. Then click on YATE’s Telephony Tab and place some test calls to the numerous apps that are preconfigured on Incredible PBX. Dial a few of these to get started:

    DEMO - Apps Demo
    123 - Reminders
    947 - Weather by ZIP Code
    951 - Yahoo News
    *61 - Time of Day
    TODAY - Today in History

    If you are a Mac user, another great no-frills softphone is Telephone. Just download and install it from the Mac App Store.

    Upgrading to IBM Speech Engines

    If you’ve endured Google’s Death by a Thousand Cuts with text-to-speech (TTS) and voice recognition (STT) over the years, then we don’t have to tell you what a welcome addition IBM’s new speech utilities are. We can’t say enough good things about the new IBM Watson TTS and STT offerings. With IBM’s services, you have a choice of free or commercial tiers. Let’s put the pieces in place so you’ll be ready to play with the Whole Enchilada.

    Getting Started with IBM Watson TTS Service

    We’ve created a separate tutorial to walk you through obtaining and configuring your IBM Watson credentials. Start there.

    Next, login to your Incredible PBX server and issue these commands to update your Asterisk dialplan and edit ibmtts.php:

    cd /var/lib/asterisk/agi-bin
    ./install-ibmtts-dialplan.sh
    nano -w ibmtts.php
    

    Insert your credentials in $IBM_username and $IBM_password. For new users, your $IBM_username will be apikey. Your $IBM_password will be the TTS APIkey you obtained from IBM. Next, verify that $IBM_url matches the entry provided when you registered with IBM. Then save the file: Ctrl-X, Y, then ENTER. Now reload the Asterisk dialplan: asterisk -rx "dialplan reload". Try things out by dialing 951 (news) or 947 (Weather) from an extension registered on your PBX.

    Getting Started with IBM Watson STT Service

    Now let’s get IBM’s Speech to Text service activated. Log back in to the IBM Cloud. Click on the Speech to Text app. Choose a Region to deploy in, choose your Organization from the pull-down menu, and select STT as your Space. Choose the Standard Pricing Plan. Then click Create. When Speech to Text Portal opens, click the Service Credentials tab. In the Actions column, click View Credentials and copy down your STT username and password.

    Finally, login to your Incredible PBX server and issue these commands to edit getnumber.sh:

    cd /var/lib/asterisk/agi-bin
    nano -w getnumber.sh
    

    Insert apikey as your API_USERNAME and your actual STT APIkey API_PASSWORD in the fields provided. Then save the file: Ctrl-X, Y, then ENTER. Update your Voice Dialer (411) to use the new IBM STT service:

    sed -i '\\:// BEGIN Call by Name:,\\:// END Call by Name:d' /etc/asterisk/extensions_custom.conf
    sed -i '/\\[from-internal-custom\]/r ibm-411.txt' /etc/asterisk/extensions_custom.conf
    asterisk -rx "dialplan reload"
    

    Now try out the Incredible PBX Voice Dialer with AsteriDex by dialing 411 and saying "Delta Airlines."

    Transcribing Voicemails with IBM Watson STT Service

    We’ve included the necessary script to transcribe your incoming voicemails using IBM’s STT service. Navigate to the /usr/local/sbin folder and edit sendmailmp3.ibm. Insert your APIKEY in the password field and save the file. Now copy the file to sendmailmp3 and make the file executable: chmod +x sendmailmp3.

    Running Incredible PBX from an External USB Drive

    CAUTION: If you wish to use an external USB-powered drive with your Raspberry Pi to get better performance and enhanced reliability, then you’ll want to stick with the Raspberry Pi B for the time being because the B+ does not yet support booting from an external drive that lacks an independent power source. See this thread for details.

    With older versions of the Raspberry Pi, you may wish to consider an external USB drive to supplement your Incredible PBX for Raspberry Pi setup. If this is a production system on which you depend for important calls, we would highly recommend it. Begin by formatting the USB drive as a DOS FAT32 drive. Then install the Incredible PBX image on the USB drive using the same procedure outlined above for your microSD card. Be sure you choose the correct drive! Now boot your Raspberry Pi with the USB drive plugged in. Login as root and issue the command: mount /dev/sda2 /mnt. Using nano, edit /mnt/etc/fstab. Change /dev/mmcblk0p2 to /dev/sda2 and save the file. Edit /boot/cmdline.txt and change /dev/mmcblk0p2 to /dev/sda2. Then add the following to the end of the line: rootdelay=5. Save the file and reboot your server leaving the microSD card in place.

    As configured, your server will now boot to the external USB drive, but the usable space on the drive will be the original 4GB partition. To expand it, do the following carefully. Log back into your server as root. Issue the command: fdisk -cu /dev/sda. List the partitions on your external drive by typing p. Write down the starting sector number for the sda2 partition. For example, on a 1 terabyte drive, it will be something like 131072. Now delete the sda2 partition by typing d and then choosing 2. Create a new primary partition by typing n then p then 2. When prompted for the starting sector, enter the number you wrote down for the sda2 partition above. Press ENTER. When prompted for the ending sector, just press ENTER to accept the default. Now type w to write your changes to the drive. Reboot. Log back into your server as root and issue the following command to expand the primary partition to use the entire disk: resize2fs /dev/sda2. Verify the new size of your drive: pbxstatus.

    Using Gmail as a SmartHost for SendMail

    Many Internet service providers block email transmissions from downstream servers (that’s you) to reduce spam. The simple solution is to use your Gmail account as a smarthost for SendMail. Here’s how. Log into your RasPi as root and issue the following commands:

    cd /etc/mail
    hostname -f > genericsdomain
    touch genericstable
    makemap -r hash genericstable.db < genericstable
    mv sendmail.mc sendmail.mc.original
    wget http://incrediblepbx.com/sendmail.mc.gmail
    cp sendmail.mc.gmail sendmail.mc
    mkdir -p auth
    chmod 700 auth
    cd auth
    echo AuthInfo:smtp.gmail.com \\"U:smmsp\\" \\"I:user_id\\" \\"P:password\\" \\"M:PLAIN\\" > client-info
    echo AuthInfo:smtp.gmail.com:587 \\"U:smmsp\\" \\"I:user_id\\" \\"P:password\\" \\"M:PLAIN\\" >> client-info
    echo AuthInfo:smtp.gmail.com:465 \\"U:smmsp\\" \\"I:user_id\\" \\"P:password\\" \\"M:PLAIN\\" >> client-info
    nano -w client-info
    

    When the nano editor opens the client-info file, change the 3 user_id entries to your Gmail account name without @gmail.com and change the 3 password entries to your actual Gmail password. Save the file: Ctrl-X, Y, then ENTER.

    Now issue the following commands. In the last step, press ENTER to accept all of the default prompts:

    chmod 600 client-info
    makemap -r hash client-info.db < client-info
    cd ..
    sed -i 's|sendmail-cf|sendmail\/cf|' /etc/mail/sendmail.mc
    sed -i 's|sendmail-cf|sendmail\/cf|' /etc/mail/sendmail.mc
    sed -i 's|sendmail-cf|sendmail\/cf|' /etc/mail/Makefile
    sed -i 's|sendmail-cf|sendmail\/cf|' /etc/mail/sendmail.cf
    sed -i 's|sendmail-cf|sendmail\/cf|' /etc/mail/databases
    sed -i 's|sendmail-cf|sendmail\/cf|' /etc/mail/sendmail.mc.gmail
    sed -i 's|sendmail-cf|sendmail\/cf|' /etc/mail/sendmail.cf.errors
    make
    sendmailconfig
    

    Finally, stop and restart SendMail and then send yourself a test message. Be sure to check your spam folder!

    /etc/init.d/sendmail stop
    /etc/init.d/sendmail start
    apt-get install mailutils -y
    echo "test" | mail -s testmessage you@yourdomain.com
    

    Check mail success with: tail /var/log/mail.log. If you have trouble getting a successful Gmail registration (especially if you have previously used this Google account from a different IP address), try this Google Voice Reset Procedure. It usually fixes connectivity problems. If it still doesn’t work, enable Less Secure Apps using this Google tool.

    The last step is to add the following command to /etc/rc.local to send you an email with your PBX's IP addresses whenever the RasPi is rebooted. Insert the following one-line command just above the exit 0 line at the end of the file. Replace yourname@yourdomain.com with an email address to which you always have access.

    echo LAN: $(ifconfig | grep "inet addr" | sed 's/^[[:space:]]*//' | sed 's/  .*$//g' | cut -f 2 -d " ")  NET: $(curl -s -S --user-agent "Mozilla/4.0" http://myip.incrediblepbx.com | awk 'NR==2') |  mail -s "Incredible PBX 13-13.10 RasPi IP Address" yourname@yourdomain.com
    

    WebMin: Wherefore Art Thou?

    Some of you may have noticed that WebMin is missing in this new release. For newcomers, WebMin is the Swiss Army Knife of Linux. You can do almost anything to Linux from the convenience of a browser. Unfortunately, in the PBX environment, WebMin is a two-edged sword. You can also permanently ruin your PBX in a matter of seconds if you don't know what you're doing because WebMin hides most of its magic under the covers so you really can't decipher what's been changed. Our best advice to those wanting to use WebMin is to use it as a tool to look (but don't touch) the Linux setup. The other major dilemma for us was that the current Incredible PBX build comes perilously close to filling a 4GB microSD card. And moving to an 8GB card to build a PBX would have doubled the size of the download image. Once you have installed Incredible PBX on a larger microSD card and expanded the filesystem to fill the new card, the commands below will get WebMin installed. Once installed, you can access WebMin with a browser pointed to https://ip-address:9001 using the same root credentials used to login with SSH.

    echo "Installing WebMin..."
    echo "deb http://download.webmin.com/download/repository sarge contrib" \\ 
    > /etc/apt/sources.list.d/sarge.list
    cd /root
    wget http://www.webmin.com/jcameron-key.asc
    apt-key add jcameron-key.asc
    apt-get update
    apt-get install webmin -y
    sed -i 's|10000|9001|g' /etc/webmin/miniserv.conf
    service webmin restart
    

    Implementing Bluetooth Proximity Detection

    You may find it convenient to have your calls transferred when you're away from your desk. The RasPi can do it automatically if you have a smartphone and a RasPi 3B+ with built-in bluetooth support.

    1. Decipher the MAC address of your RasPi's Bluetooth adapter: hcitool dev

    2. Turn on Bluetooth and enable discovery on your smartphone.

    3. Search for your smartphone's MAC address from the RasPi CLI: hcitool scan

    4. Install our Bluetooth Proximity Detection Utility on your RasPi:

    cd /root
    wget http://nerdvittles.com/trixbox123/proximity.zip
    unzip proximity.zip
    chmod +x proximity
    

    5. Edit the proximity script and fill in the blanks using the extension you want to forward when you're not "at home" and the 10-digit number of the smartphone to forward the calls to:

    deviceuser=YourName
    devicemac=Mac:Address:Of:Your:Smartphone (with the colons from step #3)
    myextension=701
    mycellphone=8435551212
    

    6. Add a cron job to /etc/crontab to check for the presence of your cellphone every minute between 6 am and 9 pm:

    * 6-21 * * * root /root/proximity > /dev/null
    

    When you're home, your cellphone obviously must be within range of your Raspberry Pi and you need a working outbound trunk for outbound 10-digit calls for this to work while away.

    /root/proximity:
    
    WARD.now IN - Update Required
    Sat Mar  9 13:51:07 EST 2019
    Database entry removed.
    

    Installing OSS Endpoint Manager

    If you have dozens of SIP phones to configure, then you'll appreciate Andrew Nagy's terrific OSS Endpoint Manager Module. Here's how to install it once your Incredible PBX 13-13.10 server is up and running:

    cd /
    wget http://incrediblepbx.com/epm.tar.gz
    tar zxvf epm.tar.gz
    ./install-epm.sh
    

    You will also need to install and configure a TFTP server. We've included a setup script to make it easy:

    cd /root
    ./tftp-setup
    

    Pay particular attention to the firewall instructions which display at the end of the TFTP install procedure. Complete documentation for OSS Endpoint Manager is available here. Helpful tips on implementation can be found in this PIAF Forum thread.

    Configuring a SIP URI Address for Your PBX

    Setting up a SIP URI is a simple way to let anyone with a SIP phone call you from anywhere in the world and talk for as long and as often as you like FOR FREE. The drawback of SIP URIs is typically the security risk accompanying the SIP exposure you must provide to receive these calls. Here's the safe way using what we call a hybrid SIP URI. It works like this. Sign up for a VoIP.ms account and create a subaccount that you will register using the VoIPms trunk included in Incredible PBX. As part of the setup in the VoIP.ms portal, assign an Internal Extension Number to your subaccount, e.g. 789123. Make it random so you don't get surprise calls from anonymous sources. The extension can be up to 10 digits long. Next, sign up for a free iNUM DID, e.g. 883510009901234, in your VoIP.ms account. Using Manage DIDs in the portal, link the iNUM DID to your subaccount and assign one of the VoIP.ms POP locations for incoming calls, e.g. atlanta.voip.ms. Next, write down your VoIP.ms account number, e.g. 12345. Once you've completed these three steps and registered the VoIP.ms subaccount on your PBX, you now have two SIP URIs that are protected by your VoIP.ms credentials and don't require you to expose your SIP port to the outside world at all. These SIP URIs can be pointed to different destinations by setting up Inbound Routes using your VoIP.ms account number as one DID and setting up your iNUM number as the second DID. To reach your PBX via SIP URI, callers can use 12345789123@atlanta.voip.ms to reach the DID you set up for your VoIP.ms subaccount where 12345 is your VoIP.ms account number and 789123 is the Internal Extension Number for your subaccount. Or callers can use 8835100099012234@inum.net to reach the DID you set up using your iNUM number that was assigned by VoIP.ms. Don't forget to whitelist the VoIP.ms POP's FQDN for SIP UDP access to your PBX:

    /root/add-fqdn voipms atlanta.voip.ms

    If you wish to make SIP URI calls yourself, the easiest way is to first set up a free LinPhone SIP Account. You can find dozens of recommendations for hardware-based SIP phones both on Nerd Vittles and the PIAF Forum. For today we'll get you started with one of our favorite (free) softphones, YateClient. It's available for almost all desktop platforms. Download YateClient from here. Run YateClient once you’ve installed it and enter the credentials for your LinPhone account. You’ll need LinPhone's FQDN (sip.linphone.org) plus your LinPhone account name and password. Fill in the Yate Client template and click OK to save your entries. Once the Yate softphone shows that it is registered, try a test call to one of our demo SIP URIs: sip:weather@demo.nerdvittles.com or sip:news@demo.nerdvittles.com.

    Adding the NeoRouter Virtual Private Network

    We've made it easy to set up a virtual private network between your PBX and your other computers. NeoRouter is a free VPN for up to 256 machines. It requires that you first set up a server for NeoRouter using a static IP address and preferably a fully-qualified domain name. This is covered in this Nerd Vittles tutorial. Once you have your NeoRouter server operational, adding your PBX to the VPN is easy. Simply run nrclientcmd and enter the FQDN of your VPN server together with your credentials. All clients on the VPN have an encrypted tunnel with private LAN addresses in the 10.0.0.x range. HINT: Setting up a NeoRouter VPN provides an easy way to get back into your server if the firewall ever locks you out since the 10.0.0.x subnet is automatically whitelisted as part of the initial install.

    Using PortKnocker to Regain Access to Your PBX

    And speaking of getting locked out of your server because you've forgotten to whitelist the IP address of your computer, there's another easy way to regain access: PortKnocker. The way the service works is you send sequential pings to 3 randomized TCP ports that are known only by you. They are listed in /etc/knock.FAQ. When your server detects a match, it will whitelist your new IP address allowing you to login using SSH or Putty. There also are PortKnocker utilities for both iOS and Android devices. Complete implementation details are available in this Nerd Vittles tutorial. If your PBX is sitting behind a router or firewall, don't forget to forward the three TCP ports from your router to the private LAN address of your PBX.

    Planning Ahead for That Rainy Day

    If you haven't already learned the hard way, let us save you from a future shock. Hardware fails. All of it. So spend an extra hour now so that you'll be prepared when (not if) disaster strikes. First, once you have your new PBX configured the way you plan to use it, make a backup of your PBX by running the Incredible Backup script: /root/incrediblebackup13

    Copy down the name of the backup file that was created. You'll need it in a few minutes.

    Second, build yourself a VirtualBox platform on your desktop PC. There's an Incredible PBX 13-13.10 Vbox image already available on SourceForge. Don't use the Vbox image for Raspbian. It has insufficient available disk space to support the new backups. Once you've downloaded the Vbox image, double-click on it to install. Then fire up the virtual machine, login as root with password as your password and install the latest Incredible Backup and Restore scripts

    cd /root
    rm incrediblebackup
    rm incrediblerestore
    wget http://incrediblepbx.com/incrediblebackup13.tar.gz
    tar zxvf incrediblebackup13.tar.gz
    rm -f incrediblebackup13.tar.gz
    

    Next, create a /backup folder on your new VirtualBox PBX and copy the backup file from your main server to your VirtualBox server and restore it after logging in to VirtualBox PBX as root:

    mkdir /backup
    scp root@main-pbx-ip-address:/backup/backup-file-name.tar.gz /backup/.
    /root/incrediblerestore13 /backup/backup-file-name.tar.gz
    

    Verify that everything looks right by using a browser to access and review the settings in your new VirtualBox PBX. At a minimum, verify extensions, trunks, and routes.

    The Million Dollar Question, of course, is whether you can put Humpty back together again by installing a fresh Incredible PBX 13-13.10 Raspbian image to a new microSD card, going through the basic initialization steps 1-7 on your Raspberry Pi, and then copying the backup image from the VirtualBox desktop machine back over to the new Raspbian PBX and restoring it. And the answer is A-B-S-O-L-U-T-E-L-Y. In fact, you can even make changes in the VirtualBox GUI, create a fresh backup, and then restore that image to your Raspberry Pi. Keep in mind our original caveat that, if you add components, packages, or applications to your primary server, those same additions need to be made to the secondary platform since they will not get picked up as part of the backup. Try it for yourself. And sleep well.

    Originally published: Monday, March 11, 2019



    Need help with Asterisk? Visit the VoIP-info Forum.


     

    Special Thanks to Our Generous Sponsors


    FULL DISCLOSURE: ClearlyIP, Skyetel, Vitelity, DigitalOcean, Vultr, VoIP.ms, 3CX, Sangoma, TelecomsXchange and VitalPBX have provided financial support to Nerd Vittles and our open source projects through advertising, referral revenue, and/or merchandise. As an Amazon Associate and Best Buy Affiliate, we also earn from qualifying purchases. We’ve chosen these providers not the other way around. Our decisions are based upon their corporate reputation and the quality of their offerings and pricing. Our recommendations regarding technology are reached without regard to financial compensation except in situations in which comparable products at comparable pricing are available from multiple sources. In this limited case, we support our sponsors because our sponsors support us.

    BOGO Bonaza: Enjoy state-of-the-art VoIP service with a $10 credit and half-price SIP service on up to $500 of Skyetel trunking with free number porting when you fund your Skyetel account. No limits on number of simultaneous calls. Quadruple data center redundancy. $25 monthly minimum spend required. Tutorial and sign up details are here.

    The lynchpin of Incredible PBX 2020 and beyond is ClearlyIP components which bring management of FreePBX modules and SIP phone integration to a level never before available with any other Asterisk distribution. And now you can configure and reconfigure your new Incredible PBX phones from the convenience of the Incredible PBX GUI.

    VitalPBX is perhaps the fastest-growing PBX offering based upon Asterisk with an installed presence in more than 100 countries worldwide. VitalPBX has generously provided a customized White Label version of Incredible PBX tailored for use with all Incredible PBX and VitalPBX custom applications. Follow this link for a free test drive!
     

    Special Thanks to Vitelity. Vitelity is now Voyant Communications and has halted new registrations for the time being. Our special thanks to Vitelity for their unwavering financial support over many years and to the many Nerd Vittles readers who continue to enjoy the benefits of their service offerings. We will keep everyone posted on further developments.
     



    1. Many of our purchase links refer users to Amazon when we find their prices are competitive for the recommended products. Nerd Vittles receives a small referral fee from Amazon to help cover the costs of our blog. We never recommend particular products solely to generate Amazon commissions. However, when pricing is comparable or availability is favorable, we support Amazon because Amazon supports us. []
    2. In the unlikely event that Skyetel cannot provide a 10% reduction in your current origination rate and/or DID costs, Skyetel will give you an additional $50 credit to use with the Skyetel service. []

    Yowza! A Fault-Tolerant Incredible PBX Platform for $1/Mo.


    Not that you needed another reason to sign up for Skyetel’s triple-redundant SIP hosting platform, but we have a new one for you anyway. A fault-tolerant VoIP platform always has been the Holy Grail for many organizations. When your business depends on telephone calls, the very last thing you want to fail is your phone system. When most administrators think of fault-tolerant, high availability (HA) servers, the first word that comes to mind is expensive. For example, FreePBX® charges $1500/node just for HA software licenses. Using Skyetel trunks with Incredible PBX® 13-13.10, you now can deploy a fault-tolerant solution including the cloud-based secondary server for about a dollar a month. And, unlike the FreePBX design, the primary and secondary servers need not be colocated. Today we’ll get you up and running.

    Many SIP providers require users to register their PBX with their service before you can make and receive calls. Skyetel does not.1 Instead, Skyetel relies upon the IP address of the PBX to determine whether to relay calls to and from your PBX. Dynamic IPs are supported. This is incredibly useful in designing a fault-tolerant PBX platform. If SIP registration is required with your SIP provider, then it obviously takes considerably more engineering effort to enable and disable the redundant server platform since you can’t be registered to two different servers using the same accounts at the same time. With Skyetel, that’s never a problem. Let’s quickly review the Skyetel setup process, and you’ll see why their design facilitates fault tolerance without spending a fortune on additional hardware and software. Effective 10/1/2023, $25/month minimum spend required.

    Once your Skyetel account is set up, there are basically two steps to enable connections with your PBX. First, you create an Endpoint Group with the IP address of your PBX. Second, you purchase one or more DIDs and point each of them to the Endpoint Group you just created. With Incredible PBX platforms, the Skyetel trunk and firewall setup already is in place. All you need to do is create an Inbound Route for each of your Skyetel DIDs using its 11-digit phone number. Ten and eleven-digit outbound calls, by default, always are routed to Skyetel for processing. So how do we handle fault-tolerance on the Skyetel side? It’s easy. Just add the IP address of the secondary PBX to the Endpoint Group that you set up for your primary PBX. That’s it. When Skyetel can’t send inbound calls to your primary PBX, it now will send them to your secondary server.


    Now let’s address what has to happen at your end to bring up a fault-tolerant platform. We will assume that you already have set up and configured extensions, trunks, routes, and all desired bells and whistles on an Incredible PBX 13-13.10 platform somewhere. It really doesn’t matter where. We will also assume you have deployed SIP telephones for all of your users and registered them with your PBX. There are five simple steps to implement a fault-tolerant PBX architecture. First, you need a cloud-based Incredible PBX 13-13.10 server with static IP address and nightly-refreshed mirror image of your primary server. Second, SSH needs to be configured for SSH key-based authentication between the two servers. We’ll use rsync and SSH on the primary server to keep voicemails synchronized between your primary and secondary servers during the day. Third, we’ll add the IP address of the secondary PBX as the secondary registration IP address on each of your SIP phones. Fourth, you’ll need to copy over the firewall and whitelist rules from your primary server to your second server and restart IPtables after making certain that you’ve whitelisted the IP addresses of BOTH servers on the primary server. Fifth, we’ll add the IP address of the secondary PBX to the Endpoint Group of your primary PBX on the Skyetel site. That’s it. Once you’ve completed these five steps, your users will never miss a call. Since Skyetel doesn’t sit in the middle of the RTP stream on calls that are underway, callers may never even know their primary PBX failed.

    So let’s address the worst case scenario. Your primary server has an unrecoverable system failure in the middle of the work day, and you have no backup. What do you lose? Not phone calls! And, assuming you’re making hourly dumps of your voicemails to the secondary PBX, you only would lose whatever voicemails arrived during the minutes preceding the system failure. If an hour is too painful in your operation, then make voicemail dumps more frequently. The only other data that would be lost is the CDR data since the last nightly backup was restored. If that’s too painful, that data also can be archived on a more frequent basis using a simple bash script. And, just to repeat, the total additional cost for this fault-tolerant platform is approximately $1 a month depending upon the VPS provider you choose, and we have a half dozen that we recommend AND USE at that price point. Let’s get started.

    Building a Secondary Redundant Server

    Start by signing up for a cloud-based OpenVZ VPS platform with one of our recommended providers. Server locations and special signup details are documented in our article. Average cost is about $1/month on an annual contract with 1Gbit port or *free 1Gbit port upgrade on request based upon LowEndBox offer. Protect yourself by paying with PayPal which gives you 6 months to dispute a charge if the provider happens to go belly up. NOTE: Performance is almost directly proportional to annual cost with our Tier 1 and Tier 2 providers.

    ProviderRAMDiskBandwidthPerformance as of 12/1/19Cost
    CrownCloud KVM (LA)1GB20GB +
    Snapshot
    1TB/month598Mb/DN 281Mb/UP
    2CPU Core
    $25/year
    Best Buy!
    Naranjatech KVM (The Netherlands)1GB20GB1TB/monthHosting since 2005
    VAT: EU res.
    20€/year w/code:
    SBF2019
    BudgetNode KVM (LA)1GB40GB RAID101TB/monthAlso available in U.K PM @Ishaq on LET before payment$24/year
    FreeRangeCloud KVM (Ashburn VA, Winnipeg, Freemont CA)1GB20GB SSD3TB/monthPick EGG loc'n
    Open ticket for last 5GB SSD
    $30/year w/code:
    LEBEGG30

    If you can’t bear repeating this step in the event of a provider implosion, then consider one of the $5/month cloud platforms offered by Digital Ocean or Vultr.2 Ask yourself if it’s worth $4/month to eliminate the risk of having to spend an hour rebuilding your secondary PBX platform. Regardless of what you decide, here’s the drill. Set up a 64-bit CentOS 6 platform on your VPS. Since you already are familiar with the Incredible PBX 13-13 setup procedure, just follow last week’s quick-and-dirty checklist to set up your new secondary server. If your primary server also has the Whole Enchilada or Incredible Fax installed, we recommend you install the same components on your secondary server. If your secondary server is CentOS 7-based, issue the following command to assure that key-based authentication will work: chmod 711 /root. When you’re finished, write down the IP address of your secondary server.

    Setting Up SSH Key-Based Authentication

    In order to automate the process of loading updates from your primary server to your secondary one, we need a way to login between the servers without being prompted for a password. Key-based authentication provides that feature. Begin by whitelisting the IP addresses of BOTH your primary and secondary PBXs on BOTH of your servers. Using add-ip in /root, add server1 entry: ./addip server1 12.34.56.78. Then add server2 entry: ./addip server2 23.45.67.89. When prompted, choose the 0 option to whitelist all ports.

    Next, store the IP addresses of server1 and server2 on your primary server so we can find them when we need them for future tasks:

    echo 12.34.56.79 > /etc/pbx/server1
    echo 23.45.67.89 > /etc/pbx/server2
    

    Next, on your primary server, generate an SSH key-pair: ssh-keygen. Press Enter when prompted for the key’s file name. Press Enter when prompted (twice) for a passphrase.

    Then copy the new key to your secondary server using the IP address of your secondary server. Enter the root password for your secondary server when prompted.

    ssh-copy-id root@$(cat /etc/pbx/server2)
    

    Now test logging into your secondary server using SSH from your primary server. You should not be prompted for a password. Close the secondary server SSH session by typing exit.

    ssh root@$(cat /etc/pbx/server2)
    exit
    

    Restoring Backup Image to Secondary Server

    We will automate these steps down the road, but let’s first test the procedure to make sure things work as expected. Begin by creating a /backup folder on both servers. Then install the latest backup and restore scripts on both of your servers:

    mkdir /backup
    cd /root
    rm -f incrediblebackup
    rm -f incrediblerestore
    wget http://incrediblepbx.com/incrediblebackup13.tar.gz
    tar zxvf incrediblebackup13.tar.gz
    rm -f incrediblebackup13.tar.gz
    

    On BOTH servers, verify that you have the latest backup and restore scripts. The following command should return the filenames of your backup and restore scripts:

    grep PROCEEDNOW= /root/inc*
    

    On BOTH servers, issue the following commands so that we can automate the backup and restore process without being prompted:

    sed -i 's|PROCEEDNOW=false|PROCEEDNOW=true|' /root/incrediblebackup13
    sed -i 's|PROCEEDNOW=false|PROCEEDNOW=true|' /root/incrediblerestore13
    

    Finally, on both servers, make sure you have logged out and back in at least once so that the Automatic Update Utility has loaded the latest patches on both platforms.

    Now let’s take a backup snapshot of your primary server: /root/incrediblebackup13

    Copy the backup file to the secondary server at the server2 IP address below:

    scp /backup/$(ls -t /backup | head -n 1) root@$(cat /etc/pbx/server2):/backup/.
    

    Next, login to your secondary server as root using SSH. We want to restore the backup file that was just copied from the primary server. Keep in mind that our restore methodology overwrites files with the same names on the secondary server but it does not erase files on the secondary server which were not contained in the primary’s backup. With the exception of the /root directory, the latest iteration of Incredible Restore cleans out the other affected directories including voicemail files on the secondary server. This is especially important because voicemails may have been erased on the primary server since the last restore, and voicemail files get renumbered each time a voicemail is removed. Thus, failure to remove previous collections of voicemail files before restoring a new backup could produce a royal mess on the secondary server especially where the primary server processes numerous voicemails for multiple users every day. One other item of interest concerns primary servers behind NAT-based routers. Ordinarily, you would set the external IP address and local networks in SIP Settings to avoid NAT problems such as one-way audio. Since we may be copying a NAT-based backup to a public facing secondary PBX, we don’t want those settings carried over. We’ve addressed this by deleting the entries whenever you choose automated restores using the PROCEEDNOW=true flag. The full backup including these NAT settings is preserved if you execute a restore using the PROCEEDNOW=false flag. Finally, if you were using the backup and restore tools for normal server recovery, we obviously would want to include the /etc/crontab file in the restore. However, for fault tolerant deployments, we want to preserve separate cron jobs on the primary and secondary PBXs. We handle this using the PROCEEDNOW flag as described above. If you set it to true, we preserve /etc/crontab. Otherwise, we restore it from the backup file. Now restore the backup on the secondary PBX:

    /root/incrediblerestore13 /backup/$(ls -t /backup | head -n 1) 
    

    Although not recommended, we’ve been successful restoring a CentOS6-based primary server to a CentOS7-based secondary platform. Take a minute to actually examine the contents of the backup on the secondary server by logging into the FreePBX GUI with a browser. Be sure to check the extensions, trunks, and routes to verify that they match the entries on your primary server. If your primary server is behind a NAT-based router, check the SIP Settings to make certain the NAT entries for external IP address and localnets weren’t carried over to the public-facing secondary PBX.


    Refreshing Spool Data to Secondary Server with rsync

    Now we want to test updating voicemails and recordings from your primary server to the secondary. Using a SIP phone, connect to *701 and leave yourself a new voicemail. Verify that it exists in /var/spool/asterisk/voicemail/default/701/INBOX. Simulate the procedure that will be used periodically to copy new voicemail messages and recordings to your secondary server. Execute the following commands to verify the new voicemail was transferred:

    rsync -a -e "ssh" /var/spool/* root@$(cat /etc/pbx/server2):/var/spool
    ls -all /var/spool/asterisk/voicemail/default/701/INBOX
    

    Adding the Secondary Server to Skyetel

    As noted above, we need to add the IP address of your secondary server to the Endpoint Group of your primary server on Skyetel. After logging into your Skyetel account, choose Endpoints -> Endpoint Groups and click the gear icon beside your primary server’s endpoint group. Add an additional entry to the Group with a Priority of 2. Your entries should look similar to this:

    Within a few minutes, the Endpoint Health dashboard should display three green dots for both of your servers signifying that all three Skyetel data centers can connect to both of your servers.

    Adding Server2 Key-Based Authentication

    On your secondary server, let’s set up key-based authentication to the primary PBX. Here are the commands to set it up and test it. You should get logged in and back out without a password prompt.

    ssh-copy-id root@$(cat /etc/pbx/server1)
    ssh root@$(cat /etc/pbx/server1)
    exit
    

    Choosing Compatible Phones for High Availability

    Now that we have our HA platform in place, we need to configure your SIP phones to continue to work when the primary server fails and things switch over to the secondary PBX. For this to work, you’ll need SIP phones that are compatible with HA technology. Most are but some are not. Look through the registration menu on your SIP phone and enter the IP address of the secondary PBX in the field provided. Adjust the server timeout value to reflect the number of seconds your users can tolerate without a working phone. On the primary PBX, don’t forget to whitelist the public IP addresses associated with each of your SIP phones using add-ip! As for supported phones, here’s a hint. Most Digium, Snom, Yealink, Grandstream, Fanvil, and Aastra 6700i and 9000i series phones are safe bets. And here’s what a SIP extension setup would look like on Yealink’s popular T46G.


    Reminder: Do NOT use a private IP address (as shown) for the secondary SIP registration, and only use a private IP address for the primary PBX if both the PBX and the SIP phone are behind the same NAT-based router.

    Migrating Travelin’ Man 3 Firewall to Secondary PBX

    You’ll find it much easier to manage one firewall and then copy those firewall settings from your primary server to your secondary PBX. There are 3 sets of files that need to be copied from the primary PBX before restarting the secondary’s firewall: (1) iptables and ip6tables from /etc/sysconfig, (2) all iptables* files in /usr/local/sbin, and (3) *.iptables files in /root. Make certain you have whitelisted the IP addresses of the primary and secondary PBXs using /root/add-ip before issuing these commands on the primary server:

    cd /etc/pbx
    scp /etc/sysconfig/iptables root@$(cat server2):/etc/sysconfig/.
    scp /etc/sysconfig/ip6tables root@$(cat server2):/etc/sysconfig/.
    scp /usr/local/sbin/iptables* root@$(cat server2):/usr/local/sbin/.
    scp /root/*.iptables root@$(cat server2):/root/.
    ssh root@$(cat server2) "service iptables restart; service fail2ban restart"
    ssh root@$(cat server2) "iptables-custom"
    

    Automating the Daily Synchronization Process

    We’ll use three cron scripts to keep the data on your primary and secondary servers in sync. These scripts automatically manage the backup sets by removing all but the latest backup on both servers. Keep in mind that, if you add new packages to your primary server, you also will need to add the same packages to your secondary server. Aside from that caveat, everything else should remain synchronized using these three simple scripts. On the primary server, we’ll use backup1restore2 to make the nightly backup and copy it to the secondary server, and we’ll use rsync-spool-1to2 to execute the hourly spool sync to catch changes in voicemails, recordings, and fax data. On the secondary server, we’ll use restore2backup1 to restore the backup from the primary server each night. Let’s first put the cron scripts in place, and then we’ll set up the cron jobs.

    On the primary server, issue the following commands to install the two scripts:

    cd /root
    wget http://incrediblepbx.com/backup1restore2
    chmod +x backup1restore2
    wget http://incrediblepbx.com/rsync-spool-1to2
    chmod +x rsync-spool-1to2
    

    On the secondary server, issue the following commands to install the restore script:

    cd /root
    wget http://incrediblepbx.com/restore2backup1
    chmod +x restore2backup1
    

    Before setting up the cron entries, you have a few decisions to make. First, decide how often you wish to run the backup/restore scripts. If your PBX configuration rarely changes, you may not need to run the backup and restore scripts every night. Second, decide what time to run the backup and restore scripts. The restore script on the secondary server should always be run about 30 minutes AFTER the backup script runs on the primary server. The reason should be obvious. Remember to take into consideration the time zones of your two servers when making the time calculations. Third, decide how frequently to run the spool synchronization script from the primary server. This will depend upon how busy your primary server is and how much data (voicemails) you’re willing to lose in the event of a catastrophic failure that occurs after the last sync operation. There’s probably little need to run the synchronization script while everyone is sleeping unless you get frequent fax deliveries overnight. Finally, the backup of the primary server requires that Asterisk be shut down for at most a few minutes so schedule the backups during a time when there is no server activity on your primary server. Your test backup that we ran above should provide some idea of how long the operation will take on your PBX. Once you have tackled these issues, edit /etc/crontab on both your primary and secondary servers. Add the cron jobs to the end of the files after verifying server time on BOTH servers using date.

    NOTE: We strongly recommend setting the time zone on the secondary server to match the primary server’s time zone using the /root/timezone-setup script.

    On the primary server, here is a sample entry to run the backup script as the root user once a day at 2:15 am (local time on primary server):

    15 2 * * * root /root/backup1restore2 >/dev/null 2>&1
    

    On the secondary server, this entry will run the restore script once a day at 2:45 am assuming secondary server is in the same time zone as primary server:

    45 2 * * * root /root/restore2backup1 >/dev/null 2>&1
    

    On the primary server, this entry runs rsync spool script every hour on the half hour:

    30 * * * * root /root/rsync-spool-1to2 >/dev/null 2>&1
    

    Testing Fault Tolerance on Your Platform

    Once you’ve put all the pieces in place, the easiest way to test the HA functionality is to shut down Asterisk on the primary PBX: amportal stop. Also disable the rsync cron job in /etc/crontab. Depending upon the timeout seconds you configured on your SIP phones, you should be able to make calls through the secondary server shortly. Don’t forget to restart Asterisk on your primary PBX: amportal start. Note also that you will need to shut down Asterisk on the secondary server for a few minutes after restoring the primary server. This will force all of your SIP phones to re-register with the primary server. And, in a real-world outage of considerable duration, it may be necessary to do a reverse-rsync of the spool directories from the secondary server (using the template below as an example) to assure that no voicemails and other spool files were lost during the outage. Then it’s safe to once again enable the rsync cron job on the primary server.

    amportal stop
    rsync -a -e "ssh" /var/spool/* root@$(cat /etc/pbx/server1):/var/spool
    sleep 900
    amportal start
    

    Originally published: Thursday, March 7, 2019



    Need help with Asterisk? Visit the VoIP-info Forum.


     

    Special Thanks to Our Generous Sponsors


    FULL DISCLOSURE: ClearlyIP, Skyetel, Vitelity, DigitalOcean, Vultr, VoIP.ms, 3CX, Sangoma, TelecomsXchange and VitalPBX have provided financial support to Nerd Vittles and our open source projects through advertising, referral revenue, and/or merchandise. As an Amazon Associate and Best Buy Affiliate, we also earn from qualifying purchases. We’ve chosen these providers not the other way around. Our decisions are based upon their corporate reputation and the quality of their offerings and pricing. Our recommendations regarding technology are reached without regard to financial compensation except in situations in which comparable products at comparable pricing are available from multiple sources. In this limited case, we support our sponsors because our sponsors support us.

    BOGO Bonaza: Enjoy state-of-the-art VoIP service with a $10 credit and half-price SIP service on up to $500 of Skyetel trunking with free number porting when you fund your Skyetel account. No limits on number of simultaneous calls. Quadruple data center redundancy. $25 monthly minimum spend required. Tutorial and sign up details are here.

    The lynchpin of Incredible PBX 2020 and beyond is ClearlyIP components which bring management of FreePBX modules and SIP phone integration to a level never before available with any other Asterisk distribution. And now you can configure and reconfigure your new Incredible PBX phones from the convenience of the Incredible PBX GUI.

    VitalPBX is perhaps the fastest-growing PBX offering based upon Asterisk with an installed presence in more than 100 countries worldwide. VitalPBX has generously provided a customized White Label version of Incredible PBX tailored for use with all Incredible PBX and VitalPBX custom applications. Follow this link for a free test drive!
     

    Special Thanks to Vitelity. Vitelity is now Voyant Communications and has halted new registrations for the time being. Our special thanks to Vitelity for their unwavering financial support over many years and to the many Nerd Vittles readers who continue to enjoy the benefits of their service offerings. We will keep everyone posted on further developments.
     



    1. Skyetel is a platinum sponsor of Nerd Vittles and the open source projects of Ward Mundy & Associates, LLC. March is the final month to take advantage of the Nerd Vittles $50 usage credit when you sign up with Skyetel. []
    2. Digital Ocean and Vultr provide modest referral credits to Nerd Vittles for those that use our referral code. It in no way colors our recommendations regarding these two providers, both of whom we use extensively. []

    In Search of a Better Mousetrap: Meet Incredible PBX 13-13.10



    There are lots of choices in the VoIP marketplace these days, and everyone’s requirements are different. So one size certainly doesn’t fit all. So let me tick off our most important criteria, and you can compare our list to your own. At the top of our list are reliability, stability, performance, feature set, and ease of deployment and use. Next would be cost of ownership which includes not only the cost of initial deployment but also the recurring costs for both the hardware and software platforms as well as support. Finally, we think ease of migration, backups, and upgradeability are important issues to consider. Keep in mind that proprietary phone systems were designed to operate for a decade or more with only minor software tweaks. While that doesn’t sell more product, it certainly provides less aggravation for end-users as well as those that have to deploy and maintain these systems. We believe CentOS 6 and Asterisk 13 are equally stable. From our experience working with large organizations, the only thing worse than swapping out a user’s desktop computer was replacing their telephone.

    Since the early days of Asterisk®, FreePBX®, and PBX in a Flash™, the Achilles’ heel of all of these platforms has always been the difficulty in upgrading. The primary cause was the number of moving parts in any open source platform where literally thousands of developers are always "improving" things. It’s one of the real advantages of a closed source product such as 3CX® which has the luxury of making changes under the covers without ever exposing any weaknesses in prior releases of their software. With today’s introduction of Incredible PBX® 13-13.10, we are hopeful that those days are behind us.

    The upgradeability improvements are fairly obvious. First, Incredible Backup and the FreePBX backup module have both matured into easy-to-use tools to take snapshots of your PBX to accommodate migration to other server platforms. Second, FreePBX now offers the Bulk Handler utility which provides snapshots in CSV (spreadsheet) format for extensions, DIDs, User Manager users and groups, contacts, and Conferences so that these settings can be easily imported and exported. While this doesn’t encompass every setting in Asterisk and FreePBX, it gives you a leg up in moving to newer releases. And, as with 3CX, the FreePBX developers have provided an upgrade migration tool at least for their proprietary distro.

    Having said all of that, we would caution everyone with a functioning PBX to ask yourself these three questions before migrating to a newer platform. First, is my current PBX secure and reliable? Second, are there functions my current PBX doesn’t provide that my users actually need? Third, if/when my current hardware platform dies or my current cloud provider goes out of business, do I have a tested recovery option to get back into operation quickly? If your answers are yes, no, and yes, our strongest recommendation is SIT TIGHT.

    If you flunked the test, then you owe it to yourself to give today’s release of Incredible PBX 13-13.10 a try. Why? Because it’s free and always will be. Because it’s incredibly easy both to configure and to use. Because it provides the most comprehensive feature set in the VoIP industry. And because it will provide years of worry-free telephone service with free support.

    Introducing 2019 Edition of Incredible PBX

    Today marks our third major release of our flagship Incredible PBX 13-13 platform featuring 70+ new FreePBX GPL modules plus integrated support for free SIP URI worldwide calling plus all the latest components for OSS Endpoint Manager making SIP phone deployment a breeze. There also are terrific new backup and restore utilities which make migration and restoration of Incredible PBX platforms a snap. Finally, we’ve incorporated Skyetel SIP trunking in the build. It literally makes configuration of outbound and incoming calling a one-minute process. On the Skyetel side, create an Endpoint Group pointing to the IP address of your PBX, order one or more DIDs and point them to the new EndPoint Group. Done. On the Incredible PBX side, add Inbound Routes specifying the 11-digit numbers of your Skyetel DIDs and point each of them to the desired destination for incoming calls. Done. Outbound calls are automatically configured to use your Skyetel account. Our complete Skyetel tutorial is available here and includes an exclusive BOGO usage credit of up to $250.1 You now can deploy a fault-tolerant, high availability (HA) platform using Incredible PBX 13-13.10 and Skyetel. Here’s how. Effective 10/1/2023, $25/month minimum spend required.

    Installing Incredible PBX 13-13.10 Locally

    As with prior releases, the Incredible PBX ISO installer eases deployment on stand-alone hardware. For those that are new to Incredible PBX, head over to our detailed tutorial to get started. New releases for the Raspberry Pi and Ubuntu 18.04.2 are also available now.

    Installing Incredible PBX 13-13.10 in the Cloud

    Start by signing up for a cloud-based OpenVZ VPS platform with one of our recommended providers. Server locations and special signup details are documented in our article. Average cost is about $1/month on an annual contract with 1Gbit port or *free 1Gbit port upgrade on request based upon LowEndBox offer. Protect yourself by paying with PayPal which gives you 6 months to dispute a charge if the provider happens to go belly up. NOTE: Performance is almost directly proportional to annual cost with our Tier 1 and Tier 2 providers.

    ProviderRAMDiskBandwidthPerformance as of 12/1/19Cost
    CrownCloud KVM (LA)1GB20GB +
    Snapshot
    1TB/month598Mb/DN 281Mb/UP
    2CPU Core
    $25/year
    Best Buy!
    Naranjatech KVM (The Netherlands)1GB20GB1TB/monthHosting since 2005
    VAT: EU res.
    20€/year w/code:
    SBF2019
    BudgetNode KVM (LA)1GB40GB RAID101TB/monthAlso available in U.K PM @Ishaq on LET before payment$24/year
    FreeRangeCloud KVM (Ashburn VA, Winnipeg, Freemont CA)1GB20GB SSD3TB/monthPick EGG loc'n
    Open ticket for last 5GB SSD
    $30/year w/code:
    LEBEGG30

    If you’ve installed previous iterations of Incredible PBX, here is a thumbnail sketch of the install procedure. Begin by installing a minimal CentOS 6 or CentOS 7 (64-bit) platform. Then log into your server as root and issue the following commands:

    passwd
    yum -y update
    yum -y install net-tools nano wget tar
    wget http://incrediblepbx.com/incrediblepbx-13-13-LEAN.tar.gz
    tar zxvf incrediblepbx-13-13-LEAN.tar.gz
    rm -f incrediblepbx-13-13-LEAN.tar.gz
    # to add swap file on non-OpenVZ cloud platforms
    ./create-swapfile-DO
    # kick off Phase I install
    ./IncrediblePBX-13-13.sh
    # after reboot, kick off Phase II install
    ./IncrediblePBX-13-13.sh
    # add Full Enchilada apps, if desired
    ./Enchilada-upgrade.sh
    # add HylaFax/AvantFax, if desired
    ./incrediblefax13.sh
    # set passwords
    ./update-passwords
    # set desired timezone
    ./timezone-setup
    # remember to enable TUN/TAP if using VPS Control Panel
    # reconfigure PortKnocker if installing on an OpenVZ platform
    echo 'OPTIONS="-i venet0:0"' >> /etc/sysconfig/knockd
    service knockd restart
    # fix pbxstatus for NeoRouter VPN support, if desired
    cd /usr/local/sbin
    sed -i "s|cat /etc/hostip|cat /etc/hostip \\| cut -f 3 -d ' ' |" pbxstatus
    # set up NeoRouter client, if desired
    nrclientcmd
    # check network speed
    wget -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
    chmod +x speedtest-cli
    ./speedtest-cli
    

    Planning Ahead for That Rainy Day

    If you haven’t already learned the hard way, let us save you from a future shock. Hardware fails. All of it. So spend an extra hour now so that you’ll be prepared when (not if) disaster strikes. First, once you have your new PBX configured the way you plan to use it, make a backup of your PBX by running the Incredible Backup script: /root/incrediblebackup13

    Copy down the name of the backup file that was created. You’ll need it in a few minutes.

    Second, build yourself a VirtualBox platform on your desktop PC. Then download, install, and run the new Incredible PBX 13-13.10 vbox image from SourceForge. Our tutorial makes it easy.

    Next, create a /backup folder on your VirtualBox PBX and copy the backup file from your main server to your VirtualBox server and restore it after logging in to VirtualBox PBX as root:

    mkdir /backup
    scp root@main-pbx-ip-address:/backup/backup-file-name.tar.gz /backup/.
    /root/incrediblerestore13 /backup/backup-file-name.tar.gz
    

    Verify that everything looks right by using a browser to access and review the settings in your new VirtualBox PBX. At a minimum, verify extensions, trunks, and routes. Sleep well.


    News Flash: Turn Incredible PBX into a Fault-Tolerant HA Platform for $1/Month

    Adding Asterisk Apps: Introducing Incredible PBX 13-13 Whole Enchilada

    Continue Reading: Configuring Extensions, Trunks & Routes

    Don’t Miss: Incredible PBX Application User’s Guide covering the 31 Whole Enchilada apps

    Check out the new Incredible PBX 13-13 ISO. Complete tutorial available here.

    Originally published: Friday, March 1, 2019



    Need help with Asterisk? Visit the VoIP-info Forum.


     

    Special Thanks to Our Generous Sponsors


    FULL DISCLOSURE: ClearlyIP, Skyetel, Vitelity, DigitalOcean, Vultr, VoIP.ms, 3CX, Sangoma, TelecomsXchange and VitalPBX have provided financial support to Nerd Vittles and our open source projects through advertising, referral revenue, and/or merchandise. As an Amazon Associate and Best Buy Affiliate, we also earn from qualifying purchases. We’ve chosen these providers not the other way around. Our decisions are based upon their corporate reputation and the quality of their offerings and pricing. Our recommendations regarding technology are reached without regard to financial compensation except in situations in which comparable products at comparable pricing are available from multiple sources. In this limited case, we support our sponsors because our sponsors support us.

    BOGO Bonaza: Enjoy state-of-the-art VoIP service with a $10 credit and half-price SIP service on up to $500 of Skyetel trunking with free number porting when you fund your Skyetel account. No limits on number of simultaneous calls. Quadruple data center redundancy. $25 monthly minimum spend required. Tutorial and sign up details are here.

    The lynchpin of Incredible PBX 2020 and beyond is ClearlyIP components which bring management of FreePBX modules and SIP phone integration to a level never before available with any other Asterisk distribution. And now you can configure and reconfigure your new Incredible PBX phones from the convenience of the Incredible PBX GUI.

    VitalPBX is perhaps the fastest-growing PBX offering based upon Asterisk with an installed presence in more than 100 countries worldwide. VitalPBX has generously provided a customized White Label version of Incredible PBX tailored for use with all Incredible PBX and VitalPBX custom applications. Follow this link for a free test drive!
     

    Special Thanks to Vitelity. Vitelity is now Voyant Communications and has halted new registrations for the time being. Our special thanks to Vitelity for their unwavering financial support over many years and to the many Nerd Vittles readers who continue to enjoy the benefits of their service offerings. We will keep everyone posted on further developments.
     



    1. Skyetel is a Platinum Sponsor of Nerd Vittles and open source projects of Ward Mundy & Associates, LLC. []

    Now Serving: The Incredible PBX 13-13 Whole Enchilada

    We’re delighted to introduce the bells and whistles for Incredible PBX® 13-13. We’ve taken a slightly different approach with this release. Instead of getting the Whole Enchilada out of the box, you now have a choice. You start with Incredible PBX 13-13 LEAN on the recommended CentOS® 6.10 platform. This gets you a fully-functioning PBX with the latest Asterisk® 13 and most of the FreePBX® 13 GPL modules. This release includes support for Skyetel SIP trunking from our Platinum Sponsor together with $50 in free service to get you started. You still can customize your PBX in any way you like. Or just upgrade to the Whole Enchilada and take advantage of the entire feature set that Incredible PBX has traditionally offered. Last but not least, you can add Incredible Fax for flawless faxing with HylaFax® and AvantFax® including fax detection on specified inbound routes. So the choice is totally up to you. We have a lot to cover. For today, we’ll get all the Incredible PBX pieces installed.

    Just Released: Incredible PBX 16-15 for CentOS 7. Take it for a test drive.

    Here’s a sneak peek at what’s included in Incredible PBX 13-13 Whole Enchilada: dozens of preconfigured SIP Trunks from our favorite providers, Voice Dialing (411) with IBM STT or Google, Headline News (951), Weather by ZIP Code (947), Today in History (86329), IBM TTS, ODBC Lookups (222), ODBC Calling with AsteriDex (223), Telephone Reminders (123), AsteriDex (Web GUI), Reminders (Web GUI), PortKnocker, Travelin’ Man 4, Time of Day (*61), SMS Dictator (767), Wolfram Alpha (4747), Hotel-Style Wakeup Calls (*68), Allison’s Demo IVR (3366), Lenny (53669), Call Parking (**70), Call Pickup (71), Blacklist Add (*30), Blacklist Remove (*31), Blacklist Last Caller (*32), Call Forward Activate (*72), Call Forward DeActivate (*73), Conferencing (C-O-N-F), Call Pickup (*8), Dictation (*34), Email Dictation (*35), DND Activate (*78), DND DeActivate (*79), SpeedDial with AsteriDex (000NNN), Email Delivery of Voicemails, NeoRouter VPN, and more. With a little luck, this will light a fire under some of you to roll up your sleeves and participate in the open source development community.

    Installing a Base CentOS Operating System

    You can install Incredible PBX 13-13 Lean on a dedicated server, on a virtual machine platform such as VirtualBox, or a Cloud-based server. We recommend a minimum 1GB of RAM with a swapfile unless installing on OpenVZ platforms. We’ve provided a script to do it for you. Depending upon the number of users your server will be supporting, we recommend a disk capacity of 10-30 GB. Last but not least, you need a reliable Internet connection.

    Before you can install Incredible PBX 13-13 Lean, you’ll need a basic Linux platform. For this build, you can start by deploying a minimal install of CentOS 6. The Incredible PBX installer will load all of the necessary components to support Asterisk and FreePBX as well as upgrading CentOS to 6.10. Better yet, use the new Incredible PBX 13-13 ISO which bundles both the operating system packages and all of the Incredible PBX goodies. Complete Incredible PBX 13-13 ISO tutorial available here.

    Begin by installing 64-bit CentOS 6 on your favorite hardware or Desktop. Or you may prefer to use a Cloud provider1 that already offers a preconfigured CentOS or Incredible PBX 13-13 image in the case of HiFormance. If you’re using a Cloud platform, you can skip the rest of this section. Just choose CentOS 6 or Incredible PBX 13-13 on HiFormance as the default operating system for your cloud-based server.

    For those using a dedicated hardware platform or wishing to install CentOS as a virtual machine, the drill is the same. Start by downloading the 64-bit CentOS 6.10 minimal ISO. Burn the ISO to a DVD unless you’ll be booting from the ISO on a virtual machine platform such as VirtualBox. On virtual platforms, we recommend at least 1GB RAM and a 20GB dedicated drive. For VirtualBox, we’ve provided a one-minute installer. Here are the settings:

    Type: Linux
    Version: RedHat 64-bit
    RAM: 1024MB
    Default Drive Options with 20GB space
    Create
    Settings->System: Enable IO APIC and Disable HW Clock (leave rest alone)
    Settings->Audio: Enable
    Settings->Network: Enable, Bridged
    Settings->Storage: Far right CD icon (choose your ISO)
    Start

    If you’re booting your server with the CentOS ISO to start the CentOS install, here are the simplest installation steps:

    Choose Language and Click Continue
    Click: Install Destination (do not change anything!)
    Click: Done
    Click: Network & Hostname
    Click: ON
    Click: Done
    Click: Begin Installation
    Click: Root Password: password, password, Click Done twice
    Wait for Minimal Software Install and Setup to finish
    Click: Reboot

    Installing Incredible PBX 13-13 LEAN

    Unless you’re using a virtual machine Incredible PBX image or the Incredible PBX 13-13 image on HiFormance, you’ll need to run the Incredible PBX installer. Once you have CentOS up and running, log into your server as root and issue the following commands to kick off the Incredible PBX install.

    passwd
    yum -y update
    yum -y install net-tools nano wget tar
    wget http://incrediblepbx.com/incrediblepbx-13-13-LEAN.tar.gz
    tar zxvf incrediblepbx-13-13-LEAN.tar.gz
    rm -f incrediblepbx-13-13-LEAN.tar.gz
    # to add swap file on non-OpenVZ cloud platforms
    ./create-swapfile-DO
    # kick off Phase I install
    ./IncrediblePBX-13-13.sh
    # after reboot, kick off Phase II install
    ./IncrediblePBX-13-13.sh
    # add Full Enchilada apps, if desired
    ./Enchilada-upgrade.sh
    # add HylaFax/AvantFax, if desired
    ./incrediblefax13.sh
    # set passwords
    ./update-passwords
    # set desired timezone
    ./timezone-setup
    # remember to enable TUN/TAP if using VPS Control Panel
    # reconfigure PortKnocker if installing on an OpenVZ platform
    echo 'OPTIONS="-i venet0:0"' >> /etc/sysconfig/knockd
    service knockd restart
    # fix pbxstatus for NeoRouter VPN support, if desired
    cd /usr/local/sbin
    sed -i "s|cat /etc/hostip|cat /etc/hostip \\| cut -f 3 -d ' ' |" pbxstatus
    # set up NeoRouter client, if desired
    nrclientcmd
    

    WebMin is also installed and configured as part of the base install. The root password for access is the same as your Linux root password. We strongly recommend that you not use WebMin to make configuration changes to your server. You may inadvertently damage the operation of your PBX beyond repair. WebMin is an excellent tool to LOOK at how your server is configured. When used for that purpose, we highly recommend WebMin as a way to become familiar with your Linux configuration.

    Using the Incredible PBX 13-13 Web GUI

    NOTE: If you plan to upgrade to the Whole Enchilada, you can skip this section. It’s for those that wish to roll their own PBX from the ground up.

    Most of the configuration of your PBX will be performed using the web-based Incredible PBX GUI with its FreePBX 13 GPL modules. Use a browser pointed to the IP address of your server and choose Incredible PBX Admin. Log in as admin with the password you configured in the previous step. HINT: You can always change it if you happen to forget it.

    To get a basic system set up so that you can make and receive calls, you’ll need to add a VoIP trunk, create one or more extensions, set up an inbound route to send incoming calls to an extension, and set up an outbound route to send calls placed from your extension to a VoIP trunk that connects to telephones in the real world. You’ll also need a SIP phone or softphone to use as an extension on your PBX. Our previous tutorial will walk you through this setup procedure. Over the years, we’ve built a number of command line utilities including a script to preconfigure SIP trunks for more than a dozen providers in seconds. You’ll find links to all of them here.

    Continue Reading: Configuring Extensions, Trunks & Routes

    Upgrading to Incredible PBX Whole Enchilada

    There now are two more pieces to put in place. The sequence matters! Be sure to upgrade to the Whole Enchilada before you install Incredible Fax. If you perform the steps backwards, you may irreparably damage your fax setup by overwriting parts of it.

    The Whole Enchilada upgrade script now is included in the Incredible PBX LEAN tarball. If you have an earlier release, you may need to download the Whole Enchilada tarball as documented below. Upgrading to the Whole Enchilada is simple. Log into your server as root and issue the following commands. Try issuing just the last command first to see if the enchilada upgrade script already is in place. Otherwise, execute all of the commands below. Be advised that the upgrade will overwrite all of your existing Incredible PBX setup including any extensions, trunks, and routes you may have created previously. You also will be prompted to reset all of your passwords as part of the upgrade.

    cd /root
    ./Enchilada*
    

    If you accidentally installed Incredible Fax before upgrading to the Whole Enchilada, you may be able to recover your Incredible Fax setup by executing the following commands. It’s worth a try anyway.

    amportal a ma install avantfax
    amportal a r
    

    Installing Incredible Fax with HylaFax/AvantFax

    You don’t need to upgrade to the Whole Enchilada in order to use Incredible Fax; however, you may forfeit the opportunity to later upgrade to the Whole Enchilada if you install Incredible Fax first. But the choice is completely up to you. To install Incredible Fax, log into your server as root and issue the following commands:

    cd /root
    ./incrediblefax13.sh
    

    After entering your email address to receive incoming faxes, you’ll be prompted about two dozen times to choose options as part of the install. Simple press the ENTER key at each prompt and accept all of the defaults. When the install finishes, make certain that you reboot your server to bring Incredible Fax on line. There will be a new AvantFax option in the Incredible PBX GUI. The default credentials for AvantFax GUI are admin:password; however, you first will be prompted for your Apache admin credentials which were set when you installed Incredible PBX 13-13 LEAN or the Whole Enchilada. Then you’ll be asked to change your AvantFax password.

    Upgrading to IBM Speech Engines

    If you’ve endured Google’s Death by a Thousand Cuts with text-to-speech (TTS) and voice recognition (STT) over the years, then we don’t have to tell you what a welcome addition IBM’s new speech utilities are. We can’t say enough good things about the new IBM Watson TTS and STT offerings. With IBM’s services, you have a choice of free or commercial tiers. Let’s put the pieces in place so you’ll be ready to play with the Whole Enchilada.

    Getting Started with IBM Watson TTS Service

    We’ve created a separate tutorial to walk you through obtaining and configuring your IBM Watson credentials. Start there.

    Next, login to your Incredible PBX server and issue these commands to update your Asterisk dialplan and edit ibmtts.php:

    cd /var/lib/asterisk/agi-bin
    ./install-ibmtts-dialplan.sh
    nano -w ibmtts.php
    

    Insert your credentials in $IBM_username and $IBM_password. For new users, your $IBM_username will be apikey. Your $IBM_password will be the TTS APIkey you obtained from IBM. Next, verify that $IBM_url matches the entry provided when you registered with IBM. Then save the file: Ctrl-X, Y, then ENTER. Now reload the Asterisk dialplan: asterisk -rx "dialplan reload". Try things out by dialing 951 (news) or 947 (Weather) from an extension registered on your PBX.

    Getting Started with IBM Watson STT Service

    Now let’s get IBM’s Speech to Text service activated. Log back in to the IBM Cloud. Click on the Speech to Text app. Choose a Region to deploy in, choose your Organization from the pull-down menu, and select STT as your Space. Choose the Standard Pricing Plan. Then click Create. When Speech to Text Portal opens, click the Service Credentials tab. In the Actions column, click View Credentials and copy down your STT username and password.

    Finally, login to your Incredible PBX server and issue these commands to edit getnumber.sh:

    cd /var/lib/asterisk/agi-bin
    nano -w getnumber.sh
    

    Insert apikey as your API_USERNAME and your actual STT APIkey API_PASSWORD in the fields provided. Then save the file: Ctrl-X, Y, then ENTER. Update your Voice Dialer (411) to use the new IBM STT service:

    sed -i '\\:// BEGIN Call by Name:,\\:// END Call by Name:d' /etc/asterisk/extensions_custom.conf
    sed -i '/\\[from-internal-custom\]/r ibm-411.txt' /etc/asterisk/extensions_custom.conf
    asterisk -rx "dialplan reload"
    

    Now try out the Incredible PBX Voice Dialer with AsteriDex by dialing 411 and saying "Delta Airlines." Check back next week for the Whole Enchilada apps tutorial.

    Adding Skyetel Trunks to Incredible PBX

    Now that you have your Incredible PBX platform in place, it’s time to set up your Skyetel trunks to take advantage of the BOGO calling credit (up to $250). The trunks themselves are added by logging into your server with SSH/Putty as root and issuing the following commands if the trunks aren’t already installed on your server. HINT: Check first!

    cd /root
    wget http://incrediblepbx.com/add-skyetel
    chmod +x add-skyetel
    # uncomment next line if your incoming calls all have 10-digit numbers
    # sed -i 's|from-trunk|from-pstn-e164-us|' add-skyetel
    ./add-skyetel
    chmod -x add-skyetel
    

    Next, sign up for Skyetel service and take advantage of the exclusive Nerd Vittles BOGO offer. First, complete the Prequalification Form here. You then will be provided a link to the Skyetel site to complete your registration. Skyetel will match your original deposit up to $250 which means you could enjoy as much as $500 of SIP trunking service for half price. Effective 10/1/2023, $25/month minimum spend required. Once you have registered on the Skyetel site and your account has been activated, open a support ticket and request your BOGO credit by referencing this Nerd Vittles special offer. Greed will get you nowhere. Credit is limited to one per person/company/address/location. If you want to take advantage of the 10% discount on your current service, open another ticket and attach a copy of your last month’s bill. See footnote 1 for the fine print.2 If you have high call volume requirements, document these in your Prequalification Form, and we will be in touch. Easy Peasy!

    Unlike many VoIP providers, Skyetel does not use SIP registrations to make connections to your PBX. Instead, Skyetel utilizes Endpoint Groups to identify which servers can communicate with the Skyetel service. An Endpoint Group consists of a Name, an IP address, a UDP or TCP port for the connection, and a numerical Priority for the group. For incoming calls destined to your PBX, DIDs are associated with an Endpoint Group to route the calls to your PBX. For outgoing calls from your PBX, a matching Endpoint Group is required to authorize outbound calls through the Skyetel network. Thus, the first step in configuring the Skyetel side for use with your PBX is to set up an Endpoint Group. A typical setup for use with Incredible PBX®, Asterisk®, or FreePBX® would look like the following:

    • Name: MyPBX
    • Priority: 1
    • IP Address: PBX-Public-IP-Address
    • Port: 5060
    • Protocol: UDP
    • Description: server1.incrediblepbx.com

    To receive incoming PSTN calls, you’ll need at least one DID. On the Skyetel site, you acquire DIDs under the Phone Numbers tab. You have the option of Porting in Existing Numbers (free for the first 60 days after you sign up for service) or purchasing new ones under the Buy Phone Numbers menu option.

    Once you have acquired one or more DIDs, navigate to the Local Numbers or Toll Free Numbers tab and specify the desired SIP Format and Endpoint Group for each DID. Add SMS/MMS and E911 support, if desired. Call Forwarding and Failover are also supported. That completes the VoIP setup on the Skyetel side. System Status is always available here.

    Configuring a Skyetel Inbound Route

    Because there is no SIP registration with Skyetel, incoming calls to Skyetel trunks will NOT be sent to the Default Inbound Route configured on your PBX because FreePBX treats the calls as blocked anonymous calls without an Inbound Route pointing to the 11-digit number of each Skyetel DID. From the GUI, choose Connectivity -> Inbound Routes -> Add Inbound Route. For both the Description and DID fields, enter the 11-digit phone number beginning with a 1. Set the Destination for the incoming DID as desired and click Submit. Reload the Dialplan when prompted. Place a test call to each of your DIDs after configuring the Inbound Routes.

    If you have installed the Incredible Fax add-on, you can enable Fax Detection under the Fax tab. And, if you’d like CallerID Name lookups using CallerID Superfecta, you can enable it under the Other tab before saving your setup and reloading your dialplan.

    Configuring a Skyetel Outbound Route

    If Skyetel will be your primary provider, you can use both 10-digit and 11-digit dialing to process outbound calls through your Skyetel account. From the GUI, choose Connectivity -> Outbound Routes -> Add Outbound Route. For the setup, we recommend the following using the CallerID Number you wish to associate with your outbound calls through Skyetel:

    Enter the Dial Patterns under the Dial Patterns tab before saving your outbound route. Here’s what you would enter for 10-digit and 11-digit dialing. If you want to require a dialing prefix to use the Skyetel Outbound Route, enter it in the Prefix field for both dial strings.

    There are a million ways to design outbound calling schemes on PBXs with multiple trunks. One of the simplest ways is to use no dial prefix for the primary trunk and then use dialing prefixes for the remaining trunks.

    Another outbound calling scheme would be to assign specific DIDs to individual extensions on your PBX. Here you could use NXXNXXXXXX with the 1 Prepend as the Dial Pattern with every Outbound Route and change the Extension Number in the CallerID field of the Dial Pattern. With this setup, you’d need a separate Outbound Route for each group of extensions using a specific trunk on your PBX. Additional dial patterns can be added for each extension designated for a particular trunk. A lower priority Outbound Route then could be added without a CallerID entry to cover extensions that weren’t restricted or specified.

    HINT: Keep in mind that Outbound Routes are processed by FreePBX in top-down order. The first route with a matching dial pattern is the trunk that is selected to place the outbound call. No other outbound routes are ever used even if the call fails or the trunk is unavailable. To avoid failed calls, consider adding additional trunks to the Trunk Sequence in every outbound route. In summary, if you have multiple routes with the exact same dial pattern, then the match nearest to the top of the Outbound Route list wins. You can rearrange the order of the outbound routes by dragging them into any sequence desired.

    Audio Issues with Skyetel

    If you experience one-way or no audio on some calls, make sure you have filled in the NAT Settings section in the GUI under Settings -> Asterisk SIP Settings -> General. In addition to adding your external and internal IP addresses there, be sure to add your external IP address in /etc/asterisk/sip_general_custom.conf like the following example and restart Asterisk:

    externip=xxx.xxx.xxx.xxx
    

    If you’re using PJSIP trunks or extensions on your PBX, implement this fix as well.

    Receiving SMS Messages Through Skyetel

    Most Skyetel DIDs support SMS messaging. Once you have purchased one or more DIDs, you can edit each number and, under the SMS & MMS tab, you can redirect incoming SMS messages to an email or SMS destination of your choice using the following example:



    Sending SMS Messages Through Skyetel

    We’ve created a simple script that will let you send SMS messages from the Linux CLI using your Skyetel DIDs. In order to send SMS messages, you first will need to create an SID key and password in the Skyetel portal. From the Settings icon, choose API Keys -> Create. Once the credentials appear, copy both your SID and Password. Then click SAVE.

    Next, from the Linux CLI, issue the following commands to download the sms-skyetel script into your /root folder. Then edit the file and insert your SID, secret, and DID credentials in the fields at the top of the script. Save the file, and you’re all set.

    cd /root
    wget http://incrediblepbx.com/sms-skyetel
    chmod +x sms-skyetel
    nano -w sms-skyetel
    

    To send an SMS message, use the following syntax where 18005551212 is the 11-digit SMS destination: sms-skyetel 18005551212 "Some message"

    Using Gmail as a SmartHost for SendMail

    Many Internet service providers block email transmissions from downstream servers (that’s you) to reduce spam. The simple solution is to use your Gmail account as a smarthost for SendMail. Here’s how. Log into your server as root and issue the following commands:

    yum -y install sendmail-cf
    cd /etc/mail
    hostname -f > genericsdomain
    touch genericstable
    makemap -r hash genericstable.db < genericstable
    mv sendmail.mc sendmail.mc.original
    wget http://incrediblepbx.com/sendmail.mc.gmail
    cp sendmail.mc.gmail sendmail.mc
    mkdir -p auth
    chmod 700 auth
    cd auth
    echo AuthInfo:smtp.gmail.com \\"U:smmsp\\" \\"I:user_id\\" \\"P:password\\" \\"M:PLAIN\\" > client-info
    echo AuthInfo:smtp.gmail.com:587 \\"U:smmsp\\" \\"I:user_id\\" \\"P:password\\" \\"M:PLAIN\\" >> client-info
    echo AuthInfo:smtp.gmail.com:465 \\"U:smmsp\\" \\"I:user_id\\" \\"P:password\\" \\"M:PLAIN\\" >> client-info
    nano -w client-info
    

    When the nano editor opens the client-info file, change the 3 user_id entries to your Gmail account name without @gmail.com and change the 3 password entries to your actual Gmail password. Save the file: Ctrl-X, Y, then ENTER.

    Now issue the following commands:

    chmod 600 client-info
    makemap -r hash client-info.db < client-info
    cd ..
    make
    service sendmail restart
    

    Finally, send yourself a test message. Be sure to check your spam folder!

     echo "test" | mail -s testmessage yourname@yourdomain.com
    

    Check mail success with: tail /var/log/maillog. If you have trouble getting a successful Gmail registration (especially if you have previously used this Google account from a different IP address), try this Google Voice Reset Procedure. It usually fixes connectivity problems. If it still doesn’t work, enable Less Secure Apps using this Google tool.

    Originally published: Monday, November 13, 2017  Updated: Saturday, March 23, 2019


    News Flash: Turn Incredible PBX into a Fault-Tolerant HA Platform for $1/Month

    Continue Reading: Configuring Extensions, Trunks & Routes

    Don't Miss: Incredible PBX Application User's Guide covering the 31 Whole Enchilada apps

    Check out the new Incredible PBX 13-13 ISO. Complete tutorial available here.


    Support Issues. With any application as sophisticated as this one, you're bound to have questions. Blog comments are a difficult place to address support issues although we welcome general comments about our articles and software. If you have particular support issues, we encourage you to get actively involved in the PBX in a Flash Forum. It's the best Asterisk tech support site in the business, and it's all free! Please have a look and post your support questions there. Unlike some forums, the PIAF Forum is extremely friendly and is supported by literally hundreds of Asterisk gurus and thousands of users just like you. You won't have to wait long for an answer to your question.



    Need help with Asterisk? Visit the VoIP-info Forum.


     

    Special Thanks to Our Generous Sponsors


    FULL DISCLOSURE: ClearlyIP, Skyetel, Vitelity, DigitalOcean, Vultr, VoIP.ms, 3CX, Sangoma, TelecomsXchange and VitalPBX have provided financial support to Nerd Vittles and our open source projects through advertising, referral revenue, and/or merchandise. As an Amazon Associate and Best Buy Affiliate, we also earn from qualifying purchases. We’ve chosen these providers not the other way around. Our decisions are based upon their corporate reputation and the quality of their offerings and pricing. Our recommendations regarding technology are reached without regard to financial compensation except in situations in which comparable products at comparable pricing are available from multiple sources. In this limited case, we support our sponsors because our sponsors support us.

    BOGO Bonaza: Enjoy state-of-the-art VoIP service with a $10 credit and half-price SIP service on up to $500 of Skyetel trunking with free number porting when you fund your Skyetel account. No limits on number of simultaneous calls. Quadruple data center redundancy. $25 monthly minimum spend required. Tutorial and sign up details are here.

    The lynchpin of Incredible PBX 2020 and beyond is ClearlyIP components which bring management of FreePBX modules and SIP phone integration to a level never before available with any other Asterisk distribution. And now you can configure and reconfigure your new Incredible PBX phones from the convenience of the Incredible PBX GUI.

    VitalPBX is perhaps the fastest-growing PBX offering based upon Asterisk with an installed presence in more than 100 countries worldwide. VitalPBX has generously provided a customized White Label version of Incredible PBX tailored for use with all Incredible PBX and VitalPBX custom applications. Follow this link for a free test drive!
     

    Special Thanks to Vitelity. Vitelity is now Voyant Communications and has halted new registrations for the time being. Our special thanks to Vitelity for their unwavering financial support over many years and to the many Nerd Vittles readers who continue to enjoy the benefits of their service offerings. We will keep everyone posted on further developments.
     



    1. Some of our links refer users to Amazon or other service providers when we find their prices are competitive for the recommended products. Nerd Vittles receives a small referral fee from these providers to help cover the costs of our blog. We never recommend particular products solely to generate commissions. However, when pricing is comparable or availability is favorable, we support these providers because they support us. []
    2. In the unlikely event that Skyetel cannot provide a 10% reduction in your current origination rate and/or DID costs, Skyetel will give you an additional $50 credit to use with the Skyetel service. []

    Keep On Trunkin’: Free International VoIP Calling Returns



    Today we’re taking a fresh look at the international calling marketplace by updating the best VoIP deals available. FreeVoipDeal once again takes the prize with the best selection of "free" international calling destinations at the lowest prices. Below we’ll provide a quick tutorial to transform your Incredible PBX server into an international calling platform at minimal cost.

    Here’s How It Works. For every 10 euros ($10.72) you deposit into your account, you’ll get 300 minutes a week of free calls to a specific list of countries for 120 days. After you exhaust your free minutes, calls to the "free" countries revert to their standard VoIP rates. You can also call anywhere else in the world at very reasonable per minute rates that compare favorably with other SIP providers around the world. The beauty of a PBX and SIP trunks is you can mix and match as many providers as you like to take advantage of favorable calling rates to multiple countries. We’ll walk you through the FreeVoipDeal trunk setup below.

    Betamax 101. There are a few things you need to know about the so-called Betamax VoIP services up front. Most importantly, they change rates and free countries more frequently than college kids change partners. The calling rate to some country from some Betamax provider changes almost every day because Betamax has dozens of companies offering similar services with differing rates and freebies. Here’s an very old spreadsheet that will give you a good idea of what you’re up against. Don’t depend upon it for the current rates. You’ll need to visit the actual site(s) for their current rate tables or visit this site (not) maintained by Betamax for a country-by-country comparison by provider. That’s another way of saying DON’T BLAME US IF YOUR 3-HOUR CALL TO ANTARCTICA CHANGED FROM 20¢ PER MINUTE TO $1 PER MINUTE OVERNIGHT. IT PROBABLY WON’T, BUT IT MIGHT.

    One other word of warning. Some Betamax sites (marked with a red asterisk in the Betamax country table) such as powervoip.com have good calling rates, but they tack on a 3.9¢ connection fee to every call. If you make lengthy calls, it’s not a big deal. If you make numerous short calls, it drives your discount calling rates through the roof. Before making a lengthy call to a remote destination, spend the two minutes it takes to look up the current rate on the actual Betamax web site and take a snapshot of the page for your records. Here’s another tip. If you make frequent calls to Antarctica, spend a little time doing your homework. Review the latest Betamax spreadsheet to track down the cheapest rates. Then double-check the actual sites for the current rates. There’s a $100+ difference in the cost of a 3-hour call at €.20/minute from some Betamax sites versus the €.70/minute rate at some other Betamax sites. THIS OFTEN CHANGES! HINT: Don’t use FreeVoipDeal for Antarctica.

    Today we’ll be focusing on the company we’ve tracked for many years, FreeVoipDeal.com. Except for the domain name, the setup with other Betamax providers is similar but not identical. And, of course, you’ll have to kick in another deposit to make free calls from each site. The length of the Freebie period also may vary so read the terms carefully. FreeVoipDeal actually hasn’t changed much since our first visit about five years ago. In fact, we still had most of our ten euro credit so we could play all we wanted even though the calls were no longer free since our four month window has long since expired.

    Here’s the February 23, 2019 Freebie list by country. Don’t depend upon it! Check their actual web site or the Betamax country summary for current freebies and current rates. Here’s a great trick to remember. When you visit the FreeVoipDeal Rate Table, click on the Out of Minutes tab for a quick listing of all the Free Calling Countries as well as the rates once you’ve used up your four months or 300 weekly minutes of free calls. With few exceptions, most of the "free countries" still have a rate of 1.1¢ per minute even after you run out of minutes.

     

    How Free International Calling Works

    Placing international calls through FreeVoipDeal can be done in a number of ways. That’s the real beauty of a PBX. First, you can either load an app to make the calls if your smartphone or PC supports it. With Incredible PBX, you can use a SIP phone to dial a FreeVoipDeal number directly through your PBX, or you can dial a DISA access number or SIP URI from anywhere to connect to your PBX and then enter your DISA password after which you will get a second dial tone to place an international call using your FreeVoipDeal trunk. The beauty of the DISA approach is you can call into your PBX from any telephone to place free or dirt cheap international calls.

    Using Incredible PBX 13 and DISA for Calling

    On the Incredible PBX platform, you can use the DISA application to provide secondary dialtone for processing international calls. A phone number and trunk will receive incoming calls bound for DISA from your cellphone. An inbound route will only forward incoming calls to DISA that match your cellphone number. A secondary trunk from FreeVoipDeal or other providers will be used to process outgoing international calls that are dialed using DISA. We’ll create an outbound route or rule for every country to which you want to authorize international calling. Each of these outbound routes will point to the least expensive (or free) trunk to complete the call. In the VoIP world, you actually could have dozens of outbound trunks that handle international calls based upon the country codes of each international call. This lets you take advantage of the best calling rates for each country. We will block international calls to country codes not specifically authorized.

    Just to restate the obvious, a misconfigured DISA application that allows the world to make international calls on your nickel can get expensive quickly. We’ll protect today’s DISA setup for Incredible PBX with three layers of protection. First, we’ll require that the CallerID of the incoming call match your cellphone number. While this isn’t failsafe since CallerID numbers can be spoofed, it does reduce the risk considerably. Second, to make DISA calls, you’ll have to know the incoming phone number or SIP URI managing DISA on your PBX. And third, you’ll have to enter the correct DISA PIN before being prompted for an international number to dial. Without all three, nobody gets to make an international call on your nickel. Just remember, compromising DISA on your PBX is just as risky as handing out your credit card to a stranger so follow the setup steps below carefully. And then TEST, TEST, TEST to make sure strangers can’t access your DISA setup. We’ll show you how.

    Here’s an overview of the DISA setup drill once you have Incredible PBX running. We’ll walk through each of the six steps below. Don’t get frustrated. There are a number of steps, but none of them are difficult. Just pretend you’re baking cookies and don’t skip any steps.

    1. Set Up Your Trunk to Process Incoming DISA Calls
    2. Set Up Your Trunk(s) to Process Outgoing International Calls
    3. Configure DISA with a Very Secure Password
    4. Configure an Inbound Route to Limit Incoming DISA Calls to Your Cellphone #
    5. Configure an Outbound Route for Each International Country Code
    6. Test, Test, Test

    1. Setting Up Incoming DISA Call Trunk

    Before you can make calls to your PBX, it’ll need a phone number (known affectionately as a DID). As installed, Incredible PBX includes preconfigured SIP trunks from about a dozen SIP providers. All you’ll need is credentials from the company you wish to use. You can obtain a free DID here. To obtain your own SIP URI, read our tutorial.

    2. Trunk Setup for International Calling

    We’re going to walk you through setting up a trunk with FreeVoipDeal to handle free international calls to certain countries documented above. This may not be the best fit for you depending upon the international destinations you wish to call. Figure that out first! Then adjust the trunk settings below to match each SIP provider trunk you wish to create. There’s no limit to the number you can have. And, with most of these providers, you pay by the minute for international calls anyway so there is no harm in configuring multiple trunks to take advantage of the best rates calling the countries of your choice. The same applies to all-you-can-eat and "free" trunks except there are varying fees for using the services so you’re probably not going to want a dozen of them even if some of the calls are free after making a periodic deposit. Start with the pink and green entries on the old spreadsheet we referenced for the cheapest historical rates and then visit the actual sites and read the fine print.

    To add new trunks to Incredible PBX, use a browser to access the IP address of your server. Login with the default username of admin and the password that you set when your install completed. You can change it with the admin-pw-change script in /root. Once the dashboard appears, click the Connectivity tab and choose Trunks -> Add SIP (chan_sip) Trunk.

    For Trunk Name, enter FreeVoipDeal. In the Dialed Number Manipulation Rules section, add a rule for each country code you wish to activate. You can decipher the Country Code for any country at this link. For example, for the United Kingdom, you’d enter a rule like this where 44 is the Country Code and each X represents a required digit in the local area code and phone number. The trailing period means the number includes one or more additional digits. NOTE: DISA calls will not have to be prefixed with 011 to place international calls. Just enter the country code and number to be called. And, we are told that only 441, 442, and perhaps 443 calls to the U.K. are free since those are the designated landline prefixes.




    If there are other countries, you wish to support with this trunk provider, you’d click Add More Dial Pattern Fields and insert an additional rule for each country following the example above. If you’ll be using this trunk to make calls in the U.S. and Canada as well, the correct Match Pattern is 1NXXNXXXXXX, and calls will need to be dialed with the 1 to avoid conflicts with international dialing.

    Next, we need to enter the Outgoing Settings. For the Trunk Name, enter freevoipdeal. Clear out the entries in Peer Details section and enter the following using your actual FreeVoipDeal credentials for yourusername and yourpassword:

    authuser=yourusername
    username=yourusername
    secret=yourpassword
    type=peer
    qualify=yes
    nat=yes
    insecure=port,invite
    host=sip.freevoipdeal.com
    fromdomain=sip.freevoipdeal.com
    dtmfmode=auto
    disallow=all
    canreinvite=no
    allow=alaw&ulaw
    

    Finally, clear out the default entries in User Details and click the Submit Changes button and then red Apply Config button to save your new trunk.

    Spoofing Your CallerID. When setting up your FreeVoipDeal account, you can set up one or more numbers to use as your CallerID number on FreeVoipDeal calls. You simply verify the number with a code sent by SMS or phone call from their service. Once you’ve gone through the verification procedure, you can spoof the outbound CallerID on FreeVoipDeal calls using your actual cellphone number. Just add the following entries to your Trunk settings replacing 9991234567 with your cellphone number. Special thanks to @hillclimber on the PIAF Forum for the tip.

    fromuser=0019991234567
    sendrpid=yes
    

    3. Configuring DISA for International Calling

    In the Incredible PBX GUI, we’ll set up DISA by clicking the Applications tab and choosing DISA. Add your new DISA configuration by following this sample. Use a VERY secure password. It’s your phone bill. Once you’ve finished, click the Submit Changes button and then the Apply Config button to save your new DISA setup.



    4. Inbound Routing of DISA Calls

    Here’s where we lock down your setup so that Incredible PBX only accepts DISA calls from your cellphone number. If you want to allow additional people to use your DISA setup or if you have multiple cellphones, then simply create multiple inbound routes with the 10-digit numbers of each phone to be supported.

    In the Incredible PBX GUI, we’ll set up a new Inbound Route by clicking the Connectivity tab and choosing Inbound Routes. If you plan to support multiple phones, then create multiple inbound routes and give each of them a unique Description and CallerID Number that matches the phone number of the cellphone to be supported. Be sure to check the CID Priority Route checkbox and set the correct Destination for your incoming calls. Just fill in the blanks appropriately using this template as a guide. Once you’ve finished, click the Submit button and then the Apply Config button to save your new Inbound Route.



    5. Outbound Routing by Country Code

    The DISA application is going to obtain the phone number to be dialed and will pass that to the Outbound Routes module. The job of the Outbound Routes module is to examine the phone number passed to it from DISA to figure out which trunk to use to make the outbound call. It then will pass the call to the appropriate trunk which sends the outgoing call on its way to the destination.

    For each Dialed Number Manipulation Rule in every Trunk that you set up in Step #2 above, you’ll need a matching Outbound Route if your PBX is used to place calls using multiple trunks. If you’re only using one provider for all of your outbound calls, then we can use a more generic Outbound Route. It’s always a good idea to create the one-to-one match between Outbound Routes and Trunks to make certain that outbound calls are sent to the correct Trunk for processing. So let’s do that using the U.K. trunk we created above.

    In the Incredible PBX GUI, we’ll set up a new Outbound Route by clicking the Connectivity tab and choosing Outbound Routes. When the template appears, notice in the far right column that there’s a listing of all your existing Outbound Routes. Calls are actually processed sequentially using the order that these Outbound Routes appear in the list. If there’s no number match in the top route, processing drops to the next route in the list until there is a match AND a successful connection. You can adjust the sequence by dragging the Outbound Routes to a different position in the priority list.

    It’s important to use specificity in your Outbound Routes (especially with International calling) to make certain that a call isn’t inadvertently processed by some other trunk. The easiest way to do this is to require the Outbound Route Match Pattern for U.K. calls to be at least 11 digits, e.g. 44XXXXXXXX. (the trailing period is important in that it requires at least one more digit for a match). And we can force a Hangup if the FreeVoipDeal trunk is not available for some reason by adjusting the Destination on Congestion setting. This keeps the call routing from dropping down to the next available Outbound Route in the list if FreeVoipDeal happens to be off-line at some point. So our Outbound Route for U.K. calls should look something like this:



    The final step is to move the new Outbound Route for U.K. calls to the top of the Outbound Routes listing in the right column to assure that it is processed first. Once you’ve done that, click the Submit Changes button and then the Apply Config button to save your new Outbound Route AND the adjusted Outbound Route Priority List.

    Another alternative in creating Outbound Routes is to use a Dial Prefix that never matches a real phone number to direct calls to a particular trunk. For example, you might use *8 as a dial prefix for FreeVoipDeal calls. By placing *8 in the Prefix column of the Dial Pattern, it will get stripped off before the number is actually passed to the FreeVoipDeal trunk for processing. We actually prefer this setup because it adds an additional layer of security for international calls. If someone were to break into your DISA application by knowing your cellphone number AND your DID AND your DISA password, it’s unlikely they’d also know to prefix outgoing international calls with some arbitrary dial prefix. Just don’t use *8 in case they’re a Nerd Vittles reader. 😉

    6. Test, Test, Test!

    The easiest way to test the new setup is to place a couple of calls and to watch the Asterisk CLI (asterisk -rvvvvvvvvvv) and see how the calls are processed and who answers at the other end. Then you can apologize for reaching the wrong number.

    You can make up your own test methodology, but here’s one that works for us. There are several tests you need to make. First, call your Incredible PBX DID from your authorized cellphone and enter a correct DISA password to see if you get dial tone to make an international call. Then repeat the drill with an invalid password and make sure you don’t get a dial tone. Next, call your Incredible PBX DID from a phone other than your authorized cellphone. You should not get a prompt for a DISA password. Finally, we use the first three digits of a U.K. number to identify a matching NANPA area code. Then, we find hotels in the two matching cities. For example, one might attempt to call a hotel in Bath, England (44 1… ……) and a hotel in Bermuda (441-…-….). The U.K. call should go through, and the Bermuda call should fail. If you pass all three tests with flying colors, you’re good to go.

    Using FreeVoipDeal’s MobileVoIP App

    FreeVoipDeal also offers a MobileVoIP app that can be used directly on your smartphone (Android, iOS, and Windows phone versions available) using any Wi-Fi, UMTS, 4G/LTE, 3G, GPRS or EDGE connection. The drawback is the lack of the three extra layers of security protection that Incredible PBX using DISA offers. MobileVOIP lets you log in with your registered Betamax credentials and offers the option to use your existing VoIP credit from your smartphone. The downside is that anyone with the app and your credentials can call anywhere and talk for as long as they like on your nickel using any of your registered CallerIDs. You’ve been warned. For more information or to download the app for your mobile device, go here. Remember to dial the "+1″ country code prefix for U.S./Canada calls.

    Originally published: Monday, April 24, 2017  Updated: Monday, February 25, 2019


    Support Issues. With any application as sophisticated as this one, you’re bound to have questions. Blog comments are a terrible place to handle support issues although we welcome general comments about our articles and software. If you have particular support issues, we encourage you to get actively involved in the PBX in a Flash Forums. It’s the best Asterisk tech support site in the business, and it’s all free! Please have a look and post your support questions there. Unlike some forums, ours is extremely friendly and is supported by literally hundreds of Asterisk gurus and thousands of users just like you. You won’t have to wait long for an answer to your question.



    Need help with Asterisk? Visit the VoIP-info Forum.


     

    Special Thanks to Our Generous Sponsors


    FULL DISCLOSURE: ClearlyIP, Skyetel, Vitelity, DigitalOcean, Vultr, VoIP.ms, 3CX, Sangoma, TelecomsXchange and VitalPBX have provided financial support to Nerd Vittles and our open source projects through advertising, referral revenue, and/or merchandise. As an Amazon Associate and Best Buy Affiliate, we also earn from qualifying purchases. We’ve chosen these providers not the other way around. Our decisions are based upon their corporate reputation and the quality of their offerings and pricing. Our recommendations regarding technology are reached without regard to financial compensation except in situations in which comparable products at comparable pricing are available from multiple sources. In this limited case, we support our sponsors because our sponsors support us.

    BOGO Bonaza: Enjoy state-of-the-art VoIP service with a $10 credit and half-price SIP service on up to $500 of Skyetel trunking with free number porting when you fund your Skyetel account. No limits on number of simultaneous calls. Quadruple data center redundancy. $25 monthly minimum spend required. Tutorial and sign up details are here.

    The lynchpin of Incredible PBX 2020 and beyond is ClearlyIP components which bring management of FreePBX modules and SIP phone integration to a level never before available with any other Asterisk distribution. And now you can configure and reconfigure your new Incredible PBX phones from the convenience of the Incredible PBX GUI.

    VitalPBX is perhaps the fastest-growing PBX offering based upon Asterisk with an installed presence in more than 100 countries worldwide. VitalPBX has generously provided a customized White Label version of Incredible PBX tailored for use with all Incredible PBX and VitalPBX custom applications. Follow this link for a free test drive!
     

    Special Thanks to Vitelity. Vitelity is now Voyant Communications and has halted new registrations for the time being. Our special thanks to Vitelity for their unwavering financial support over many years and to the many Nerd Vittles readers who continue to enjoy the benefits of their service offerings. We will keep everyone posted on further developments.
     



    Some Recent Nerd Vittles Articles of Interest…

    Big Kahuna: 70 New FreePBX GPL Modules for Incredible PBX



    We don’t change the mix of FreePBX® GPL modules in Incredible PBX® 13-13 often although you can easily add or update any of particular interest at any time using the gpl-install scripts included in the distribution. So we’re excited to introduce the 2019 collection of 70 FreePBX GPL modules for those that want to keep their Asterisk® PBX platform loaded with the latest and greatest. We’ve included a batch installer which means ALL of the existing modules get updated with the latest releases from GitHub. Depending upon the speed of your Internet connection, it’s a 5 or 10-minute procedure. Schedule it for a time when the PBX is idle.

    Upgrading the FreePBX GPL Modules

    The upgrade procedure couldn’t be easier. Log into your server as root. We recommend you make a backup first using the incrediblebackup script in /root. Next, make sure you have at least 50MB of free disk space: df -h. Then issue these commands and have a cup of coffee:

    cd /tmp
    wget http://incrediblepbx.com/modules13.tar.gz
    tar zxvf modules13.tar.gz
    rm -f modules13.tar.gz
    cd modules13
    ./update-modules.sh
    




    When you return, your Incredible PBX 13-13 server will be all shiny and new. You can review the license terms for each module by referencing the table below and calling up the GPL license provisions with a browser pointed to http://server-IP/admin/licenses.



    FreePBX GPL Modules Documentation

    The FreePBX Dev Team has generously provided excellent documentation for all of the modules. We have arranged them in the same order as the GUI’s menus for ease of use.

       

    Admin Modules

    Administrators Module
    Asterisk CLI Module
    Asterisk Phonebook Module
    Backup and Restore Module
    Blacklist Module
    Bulk Handler
    CID Superfecta
    CallerID Lookup Sources
    Certificate Management Module
    Config Edit
    Custom Destinations Module
    Custom Extensions Module
    Feature Codes Module
    Module Admin Module
    Phone Restart Module
    Presence State Module
    REST API
    Sound Languages
    System Recordings Module
    User Management Module

    Applications Modules

    Announcements Module
    Call Flow Control Module
    Call Recording Module
    Callback Module
    Conferences Module
    DISA Module
    Directory Module
    Extensions Module
    Follow Me Module
    IVR Module
    Languages Module
    Misc Applications Module
    Misc Destinations Module
    Paging and Intercom Module
    Parking Module
    Queue Priorities Module
    Queues Module
    Ring Groups Module
    Set CallerID Module
    Text to Speech Module
    Time Conditions Module
    Time Groups Module
    Voicemail Blasting Module
    Wakeup Calls Module

    Connectivity Modules

    DAHDI Channel DIDs
    Inbound Routes Module
    OSS End Point Manager (Disabled)
    Outbound Routes Module
    Trunks Module

    Dashboard

    PBX System Status

    Reports Modules

    Asterisk Info Module
    Asterisk Logfiles
    CDR Reports Module
    Call Event Logging (CEL) Module
    Print Extensions
    Rest API Report
    Weak Password Detection

    Settings Modules

    Advanced Settings
    Asterisk IAX Settings
    Asterisk Logfile Settings
    Asterisk Manager Interface
    Asterisk SIP Settings
    Extension Settings
    Fax Configuration
    Music on Hold Module
    Pin Sets
    Route Congestion Messages
    Text to Speech Engines Module
    Voicemail Admin

    Third Party Addons

    AsteriDex
    Reminders

    UCP

    User Control Panel

    Installing OSS Endpoint Manager

    If you have dozens of SIP phones to configure, then you’ll appreciate Andrew Nagy’s terrific OSS Endpoint Manager Module. Here’s how to install it once your Incredible PBX 13-13 server is updated with the new modules above:

    cd /
    wget http://incrediblepbx.com/epm.tar.gz
    tar zxvf epm.tar.gz
    ./install-epm.sh
    

    You will also need to install and configure a TFTP server. Here’s the CentOS procedure:

    cd /root
    wget http://incrediblepbx.com/setup-tftp
    chmod +x setup-tftp
    ./setup-tftp
    

    Pay particular attention to the firewall instructions which display at the end of the TFTP install procedure. Complete documentation for OSS Endpoint Manager is available here. Enjoy!

    Originally published: Monday, February 18, 2019



    Need help with Asterisk? Visit the VoIP-info Forum.


     

    Special Thanks to Our Generous Sponsors


    FULL DISCLOSURE: ClearlyIP, Skyetel, Vitelity, DigitalOcean, Vultr, VoIP.ms, 3CX, Sangoma, TelecomsXchange and VitalPBX have provided financial support to Nerd Vittles and our open source projects through advertising, referral revenue, and/or merchandise. As an Amazon Associate and Best Buy Affiliate, we also earn from qualifying purchases. We’ve chosen these providers not the other way around. Our decisions are based upon their corporate reputation and the quality of their offerings and pricing. Our recommendations regarding technology are reached without regard to financial compensation except in situations in which comparable products at comparable pricing are available from multiple sources. In this limited case, we support our sponsors because our sponsors support us.

    BOGO Bonaza: Enjoy state-of-the-art VoIP service with a $10 credit and half-price SIP service on up to $500 of Skyetel trunking with free number porting when you fund your Skyetel account. No limits on number of simultaneous calls. Quadruple data center redundancy. $25 monthly minimum spend required. Tutorial and sign up details are here.

    The lynchpin of Incredible PBX 2020 and beyond is ClearlyIP components which bring management of FreePBX modules and SIP phone integration to a level never before available with any other Asterisk distribution. And now you can configure and reconfigure your new Incredible PBX phones from the convenience of the Incredible PBX GUI.

    VitalPBX is perhaps the fastest-growing PBX offering based upon Asterisk with an installed presence in more than 100 countries worldwide. VitalPBX has generously provided a customized White Label version of Incredible PBX tailored for use with all Incredible PBX and VitalPBX custom applications. Follow this link for a free test drive!
     

    Special Thanks to Vitelity. Vitelity is now Voyant Communications and has halted new registrations for the time being. Our special thanks to Vitelity for their unwavering financial support over many years and to the many Nerd Vittles readers who continue to enjoy the benefits of their service offerings. We will keep everyone posted on further developments.
     



    Adding SIP URI Dialing to Asterisk for Free Worldwide Calling



    Since giving up on Google Voice, we’ve been extolling the virtues of SIP URI dialing which gives you unlimited free calls to anyone else in the world that happens to have their own SIP URI address. SIP URIs look very much like email addresses except they’re used to share phone conversations instead of email messages. And, as we’ve mentioned previously, if everyone in the world had their own SIP URI, paying for phone calls would become a thing of the past. We hope you’ll join us in making that happen. As a fallback, give our $50 credit at Skyetel a try.

    One of the drawbacks of Asterisk® PBXs using the FreePBX® GUI has been the inability to place outbound SIP URI calls from SIP phones registered as extensions on the PBX. Today we first want to address that shortcoming. Our SIP URI dialing solution for Asterisk should work with any FreePBX-based implementation including Incredible PBX® and Issabel as well as on Raspberry Pi platforms. We’ll wrap things up by providing some tips on obtaining and deploying your own SIP URI at little or no cost and pointing you to some excellent resources that facilitate calling millions of SIP phones around the world at zero cost. All you need is an Internet connection, and we’ll point you to a terrific softphone to begin your adventure.

    Let’s begin by examining why SIP URI dialing is a problem with FreePBX. The reason is pretty simple. FreePBX interprets dial strings by matching them against some rules to determine whether you’re making an internal call or a call outside your PBX. It matches internal calls against a list of available internal extensions. External calls are matched against rules defined in your outbound routes which are associated with trunks. Since SIP URI calls don’t match any extension or outbound route, the caller receives a congestion tone.

    The traditional workaround has been to define a custom extension using the FreePBX GUI which points to a SIP URI. Then the user can dial the custom extension, and the call will be routed to the defined SIP URI. These custom extensions also can be defined in extensions_custom.conf within the from-internal-custom context. For example, the following dialplan code would let users dial 411 to reach AT&T’s Toll-Free Directory Assistance: exten => 411,1,18005551212@switch.starcompartners.com.

    But there’s a better way. Wouldn’t it be nice to be able to dial any SIP URI from a softphone or to store SIP URI addresses in the phonebook of your SIP phone?1 Well, now you can. Before we actually put the dialplan code in place, let us explain how this will work. First, FreePBX still needs to be able to distinguish a SIP URI call from a "regular call." The reason this gets tricky is because Asterisk typically throws away the destination hostname when you place a call. For example, calls to 8005551212 and 8005551212@sip2sip.info are processed by Asterisk in exactly the same way, i.e. dropping the host address before dialing.

    Using the new dialplan code in the next section, here’s how calls will be processed:

    User dials                    Asterisk processes call as
    ------------------------      ---------------------------------------------
    701                           internal call to local extension 701
    4045551212                    external call using NXXNXXXXXX outbound route
    2233435945@sip2sip.info       SIP URI call to Lenny by acct at sip2sip.info
    lennybgood@sip2sip.info       SIP URI call to alias lennybgood@sip2sip.info 
    

    Cautionary Notes: Our code should work fine with any Asterisk 13 and FreePBX 13 or Incredible PBX deployment on any Linux platform; however, with servers other than Incredible PBX, make sure you have added the following entries to sip_general_custom.conf, or you can configure them in the GUI by making the changes in Settings -> Asterisk SIP Settings -> Chan SIP Settings:

    srvlookup=yes
    allowguest=yes
    

    You also need to test a traditional outbound call (e.g. 8005551212) immediately after you finish the install procedure. Monitor the Asterisk CLI (asterisk -rvvvvvvvvvv) and observe the first few lines of the log after you place a call. The second line will show SIPDOMAIN which should be either the FQDN of your server or an IP address depending upon how you registered your softphone extension. The first line should display the MyDomain variable. If it is empty or doesn’t match the SIPDOMAIN entry, the outbound call will fail. To fix it, add an entry to the Asterisk database from the Asterisk CLI using syntax like the following: database put MyDomain FQDN 10.0.0.11 or database put MyDomain FQDN sip.me.com where 10.0.0.11 or sip.me.com matches the SIPDOMAIN entry shown on the second line. Then retry your outbound call, and it should complete successfully. We’ve tested this back to the early Asterisk 11 days with FreePBX 2.11 without any problems. If your calls still fail, then you will probably need to remove the new code from your platform until you upgrade to a more current version of Asterisk and FreePBX. The code hasn’t been tested with FreePBX 14 and 15.

    Finally, you may want to manually set the CallerID for your outgoing SIP URI calls. From the Asterisk CLI, issue a command for every extension from which you will be placing SIP URI calls, e.g. extension 701 syntax: database put 701 user_sipname "Nerd Uno"

    Enabling SIP URI Dialing with FreePBX

    To enable SIP URI dialing from phones registered with your Asterisk PBX, we’ll modify the dialplan in order to detect SIP URI dial strings entered into a softphone or retrieved from a phonebook associated with almost any SIP phone. When a SIP URI dial string is detected, we’ll send the call out as requested rather than passing the call through the outbound routes and trunks associated with your PBX. All of this dialplan code is open source and is licensed pursuant to the GPL2 license.

    SECURITY ALERT: Never use the SIP URI MOD on a server with a publicly-exposed SIP port as it is possible for some nefarious individual to spoof your FQDN in the headers of a SIP packet and easily gain outbound calling access using your server’s trunk credentials.

    FEB. 21 UPDATE: There was a bug in the original code which caused some internal calls to fail including calls to a DISA extension. Simply install the application again, and it will overwrite the previous version.

    MAR. 5 UPDATE: A bug was discovered in previous releases that treated 911 and 933 calls as internal calls when, in fact, they should have been routed out using your outbound trunks. Simply install the application again, and it will overwrite the previous version.

    MAR. 13 ALERT: This software is not compatible with the Debian, Raspbian, and Ubuntu platforms.

    To begin or update your installation, log in to your PBX as root using SSH or Putty and issue these commands:

    cd /tmp
    wget http://incrediblepbx.com/sipuri-mod.tar.gz
    tar zxvf sipuri-mod.tar.gz
    rm -f sipuri-mod.tar.gz
    ./install-sip-uri-mod.sh
    

    Obtaining Your Own SIP URI

    There are a number of ways to obtain your own SIP URI. Perhaps the easiest is to set up the open Incredible PBX cloud platform that we introduced several weeks ago. Then you can create as many SIP URIs as you like, and they can be used to perform any task that’s available with Asterisk. If you’re not quite ready to make that leap, a free or almost free SIP URI is available from the following sources. VoIP.ms provides a SIP URI for every subaccount you create. Just set up an internal extension number for the subaccount, and that becomes a SIP URI to connect back to your registered server or SIP phone. In the alternative, VoIP.ms will also provide you with a free iNUM DID which can be reached at the following IP address: 81.201.82.50. CallCentric provides a SIP URI matching your account number which can be reached @in.callcentric.com. CallCentric will also provide you with a free iNUM DID which can be reached at the following IP address: 81.201.82.50. LocalPhone provides the same two options as CallCentric: you can be reached by your account number @localphone.com. Or the LocalPhone-assigned iNUM DID can be reached @81.201.82.50. Then there’s pbxes.org. Your account name can be used for SIP URI access @pbxes.org. And, of course, if you’re a 3CX user, you can set up a SIP URI for each extension on your PBX. Just navigate to the Options tab of the desired extension(s) and enter a unique SIP ID for each extension. The SIP URI becomes SIPID@YOUR-3CX-FQDN. SIP URI calls to 3CX Clients on smartphones are also free! This list is not exhaustive. There are now more than 2,000 VoIP networks that support SIP URI access. Using a SIP URI dialing prefix, call any of the referenced networks @sipbbroker.com.2

    Choosing a SIP Phone or Softphone

    You can find dozens of recommendations for hardware-based SIP phones both on Nerd Vittles and the PIAF Forum. For today we’ll get you started with one of our favorite (free) softphones, YateClient. It’s available for almost all desktop platforms. Download YateClient from here. Run YateClient once you’ve installed it and enter the credentials for an extension on your PBX. You’ll need the IP address of your server plus your extension number and its password. Fill in the Yate Client template using the IP address of your PBX as well as your extension credentials. Click OK to save your entries.

    Once the Yate softphone shows that it is registered, try a test call to Lenny using one of the following SIP URIs: 2233435945@sip2sip.info or 883510001198938@81.201.82.50. Better yet, try out a few Incredible PBX samples from the public server we previously deployed:

    Yahoo News Headlines    - news@demo.nerdvittles.com
    Weather by Zip Code     - weather@demo.nerdvittles.com
    Directory Assistance    - information@demo.nerdvittles.com
    Lenny for Telemarketers - lenny@demo.nerdvittles.com
    

    Originally published: Monday, February 11, 2019



    Need help with Asterisk? Visit the VoIP-info Forum.


     

    Special Thanks to Our Generous Sponsors


    FULL DISCLOSURE: ClearlyIP, Skyetel, Vitelity, DigitalOcean, Vultr, VoIP.ms, 3CX, Sangoma, TelecomsXchange and VitalPBX have provided financial support to Nerd Vittles and our open source projects through advertising, referral revenue, and/or merchandise. As an Amazon Associate and Best Buy Affiliate, we also earn from qualifying purchases. We’ve chosen these providers not the other way around. Our decisions are based upon their corporate reputation and the quality of their offerings and pricing. Our recommendations regarding technology are reached without regard to financial compensation except in situations in which comparable products at comparable pricing are available from multiple sources. In this limited case, we support our sponsors because our sponsors support us.

    BOGO Bonaza: Enjoy state-of-the-art VoIP service with a $10 credit and half-price SIP service on up to $500 of Skyetel trunking with free number porting when you fund your Skyetel account. No limits on number of simultaneous calls. Quadruple data center redundancy. $25 monthly minimum spend required. Tutorial and sign up details are here.

    The lynchpin of Incredible PBX 2020 and beyond is ClearlyIP components which bring management of FreePBX modules and SIP phone integration to a level never before available with any other Asterisk distribution. And now you can configure and reconfigure your new Incredible PBX phones from the convenience of the Incredible PBX GUI.

    VitalPBX is perhaps the fastest-growing PBX offering based upon Asterisk with an installed presence in more than 100 countries worldwide. VitalPBX has generously provided a customized White Label version of Incredible PBX tailored for use with all Incredible PBX and VitalPBX custom applications. Follow this link for a free test drive!
     

    Special Thanks to Vitelity. Vitelity is now Voyant Communications and has halted new registrations for the time being. Our special thanks to Vitelity for their unwavering financial support over many years and to the many Nerd Vittles readers who continue to enjoy the benefits of their service offerings. We will keep everyone posted on further developments.
     



    1. Special thanks to Olivier Adler and voip-info.org for their early work on SIP URI dialing with Asterisk. []
    2. Some of our links refer users to sites or service providers when we find their prices are competitive for the recommended products. Nerd Vittles receives a small referral fee from these providers to help cover the costs of our blog. We never recommend particular products solely to generate commissions. []

    UC on Steroids: Incredible PBX for Issabel Joins the Cloud



    We’re pleased to introduce the 2019 edition of Incredible PBX® for Issabel featuring new VPS cloud provider support and one-minute setup for Skyetel SIP trunking. One of the limitations of Issabel 4 has been the required use of the ISO installer to deploy Asterisk® 13. This 2019 release addresses that limitation and lets you do a fully scripted install using one of our four recommended $7 to $15 a year VPS cloud providers.

    This new release includes our next generation Incredible PBX 13 platform with a preconfigured Travelin’ Man 3 firewall, additional text-to-speech engines (FLITE, GoogleTTS, PicoTTS, and IBM TTS), voice recognition with IBM’s state-of-the-art STT engine, turnkey trunks and extensions, SMS messaging, telephone reminders, turnkey fax support, an AsteriDex phone book with both voice and speed dialing, Wolfram Alpha, sample ODBC apps, and a boatload of dialplan code and AGI scripts to help anyone wanting to learn how to develop custom applications with Asterisk. This is one fantastic UC platform!



    Installing Issabel on a Cloud-Based VPS Platform

    If you wish to install Issabel 4 on a cloud-based OpenVZ server, here’s the drill. Start by creating a CentOS 7/64 platform. Once the platform is ready, log in to your server as root and immediately change your root password. Then execute the remaining commands in the order listed below. Don’t worry if you cannot access the Issabel web GUI when the install finishes. We’ll fix this up during the Incredible PBX install shortly. Now jump down to the Incredible PBX installation steps to continue.

    passwd
    yum -y install wget nano
    wget -O - http://repo.issabel.org/issabel4-netinstall.sh | bash
    yum -y erase asterisk
    yum -y install asterisk13
    reboot
    

    Installing Issabel with Asterisk 13.22.0 from ISO

    If you’re using your own hardware or a platform that lets you upload an ISO and deploy, begin by downloading the October 2, 2018 Issabel ISO from SourceForge. On the platform of your choice, install Issabel 4 specifying your Keyboard and Installation Destination with Asterisk 13 as your Software Selection. Add the Sangoma WANPIPE component if desired. Set your Root password and have a cup of coffee. After a reboot, you’ll be prompted to set your MySQL/MariaDB root password (must be passw0rd with a zero) and the admin password of your choice to login to the Issabel web GUI. Be sure to use the new October 2018 Issabel ISO for the base Issabel install. It includes support for Asterisk 13.22.0. We will update things from there as part of the new Incredible PBX install below.

    Installing Issabel with VirtualBox

    For those using VirtualBox, we’ve uploaded a new Issabel 4 .ova image to SourceForge which will save you some time in getting Issabel up and running. Once you’ve downloaded and installed the image in VirtualBox, you can log in as root using the default password: password. Then you can set your admin password for the Issabel GUI by running /root/admin-pw-change.

    Installing Incredible PBX 13 for Issabel 4



    As with all Incredible PBX builds, running the Incredible PBX installer will erase ALL of your existing Issabel configuration so start with a fresh install of Issabel.

    Begin the Incredible PBX install by logging into your Issabel server as root from a desktop PC using SSH or Putty and execute the following commands:

    cd /root
    wget http://incrediblepbx.com/IncrediblePBX13-Issabel4.sh
    chmod +x IncrediblePBX13-Issabel4.sh
    ./IncrediblePBX13-Issabel4.sh
    

    The Travelin’ Man 3 firewall is installed and configured as part of the install. It whitelists certain IP addresses and blocks everyone else from even seeing your server on the Internet. For this reason, it is critically important that you perform the Incredible PBX install using SSH or Putty from a PC that you will use to manage your Issabel server. Otherwise, you risk locking yourself out of your own server. Whitelisted IP addresses include the Issabel server itself, the public and private IP addresses of your desktop PC, all non-routable, private LAN addresses, and the Nerd Vittles collection of recommended SIP hosting providers. You can add as many additional providers or users to the whitelist using the simple tools provided as part of the install and further documented below.

    As part of the install process, you’ll be prompted during both passes to create a password for MySQL/MariaDB and an admin password for the Issabel web GUI. The MySQL password MUST be passw0rd (with a zero), or you will get a permanent mess. The admin password can be anything you like. Passwords can be updated by running /root/admin-pw-change. Many of the Incredible PBX apps depend upon this MySQL password so don’t change it. Your MySQL databases remain secure and can only be accessed on localhost or after a successful root login to your server from a whitelisted IP address.

    WhiteListing IP Addresses in Fail2Ban

    We also strongly recommend that you whitelist the IP addresses of computers you plan to use to access your new Issabel PBX. The reason is because Fail2Ban jails take precedence over IPtables settings. So even if your IP address has been whitelisted with IPtables using the Travelin’ Man 3 utilities, it’s still possible to lock yourself out of your server by entering the root or admin passwords incorrectly. Here’s how to avoid that. Edit /etc/fail2ban/jail.conf. Scroll down to line #50 which begins with the word "ignoreip." WhiteListed IP addresses are entered here with a space separating each entry. Once you have entered one or more addresses, save the file. Then restart Fail2Ban: service fail2ban restart.


    Introducing the (new) Travelin’ Man 3 Firewall

    Issabel 4 includes an IPtables firewall component. Do NOT activate it because Incredible PBX includes its own preconfigured IPtables firewall, better known as Travelin’ Man 3. With the Issabel 4 firewall, the administrator is responsible for setting all of the firewall rules. With Travelin’ Man 3, all the heavy lifting is done for you. The design is also markedly different. Issabel 4 opens ports which you define, but it gives worldwide access to those ports by any user. Travelin’ Man 3 employs a WhiteList rather than opening ports for everyone. If you’re on the WhiteList, you get access to the limited collection of ports assigned to that IP address. If you’re not on the WhiteList, you cannot even see the Issabel PBX from the Internet. For those without remote telephones or traveling employees, this provides total protection of your server with virtually no further firewall management.

    If you have remote users of your PBX or if you wish to deploy softphones on mobile devices and rely upon WiFi facilities at random locations, Travelin’ Man 3 provides several utilities to assist. If the remote users have static IP addresses, then those IP addresses can be added to the WhiteList by running /root/add-ip. Better yet, a NeoRouter VPN is provided that lets remote users access Issabel using NeoRouter private LAN addresses that already are WhiteListed as part of the installation process. These require little to no configuration with static or dynamic IP addresses even when switching between WiFi networks. For those with dynamic IP addresses and no VPN, FQDNs can be assigned using a service such as dyn.com and a dynamic DNS client can be loaded on the smartphone to keep the current IP address synchronized with the FQDN. On the Incredible PBX side, these FQDNs can be added using /root/add-fqdn, and the IP addresses will be updated automatically every 10 minutes. The final option to provide remote users the 3-digit PortKnocker codes from knock.FAQ and let them automatically whitelist their own IP addresses by running the PortKnocker client from any smartphone or Linux server. When the Issabel server detects a successful knock sequence, the source IP of the knock sequence is whitelisted until the next reload of the firewall. If an administrator prefers to allow permanent additions to the WhiteList that survive a reboot or restart of the firewall, the administrator need only run the following command one time: iptables-knock activate. WhiteListed entries can be removed using the /root/del-acct utility. Further details on the new Travelin’ Man 3 design are available here.

    We have modified the security methodology to access the AsteriDex and Reminders pages in the web GUI. We have added another layer of security by requiring Apache htaccess credentials before you can access these pages on your Issabel server. What this means is you will be prompted for Apache admin credentials when you attempt to access these pages. As the last step of the Incredible PBX installation procedure, you will be asked to specify your admin password again. This becomes your Apache admin password, and we recommend keeping it the same as your Issabel password so you don’t get confused. In this way, the username admin and the admin password will be used BOTH for Apache authentication AND Issabel GUI authentication. Should you ever need to change your Issabel admin password, run /root/admin-pw-change. You will need to execute the following command to change the Apache admin password: htpasswd -c /etc/pbx/wwwpasswd admin.

    Overview of Issabel 4 Configuration Steps

    Almost all PBXs employ a similar design to get calls flowing in and out of your PBX. Extensions are the hooks that let phones on your PBX make a connection to the PBX. Trunks are the hooks that connect your PBX to the outside world so that you can make and receive external calls. Inbound routes tell the PBX how to route incoming calls from the outside world. Outbound routes tell the PBX which trunk providers to use for various types of outgoing calls. And trunk providers are outside businesses that let you terminate calls to telephones all over the world. They also provide phone numbers (DIDs) to you so that the rest of the world has a way to call you.




    Incredible PBX for Issabel makes configuring your PBX easy enough for a fifth grader. We’ve provided two extensions (501 and 502) to give you a simple way to connect your first two phones. We’ve also provided over a dozen sample trunk setups to make it easy to set up trunks once you’ve registered with one or more providers of your choice. If you choose to use our Platinum Sponsor, Skyetel, their trunk setup is already activated and whitelisted on the Issabel platform so all you’ll need to do is collect your $50 signup credit, enter the IP address of your PBX as a Skyetel EndPoint, pick a phone number for your PBX, and point that phone number to your PBX endpoint. On the Issabel side, simply create an Inbound Route for your Skyetel calls by specifying the 11-digit phone number to associate with the inbound route. Finally, we’ll revise the Default Outbound Route to send outgoing calls out through Skyetel.

    Getting Started with a $50 Skyetel Credit

    To take advantage of the Nerd Vittles specials, begin by completing the Prequalification Form here. You then will be provided a link to the Skyetel site to complete your registration. Once you have registered on the Skyetel site and your account has been activated, open a support ticket and request a $50 credit for your account by referencing the Nerd Vittles special offer. Credit is limited to one per person/company/address/location. If you want to take advantage of the 10% discount on your current service, open another ticket and attach a copy of your last month’s bill. See footnote 1 for the fine print.1 If you have high call volume requirements, document these in your Prequalification Form, and we will be in touch. More details here. Effective 10/1/2023, $25/month minimum spend required.

    Skyetel Endpoint Group Configuration

    Unlike many VoIP providers, Skyetel does not use SIP registrations to make connections to your PBX. Instead, Skyetel utilizes Endpoint Groups to identify which servers can communicate with the Skyetel service. An Endpoint Group consists of a Name, an IP address, a UDP or TCP port for the connection, and a numerical Priority for the group. For incoming calls destined to your PBX, DIDs are associated with an Endpoint Group to route the calls to your PBX. For outgoing calls from your PBX, a matching Endpoint Group is required to authorize outbound calls through the Skyetel network. Thus, the first step in configuring the Skyetel side for use with your PBX is to set up an Endpoint Group. A typical setup for use with Incredible PBX®, Asterisk®, or FreePBX® would look like the following:

    • Name: Issabel
    • Priority: 1
    • IP Address: Issabel-Public-IP-Address
    • Port: 5060
    • Protocol: UDP
    • Description: issabel.incrediblepbx.com

    Skyetel DID Configuration

    To receive incoming PSTN calls, you’ll need at least one DID. On the Skyetel site, you acquire DIDs under the Phone Numbers tab. You have the option of Porting in Existing Numbers (free for the first 60 days after you sign up for service) or purchasing new ones under the Buy Phone Numbers menu option.

    Once you have acquired one or more DIDs, navigate to the Local Numbers or Toll Free Numbers tab and specify the desired SIP Format and Endpoint Group for each DID. Add SMS/MMS and E911 support, if desired. Call Forwarding and Failover are also supported. That completes the VoIP setup on the Skyetel side. System Status is always available here.

    Incredible PBX Inbound Routing with Skyetel

    Next we need to tell your PBX how to route incoming calls from Skyetel. Using a browser, log into the IP address of your PBX using your admin credentials. Because there is no trunk registration with Skyetel trunks, you will need to create an Inbound Route for every Skyetel DID. You cannot rely upon a Default inbound route because Issabel treats the calls as blocked anonymous calls without an Inbound Route pointing to the 11-digit number of each Skyetel DID. From the Issabel GUI, choose PBX -> PBX Configuration -> Inbound Routes -> Add Incoming Route. For both the Description and DID fields, enter the 11-digit phone number beginning with a 1. Set the Destination for the incoming DID as desired, e.g. IVR:IVR Demo. Click Submit. Reload the Dialplan when prompted. Place a test call to each of your DIDs from an external phone or cellphone after configuring the Inbound Routes.

    Incredible PBX Outbound Routing to Skyetel

    If Skyetel will be your primary provider, you can use both 10-digit and 11-digit dialing to process outbound calls through your Skyetel account. From the GUI, choose PBX -> PBX Configuration -> Outbound Routes -> Default. Scroll down to the Trunk Sequence section of the template. Choose these 3 trunks in this order: Skyetel-1, Skyetel-NW, and Skyetel-SE. Next, click Submit Changes and reload the dialplan when prompted.




    Setting Up a Softphone with Issabel 4

    If you’re a Mac user, you’re lucky (and smart). Download and install Telephone from the Mac App Store. Start up the application and choose Telephone:Preference:Accounts. Click on the + icon to add a new account. To set up your softphone, you need 3 pieces of information: the IP address of your server (Domain), and your Username and Password. You can decipher your server’s IP address by running pbxstatus. If you wish to use one of the preconfigured extensions (501 and 502), you’ll find the randomized passwords in /root/passwords.FAQ. Now copy or cut-and-paste your Username and Password into the Accounts dialog of the Telephone app. Click Done when you’re finished, and your new softphone will come to life and should show Available. Dial the IVR (D-E-M-O) to try things out. With Telephone, you can use over two dozen soft phones simultaneously.

    For everyone else, we recommend the YateClient softphone which is free. Download it from here. Run YateClient once you’ve installed it and enter the credentials for the Issabel extension. You’ll need the IP address of your server plus your extension number and password associated with either the 501 or 502 extension.

    Adding Speech Recognition Support to Incredible PBX

    To support many of our applications, Incredible PBX has included Google’s speech recognition service. These applications include AsteriDex Voice Dialing by Name (411) and Wolfram Alpha for Asterisk (4747), all of which use Lefteris Zafiris’ terrific speech-recog AGI script. Unfortunately (for some), Google now has tightened up the terms of use for their free speech recognition service. Now you can only use it for "personal and development use." If you meet those criteria, keep reading. Here’s how to activate speech recognition on Incredible PBX. Don’t skip any steps!

    If you like Siri, you’ll love Wolfram Alpha. To use Wolfram Alpha by phone, you first must obtain a free Wolfram Alpha APP-ID. Then issue the following command replacing APP-ID with your actual ID. Don’t change the yourID portion of the command:

    sed -i "s|yourID|APP-ID|" /var/lib/asterisk/agi-bin/4747
    

    Now you’re ready to try out the speech recognition apps. Dial 411 and say "American Airlines" to be connected to American.

    To access Wolfram Alpha by phone, dial 4747 and enter your query, e.g. "What planes are overhead now?" Read the Nerd Vittles tutorial for additional examples and tips.

    Implementing IBM TTS and Voice Recognition

    While Google voice recognition originally was free, it has been a hit and miss platform for the last couple years. If you’re really serious about text-to-speech (TTS) and voice recognition (STT) quality, then you owe it to yourself to make the switch to the IBM platform. For most deployments, the IBM platform will be nearly free. Our recent tutorial will walk you through the process of getting your IBM credentials and setting up the TTS and STT functions with IBM Watson. Be advised that you will have two sets of credentials, one for TTS applications and another for STT applications. Once you have your credentials, here are the steps to reconfigure Issabel to use the IBM TTS and voice recognition services. Begin by logging into your server as root and switching to the /var/lib/asterisk/agi-bin directory. Then install the IBM components:

    cd /var/lib/asterisk/agi-bin
    wget http://incrediblepbx.com/ibm-issabel.tar.gz
    tar zxvf ibm-issabel.tar.gz
    rm -f ibm-issabel.tar.gz
    mv custom/* /var/lib/asterisk/sounds/custom
    

    Implementing IBM STT with Incredible PBX’s Voice Dialer. With this application, a user dials 411 and speaks the name of a person or company to call. The app searches for a match in the AsteriDex directory and places the call. To get started, edit getnumber.sh and insert your IBM STT credentials in the API_USERNAME and API_PASSWORD fields. Then save the file. Replace the Call by Name context by running the following script: ./install-ibm411.sh. Place a test call by dialing 411 and saying "American Airlines."

    Implementing IBM STT with Incredible PBX’s SMS Dictator. With this application, a user dials 767, enters the 10-digit number for the recipient of an SMS text message, and then speaks the message to be sent. To get started, edit smsgen.sh and insert your IBM STT and Google Voice credentials using your plain-text Google password. Then save the file. Replace the SMS Dictator context by running the following script: ./install-sms767-dialplan.sh. Place a test call to 767, and the app will send your text message to the recipient’s phone number using the gvoice application. If you experience failed calls, try executing the Unlock Captcha procedure using your Google Voice credentials. Then try again.

    Implementing IBM STT with Incredible PBX’s Wolfram Alpha. With this Siri-like app, a user dials 4747 and speaks a query to be sent to Wolfram Alpha for processing. The results then are played back to the caller. To begin, edit wolfram.sh and insert your IBM STT credentials as well as your Wolfram Alpha APPID. Then save the file. Replace the Wolfram Alpha dialplan code by running the following script: ./install-wolfram4747-dialplan.sh. Place a test call by dialing 4747. When prompted for your query, say "What planes are flying overhead now?"

    Implementing IBM TTS with Incredible PBX’s News and Weather Apps. With these apps, a user dials 951 for the latest News Headlines from Yahoo or 947 to retrieve the latest weather report by ZIP code. To begin, edit ibmtts.php and insert your IBM TTS credentials in the IBM_username and IBM_password fields. Then save the file. Replace the news and weather by zip code contexts by running the following script: ./install-ibmtts-dialplan.sh.

    Generating IBM Voice Prompts to Use with Issabel. We’ve included a script that will let you generate IBM voice prompts that are suitable for use with Issabel and Incredible PBX. To begin, edit ibmprompt.php and insert your IBM TTS credentials in the IBM_username and IBM_password fields. Then save the file. Next, we need to add MP3 support to the SOX application before we can create voice prompts reliably with IBM’s Bluemix TTS service. Here’s how:

    yum -y remove sox
    yum -y install libmad libmad-devel libid3tag libid3tag-devel lame lame-devel flac-devel
    cd /usr/src
    wget https://sourceforge.net/projects/sox/files/sox/14.4.2/sox-14.4.2.tar.gz
    tar zxvf sox-14.4.2.tar.gz
    rm -f sox-14.4.2.tar.gz
    cd sox*
    ./configure
    make -s
    make install
    ldconfig
    ln -s /usr/local/bin/sox /usr/bin/sox
    

    Generate voice prompts using the following syntax: ./ibmprompt.php "Hello world."

    Configuring the Issabel Fax Server

    Incredible PBX for Issabel includes turnkey fax support with Issabel. Once you have added a trunk that supports VoIP faxing (HINT: Skyetel trunks work great!), fax configuration with Issabel only takes a minute. Start by logging into the Issabel web interface as admin. First, navigate to PBX:PBX Configuration:Extensions:Fax and obtain your password for extension 329. Next, navigate to Fax:Virtual Fax:New Virtual Fax. Fill in the form as shown below using your actual email address and phone number for receiving faxes as well as your actual extension 329 secret. Then click SAVE. Assuming you typed your secret correctly, you will see a status notification showing virtual fax machine "Running and idle on ttyIAX1."



    Assuming you already have set up a Skyetel trunk as outlined above, the next step is to modify the Inbound Route for this trunk to support fax detection. In that way, incoming fax calls will automatically be redirected to extension 329 and the received faxes will be emailed to you in PDF format. Set the email address in Fax:Fax Master. In addition, the faxes can be downloaded and managed from Fax:Virtual Fax:Fax Viewer. Modify your Inbound Route to match the #3 settings shown below. Then save/reload your changes.



    To receive the incoming faxes by email, navigate to Fax:Fax Master and enter your email address. Then click SAVE.

    The final step is to designate the IP addresses of those authorized to send faxes using Issabel. Navigate to Fax:Fax Clients and specify the public and private IP addresses (one per line) authorized to send faxes. Then click SAVE. Hylafax clients can be used remotely, or you can use the web utility included with Issabel: Fax:Virtual Fax:Send Fax.




    The best way to test things out is to send yourself a test fax. FaxZERO lets you send 5 free faxes of up to 3 pages every day. Give it a whirl.

    To send a fax out from your server from the Linux CLI using either a text document or PDF file, the syntax looks like the following:

    sendfax -n -d 8005551212 smsmsg.txt
    



    Replacing MeetMe Conferencing with ConfBridge

    The only serious limitation we’ve found with the Issabel implementation of FreePBX is the continued reliance upon MeetMe for conferencing which requires a timing source unlike the newer ConfBridge module. Particularly on OpenVZ VPS platforms, this causes issues because of the inability to directly access the kernel. Fortunately, Issabel has included the functioning ConfBridge module in their implementation so the workaround is fairly simple. By default, we’ve included a 2663 (C-O-N-F) conference setup in the Issabel GUI configuration so simply remove it. Then add a 2663 Misc Destination with a description of CONF. Finally, while still in the GUI, edit the IVR Demo and change the destination for option 2 to Misc Destination:CONF and save the file. Next, log into the Linux CLI as root and change to the /etc/asterisk directory. Edit confbridge_custom.conf and insert the following code. Then save the file.

    [general]
    ;This section reserved for future use
    
    [default_user]
    type = user
    quiet = no
    announce_user_count = yes
    announce_user_count_all = yes
    wait_marked = no
    end_marked = no
    dsp_drop_silence = yes
    announce_join_leave = yes
    admin = no
    marked = no
    startmuted = no
    music_on_hold_when_empty = yes
    
    [admin]
    type = user
    quiet = no
    announce_user_count = yes
    announce_user_count_all = yes
    wait_marked = no
    end_marked = no
    dsp_drop_silence = yes
    announce_join_leave = yes
    admin = yes
    marked = no
    startmuted = no
    music_on_hold_when_empty = yes
    
    [default_bridge]
    type = bridge
    record_conference = no
    sound_only_person =    conf-onlyperson
    sound_has_joined =     conf-hasjoin
    sound_has_left =       conf-hasleft
    sound_kicked =         conf-kicked
    sound_muted =          conf-muted
    sound_unmuted =        conf-unmuted
    sound_there_are =      conf-thereare
    sound_other_in_party = conf-otherinparty
    sound_place_into_conference = conf-placeintoconf
    sound_wait_for_leader =       conf-waitforleader
    sound_get_pin =        conf-getpin
    sound_invalid_pin =    conf-invalidpin
    sound_locked =         conf-locked
    sound_unlocked_now =   conf-unlockednow
    sound_lockednow =      conf-lockednow
    sound_error_menu =     conf-errormenu
    
    [admin_menu]
    type = menu
    * = playback_and_continue(conf-adminmenu)
    *1 = toggle_mute
    *2 = admin_toggle_conference_lock
    *3 = admin_kick_last
    *4 = decrease_listening_volume
    *5 = reset_listening_volume
    *6 = increase_listening_volume
    *7 = decrease_talking_volume
    *8 = reset_talking_volume
    *9 = increase_talking_volume
    *# = leave_conference
    *0 = admin_toggle_mute_participants
    
    [user_menu]
    type = menu
    * = playback_and_continue(conf-usermenu)
    *1 = toggle_mute
    *4 = decrease_listening_volume
    *5 = reset_listening_volume
    *6 = increase_listening_volume
    *7 = decrease_talking_volume
    *8 = no_op
    *9 = increase_talking_volume
    *# = leave_conference
    

    Now edit extensions_custom.conf and insert the following code below the [from-internal-custom] label replacing the 1234 and 4321 PINs in lines 6 and 7 with user and admin PINs of your choice (up to 8 numbers each). Then restart Asterisk: amportal restart.

    ;# // BEGIN Conf1
    exten => 2663,1,Answer
    exten => 2663,2,Wait(1)
    exten => 2663,3,Playback(conf-getpin)
    exten => 2663,4,Read(MYPIN,beep,8)
    exten => 2663,5,GotoIf($["${MYPIN}" = "1234"]?userpin)
    exten => 2663,6,GotoIf($["${MYPIN}" = "4321"]?adminpin)
    exten => 2663,7,Playback(goodbye)
    exten => 2663,8,Hangup
    exten => 2663,n(adminpin),Set(CONFBRIDGE(user,template)=admin)
    exten => 2663,n,ConfBridge(1)
    exten => 2663,n,Hangup
    exten => 2663,n(userpin),Set(CONFBRIDGE(user,template)=default_user)
    exten => 2663,n,ConfBridge(1)
    exten => 2663,n,Hangup
    ;# // END Conf1
    

    Backup and Restore with Issabel

    Issabel ships with the most full-featured Backup and Restore options of any of the Asterisk distributions. Ask us how we know. Yes, we managed to wipe out the entire Dashboard menu system on one of our early builds. Restoring from an image took only a couple minutes. To get started, navigate to System -> Backup/Restore. You can create backups locally and then drag and drop them onto a remote FTP server if desired. There is enormous flexibility in choosing what to backup or restore. And there’s even an option to automatically generate periodic backups. You’ll find your backups in /var/www/backup should you ever need to copy them to a new server. Now would be a good time to create your first backup. 🙂

    Sampling Other Incredible PBX Applications

    As installed, Incredible PBX includes dozens of additional applications for Asterisk. Here’s how to sample some of them using a softphone connected to your Issabel PBX. A good place to start is Allison’s Demo IVR (dial D-E-M-O) using any phone connected to your PBX:

    Nerd Vittles Demo IVR Options
    1 – 411 -Call by Name (say "American Airlines")
    2 – 2663 – MeetMe/ConfBridge Conference
    3 – 4747 – Wolfram Alpha
    4 – 53669 – Lenny (The Telemarketer’s Worst Nightmare)
    5 – 951 – Today’s News Headlines
    6 – 947 – Weather Forecast (enter a 5-digit ZIP code)
    7 – 86329 – Today in History
    8 – 501 – Speak to a Real Person

    For ODBC demos, dial 222 and enter 12345 for the employee number for a sample database application. Or dial 223 for a sample ODBC dialer using AsteriDex. Enter 263 (first three letters of American Airlines) to place the call. Sample dialplan code is stored in /etc/asterisk/odbc.conf. Dial L-E-N-N-Y (53669) to call or forward telemarketer calls to Lenny. Dial T-I-M-E (8463) for Time of Day. Dial *88HHMM to set an Alarm for HH:MM where HH is the hour of the day in military time. Dial C-O-N-F (2663) for MeetMe conference. Conference credentials are in /root/passwords.FAQ. Voice Dialer (411) works with any database entry in AsteriDex. Access AsteriDex with a browser at https://Issabel-IP-Address/asteridex4. Telephone Reminders can be scheduled by phone (123) or via the web: https://Issabel-IP-Address/reminders. Sample code for the FLITE, GoogleTTS, and PicoTTS engines is in 951 (Yahoo News) context of /etc/asterisk/extensions_custom.conf. All of your FreePBX "old favorites" including blacklists, call transfers and forwarding, dictation, recordings and more are still available as well: PBX:PBX Config:Feature Codes.

    Continue Reading: Configuring Extensions, Trunks & Routes.

    Don’t Miss: Incredible PBX Application User’s Guide covering the 31 Incredible PBX apps.

    Published: Friday, October 5, 2018  Updated: Friday, February 1, 2019


    Support Issues. With any application as sophisticated as this one, you’re bound to have questions. Blog comments are a difficult place to address support issues although we welcome general comments about our articles and software. If you have particular support issues, we encourage you to get actively involved in the PBX in a Flash Forum. It’s the best Asterisk tech support site in the business, and it’s all free! Please have a look and post your support questions there. Unlike some forums, the PIAF Forum is extremely friendly and is supported by literally hundreds of Asterisk gurus and thousands of users just like you. You won’t have to wait long for an answer to your question.



    Need help with Asterisk? Visit the VoIP-info Forum.


     

    Special Thanks to Our Generous Sponsors


    FULL DISCLOSURE: ClearlyIP, Skyetel, Vitelity, DigitalOcean, Vultr, VoIP.ms, 3CX, Sangoma, TelecomsXchange and VitalPBX have provided financial support to Nerd Vittles and our open source projects through advertising, referral revenue, and/or merchandise. As an Amazon Associate and Best Buy Affiliate, we also earn from qualifying purchases. We’ve chosen these providers not the other way around. Our decisions are based upon their corporate reputation and the quality of their offerings and pricing. Our recommendations regarding technology are reached without regard to financial compensation except in situations in which comparable products at comparable pricing are available from multiple sources. In this limited case, we support our sponsors because our sponsors support us.

    BOGO Bonaza: Enjoy state-of-the-art VoIP service with a $10 credit and half-price SIP service on up to $500 of Skyetel trunking with free number porting when you fund your Skyetel account. No limits on number of simultaneous calls. Quadruple data center redundancy. $25 monthly minimum spend required. Tutorial and sign up details are here.

    The lynchpin of Incredible PBX 2020 and beyond is ClearlyIP components which bring management of FreePBX modules and SIP phone integration to a level never before available with any other Asterisk distribution. And now you can configure and reconfigure your new Incredible PBX phones from the convenience of the Incredible PBX GUI.

    VitalPBX is perhaps the fastest-growing PBX offering based upon Asterisk with an installed presence in more than 100 countries worldwide. VitalPBX has generously provided a customized White Label version of Incredible PBX tailored for use with all Incredible PBX and VitalPBX custom applications. Follow this link for a free test drive!
     

    Special Thanks to Vitelity. Vitelity is now Voyant Communications and has halted new registrations for the time being. Our special thanks to Vitelity for their unwavering financial support over many years and to the many Nerd Vittles readers who continue to enjoy the benefits of their service offerings. We will keep everyone posted on further developments.
     



    1. In the unlikely event that Skyetel cannot provide a 10% reduction in your current origination rate and/or DID costs, Skyetel will give you an additional $50 credit to use with the Skyetel service. []