I know this question was asked a year ago (SMS Capability)
I’m wondering if anyone has had any success at this point using Bandwidth’s SMS API. I know 3CX has an integration with bandwidth’s API. Since it’s not sip simple, and uses an API just like sipstation it should be possible. I would strongly consider just switching over the 3CX were it not for their recent security incident.
Otherwise, is anyone aware of a softphone that would integrate directly with bandwidth’s API? Bandwidth hasn’t been very helpful in this regard. There’s a separate software available, but it’s quite pricey for simply providing SMS.
I use Bandwidth’s messaging API. There would need to be some updates to how things are handled in the module for Bandwidth as there is a bit more being done.
First, you have to create the messaging application in Bandwidth and you can create more than one. This means there could be multiple webhooks to send messages and delivery updates to. It also requires that when you send messages you include the application id of the messaging application you created in Bandwidth. Even if there is only one application, the applicationId is required to be sent in the payload. You’ll need to keep a record of that in the database table or somewhere.
Second, incoming messages will have 10DLC information in them. It will note if the number is a registered 10DLC number, if it is what campaign it belongs to along with the origination carrier.
Third, every message generates a messageId and that messageId can be used to get more admin/billing details about a message. When you send a message acceptance response will contain the messageId. When you get a delivery receipt it is tied to that messageId. Once I get that messageId, I make another API call to get the full message details which will include the destination carrier the message was sent to.
Fourth, Bandwidth allows for traditional group messaging of up to 10 numbers (original + 9 additional). The incoming payload has two sets of destination values. The first is the destination number. The second is an array of additional numbers in the group message. When you send outbound messages you do the same thing. A value for the primary destination number and an array holding the additional destination numbers. Even single user messages have these values in the payload that hold the main number in the array. Another thing to note is that you will receive individual delivery receipts for each number in a group message.
The extra information such as the originating or terminating carrier is there because of 10DLC surcharges and allows you to track which surcharges you’re being hit with since AT&T, Verizon, etc all have different surcharges.
I can look at the module and what it would take but there will probably need to be adjustments to the database tables to store additional information or additional tables needed for this information. I, for example, keep a separate table to hold delivery receipts since there could be multiple receipts for one message (group messaging).