Here’s a workaround that costs virtually nothing.
I’ve used IFTTT and my normal phone plan’s unlimited SMS/Text feature to get around this using pistons and the IFTTT Android service (I presume the IOS app can also do this). All SMS messages are sent seamlessly from my phone, so it does require you to have your phone on to work (in reality I almost never turn it off) and also probably doesn’t make sense using this approach to send messages to your own number. Here’s how I’ve got it working flawlessly now:
In short, this is how it works. Any piston wanting to send a text does so by executing another SMS Sender piston and passing it two parameters (message and number). That SMS Sender piston validate the parameters, ensuring there is actually a message and a phone number, then using IFTTT Webhooks, passes calls a Web Request to the IFTTT Webhooks URL, passing it those same two parameters. IFTTT then hands that over to the Android phone service that send the SMS message (as me).
Any caller piston > SMS Sender piston > IFTTT Webhooks/Android SMS > SMS
Bear in mind you will need to have your integration for IFTTT configured in the webcore dashboard.
To do this:
1. Configure IFTTT (Webhooks and IFTTT App)
First configure an IFTTT Webhooks to Android phone (or IOS) recipe to expect a event word like “sms” and two parameters expected for the “Send an SMS” service (e.g. phone number and message)
2. Build an SMS Sender piston
Now, build a piston called something like SMS Sender that expects two arguments when being executed, $args.message and $args.number. Do any validation you want of these parameters and then when ready to send it, use the “Send IFTTT Maker event” action. [note: as these messages are sent as messages originating from you, you may want to tack a note onto the message parameter to identify it as a piston generated message (e.g. +" sent by piston $name")]
For the “Send IFTTT Maker event”, just provide the event name “sms” and those two parameters.
3. Now let other pistons use the SMS Sender piston
Whenever any other piston wants to send an SMS, just make sure you have those two variable defined in that piston (message and number) and then Execute a Piston called SMS Sender with those parameters and the message will be sent. (assuming you at least have your IFTTT phone switched on).