Home » Posts tagged 'SMS'

Tag Archives: SMS

The Most Versatile VoIP Provider: FREE PORTING

VoIP Messaging and The Golden Rule with Incredible PBX



If you want to continue to use SMS and MMS messaging on your VoIP platform, then today’s navigation guide is worth a careful read. Suffice it to say, this is what happens when the feds shirk their responsibilities and leave it to the foxes to guard the chicken coop.

The Golden Rule with all oligopolies is that he who has the gold makes the rules. And, make no mistake, there are stringent new rules for VoIP messaging. Not surprisingly, the FCC has jumped on the cellphone provider bandwagon. You can read all about the new FCC rules here. And the cellphone oligopoly has implemented additional requirements of its own that are enforced through a new organization called The Campaign Registry (TCR).

Any business that sends text messages to U.S. or Canadian mobile phone numbers is now required to register with TCR and obtain a 10-digit long code (10DLC) number. This number is used to identify the sender of each text message and to help the mobile carriers filter out spam (according to the carriers). To register with TCR, businesses must provide information about their company, including their legal name, EIN, and contact information. They must also submit a sample text message and identify the purpose for which they will be using SMS messaging.

What are TCR’s messaging guidelines?

  • Obtaining permission from recipients before sending them text messages
  • Clearly identifying the sender in each text message
  • Providing a way for recipients to opt out of receiving future text messages
  • Avoiding sending spam or unsolicited text messages

Carriers have imposed additional restrictions for certain types of messages so-called SHAFT content: sex, hate, alcohol, firearms, and tobacco (CBD is included). And, unlike email messages, SMS traffic cannot be encrypted so the providers can and do scan the contents of every message that hits their networks. If a business fails to comply with TCR’s requirements, the sender may face penalties including fines and suspension from sending text messages through the cellphone carriers.

You might wonder how these new rules came about. The short answer is that politicians flooded the cell providers’ networks with text messages during the last election cycle. And, of course, the politicians conveniently exempted themselves from all the spam rules including SMS messaging. So the new rules, while appearing admirable to the public, have little if anything to do with the root cause of the problem, the politicians.

CAUTION: What follows is NOT legal advice. It is simply our reading of available literature pertaining to TCR and VoIP.ms rules and regulations. Do NOT rely upon this interpretation of the rules in making decisions regarding SMS deployments. Do your own research. Better yet, consult an attorney.

Keep in mind that the current exception to TCR verification will probably disappear within the next several months. A word to the wise: Go ahead and get registered and verified unless you plan to use your cellphone exclusively for messaging or your usage is clearly non-business. The upfront costs are minimal. Here is an excellent summary of the various 10DLC registration categories.

Assuming your VoIP messages don’t include SHAFT content and otherwise comply with the guidelines above, there remains an exception for messaging without TCR verification… at least for now. The current limits on 10DLC SMS traffic without verification are as follows:

  • Daily limit: 500 message segments
  • Monthly limit: 5,000 message segments
  • Per-recipient limit: 10 messages per day

A message segment is equal to 158 characters. So, a single text message can be composed of one or more segments, depending on its length.

There’s one additional gotcha. For traditional 10-digit numbers, only one SMS segment per second can be sent, and it cannot be increased. So be brief. For toll-free numbers, three SMS segments per second can be sent, and the restriction can be relaxed under certain circumstances. For short code messaging (initial cost is usually $1,500 or more per month to obtain a short code), 100 SMS message segments per second are permitted, and this limit can also be increased.

Now let’s return to our Navigation Guide for those that simply want to use VoIP messaging in the traditional ways that used to work, i.e. for a coach to schedule a little league practice or for you to tell your kid you’re going to be late picking them up from school.

Rule #1: If you have enabled SMS messaging on all of your VoIP phone numbers, do not use numbers on which you depend for critical input for outbound SMS traffic. The risk you run is that breaking one of the rules or limits above may get your number blacklisted from ALL future SMS message traffic.

Rule #2: Don’t break the daily, monthly, and per-recipient messaging limits EVER.

Rule #3: Don’t send SHAFT content over SMS even if you’re joking. Big Brother does not have a sense of humor.

Rule #4: Keep messages under 158 characters in length unless you’re using a toll-free number (158×3 message size limit).

Rule #5: Don’t send more than one message per second. For example, if you’re using a script to send a team notice of a little league practice, be sure to insert a one or two-second pause between each outbound message.

Rule #6: Only use a throw-away number to send outbound SMS messages. If the number gets blacklisted, discard the number.

The Safest VoIP Messaging Platform


As you might expect, the safest way to send and receive SMS messages is through a cellphone or something that looks like a cellphone to the carrier networks. Our review of the Cudy Router spotlights a device that fits the bill perfectly if you have an extra SIM card lying around. Using the web interface on this device, you can send and receive SMS messages using the SMS link on the System Status page because the SMS messages appear to originate from a device on the cell provider’s own network where there are limited restrictions.

Using VoIP.ms for SMS Messaging

Assuming you can comply with all of the restrictions above, here’s our recommendation for a VoIP provider that lets you continue sending messages at minimal cost. That provider is one of our old favorites, VoIP.ms. Using our signup link helps keep the Nerd Vittles lights on so thank you in advance.

So long as you have an SMS-enabled DID with VoIP.ms, SMS messaging costs $0.0075 per message with no additional fees. Below we’ll walk you through getting everything set up with Incredible PBX to take advantage of VoIP.ms SMS services.

Configuring VoIP.ms for SMS Messaging

As noted, you’ll need to order a DID from VoIP.ms that supports SMS. Then enable SMS messaging in the DID setup and specify either an email address or cellphone number for delivery of incoming SMS messages addressed to that DID. If you happen to have a Yealink T46G (not T48G) or a Grandstream GXV phone that is also registered to that extension, the messages will also pop up on your desktop phone with an alert tone if you also enable "Link the SMS received to this DID to a SIP Account" and register the phone to a PJsip extension with the additions which follow. On Grandstream GXV Android phones, we recommend dragging the SMS app to the main screen so that the incoming message count appears beside the SMS icon when new messages are received. If you’re a clever programmer, you also can retrieve incoming messages from the Asterisk log by searching for "Inbound SMS dialplan invoked." The message will be in the following From and Body lines. Or tail /var/log/asterisk/full will look something like this:


To support sending SMS messages, enable the SOAP and REST/JSON API in the VoIP.ms Main Menu, set a very secure API password, and whitelist the IP addresses of each server from which you wish to send SMS messages.

Configuring Incredible PBX to Send SMS Messages

1. Login to your Incredible PBX 2027 server as root and issue the following commands:

cd /root/sms-voip.ms
rm -f /root/sms-voip.ms/*
pip install python-dotenv
wget http://incrediblepbx.com/sendsms-voipms.tar.gz
tar zxvf sendsms-voipms.tar.gz
rm sendsms-voipms.tar.gz
nano -w sendsms

2. When the editor opens, scroll down and replace 8431234567 with your SMS-enabled DID

3. Replace yourname@gmail.com with your VoIP.ms login email address

4. Replace your-API-key with your VoIP.ms API password

5. Save the file: Ctrl-X, Y, then ENTER

6. Send an SMS test message to your cell phone using the following syntax:

/root/sms-voip.ms/sendsms 10-digit-SMS-recipient "Your SMS message"

Configuring Incredible PBX to Receive SMS Messages

To receive SMS messages through FreePBX® using a compatible SIP phone or through the Asterisk CLI, you first must use a PJsip trunk to connect to VoIP.ms. Sample General Settings for the trunk are shown below. In the Advanced tab, set Message Context to sms-in.


You also must create a PJsip extension or use the preconfigured 701 PJsip extension. In the Advanced tab, set Message Context to sms-out.

Finally, edit extensions_custom.conf in /etc/asterisk and add the following code to the bottom of the file:

[sms-out]
exten => _.,1,NoOp(Outbound Message dialplan invoked)
exten => _.,n,NoOp(  TO: ${MESSAGE(to)})
exten => _.,n,NoOp(FROM: ${MESSAGE(from)})
exten => _.,n,NoOp(BODY: ${MESSAGE(body)})
;
; add your VoIPms info in the next 3 lines
exten => _.,n,Set(VOIPMS_ACCOUNT="123456_subacct")
exten => _.,n,Set(VOIPMS_POP="atlanta.voip.ms")
exten => _.,n,Set(VOIPMS_TRUNK="VoIPms-PJsip") ; actual VoIP.ms trunk in FreePBX
;
exten => _.,n,Set(NUMBER_TO=${CUT(CUT(MESSAGE(to),@,1),:,2)})
exten => _.,n,Set(EXTENSION_FROM=${CUT(CUT(MESSAGE(from),@,1),:,2)})
;
; Now map your sending extensions EXTENSION_FROM to corresponding DIDs NUMBER_FROM
exten => _.,n,Set(CASE_701=6005550101) ; ext 701 msgs originate from 6005550101
exten => _.,n,Set(CASE_702=6005550102) ; ext 702 msgs originate from 6005550102
exten => _.,n,Set(CASE_703=6005550101) ; ext 703 msgs originate from 6005550101
;
exten => _.,n,Set(NUMBER_FROM=${CASE_${EXTENSION_FROM}})
exten => _.,n,Set(ACTUAL_FROM="${NUMBER_FROM}" )
exten => _.,n,Set(ACTUAL_TO=pjsip:${VOIPMS_TRUNK}/sip:${NUMBER_TO}@${VOIPMS_POP})
exten => _.,n,MessageSend(${ACTUAL_TO},${ACTUAL_FROM})
exten => _.,n,NoOp(Send status is ${MESSAGE_SEND_STATUS})
exten => _.,n,Hangup()
;-------------------------------------------------------------------------

[sms-in]
exten => _.,1,NoOp(Inbound SMS dialplan invoked)
exten => _.,n,NoOp(  TO: ${MESSAGE(to)})
exten => _.,n,NoOp(FROM: ${MESSAGE(from)})
exten => _.,n,NoOp(BODY: ${MESSAGE(body)})
;
; enter your default incoming SMS extension below
; if you want SMS messages delivered to multiple extensions,
; clone additional MessageSend lines below with extension numbers
exten => _.,n,Set(EXTENSION=701)
;
exten => _.,n,Set(ACTUAL_FROM=${MESSAGE(from)})
exten => _.,n,Set(HOST_TO=${CUT(MESSAGE(to),@,2)})
exten => _.,n,Set(NUMBER_TO=${MESSAGE_DATA(X-SMS-To)})
exten => _.,n,MessageSend(pjsip:${EXTENSION}@${HOST_TO},${ACTUAL_FROM})
exten => _.,n,NoOp(Send status is ${MESSAGE_SEND_STATUS})
exten => _.,n,Hangup()
;-------------------------------------------------------------------------


In the pasted [sms-out] context, insert your actual VOIPMS_ACCOUNT, VOIPMS_POP, and VOIPMS_TRUNK name in the lines provided. Then map each extension from which you wish to send SMS messages to a VoIP.ms DID on your PBX in the lines provided. In the pasted [sms-in] context, enter the EXTENSION number which should receive incoming messages from the PJsip trunk in which you designated [sms-in] as the Message Context. There is no magic to the [sms-in] context name. If you have more than one PJsip trunk, simply create additional incoming contexts (such as [sms-in-2]) for each additional trunk and clone the [sms-in] code designating the desired extension to receive incoming messages from each DID. For the [sms-out] context, it can be used as the Message Context for multiple extensions that should be enabled to send outbound SMS messages.

Save the file, and reload the Asterisk dialplan: asterisk -rx "dialplan reload"

Introducing the FreePBX SMS Connector Module

Bill Simon recently released another messaging alternative with his SMS Connector Module for FreePBX. The beauty of his new approach is it lets you use Sangoma’s User Control Panel (UCP) to send and receive messages with Incredible PBX 2027. It also supports messaging on both Sangoma’s and ClearlyIP’s SIP phones including the Incredible PBX SIP phones. Here’s the setup process with Incredible PBX 2027 for non-business messaging using VoIP.ms.

At VoIP.ms…
1. Create a Subaccount and DID/Trunk
2. Enable SMS on the trunk and Link SMS Messages received on this Trunk to your SubAccount
3. Enable VoIP.ms API, create an API Password, and Whitelist the public IP address of your server
4. Copy your VoIP.ms email address and API Password for use on your server’s SMS setup

On Your Incredible PBX server…
1. Login to the FreePBX GUI as admin
2. Create a PJsip Trunk for VoIP.ms
3. In Advanced Settings, set Message Context to voipms-sms-in
4. In Admin -> User Management, create a password for extension 701
5. Add the following context to the end of /etc/asterisk/extensions_custom.conf:

[voipms-sms-in]
exten => _.,1,NoOp(Inbound Voip.ms SMS dialplan invoked)
same => n,Set(TO=${MESSAGE_DATA(X-SMS-To)})
same => n,Set(FROM=${CUT(MESSAGE(from),\",2)})
same => n,Set(ENV(QUERY_STRING)=provider=voipms\;to=${TO}\;from=${FROM}\;message=${URIENCODE(${MESSAGE(body)})})
same => n,Set(ENV(REQUEST_METHOD)=GET)
same => n,System(php /var/www/html/smsconn/provider.php)
same => n,Set(ENV(QUERY_STRING)=)
same => n,Hangup()
;-------------------------------------------------------------------------

6. Reload your dialplan: rm /tmp/* ; fwconsole reload

Install and Configure SMS Connector Module…
1. Login to your server as root and issue the following commands:

fwconsole ma downloadinstall https://filedn.com/lBgbGypMOdDm8PWOoOiBR7j/SMSconnector/smsconnector-16.0.11.tar.gz
fwconsole reload

2. In the FreePBX GUI, navigate to Connectivity -> SMS Connector
3. Click Provider Settings and enter your email address for Username and API Secret for VoIP.ms. Click Submit.
4. In SMS Connector menu, click Add Number and enter your DID and PJsip extension 701 to associate with it.
5. Enter VoIP.ms as Provider and click Save Changes.

Using User Control Panel (UCP)…
1. If you have not already done so, apply these UCP patches for Incredible PBX:

mysql -u root -ppassw0rd asterisk -e "update freepbx_settings set value = 'Latest-16' where keyword = 'MIRROR_BRAND_VERSION'; "
mysql -u root -ppassw0rd asterisk -e "update admin set value = 'true' where variable = 'need_reload'; "
rm -f /tmp/*
fwconsole reload
fwconsole ma downloadinstall ucp
rm -f /tmp/*
fwconsole reload

2. Open UCP from FreePBX GUI
3. Login as 701 with your new password
4. Click + in Upper Left of display and add SMS Module for 701.
5. When SMS Module appears on UCP console, click Start Conversation
6. Send a test message to your cellphone
7. Reply to the SMS message from your cellphone
8. Reply should appear in UCP within 20-30 seconds

Let’s close today with a final cautionary note. The Bell Sisters define non-business usage as conversational messaging much like what most already do using their cellphones. If you push the envelope, you risk $100 fines for every message sent. Unless you are a lawyer or have deep pockets to hire one and fight The Oligopoly, you are well advised to obtain a 10DLC number and avoid any potential issues going forward.

Originally published: Monday, November 6, 2023



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.
 



Building a Dirt-Cheap Communications Platform with VoIP



There are literally thousands of options when you finally ditch your landline and stagger into the VoIP world. We’re often asked, "What would you recommend if price was the major criteria?" Our response goes something like this. You get what you pay for and our recommended providers continue to be ClearlyIP and Skyetel in no particular order. Having said that, if price is your primary consideration, here’s our Plan B which we use regularly.

First, a word of explanation. This is not the Ma Bell days any longer so you’re not limited by cost to a single provider. It costs little more to have several VoIP providers than to have one since most VoIP services are pay-as-you-go. So, in our least costly category, we actually recommend two providers, BulkVS for VoIP calling and VoIP.ms for VoIP messaging. Faxing also works incredibly well with both of these providers. Just follow our fax tutorial to get started. In terms of deployment, it means you will have one primary phone number for making and receiving calls and a second number for sending and receiving SMS messages. Incoming SMS messages can optionally be delivered to either your primary email account and/or a third phone number such as your cellphone.

Obtaining a phone number to make and receive phone calls through BulkVS will set you back 6¢ a month with a 25¢ initial setup fee. Incoming calls are $0.0023 per minute. Optional 911 support is 49¢/month. Outbound calls to North America are $0.004 per minute. SMS messaging at BulkVS is cost-prohibitive. A phone number (DID) at VoIP.ms to send and receive both calls and messages runs $0.85 per month. Incoming calls run $0.009 per minute. Outbound U.S. calls are a penny a minute while calls to Canada are $0.0052 per minute. SMS messages are $0.0075 per message while MMS messages are 2¢.

We’ll be using Incredible PBX 2027 and PJsip with Asterisk® 20 and FreePBX® 16 to set the trunks up today. We’ll configure the default route for outbound calling to be BulkVS with VoIP.ms as an outage failover. All incoming calls from both DIDs can be directed to a phone, ring group, or IVR of your choice. For SMS messaging, we’ll use the FreePBX GUI to set things up. Scripts also are provided in /root/sms-voip.ms to send messages. We’ll configure the VoIP.ms messaging defaults to also relay incoming messages to both an email address and a cellphone. For additional alternatives, check out our VoIP.ms tutorial.

Getting Started with BulkVS

To get started, click the sign up link on the main BulkVS page. Then fund your account with $25 using PayPal. Or you can sign up for Net 15 billing and pay by check or credit card if you’re not in a rush to get started.

BulkVS offers two ways to set up your BulkVS trunking: IP-based authentication and SIP registration. If you don’t have a firewall which means you’re not using Incredible PBX, the first method is a little safer because nobody can spoof the IP address of your Asterisk® PBX. But it’s not for everyone. For example, if you’re behind a NAT-based firewall or if your server has a dynamic IP address, then IP-based authentication really isn’t an option. Similarly, if you don’t have control of the router that your PBX is sitting behind, then IP-based authentication won’t work since you have to forward both the SIP port (UDP 5060) and the RTP ports (10000-20000) to your PBX. The beauty of SIP registrations is they work from almost anywhere including double-NAT environments. We’ll cover the SIP registration approach below which will work for everyone. See our BulkVS tutorial for additional options.

BulkVS Setup with PJsip Registration

Step 1: Go to Inbound -> DIDs – Purchase and buy one or more DIDs for your PBX.

Step 2: Go to Interconnection -> Host – Add and add your PBX’s public IP address. Leave the port as 5060 for both chan_sip and chan_pjsip setups.

Step 3: Go to Interconnection -> Trunk Group – Add and create a Trunk Group.

Step 4: Go to Interconnection -> Trunk Group – Manage and add the Primary IP Address for your new Trunk Group. Set Delivery Type to 11DIGITS.

Step 5: Go to Interconnection -> SIP Registration and write down the credentials for one of the SIP credentials you wish to use to register your new trunks.

Step 6: Go to Inbound -> DIDs – Manage and select each telephone number. Then set the Trunk Group to the SIPREG Trunk Group you chose in the previous step. Click Update button.

Step 7: Wait 15 minutes for the new IP and Trunk Group settings to propagate to SBC nodes.

FreePBX PJsip Setup with BulkVS Registration

On your Incredible PBX server, navigate to Connectivity -> Trunks after logging into the FreePBX GUI as admin. Choose Add a PJsip trunk. Name the trunk BulkVS and then click on the pjsip Settings tab. Fill out the form as shown below substituting the BulkVS registration account name you chose above. Any of the three SIP registrations offered for your account under Interconnection -> SIP Registration in the BulkVS portal will work as long as you use the matching password.

Next, click on the Advanced tab and enter the following in the Match (Permit) field.

162.249.171.198,76.8.29.198,69.12.88.198,192.9.236.42,52.206.134.245

In the Codecs tab, enable ULAW and ALAW. Then click Submit and reload your dialplan.

With PJsip registrations, you may also need to add the following lines to the end of extensions_custom.conf in /etc/asterisk using your actual DID. Then reload your dialplan: asterisk -rx "dialplan reload"

[from-sip-external]
; BulkVS
exten => 18005551212,3,Goto(from-trunk,${DID},1)

VoIP.ms Messaging Services

One of our favorite VoIP.ms features is the variety of SMS and MMS messaging options they provide AT LOW COST. Virtually all of their DIDs now support messaging. With incoming messages, you have the choice of routing the messages to an email address, another SMS destination, the VoIP.ms Message Portal, an SMS URL callback destination, and now an SMS SIP account. The steps below set up SMS SIP messaging with Incredible PBX 2027. You also can send quick messages in response to incoming calls using your Clearly Anywhere softphone.

Configuring VoIP.ms for SMS SIP Messaging

Prerequisites: DID supports messaging, SMS SIP messaging enabled on the DID

First, use our VoIP.ms signup link to create a VoIP.ms account. Next, create an Asterisk SubAccount using the SIP protocol with User/Password Authentication. In the Security section, enter the public IP address of your PBX, and Save your Settings. Next, acquire a DID in the VoIP.ms portal. Then choose the Manage DIDs option and edit your DID configuration. For Call Routing, select the SIP/IAX option and pick your SubAccount. Choose a DID POP location near your PBX. In the Message Service section, enable SMS SIP Account and pick your SubAccount. Then Apply Changes.

Configuring Incredible PBX for SIP Messaging

Prerequisites: PJsip VoIP.ms Trunk, PJsip Extension for SMS, sms-in and sms-out Contexts

Both PJsip Trunks and PJsip Extensions in FreePBX now support a Messages Context option in the Advanced tab of the setup GUI. Using the sms-in and sms-out contexts documented below, FreePBX now can process incoming and outgoing SMS messages. A typical use case in the Incredible PBX 2027 would be to quickly respond to an incoming call to the Clearly Anywhere app on your smartphone to indicate that you were in the midst of another call and would return the caller’s call. It is anything but a robust SMS messaging application for your smartphone, but it is a welcome addition for many mobile users that have to juggle both cellphone calls and office calls forwarded from a PBX to your smartphone. VoIP.ms has developed an excellent SMS Management Portal that is included in the VoIP.ms Dashboard. It allows you to read, respond, and manage SMS messages sent to your VoIP.ms DIDs.

Once you have completed the necessary setup steps on the VoIP.ms side, there are three steps to activate SMS SIP messaging with Incredible PBX 2027: (1) create and register your VoIP.ms PJsip Trunk, (2) create and configure a PJsip extension to receive incoming calls and SMS messages, (3) add the sms-in and sms-out contexts to extensions_custom.conf dialplan.

(1) Create a PJsip Trunk for VoIP.ms in the FreePBX GUI to process calls and SMS messages:


In the PJsip Settings tab, fill out the General tab. The Username will be your VoIP.ms account number followed by an underscore and then the name of the SubAccount you created above, e.g. 12345_mypbx. The Password will be the password you assigned to your VoIP.ms SubAccount. For SIP Server, enter VoIP.ms POP assigned to your DID, e.g. atlanta1.voip.ms. Accept the remaining defaults in the General tab. Click on the Advanced tab and scroll down to Message Context and enter sms-in. Click Submit and Reload your Dialplan.

(2) Next create a PJsip Extension in the FreePBX portal. This will be used to process calls and send SIP messages. NOTE: Incredible PBX 2027 ships with a number of extensions preconfigured. Only extension 701 is a PJsip extension. Do NOT use the others. If needed, create an additional PJsip extension for messaging. The General tab should look something like this:



Click on the Advanced tab and scroll down to Max Contacts and enter a number that is one more than twice the number of phones that will be connected simultaneously to this extension. For example, if you have 3 smartphones connecting to this extension, enter 7. Scroll down to Message Context and enter sms-out. Click Submit and Reload your Dialplan.

(3) Finally, cut-and-paste the following code into the bottom of extensions_custom.conf in the /etc/asterisk directory:

[sms-out]
exten => _.,1,NoOp(Outbound Message dialplan invoked)
exten => _.,n,NoOp(To ${MESSAGE(to)})
exten => _.,n,NoOp(From ${MESSAGE(from)})
exten => _.,n,NoOp(Body ${MESSAGE(body)})
;
; add your VoIPms info in the next 3 lines
exten => _.,n,Set(VOIPMS_ACCOUNT="123456_subacct")
exten => _.,n,Set(VOIPMS_POP="atlanta.voip.ms")
exten => _.,n,Set(VOIPMS_TRUNK="VoIPms-PJsip") ; actual VoIP.ms trunk in FreePBX
;
exten => _.,n,Set(NUMBER_TO=${CUT(CUT(MESSAGE(to),@,1),:,2)})
exten => _.,n,Set(EXTENSION_FROM=${CUT(CUT(MESSAGE(from),@,1),:,2)})
;
; Now map your sending extensions EXTENSION_FROM to corresponding DIDs NUMBER_FROM
exten => _.,n,Set(CASE_701=6005550101) ; ext 701 msgs originate from 6005550101
exten => _.,n,Set(CASE_702=6005550102) ; ext 702 msgs originate from 6005550102
exten => _.,n,Set(CASE_703=6005550101) ; ext 703 msgs originate from 6005550101
;
exten => _.,n,Set(NUMBER_FROM=${CASE_${EXTENSION_FROM}})
exten => _.,n,Set(ACTUAL_FROM="${NUMBER_FROM}" )
exten => _.,n,Set(ACTUAL_TO=pjsip:${VOIPMS_TRUNK}/sip:${NUMBER_TO}@${VOIPMS_POP})
exten => _.,n,MessageSend(${ACTUAL_TO},${ACTUAL_FROM})
exten => _.,n,NoOp(Send status is ${MESSAGE_SEND_STATUS})
exten => _.,n,Hangup()
;-------------------------------------------------------------------------

[sms-in]
exten => _.,1,NoOp(Inbound SMS dialplan invoked)
exten => _.,n,NoOp(To ${MESSAGE(to)})
exten => _.,n,NoOp(From ${MESSAGE(from)})
exten => _.,n,NoOp(Body ${MESSAGE(body)})
;
; enter your default incoming SMS extension below
; if you want SMS messages delivered to multiple extensions,
; clone additional MessageSend lines below with extension numbers
exten => _.,n,Set(EXTENSION=701)
;
exten => _.,n,Set(ACTUAL_FROM=${MESSAGE(from)})
exten => _.,n,Set(HOST_TO=${CUT(MESSAGE(to),@,2)})
exten => _.,n,Set(NUMBER_TO=${MESSAGE_DATA(X-SMS-To)})
exten => _.,n,MessageSend(pjsip:${EXTENSION}@${HOST_TO},${ACTUAL_FROM})
exten => _.,n,NoOp(Send status is ${MESSAGE_SEND_STATUS})
exten => _.,n,Hangup()
;-------------------------------------------------------------------------

In the pasted [sms-out] context, insert your actual VOIPMS_ACCOUNT, VOIPMS_POP, and VOIPMS_TRUNK name in the lines provided. Then map each extension from which you wish to send SMS messages to a VoIP.ms DID on your PBX in the lines provided. In the pasted [sms-in] context, enter the EXTENSION number which should receive incoming messages from the PJsip trunk in which you designated [sms-in] as the Message Context. There is no magic to the [sms-in] context name. If you have more than one PJsip trunk, simply create additional incoming contexts (such as [sms-in-2]) for each additional trunk and clone the [sms-in] code designating the desired extension to receive incoming messages from each DID. For the [sms-out] context, it can be used as the Message Context for multiple extensions that should be enabled to send outbound SMS messages.

Save the file, and reload the Asterisk dialplan: asterisk -rx "dialplan reload"

Once all the pieces are in place, SMS messages sent to your VoIP.ms DID will be delivered to the FreePBX trunk registered to the SMS SIP destination specified in your VoIP.ms DID setup. And here’s one more tip. If you happen to have a Yealink T46G (not T48G) or a Grandstream GXV phone that is also registered to that extension, the messages will also pop up on your desktop phone with an alert tone. On Grandstream GXV Android phones, we recommend dragging the SMS app to the main screen so that the incoming message count appears beside the SMS icon when new messages are received.

FreePBX Inbound & Outbound Route Configuration

Finally, we need to tell FreePBX how to route calls and messages into and out of your PBX. In the FreePBX GUI under Connectivty -> Inbound Routes, add a new route for BulkVS specifying the 11-digit DID you purchased from BulkVS. Choose a Destination for the incoming calls, save your settings, and reload the dialplan. Repeat this process for your VoIP.ms DID making sure to enable faxing if you’ve completed the fax tutorial.

Next, navigate to Connectivity -> Outbound Routes and modify the default Outbound Route for all outgoing calls. Assign the BulkVS trunk as the first entry in the call sequence and the VoIP.ms trunk as the second entry. In the Dial Patterns tab, you would want match patterns for 1NXXNXXXXXX and NXXNXXXXXX. For the latter entry, be sure to add a Prepend entry of 1. Then save your settings and reload the dialplan.

Originally published: Monday, July 10, 2023



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.
 



A New Incredible PBX 2027 Image for the Raspberry Pi



Are you looking for a powerful and affordable VoIP phone system for your home or small business? Incredible PBX 2027 is the perfect solution especially when tied to an inexpensive platform such as the Raspberry Pi. Earlier this year we introduced a new Incredible PBX 2027 installer for the Raspberry Pi. But we heard from many of you that it was simply too time-consuming to go through both the installation of the Raspberry Pi OS and then the Incredible PBX 2027 setup. This is particularly important to those that use the Raspberry Pi as a teaching platform because of the lengthy install process. So today we are pleased to introduce a Raspberry Pi image for the Raspberry Pi 4 and 400 that installs almost instantaneously after burning the image to a microSD card.

Assembling the Required Raspberry Pi Components

Before you can deploy Incredible PBX 2027, you’ll first need the necessary Raspberry Pi hardware. To support the enhanced Incredible PBX 2027 platform, we strongly recommend either the Raspberry Pi 400 or the Raspberry Pi 4B with at least 2GB RAM. You can choose a reseller below for quicker delivery. Assuming you already own an HDMI-compatible monitor and a USB keyboard (only required if you don’t buy a RasPi 400)…

  • Raspberry Pi 4B or Raspberry Pi 400
  • $10 USB-C RasPi 4 (only) Power Supply
  • $9 32GB microSDHC Class 10 card (strongly recommended!)
  • $5 Official RasPi 4B Case or go here for our favorite
  • Getting Started with Incredible PBX 2027

    Unlike the previous setup process, you cannot use the Raspberry Pi Imager to create your microSD card. Instead, we recommend the free Balena Etcher application which is available for all desktops. So begin by installing the Balena Etcher software here.

    Next, download and unzip the Incredible PBX 2027 image from the Incredible PBX Repo.

    If you don’t already have one, we recommend you purchase the $9.99 SD Card Reader using our referral link. Then insert a 32GB microSD card into the reader and plug the reader into your desktop machine. Using our referral links helps fund our open source projects.


    Now run the Balena Etcher app. Choose Flash from File and select the unzipped Incredible PBX 2027 image from your desktop: incrediblepbx2027-raspi.img. Next, choose Select Target and choose the microSD card you plugged into your PC. Finally, click Flash to transfer the Incredible PBX 2027 image to your microSD card. When the process completes, eject the microSD card and insert it into and boot your Raspberry Pi.


    If flashing fails, try formatting the microSD card on a Linux machine first. Format: mkfs.vfat /dev/sda. Or Reformat: mkfs.vfat /dev/sda1 Then repeat the Etcher flashing.

    After your Raspberry Pi boots, do the following:

    1. Press ENTER to display Login prompt. Login as root with password: password
    2. Agree to license terms by pressing ENTER
    3. When initial setup completes, press ENTER
    4. When raspi-config begins:
    5. What user should use these settings? Press ENTER
    6. System Options -> Wireless LAN: Configure SSID and Password, if desired
    7. Localization Settings: Set Locale, Timezone & WiFi Country
    8. Advanced Options: Resize image to match SD card size
    9. Finish -> Reboot Now: YES
    10. If rc.local fails to start after rebooting, press Ctrl-Alt-Del to reboot again
    11. Wait for Asterisk to finish starting up. Then switch to your Desktop PC
    12. Make note of the Private IP address above RasPi login prompt before you go

    To assure that your desktop computer is whitelisted in the Incredible PBX firewall, we recommend completing the rest of the install using SSH or Putty on your desktop machine. The ip a command above will tell you the local IP address of your RasPi. So login using this command and default password of password: ssh root@ip-address.

    1. Set secure root password with command: passwd
    2. Set secure FreePBX password: /root/admin-pw-change
    3. Set secure Apache password: /root/apache-pw-change
    4. /root/reset-extension-passwords (701 to 705)
    5. /root/reset-conference-pins
    6. /root/reset-reminders-pin
    7. Make note of your PortKnocker codes: cat knock.FAQ
    8. DONE!

    When the install finishes, reboot your Raspberry Pi and log back in as root. Let the Automatic Update Utility bring your system up to current specs after which the pbxstatus display should show something like the following.


    NOTE: To activate an OpenVPN client connection, create and copy a client configuration named incrediblepbx2027.ovpn from your OpenVPN server into the /etc folder & reboot.

    What’s Included? Incredible PBX 2027 serves up a never before available VoIP powerhouse featuring Asterisk 20 and all FreePBX 16 GPL modules, an Apache web server, the latest MariaDB SQL server (formerly MySQL), SendMail mail server, Webmin, and most of the Incredible PBX feature set including SIP, PJSIP, SMS, voice recognition, AsteriDex, gTTS Text-to-Speech VoIP applications, Call-By-Name Dialing, News, Weather, Telephone Reminders, and hundreds of features that typically are found in commercial PBXs: Conferencing, IVRs and Email Delivery of transcribed voicemails, AutoAttendants, Voicemail Blasting, and more. We’ve also incorporated the Zero Trunk Configuration feature from the LITE build which lets you sign up with one of our VoIP providers and start making and receiving calls instantly. Or you can use the new ClearlyIP trunking module included in the GUI for seamless integration of SMS messaging into FreePBX® and its User Control Panel.

    Choosing a SIP Provider. As we mentioned, Incredible PBX 2027 comes preconfigured to support many of the major SIP providers including those that financially support Nerd Vittles and our open source projects: ClearlyIP, Skyetel, and VoIP.ms. As the old saying goes, they may not be the cheapest, but you get what you pay for. With all our providers, you only pay for minutes you use so signing up with more than one provider is a smart idea. For the full list of supported VoIP providers, visit the Incredible PBX Wiki.

    Continuing Your Incredible PBX 2027 Journey

    If you entered WiFi credentials when running raspi-config above and your Raspberry Pi does not have a wired network connection, it should automatically enable the Wi-Fi connection on reboot. Issuing the command ip a will tell you the local IP addresses of wlan0 and eth0. With the Raspberry Pi 3B, 4B and 400, WiFi is built into the hardware. But you still have to provide your SSID name and SSID password to make a connection to your WiFi network. If pbxstatus does not show a network connection, here’s how to enable Wi-Fi:

    If your WiFi network requires a password, insert the following into /etc/wpa_supplicant/wpa_supplicant.conf:

    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
    update_config=1
    country=US
    
    network={
     ssid="YourSSID"
     psk="YourSSIDpassword"
     key_mgmt=WPA-PSK
     scan_ssid=1
     priority=7
    }
    

     

    Now restart your server: reboot. When the reboot finishes, you now should have network connectivity.

    You may also need to change the default PortKnocker setting to your wireless LAN connection:

    sed -i 's|eth0|wlan0|' /etc/default/knockd
    service knockd restart
    

     

    Finally, if your PBX is sitting behind a NAT-based router, you’ll need to redirect incoming UDP 5060-5061 and UDP 10000-20000 traffic to the private IP address of your RasPi. This is required for all of the SIP providers included in the Incredible PBX 2027 build. Otherwise, all inbound calls will fail.

    Configuring Skyetel for Incredible PBX 2027

    If you’ve decided to go with Skyetel, here’s the drill. Sign up for Skyetel service and take advantage of the Nerd Vittles Free $10 credit and BOGO special. 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 the $10 credit for your account by referencing the Nerd Vittles special offer. Once you are happy with the service, open another ticket after funding your account and request that Skyetel match your deposit of up to $250. That gets you up to $500 of helf-price calling. Credit is limited to one per person/company/address/location. If you have numbers to port in, you can do it at no cost after funding your account. Effective 10/1/2023, $25/month minimum spend required.

    Skyetel typically does not require 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. Here’s a typical setup for Incredible PBX 2027:

    • Name: MyPBX
    • Priority: 1
    • IP Address: PBX-Public-IP-Address
    • Port: 5061
    • Protocol: UDP
    • Description: 2027.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 fund your account) 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 VoIP.ms for Incredible PBX 2027

    To sign up for VoIP.ms service, may we suggest you use our signup link so that Nerd Vittles gets a referral credit for your signup. Once your account is set up, you’ll need to set up a SIP SubAccount and, for Authentication Type, choose Static IP Authentication and enter your Incredible PBX 2027 server’s public IP address. For Transport, choose UDP. For Device Type, choose Asterisk, IP PBX, Gateway or VoIP Switch. Order a DID in their web panel, and then point the DID to the SubAccount you just created. Be sure to specify atlanta1.voip.ms as the POP from which to receive incoming calls. On the Incredible PBX side, simply Enable the VoIPms trunk and save your update.

    Adding a Bootable SSD to Raspberry Pi

    Shown below are the two components that make up the 256GB storage solution for the Raspberry Pi. These include the M.2 SSD SATA drive and the M.2 enclosure which provides a USB connector that’s compatible with your RasPi. Assembly of the components takes less than a minute as shown in the steps below:




    You can order the M.2 SSD SATA drive and the M.2 enclosure using our Amazon referral links which help support Nerd Vittles and the Incredible PBX open source project.

    Once you have assembled your SSD in the sleeve, log back in as root using SSH or Putty. For best performance, insert the SSD drive into one of the blue USB 3.0 ports and verify that /dev/sda device is shown when you issue the command: fdisk -l

    Now proceed with the following steps to copy the image from your microSD card to the new SSD SATA drive:

    rpi-clone -l -e sda -f sda
    # answer prompts with yes and incred2027
    # once the image is copied, dismount the drive when prompted
    mount /dev/sda2 /mnt/clone
    cd /mnt/clone/boot
    cp -p -r /boot/* .
    sed -i 's|sda2|mmcblk0p2|' /boot/cmdline.txt
    cd /
    umount /mnt/clone
    halt
    

     
    Now you’re ready to restart your Raspberry Pi from the SSD SATA drive. Remove the microSD card and reboot your server.



    Configuring a Softphone for Incredible PBX 2027



    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. This really is not an option with a Raspberry Pi. 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 Zoiper5 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 VoIP-Info.org Forum when you’re ready to get serious about VoIP telephony.

    We recommend the Zoiper5 softphone which has a free option. Download it from here for your desktop of choice. Once installed, run it and ignore the nag screen for the commercial version. There are four screens (shown above) to navigate through to connect your softphone to your PBX. You’ll need the credentials for the 701 extension on Incredible PBX. You can find them by running /root/show-passwords or you can decipher the password in the FreePBX GUI by navigating to Applications -> Extensions -> 701 once you log in with your admin password which you set up above. You’ll also need the IP address of your server which you can decipher by running pbxstatus. In the first screen shown above, fill in your 701 SIP address making sure to add the 5061 port since this is a PJsip extension. Enter your Password and click the Login button. On the second and third screens, leave the defaults and click Next then Skip. On the final screen, Zoiper5 will check for connections SIP TLS, SIP TCP, SIP UDP, and IAX UDP. You should see a green Found indicator for SIP UDP which means your connection was successfully established. Press Next and you’ll have a working softphone.



    Now test things out by dialing 947 for a weather report using the Zoiper5 dialpad. You’ll be prompted to enter a 5-digit zip code. Note that this must be entered using the dialpad in the right window, NOT the original dialpad. You can try a few more calls to test things out:

    DEMO - Apps Demo
    123 - Reminders
    947 - Weather by ZIP Code
    951 - Yahoo News
    TODAY - Today in History
    LENNY - The Telemarketer's Worst Nightmare
    

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

    Audio Issues with Incredible PBX 2027

    If you experience one-way or no audio on some calls, add your external IP address and LAN subnet in the GUI by navigating to Settings -> Asterisk SIP Settings. In the NAT Settings section, click Detect Network Settings. Click Submit and Apply Settings to save your changes. Equally important, check your Router settings and verify that SIP ALG is Disabled.

    Configuring Gmail as Smart Relay Host

    Most Raspberry Pi implementations will be on networks managed by companies like Comcast, Spectrum, and AT&T that block downstream mail servers (that’s you) from sending email. The solution is to use Gmail or your local ISP as a smart relay host to send mail from your server. You’ll need this to deliver voicemails via email. Here’s how to set it up using a Gmail account. IMPORTANT: You MUST use a Gmail App Password instead of your Gmail account password.

    /root/enable-gmail-smarthost-for-sendmail
    

    Now send yourself a test email message to make sure things are working properly:

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

    Almost-Free SMS Messaging Returns

    As you probably know, new Application To Person, 10 Digit Long Code (A2P 10DLC) SMS rules have gone into effect to lessen the chances of SPAM inundating the cellphone providers. As a result, SMS pricing from many VoIP providers has become prohibitively expensive. One provider that has not changed their pricing structure is VoIP.ms where SMS messages remain $0.0075 per message. While VoIP.ms provides a web interface to send and receive SMS messages, Incredible PBX also includes a command-line interface to their service. The recommended setup is to use the VoIP.ms side to forward incoming SMS messages to either your email account and/or cellphone. Then you can send SMS messages from both the VoIP.ms web portal AND the command line interface of Incredible PBX. To get started…

    On the VoIP.ms portal, do the following:

    1. Sign up for a VoIP.ms account using our referral link1
    2. Purchase a DID
    3. In the Message Service DID section, enable SMS/MMS and…
    4. Also provide email and/or cellphone forwarding numbers
    5. In Main Menu/SOAP/RestAPI, enable API and…
    6. Also create a very secure API password and…
    7. Provide IP address whitelist for receiving API messages

    On your Incredible PBX platform, login using SSH root and do the following:

    1. apt install php-soap -y
    2. cd /root/sms-voip.ms
    3. nano -w class.voipms.php
    4. Insert VoIP.ms username (email address) and API password
    5. Save file: Ctrl-X, Y, then ENTER
    6. nano -w voipms-sms.php
    7. Insert 10-digit DID in $SMSsender
    8. Save file: Ctrl-X, Y, then ENTER

    Now you’re ready to try things out. Simply enter the recipient’s 10-digit phone number and the desired message using the syntax below. The script should confirm transmission of the the message.

    /root/sms-voip.ms/voipms-sms.php smsnumber "sms message"
    

    Incredible PBX 2027 Administration

    We’ve eased the pain of administering your new PBX with a collection of scripts which you will find in the /root folder after logging in with SSH or Putty. Here’s a quick summary of what each of the scripts does.

    admin-pw-change lets you update the admin password for web browser access to the Incredible PBX GUI.

    apache-pw-change lets you update the admin password for Apache applications such as AsteriDex and Reminders.

    add-fqdn is used to whitelist a fully-qualified domain name in the firewall. Because Incredible PBX 2027 blocks all traffic from IP addresses that are not whitelisted, this is what you use to authorize an external user for your PBX. The advantage of an FQDN is that you can use a dynamic DNS service to automatically update the IP address associated with an FQDN so that you never lose connectivity.

    add-ip is used to whitelist a public IP address in the firewall. See the add-fqdn explanation as to why this matters.

    del-acct is used to remove an IP address or FQDN from the firewall’s whitelist.

    iptables-restart is the ONLY command you should ever use to restart the IPtables firewall and Fail2Ban.

    knock.FAQ contains your PortKnocker credentials for emergency access to your server if the firewall locks you out. Tutorial here.

    reset-conference-pins is a script that automatically and randomly resets the user and admin pins for access to the preconfigured conferencing application. Dial C-O-N-F from any registered SIP phone to connect to the conference.

    reset-extension-passwords is a script that automatically and randomly resets ALL of the SIP passwords for extensions 701-705. Be careful using this one, or you may disable existing registered phones and cause Fail2Ban to blacklist the IP addresses of those users. HINT: You can place a call to the Ring Group associated with all five extensions by dialing 777.

    reset-reminders-pin is a script that automatically and randomly resets the pin required to access the Telephone Reminders application by dialing 123. It’s important to protect this application because a nefarious user could set up a reminder to call a number anywhere in the world assuming your SIP provider’s account was configured to allow such calls.


    rpi-clone is a utility that makes it easy to make a bootable image of the microSD card used to start your Raspberry Pi. You’ll need a USB-to-microSD adapter to begin. Insert a backup microSD card large enough to hold all of the data on the primary microSD card (df -h). Insert the USB stick with the card. Identify the backup microSD card, usually sda (fdisk -l). Format the backup microSD card: mkfs.vfat /dev/sda. Or reformat: mkfs.vfat /dev/sda1. Then issue the following command to clone the main microSD card: rpi-clone -f sda. Tutorial here.

    show-feature-codes is a cheat sheet for all of the feature codes which can be dialed from any registered SIP phone. It documents how powerful a platform Incredible PBX 2027 actually is. A similar listing is available in the GUI at Admin -> Feature Codes.

    show-passwords is a script that displays ALL of the passwords associated with Incredible PBX 2027. This includes SIP extension passwords, voicemail pins, conference pins, telephone reminders pin, and your Anveo Direct outbound calling pin (if configured). Note that voicemail pins are configured by the user of a SIP extension the first time the user accesses the voicemail system by dialing *97.

    timezone-setup lets you reconfigure the correct time zone for your server.

    purge-cdr-cel-records cleans out all existing entries in both the CDR and CEL tables of the Asterisk CDR database.

    sig-fix disables module signature checking in FreePBX. It is automatically disabled upon installation.

    update-IncrediblePBX is the Automatic Update Utility which checks for server updates from incrediblepbx.com every time you log into your server as root using SSH or Putty. Do NOT disable it as it is used to load important fixes and security updates when necessary. We recommend logging into your server at least once a week.

    upgrade-asterisk20 is self-explanatory and can be used to upgrade to the latest release of Asterisk 20.

    pbxstatus (shown above) displays status of all major components of Incredible PBX 2027.

    Forwarding Calls to Your Cellphone. Keep in mind that inbound calls to your DIDs automatically ring all five SIP extensions, 701-705. The easiest way to also ring your cellphone is to set one of these five extensions to forward incoming calls to your cellphone. You must have a working trunk for calls to your cellphone to complete successfully. After logging into your PBX as root, issue the following command to forward calls from extension 705 to your cellphone: asterisk -rx "database put CF 705 6781234567" where 6781234567 is your cellphone number.

    To remove call forwarding: asterisk -rx "database del CF 705"

    Keeping FreePBX 16 Modules Current

    We strongly recommend that you periodically update all of your FreePBX modules to eliminate bugs and to reduce security vulnerabilities. Make a backup image with rpi-clone first! From the Linux CLI, log into your server as root and issue the following commands:

    rm -f /tmp/*
    fwconsole ma upgradeall
    fwconsole reload
    /root/sig-fix
    systemctl restart apache2
    /root/sig-fix
    

    Resolving an Expired Certificate Alert

    1. Navigate to Admin -> Certificate Management in the FreePBX GUI
    2. Click the Trashcan to delete the Self-Signed Certificate
    3. Click New Certificate -> Generate Self-Signed Certificate
    4. In the Description field, type: Default
    5. Click Generate Certificate button

    Introducing Adminer: The Ultimate MySQL Editor

    If you’re as sick of phpMyAdmin as we are, you’ll be happy to know there’s a new kid on the block, Adminer. Better yet, the install procedure is a painless, one-minute exercise. The setup procedure for Incredible PBX 2027 is documented here. Once installed, you can connect to Adminer at http://server-ip-address/adminer. You should be prompted for your Apache admin credentials which were configured when you first installed Incredible PBX. Next, enter your MySQL root credentials and Adminer will display in all its glory. DO NOT OPEN PORT 80 FOR PUBLIC ACCESS, OR YOUR ENTIRE PBX WILL BE AT A HACKER’S MERCY!


    What About Fax Support?

    Incredible PBX 2027 no longer includes fax support out of the box. To add it, follow this tutorial.

    Where Can I Buy a Raspberry Pi?

    Search for Raspberry Pi inventory here or RasPi 400 keyboard here.

    Originally published: Monday, June 26, 2023



    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 various sites when we find their prices are competitive for the recommended products. Nerd Vittles receives a small referral fee from the provider 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. []

    Unified Communications: Adding SMS to the Asterisk Toolkit


    As we roll into September, the VoIP landscape continues to evolve. For various reasons, SMS functionality has become a must-have with many VoIP deployments. What we’ve observed lately is that many businesses and professional offices now assume that all phone numbers are SMS-enabled which means, if your primary phone numbers don’t support SMS, you may miss important notices and reminders. Particularly in this COVID era, physicians have incredibly high rates of no-shows for appointments so you’ll typically get multiple SMS messages to multiple numbers beginning several days before an appointment. And, believe it or not, there are many locations where a cellphone lacks service but VoIP is alive and well.

    The gap we want to close today is to enable SMS on your Incredible PBX® platform and its critical extensions. It’s also a good time to determine whether your existing SIP phones include SMS support so that notifications can be delivered to the desktop PC and phone in a reliable and timely manner. The good news is you don’t need to mortgage your house with a BroadWorks Instant Message and Presence (IM&P) subscription in order to implement SMS messaging on Asterisk® and FreePBX® platforms. SMS VoIP implementations typically cost less than a penny a message. While that’s not as inexpensive as many cellular services, it won’t break the bank either.

    While we’ve all grown accustomed to SMS messaging on our smartphones, SMS and MMS messaging in the VoIP sphere is a different beast because there’s little uniformity in the way messages are sent and delivered. Proprietary messaging unfortunately is the rule rather than the exception. So today we’ll offer several VoIP provider alternatives. If you’re new to all of this, here’s the bottom line. SMS messages are delivered to VoIP trunks or DIDs. SMS messages are sent from VoIP extensions or users. Thus, it becomes the job of the PBX platform to map DIDs to extensions and to map extensions to DIDs in order to reliably send and receive SMS and MMS messages.

    Our personal favorite for SMS messaging with Incredible PBX is the Clearly IP offering coupled with the Incredible PBX SIP Trunking platform because of its seamless integration with FreePBX and its User Control Panel as well as the Clearly Anywhere softphone. Once deployed, you can send and retrieve messages from your desktop PC by logging into the User Control Panel or simply calling up the Clearly IP softphone on your smartphone or desktop PC. Complete deployment tutorial is available in the Incredible PBX Wiki.

    A close second place goes to VoIP.ms with their extremely flexible SMS/MMS offering which lets you redirect incoming messages to your email address, another SMS number, an SMS SIP account on VoIP.ms, and the VoIP.ms SMS/MMS Portal. We have previously documented and recently updated the Incredible PBX setup procedure to both receive and send messages as well as to deliver the messages to SMS-enabled SIP phones. Email replies to incoming SMS messages are automatically delivered to the original sender. And, of course, SMS replies on your SMS-enabled SIP phone also are delivered to the original sender. Complete Incredible PBX deployment takes only a few minutes.

    A third alternative for messaging is our Platinum Partner, Skyetel. As with VoIP.ms, we previously have documented the setup procedure so we won’t repeat it here. The complete deployment tutorial is available here.

    Finally, we would direct your attention to the BulkVS messaging tutorial on the VoIP-info.org Forum. It will walk you through the setup procedure using that provider.

    Originally published: Wednesday, September 1, 2021



    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.
     



    Oldie But Goodie: VoIP.ms, The Most Versatile VoIP Provider



    We all are fortunate to have an extraordinary selection of options when it comes to VoIP Providers. For redundancy and reliability, nobody quite matches Skyetel. For FreePBX® and SIP phone integration, ClearlyIP is the hands-down winner. And, if you’re searching for the Most Versatile VoIP Provider, look no further than VoIP.ms, now with a $10 signup credit with your first deposit to kick the tires. We are thrilled that all three of these providers are Platinum Sponsors of Nerd Vittles and our open source projects. Here’s our VoIP.ms signup link.

    As we have often stressed, the beauty of VoIP is not having to put all your eggs in one basket when it comes to communications. Most of the offerings we write about are free when not in use. So, unlike in the MaBell days, you lose nothing by signing up with multiple providers and enjoying the best of all worlds. Today we want to highlight what makes VoIP.ms extra special.

    VoIP.ms Points of Presence

    When it comes to Points of Presence (POPs), VoIP.ms covers all the bases. This matters because the closer your VoIP provider is to the physical location of your PBX, the better your calls will be. In the case of VoIP.ms, your choice of POPs is impressive. In the United States, there are multiple POPs in Atlanta, Chicago, Dallas, Denver, Houston, Los Angeles, New York, San Jose, Seattle, Tampa, and Washington, D.C. In Canada, you can choose between multiple POPs in Montreal, Toronto, and Vancouver. For our international friends, there are POPs in Amsterdam, London, Paris, and Sydney.

    VoIP.ms DID Options

    In addition to free number porting, VoIP.ms has an impressive array of DIDs from which to choose. They offer DIDs in virtually every state, province, and country in the world as well as toll-free and fax numbers in many locations with per minute and unlimited calling options.

    Obtaining VoIP.ms SIP URIs

    There are now more than 2,000 VoIP networks that support SIP URI access. Using a SIP URI dialing prefix, you can call any of the referenced networks @sipbbroker.com. The beauty of SIP URI calling is the calls typically are free worldwide regardless of duration. There are a number of ways to obtain a SIP URI for your PBX. Perhaps the easiest is to set up the PUBLIC Incredible PBX cloud platform that we previously introduced. 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, virtual SIP URIs are available from VoIP.ms for 25¢ a month. SIP URIs are treated just like DIDs with incoming calls billed at ⅒¢ per minute.

    VoIP.ms Incoming Call Routing

    For call routing, the options are equally impressive. In fact, you may decide you don’t need a PBX at all. VoIP.ms supports SIP and IAX2 trunk registrations using credentials or IP address, a customizable IVR, a call queue, conferencing, call forwarding, SIP URI forwarding, call hunting, ring groups, callback, DISA, custom music on hold, voicemail transcription, and impressive call failover options for each of the following conditions: busy, unreachable, and unanswered calls. You can also perform CNAM lookups on incoming calls as well as setting the ring time, customizing each DID’s voicemail setup, and choosing whether to record calls.

    VoIP.ms Outbound Call Pricing

    No article would be complete without some mention of pricing. VoIP.ms is not the cheapest provider on the planet. But, as the old saying goes, you get what you pay for. Calls to toll-free numbers are free. While that may seem obvious, it is the exception rather than the rule in the VoIP world. Calls to US-48 destinations are a penny a minute and are billed in six second increments. Calls to most Canadian destinations are about a half-cent per minute. Calls to Mexico are just over a penny a minute billed in one minute increments. International calls vary based upon destination and latest published rates. International calls are blocked unless you enable them, and you can choose the countries you wish to enable as well as a dollar limit.

    VoIP.ms Messaging Services

    One of our favorite VoIP.ms features is the variety of SMS and MMS messaging options they provide. Virtually all of their DIDs now support messaging. With incoming messages, you have the choice of routing the message to an email address, another SMS destination, the VoIP.ms Message Portal, an SMS URL callback destination, and now an SMS SIP account. Our tutorial below sets up SMS SIP messaging with Incredible PBX® 2020 or 2021. You then can send quick messages in response to incoming calls on your Clearly Anywhere softphone.

    Configuring VoIP.ms for SMS SIP Messaging

    Prerequisites: DID supports messaging, SMS SIP messaging enabled on the DID

    First, create an Asterisk SubAccount using the SIP protocol with User/Password Authentication. In the Security section, enter the public IP address of your PBX, and Save your Settings. Next, acquire a DID in the VoIP.ms portal. Then choose the Manage DIDs option and edit your DID configuration. For Call Routing, select the SIP/IAX option and pick your SubAccount. Choose a DID POP near your PBX location. In the Message Service section, enable SMS SIP Account and pick your SubAccount. Then Apply Changes.

    Configuring Incredible PBX for SIP Messaging

    Prerequisites: PJsip VoIP.ms Trunk, PJsip Extension for SMS, sms-in and sms-out Contexts

    Both PJsip Trunks and PJsip Extensions in FreePBX now support a Messages Context option in the Advanced tab of the setup GUI. Using the sms-in and sms-out contexts documented below, FreePBX now can process incoming and outgoing SMS messages. A typical use case in the Incredible PBX 2020 would be to quickly respond to an incoming call to the Clearly Anywhere app on your smartphone to indicate that you were in the midst of another call and would return the caller’s call. It is anything but a robust SMS messaging application for your smartphone, but it is a welcome addition for many mobile users that have to juggle both cellphone calls and office calls forwarded from a PBX to your smartphone. VoIP.ms has developed an excellent SMS Management Portal that is included in the VoIP.ms Dashboard. It allows you to read, respond, and manage SMS messages sent to your VoIP.ms DIDs.

    Once you have completed the necessary setup steps on the VoIP.ms side, there are three steps to activate SMS SIP messaging with Incredible PBX: (1) create and register your VoIP.ms PJsip Trunk, (2) create and configure a PJsip extension to receive incoming calls and SMS messages, (3) add the sms-in and sms-out contexts to extensions_custom.conf dialplan.

    (1) Create a PJsip Trunk for VoIP.ms in FreePBX to process calls and SMS messages:


    In the PJsip Settings tab, fill out the General tab. The Username will be your VoIP.ms account number followed by an underscore and then the name of the SubAccount you created above, e.g. 12345_mypbx. The Password will be the password you assigned to your VoIP.ms SubAccount. For SIP Server, enter VoIP.ms POP assigned to your DID, e.g. atlanta1.voip.ms. Accept the remaining defaults in the General tab. Click on the Advanced tab and scroll down to Message Context and enter sms-in. Click Submit and Reload your Dialplan.

    (2) Next create a PJsip Extension in the FreePBX portal. This will be used to process calls and send SIP messages. NOTE: Incredible PBX ships with a number of chan_sip extensions preconfigured. Do NOT use these. You need to create a PJsip extension. The General tab should look something like this:



    Click on the Advanced tab and scroll down to Max Contacts and enter a number that is one more than twice the number of phones that will be connected simultaneously to this extension. For example, if you have 3 smartphones connecting to this extension, enter 7. Scroll down to Message Context and enter sms-out. Click Submit and Reload your Dialplan.

    (3) Finally, cut-and-paste the following code into the bottom of extensions_custom.conf in the /etc/asterisk directory:

    [sms-out]
    exten => _.,1,NoOp(Outbound Message dialplan invoked)
    exten => _.,n,NoOp(To ${MESSAGE(to)})
    exten => _.,n,NoOp(From ${MESSAGE(from)})
    exten => _.,n,NoOp(Body ${MESSAGE(body)})
    ;
    ; add your VoIPms info in the next 3 lines
    exten => _.,n,Set(VOIPMS_ACCOUNT="123456_subacct")
    exten => _.,n,Set(VOIPMS_POP="atlanta.voip.ms")
    exten => _.,n,Set(VOIPMS_TRUNK="VoIPms-PJsip") ; actual VoIP.ms trunk in FreePBX
    ;
    exten => _.,n,Set(NUMBER_TO=${CUT(CUT(MESSAGE(to),@,1),:,2)})
    exten => _.,n,Set(EXTENSION_FROM=${CUT(CUT(MESSAGE(from),@,1),:,2)})
    ;
    ; Now map your sending extensions EXTENSION_FROM to corresponding DIDs NUMBER_FROM
    exten => _.,n,Set(CASE_701=6005550101) ; ext 701 msgs originate from 6005550101
    exten => _.,n,Set(CASE_702=6005550102) ; ext 702 msgs originate from 6005550102
    exten => _.,n,Set(CASE_703=6005550101) ; ext 703 msgs originate from 6005550101
    ;
    exten => _.,n,Set(NUMBER_FROM=${CASE_${EXTENSION_FROM}})
    exten => _.,n,Set(ACTUAL_FROM="${NUMBER_FROM}" )
    exten => _.,n,Set(ACTUAL_TO=pjsip:${VOIPMS_TRUNK}/sip:${NUMBER_TO}@${VOIPMS_POP})
    exten => _.,n,MessageSend(${ACTUAL_TO},${ACTUAL_FROM})
    exten => _.,n,NoOp(Send status is ${MESSAGE_SEND_STATUS})
    exten => _.,n,Hangup()
    ;-------------------------------------------------------------------------
    
    [sms-in]
    exten => _.,1,NoOp(Inbound SMS dialplan invoked)
    exten => _.,n,NoOp(To ${MESSAGE(to)})
    exten => _.,n,NoOp(From ${MESSAGE(from)})
    exten => _.,n,NoOp(Body ${MESSAGE(body)})
    ;
    ; enter your default incoming SMS extension below
    ; if you want SMS messages delivered to multiple extensions,
    ; clone additional MessageSend lines below with extension numbers
    exten => _.,n,Set(EXTENSION=701)
    ;
    exten => _.,n,Set(ACTUAL_FROM=${MESSAGE(from)})
    exten => _.,n,Set(HOST_TO=${CUT(MESSAGE(to),@,2)})
    exten => _.,n,Set(NUMBER_TO=${MESSAGE_DATA(X-SMS-To)})
    exten => _.,n,MessageSend(pjsip:${EXTENSION}@${HOST_TO},${ACTUAL_FROM})
    exten => _.,n,NoOp(Send status is ${MESSAGE_SEND_STATUS})
    exten => _.,n,Hangup()
    ;-------------------------------------------------------------------------
    

    In the pasted [sms-out] context, insert your actual VOIPMS_ACCOUNT, VOIPMS_POP, and VOIPMS_TRUNK name in the lines provided. Then map each extension from which you wish to send SMS messages to a VoIP.ms DID on your PBX in the lines provided. In the pasted [sms-in] context, enter the EXTENSION number which should receive incoming messages from the PJsip trunk in which you designated [sms-in] as the Message Context. There is no magic to the [sms-in] context name. If you have more than one PJsip trunk, simply create additional incoming contexts (such as [sms-in-2]) for each additional trunk and clone the [sms-in] code designating the desired extension to receive incoming messages from each DID. For the [sms-out] context, it can be used as the Message Context for multiple extensions that should be enabled to send outbound SMS messages.

    Save the file, and reload the Asterisk dialplan: asterisk -rx "dialplan reload"

    Once all the pieces are in place, SMS messages sent to your VoIP.ms DID will be delivered to the FreePBX trunk registered to the SMS SIP destination specified in your VoIP.ms DID setup. And here’s one more tip. If you happen to have a Yealink T46G (not T48G) or a Grandstream GXV phone that is also registered to that extension, the messages will also pop up on your desktop phone with an alert tone. On Grandstream GXV Android phones, we recommend dragging the SMS app to the main screen so that the incoming message count appears beside the SMS icon when new messages are received.

    Our special thanks and much of the credit for this SMS/SIP solution for Asterisk goes to Stepan Novotill and the participants in this thread on the VoIP-Info Forum.

    Signing Up for VoIP.ms Service

    Please consider using the Nerd Vittles referral link should you decide to sign up for VoIP.ms services. These referral commissions help to defray the costs of maintaining Nerd Vittles and the Incredible PBX open source project. Many thanks.
     

    Originally published: Monday, October 12, 2020  Updated: Saturday, August 28, 2021



    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.
     



    Deploying an Incredible PBX 2020 PUBLIC Server



    With the almost overnight popularity of the new Clearly Anywhere softphone which provides Incredible PBX connectivity from virtually anywhere, we wanted to revisit our Incredible PBX 2020 PUBLIC tutorial to document some additional tips and tricks. And, because softphones need connectivity on both cellular networks and using Wi-Fi with dynamic IP addresses in multiple locations, exclusive whitelist-based access to Incredible PBX simply was no longer feasible. Additionally, due to Clearly Anywhere’s tight integration with the FreePBX® User Control Panel (UCP), remote access to UCP for mobile users has become more important particularly with the new QR Code auto-configuration option for Clearly Anywhere clients.

    Safely deploying a public-facing Asterisk® server with full FreePBX functionality has become the Holy Grail for Nerd Vittles in 2019. Today we tackle it on the new Incredible PBX® 2020 platform featuring the latest releases of Asterisk 16 and FreePBX 15. The icing on today’s cake is an additional offer from Skyetel that supplements the current Nerd Vittles BOGO offer of up to $500 in half-priced VoIP services. Skyetel now starts you off with a $10 credit just for opening an account here. Then, after you have had an opportunity to kick the tires and perhaps purchase a DID for a buck, you can make $9 worth of phone calls before deciding whether to take advantage of the BOGO special by making a purchase of up to $250 and having Skyetel match your contribution. Once you have funded your account, you then can also take advantage of Skyetel’s free number porting offer for the next 60 days. To get your $10 credit, just open a ticket and request the $10 Nerd Vittles credit once you’ve signed up. To get the Nerd Vittles BOGO price match and take advantage of free number porting, simply open another ticket once you have added up to $250 to your account. Effective 10/1/2023, $25/month minimum spend required.

    Making the Case for a Public-Facing PBX

    We’ve had some of our pioneers trying out the Incredible PBX PUBLIC implementations for almost a year. Early on, the first question we got was why anyone would want to do this. After all, PBX in a Flash 3 and Incredible PBX for the better part of a decade have been deployed with a whitelist using the Travelin’ Man 3 firewall, and there’s never been a security issue. So why switch horses now? The short answer is mobile users with dynamic IP addresses. If all the users of your PBX are sitting behind the same NAT-based router with static IP addresses, the Travelin’ Man 3 design is perfect. The bad guys could never even see your server. But if some of your users either reside or travel outside your home base or if you want calls to follow you on your smartphone with Clearly Anywhere when you leave home or the office, then Travelin’ Man 3 blocked SIP access from these remote phones until their new IP addresses were whitelisted. Multiply this by dozens or hundreds of users, and network management suddenly became a full-time job. Yes, we’ve had tools such as dynamic DNS and PortKnocker to ease the pain, but it still was a knuckle-drill for mobile users. And, in today’s Covid world, much of the workforce is quickly morphing into mobile users without a traditional desk at any office. What we were also beginning to see were homegrown "improvements" to the IPtables firewall where users that didn’t appreciate the risks were exposing their servers to SIP attacks simply to ease the pain of connecting remotely.

    The world also is becoming more SIP savvy. Just as folks are learning that a $35 antenna can provide an awesome collection of 4K Ultra HD TV channels without the expense of a monthly cable bill, others are learning that a SIP telephone or softphone app on your smartphone can provide free calls to and from anybody with a SIP URI without sharing your communications with Facebook or Microsoft. A public-facing PBX makes free worldwide SIP calling a reality.

    Building the Base Platform for Incredible PBX PUBLIC

    To get started today, begin by installing Incredible PBX 2020 using our latest tutorial. We strongly recommend a cloud-based KVM platform with a static IP address on the public Internet. We’ve even built an Incredible PBX 2020 image for our friends at CrownCloud. You won’t beat their pricing of $25/year which is about the same expense you will incur for electricity hosting your own server on premise. And you even get a snapshot backup at no additional cost.

    Once you have set up your Incredible PBX 2020 server, the next step is to assign one or two fully-qualified domain names (FQDNs) to your server. You can have one FQDN for registering SIP extensions and a different one for anonymous SIP (invites) access to your server, or you can use the same FQDN for both. Security through obscurity provides an extra layer of protection for your server so choose your FQDNs carefully. sip.yourname.com provides almost no protection while f246g.yourname.com pretty much assures that nobody is going to guess your domain name. This is particularly important with the FQDN for SIP registrations because registered extensions on your PBX can obviously make phone calls that cost money. If you don’t have your own domain, you can always obtain a free FQDN from a service such as NoIP.com.

    By default, Incredible PBX 2020 configures five extensions (701-705) and a Ring Group for those extensions (777) as well as four trunks. With Skyetel, your PBX is ready to make and receive calls as soon as you sign up. With the other three trunk providers, you only need to enable the trunk. You can add as many additional providers and extensions as you like and modify the ring group to meet your needs. To get started, be sure to configure the correct time zone for your server as this affects delivery of reminders. Run /root/timezone-setup. Next, set a secure password for admin access to the FreePBX GUI modules. Run /root/admin-pw-change. Then set a secure password for admin access to web applications such as AsteriDex, Reminders, and User Control Panel. Run /root/apache-pw-change. In addition to reviewing your extensions and ring group, review the default inbound route and choose the destination for the incoming calls from your provider. Finally, configure the outbound route to use the provider sequence desired. By default, it uses Skyetel for outbound calls.

    If you plan to use Clearly Anywhere, you’ll need to add at least one PJsip extension on your PBX. Simply navigate to Applications -> Extensions in the FreePBX GUI. Choose Add Extension -> Add PJsip Extension. In the General tab, insert an extension number in User Extension and Display Name, e.g. 707. In the Advanced tab, set Max Contacts to 11 which will let you connect up to 5 Clearly Anywhere softphones to the extension. Click Submit and Reload Dialplan when prompted. Go back into the new extension and make note of your new credentials for User Manager. You’ll need these for Clearly Anywhere. Remember to also add the PJsip extension to the Inbound Route for your incoming calls.

    Going Public with Incredible PBX 2020

    Once you’ve tested making and receiving calls with your new server, you’re ready to convert it into a public-facing PBX. Before proceeding, remove any whitelist entries you’ve added using add-ip and add-fqdn by running del-acct. These can be added back after the GO-PUBLIC-2020 install script is run. In order to run the install script below, you’ll need your FQDNs that you chose above, plus a port number for future SSH/Putty access to your server, plus a list of the extensions you wish to make available for public access to your PBX. These whitelisted extensions can be reached via SIP URI from anywhere in the world by anybody. It works just like your old MaBell phone. Anybody, anywhere can dial your number. What’s changed is now the calls are free. So choose your list carefully. We recommend using the year you were born for your SSH port to keep things simple for you. Once the GO-PUBLIC-2020 script has been run, you can only access your PBX via SSH/Putty at the new port, for example: ssh -p 1990 root@yourFQDN.com

    Now we’re ready to run the install script. It takes less than a minute. Before you begin, log out of ALL SIP extensions you have previously registered with Incredible PBX 2020 and change the server destination from an IP address to the FQDN you plan to assign to SIP registrations. Otherwise, these IP addresses will get banned while the install script is running below!

    cd /root
    wget http://incrediblepbx.com/go-public-2020.tar.gz
    tar zxvf go-public-2020.tar.gz
    rm -f go-public-2020.tar.gz
    ./GO-PUBLIC-2020
    

    A Few Words About Incredible PBX PUBLIC Security

    As with all Incredible PBX servers, Incredible PBX 2020-PUBLIC includes the Automatic Update Utility. Please don’t disable it. It’s our only way to push updates to you if some vulnerability is discovered down the road. It gets run whenever you login to your server as root using SSH/Putty. Do so regularly and follow us on Twitter for security alerts. There’s also an Incredible PBX RSS Feed that is displayed when you login to the Incredible PBX GUI with a browser. It, too, includes security alerts and should be checked regularly. It’s your phone bill.

    Incredible PBX 2020-PUBLIC uses the ipset utility in conjunction with the IPtables firewall to block several countries that have inordinately high concentrations of folks that try to break into VoIP servers. In addition, your public PBX includes the VoIP Blacklist which includes another 100,000 bad guys from around the globe. These blacklists get updated every night by a script which is run from /etc/crontab. For your own safety, don’t disable or delete /etc/update-voipbl.sh or the other components upon which it relies.

    Here are some other things you should do regularly to assure that your server remains secure. Login via SSH/Putty as root and check pbxstatus after the Automatic Update Utility is run. With the exception of the fax components, all the other items should be green all the time. From the Linux CLI, run: iptables -nL. This will show your firewall rules and whether any IP addresses have been banned by Fail2Ban. If there are banned IP addresses that are not your own, please open a thread on the VoIP-Info Forum and let us know about it. If there are dozens of banned IP addresses, shutdown your server immediately until the problem is identified and resolved. If the IP addresses happen to be your own users because of using incorrect passwords or because of using a server IP address instead of its FQDN for SIP registrations, unban the IP address:

    fail2ban-client set asterisk unbanip xxx.xxx.xxx.xxx

    Finally, watch the Asterisk CLI periodically for abnormal activity: asterisk -rvvvvvvvvvv

    Tightening Up SSH Server Access

    You obviously need a very secure root password for access to your server using SSH/Putty. Changing the TCP port for SSH access avoids the script kiddies, but it doesn’t offer much protection from a determined cracker. SSH login attempts are monitored by Fail2Ban, but Fail2Ban has issues when a determined intruder is using a powerful computing platform such as Amazon EC2. The more prudent solution is to disable SSH port access and use SSH Public Key Authentication as documented in the linked tutorial. Always, always use ssh-copy-id to copy your credentials to more than one desktop machine so that you don’t inadvertently lock yourself out of your PBX in the case of a hardware failure.

    Web Access to Incredible PBX 2020 PUBLIC

    By default, web access to all apps including FreePBX, UCP, AvantFax, AsteriDex, and Reminders is limited to whitelisted IP addresses. For some implementations, particularly those using Clearly Anywhere, this may not be ideal as UCP can assist with user management of the PBX as well as QR code provisioning of Clearly Anywhere. The Apache web server can be used to manage web access so long as you understand the need to apply Apache security patches in a timely manner.

    Assign the same FQDN that you use for SIP access to port 80 for the UCP application. Deploy OpenVPN on your server and use the PBX’s OpenVPN IP address for general access to all web applications we listed above. If you’d like public access to the FreePBX GUI, assign web access for it to another random port, e.g. 8080 in our example below. Block web access to your server from the public IP address of your PBX on both port 80 and 8080 in our example below. Here’s how to accomplish that. Create a new file in /etc/pbx/httpdconf. Create public.conf with the following contents:

    Listen 8080
     
    <virtualhost *:80>
    ServerAdmin you@gmail.com
    ServerName 111.112.113.114
    Redirect 403 /
    UseCanonicalName Off
    UserDir disabled
    </virtualhost>
    
    <virtualhost *:8080>
    ServerAdmin you@gmail.com
    ServerName 111.112.113.114
    Redirect 403 /
    UseCanonicalName Off
    UserDir disabled
    </virtualhost>
    
    <virtualhost *:80>
    ServerAdmin you@gmail.com
    ServerName server-fqdn.com
    DocumentRoot /var/www/html/ucp
    ErrorLog /var/log/httpd/error_log
    CustomLog /var/log/httpd/access_log common
    </virtualhost>
    
    <virtualhost *:80>
    ServerAdmin you@gmail.com
    ServerName 10.8.0.123
    DocumentRoot /var/www/html
    ErrorLog /var/log/httpd/error_log
    CustomLog /var/log/httpd/access_log common
    </virtualhost>
    
    <virtualhost *:8080>
    ServerAdmin you@gmail.com
    ServerName server-fqdn.com
    DocumentRoot /var/www/html
    ErrorLog /var/log/httpd/error_log
    CustomLog /var/log/httpd/access_log common
    </virtualhost>
    
    <virtualhost 127.0.0.1:80>
    ServerAdmin you@gmail.com
    ServerName 127.0.0.1
    ServerAlias localhost
    DocumentRoot /var/www/html
    </virtualhost>
    

    In the ServerAdmin lines, insert your email address. Replace 111.112.113.114 with the public IP address of your server. Replace server-fqdn.com with the FQDN assigned for SIP registration access to your PBX. Replace 10.8.0.123 with the OpenVPN private IP address of your PBX. Replace 8080 with the port you chose for FreePBX access to your server. Save the file and then restart Apache:  systemctl restart httpd.

    Now it should be safe to open TCP port 80 and 8080 (or whatever port you chose) for web access to your server. Let’s also whitelist TCP 2267 for Clearly Anywhere access while we’re at it:

    cd /etc/sysconfig
    sed -i 's/10000:20000 -j ACCEPT/&\\n-A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT/' iptables
    sed -i 's/10000:20000 -j ACCEPT/&\\n-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT/' iptables
    sed -i 's/10000:20000 -j ACCEPT/&\\n-A INPUT -p tcp -m tcp --dport 2267 -j ACCEPT/' iptables
    iptables-restart
    

    Be sure to test all three access methods to verify that you haven’t left a security hole.

    Keeping FreePBX 15 Modules Current

    We strongly recommend that you periodically update all of your FreePBX modules to eliminate bugs and to reduce security vulnerabilities. From the Linux CLI, log into your server as root and issue the following commands:

    rm -f /tmp/*
    fwconsole ma upgradeall
    fwconsole reload
    /root/sig-fix
    systemctl restart apache2
    /root/sig-fix
    

    Special Thanks: We want to give an extra special tip of the hat to the VoIP-Info Forum members who assisted in working the kinks out of the Incredible PBX PUBLIC offering. We also wish to thank JavaPipe LLC for a number of DDOS tips and tricks in securing CentOS 7 with IPtables.

    Originally published: Monday, December 30, 2019    Updated: Monday, September 28. 2020



    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.
     



    BulkVS: A Bargain SIP Provider for Incredible PBX Platforms


    At every opportunity I always tell new VoIP enthusiasts that one of the true advantages of switching to a VoIP platform is the fact that you don’t have to put all your eggs in one basket. Just this morning, I read a Facebook post from one of the elders in my family lamenting the fact that her MaBell landline had failed in the midst of this week’s snowstorm in North Carolina. Her local WiFi and cable TV still worked but not her landline or cellphone.

    With that background, we are pleased to introduce BulkVS trunking as another option to add to your collection. Unlike Skyetel, ClearlyIP, Vitelity, and VoIP.ms, we receive no commissions from BulkVS so chalk this article up as a good example of biting off your nose to spite your face. There is a PayPal link to the right if you’re feeling grateful. 😉

    Why does BulkVS matter? In the words of Alex Trebek, it’s The 3 P’s: Price, Price, and Price. An inbound US48 Tier0 phone number (DID) will set you back 6¢ a month with a 25¢ setup fee. And calls are billed at $.0003 per minute. Toll-free numbers in the U.S. and Canada are 14¢ a month with a per minute rate of $.0055. CNAM lookups are $.002. Outbound calls are $0.004/minute. E911 service is 49¢/month. Billing increment: 6 seconds. Those aren’t typos.

    Getting Started with BulkVS

    To get started, click the sign up link on the main BulkVS page. Then fund your account with $25 using PayPal. Or you can sign up for Net 15 billing and pay by check or credit card if you’re not in a rush to get started.

    BulkVS offers two ways to set up your BulkVS trunking: IP-based authentication and SIP registration. If you don’t have a firewall which means you’re not using Incredible PBX, the first method is a little safer because nobody can spoof the IP address of your Asterisk® PBX. But it’s not for everyone. For example, if you’re behind a NAT-based firewall or if your server has a dynamic IP address, then IP-based authentication really isn’t an option. Similarly, if you don’t have control of the router that your PBX is sitting behind, then IP-based authentication won’t work since you have to forward both the SIP port (UDP 5060) and the RTP ports (10000-20000) to your PBX. The beauty of SIP registrations is they work from almost anywhere including double-NAT environments. So today, we’ll cover the SIP registration approach which will work for everyone.

    There are three setup procedures: one using the BulkVS Control Panel, a second using the Linux CLI, and a third using the FreePBX® GUI included in Incredible PBX®.

    BulkVS Setup with SIP Registration

    Step 1: Go to Inbound -> DIDs – Purchase and buy one or more DIDs for your PBX.

    Step 2: Go to Interconnection -> Host – Add and add your PBX’s public IP address. Leave the port as 5060 for both chan_sip and chan_pjsip setups.

    Step 3: Go to Interconnection -> Trunk Group – Add and create a Trunk Group.

    Step 4: Go to Interconnection -> Trunk Group – Manage and add the Primary IP Address for your new Trunk Group. Set Delivery Type to 11DIGITS.

    Step 5: Go to Interconnection -> SIP Registration and write down the credentials for one of the SIP credentials you wish to use to register your new trunks.

    Step 6: Go to Inbound -> DIDs – Manage and select each telephone number. Then set the Trunk Group to the SIPREG Trunk Group you chose in the previous step. Click Update button.

    Step 7: Wait 15 minutes for the new IP and Trunk Group settings to propagate to SBC nodes.

    Linux CLI Setup for BulkVS

    First, log into your server as root and edit iptables-custom in /usr/local/sbin. Add the following just above the # End of Trusted Provider Section marker:

    # BulkVS WhiteList
    /usr/sbin/iptables -A INPUT -p udp -m udp -s 162.249.171.198 --dport 5060:5069 -j ACCEPT
    /usr/sbin/iptables -A INPUT -p udp -m udp -s 76.8.29.198 --dport 5060:5069 -j ACCEPT
    /usr/sbin/iptables -A INPUT -p udp -m udp -s 69.12.88.198 --dport 5060:5069 -j ACCEPT
    /usr/sbin/iptables -A INPUT -p udp -m udp -s 192.9.236.42 --dport 5060:5069 -j ACCEPT
    /usr/sbin/iptables -A INPUT -p udp -m udp -s 52.206.134.245 --dport 5060:5069 -j ACCEPT
    

    For chan_sip trunk implementations, while logged into your server as root, edit sip_custom_post.conf in /etc/asterisk. Add the following:

    [bulkvs1](bulkvs);
    host=192.9.236.42
    
    [bulkvs2](bulkvs);
    host=162.249.171.198
    
    [bulkvs3](bulkvs);
    host=69.12.88.198
    
    [bulkvs4](bulkvs);
    host=76.8.29.198
    
    [bulkvs5](bulkvs);
    host=52.206.134.245
    

     
    Finally, restart the IPtables firewall and reload Asterisk:

    iptables-restart
    fwconsole reload
    

    FreePBX PJsip Setup with SIP Registration

    The PJsip alternative is considerably easier. First, you don’t need sip_custom_post.conf entries at all. To begin, navigate to Connectivity -> Trunks and choose Add a PJsip trunk. Name the trunk BulkVS and then click on the pjsip Settings tab. Fill out the form as shown below substituting the BulkVS registration account name you chose above. Any of the three SIP registrations offered for your account under Interconnection -> SIP Registration in the BulkVS Dashboard will work as long as you use the matching password.


    Next, click on the Advanced tab and enter the following in the Match (Permit) field.

    162.249.171.198,76.8.29.198,69.12.88.198,192.9.236.42,52.206.134.245
    

    In the Codecs tab, enable ULAW and ALAW. Then click Submit and reload your dialplan.

    With PJsip registrations, you may also need to add the following lines to the end of extensions_custom.conf in /etc/asterisk using your actual DID. Then reload your dialplan: asterisk -rx "dialplan reload"

    [from-sip-external]
    ; BulkVS
    exten => 18005551212,3,Goto(from-trunk,${DID},1)
    

    FreePBX chan_sip Setup with SIP Registration

    If you prefer to set up your BulkVS trunk the old-fashioned way, navigate to Connectivity -> Trunks -> Add chan_sip trunk and enter:



    In the Incoming tab, enter a Registration String in the following format where 19991234567 is one of your actual BulkVS DIDs. Then Save the settings and reload the dialplan.

    yourBulkVSacctname:yourBulkVSpassword@sip.bulkvs.com/19991234567
    

    Finally, navigate to Settings -> Asterisk SIP Settings and the chan_SIP tab, then set the Registration Minimum Expiry and Registration Default Expiry entries to 25. Then click Submit and reload the dialplan.

    FreePBX Inbound & Outbound Route Configuration

    Finally, we need to tell FreePBX how to route BulkVS calls into and out of your PBX. In the FreePBX GUI under Connectivty -> Inbound Routes, add a new route for BulkVS specifying the 11-digit DID you purchased from BulkVS. Choose a Destination for the incoming calls, save your settings, and reload the dialplan. Repeat this process for each of your BulkVS DIDs. HINT: The monthly cost of the DIDs is inexpensive enough to assign a DID to every extension on your PBX.

    Next, navigate to Connectivity -> Outbound Routes and create a new Outbound Route for calls you wish to process using BulkVS termination services. Name the Outbound Route BulkVS and assign the bulkvs trunk as the first entry in the call sequence. In the Dial Patterns tab, you would want match patterns for 1NXXNXXXXXX and NXXNXXXXXX. For the latter entry, be sure to add a Prepend entry of 1. Then save your settings and reload the dialplan.

    SMS Message Delivery from BulkVS Trunks

    BulkVS also supports SMS messaging on most of their DIDs. To deliver SMS messages from BulkVS, you’ll need a public-facing web server (not Incredible PBX). Assuming you already have that in place, delivery of SMS messages from BulkVS DIDs to your email address or smartphone’s messaging app is straight-forward. Begin by enabling SMS messaging on your DID: Inbound -> DIDs Manage. Next, assign a web address to process the incoming messages on your web server, e.g. http://yourdomain.com/bulkvs-sms/index.php. Then create the index.php file using the sample code below after inserting your email address for delivery of the incoming messages:

    <?php
    
    // Syntax for delivery from bulkvs.com SMS Forwarding Service
    
      $deliverto = "yourname@yourdomain.org";
    //  $deliverto = "18431234567@txt.att.net";
      $from = htmlspecialchars($_REQUEST['from']);
      $to = htmlspecialchars($_REQUEST['to']);
      $message = htmlspecialchars($_REQUEST['message']);
      $subject="SMS Message from $from to $to";
      $comment="SMS Message\\n\\nFROM: $from\\n\\nTO: $to\\n\\nMSG: $message\\n\\n";
      mail("$deliverto", "$subject", "$comment", "$from");
      echo "OK";
    ?>
    

     
    To send an SMS message from one of your BulkVS DIDs, you’ll need your API credentials from the BulkVS web site. Simply insert them together with one of your 11-digit DIDs in the script below, and you can send SMS messages to your heart’s content.

    from="18005551212"
    apikey="aaabbbccc"
    apisecret="dddeeefff"
    
    if [ -z "$1" ]; then
    echo 'Syntax: send-sms-bulkvs 18005551212 "Your SMS message"'
    exit
    fi
    if [ -z "$2" ]; then
    echo 'Syntax: send-sms-bulkvs 18005551212 "Your SMS message"'
    exit
    fi
    
    to=$1
    msg=$2
    
    curl --header "Content-Type: application/json" --request POST --data \\
    '{"apikey":"'"$apikey"'","apisecret":"'"$apisecret"'","from":"'"$from"'","to":"'"$to"'","message":"'"$msg"'"}' \\
    https://portal.bulkvs.com/sendSMS
    

    To send SMS messages from a Windows machine, see this post from @jerrm.

    Originally published: Tuesday, May 12, 2020



    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.
     



    Introducing Plug-and-Play Incredible PBX IP Phones


    Let’s face it. One of the most tedious tasks in setting up a new PBX is configuring all of the buttons on all of the SIP phones connected to your PBX. Finally, there’s a one-click solution with the new Incredible IP Phones from ClearlyIP. Using the Clearly IP Devices module included in every Incredible PBX 2020 platform, you can use a web browser to point-and-click your way through setting up one or multiple phone configurations which can be pushed to every phone by simply entering its MAC address and extension number. When changes are needed, simply modify the web configuration for the desired phones and the modifications are immediately pushed to the affected devices without ever rebooting any of the affected phones. If you only have a couple extensions attached to your PBX, this may not sound like a big deal; however, if you have hundreds of phones in dozens of locations, you’ve just saved yourself hundreds of hours and thousands of dollars in labor costs.


    Unlike the Sangoma "solution" there’s no costly FreePBX module required to auto-provision Incredible PBX phones. It’s an integral component of Incredible PBX 2020.



     
    But don’t take our word for it. Watch Chris Sherwood’s YouTube video above and chuckle to yourself knowing that the first two of the four setup steps are already in place with every new Incredible PBX 2020 install.

    Better yet, sign up for one of the (free) Tony Lewis webinars currently scheduled for this Tuesday, January 7, at 2 p.m. Eastern time or Friday, January 10 at 9 a.m. Eastern time. You may remember Tony as the former Chief Operating Officer at Sangoma until he resigned and started the new ClearlyIP organization in which he now serves as the CEO. Come join us!

    We’ll hold off the tutorial for a bit to give everyone an opportunity to watch the video and attend one of the webinars on Tuesday. Be sure to sign up to reserve your place. Then check back here soon for the Incredible IP Phones tutorial.

    Continue reading: ClearlyIP Introduces New Features for Incredible PBX Phones

    Originally published: Sunday, January 5, 2020



    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.