clickatell sms messages fail with no error or notification for non-US numbers - clickatell

I have a web application that sends verification codes to users through clickatell. Nearly all users are in the US, and those work fine, but I have about 5 with international phone numbers who receive no texts.
I have a page set up to accept delivery notifications and dump them into a log file.
If I send a message to a US number, like +18161234567 I get a notification like so:
integrationName=MyIntegration&messageId=*******************&clientMessageId=&to=18161234567&from=1##########&status=DELIVERED_TO_GATEWAY&statusDesc=DELIVERED_TO_GATEWAY&timestamp=1502911816000
But if I send a message to a non-US number, like +393921234567, I get no response from the clickatell server at all. It's like they don't even get the request. The phone number is the only difference between the two requests.
I have a case open with clickatell support but they have been less than insightful so far, just telling me they need a messageID or error code to investigate further, but since I get no response, I have none to give them.
Has anyone else experienced this or have any ideas I can use to troubleshoot?
We have a two-way number because that is required for sending texts in the US. However, clickatell notes on the two-way settings page that
If the country does not support two-way messaging, Clickatell will not submit the message (you will not be charged for messages that aren't successfully submitted)
I can't seem to find a list of countries that do or do not support two-way messaging. Do I need to add a separate integration without two-way messaging to support my international numbers?
UPDATE: Upon further research, my international users are in 3 countries. Italy, which does not support two-way messaging, and France and Mexico, both of which do support it. Yet none of the three are working.
FURTHER UPDATE: I have tried creating a separate integration just for Italy, since they do not support two-way messaging. I have set it up to use the clickatell automatic mobile number formatting for that country. The result is the same. No text is sent and I receive no response of any kind from the server.

Can you please check/provide response from server when you submit message with number: +393921234567.
Most likely you get validation error - that this destination number not covered by number that you bought.
Have a nice day.

Related

Twilio - How can I tell if a number can receive a text message?

I always relied on the "Carrier type" of "mobile" using the lookups API to determine if a number was able to receive a text message. This as served me well for several years.
I recently came across a lookup result as follows:
CARRIER NAME Enflick - 360 Networks - SVR
CARRIER TYPE voip
It seems this belong to the textnow.com carrier that sells wifi only phone plans that allow texting. Because of this, it seems some "voip" carriers can receive texts.
Is there a way to determine which numbers should be eligible to receive texts using the Twilio lookups API or something similar? I'd hate to consider all voip carriers as texting eligible since that definitely isn't the case.
Twilio developer evangelist here.
I think the easiest way to check if a number can receive texts from Twilio is to try sending one. If the API responds with an error (likely 21612) then you can't send messages to it.

SMS sent from twilo blocked by tmobile I believe

So to help debug we even take it out of our code and put it on twilio portal that lets us test the API. When I send to most of our group everyone gets the text message, but when we send to someone with tmobile, the message says it's delivered on twilio logs, but the person never gets it.
If we test and send him an 'Hello world' message, he gets it, but when we test with out SMS
'XXXXXX wants to make plans with you on the HotSauce App. :tada::hot_pepper:
Get the app now to join in on the action. https://rts2t.app.goo.gl/FGYB'
The message doesn't get delivered. Maybe there's a whitelist for Tmobile we can get on?
FYI, we have a USA number and this is a USA person and we are on the paid version, not trial.
I've encountered the same issue working on another app, and unfortunately I do not think there's a conclusive single answer. Carriers intentionally keep their spam filtering techniques secret so that they cannot be gamed. From Twilio's support page on the topic:
There is no standard practice for carrier filtering across all carriers. For some, filtering can range from a simple static list of prohibited terms to advanced machine learning systems that work in real time. Regardless of the system, carriers keep their filtering systems closely guarded secrets. In turn, Twilio cannot say definitively how these systems work or why a particular message was filtered.
Note that not all carriers report errors to Twilio, so some messages may appear to go through even though they were not delivered. You may or may not see error 30007 in the Twilio console when a message is blocked.
I don't believe any type of universal white-list exists, and once a number has been black-listed by a carrier there is no easy process to have it white-listed. However, short-code numbers are generally less prone to getting spam filtered (though they are more expensive).
While there isn't any one thing you can do to guarantee delivery, there are several things you can try:
Make the language of the text message more conversational as opposed to promotional
Don't obscure the url with a link shortener
Don't over-use a single number by implementing something like Twilio co-pilot
Include clear opt-out instructions

Why do I my outbound SMS from Plivo not work when they work with Twilio?

I've been using Twilio to send SMS and things work great. The only issue is that Twilio charges for both outbound and inbound messages. As such, we've been looking for other solutions.
We thought we found it with Plivo as their pricing was more favorable for SMS.
However, with Plivo, very quickly our outbound messages are being marked as spam or something and they're not being delivered.
We are sending the exact same message every day to about 5k users at a given time in the day. The message has a url in it, but it is something our users signed up for.
Two questions:
1. Why does everything work on Twilio and not on Plivo?
2. Is there a code change I can make to ensure our outbound messages sent with Plivo are not marked as spam by carriers and then stopped?
You need to contact Plivo about this. I experience this problem too. Their carrier mark our number as spammer since we are sending almost the same messages (verification). They called their carrier and our number was white-listed.
Plivo Sales engineer here. This is indeed an issue with the carrier marking your messages as spam. We can definitely help you overcome this. Could you please drop an email to ramya(at)plivo.com and we can sort this out?
You need to contact with Plivo support , there may be problem for number prefix for country like if you are using twilio you have to add +(with country prefix) but not in Plivo. It will be better to contact with Plivo support.
Thank You
I dont know how Pilvo work but usually with SMSC there is Message Queue associated sometimes with each SMPP Client and also with Mobile Station. You can't always send messages until your certain number of request are still pending. there is a specific error code that SMSC sent to its client about message queue overflow.
BADABING BADABOM! After having a look in the Plivo administration I noticed a new option under other-settings "Automatic Encoding Of Unicode Characters". As Norway uses inernational characters this is definately a setting for me, and after enabling it all SMS are delivered as expected. So remember to enable this setting.
MAKE SURE TO ENABLE THIS:
Path: Plivo admin / Messages / Settings / Other settings
Feature: Automatic Encoding Of Unicode Characters -> Enable

Twilio SMS delivery to DND number

I am sending SMS using Twilio API. During testing i found that it sometimes delivered message to the phone number but does not sends all the time. This is the case of DND activated numbers(Do Not Call List).
I knew this is because of Sender routing done by Twilio. When Twilio sends SMS using a number(only numeric sender-FROM), i received the message, but when it sends message using some alphanumeric sender(like DM-044138), it does not delivers the message.
Now my question is do we have any access to change this ? Can we set something that could guarantee the delivery even for the DND numbers ?
Any help would be highly appreciated.
Your problem is you are sending it to India.
Please review the following.
This feature is only available when sending messages to supported countries
As you can see from the list below India is not a supported country.
https://www.twilio.com/help/faq/sms/what-countries-does-twilio-support-alphanumeric-sender-id

SMS receiving confirmation

I am trying out different things with Twilio, but open for other solutions with Nexmo, Tropo or Plivo.
Here's a situation, I am sending an SMS texts from a server to bunch of clients. I can get a status back: like queued, sending, sent, or failed. Here's what Twilio says about SMS sent status:
"Sent" indicates that your message was successfully sent into the SMS
network for delivery. However Twilio does not receive confirmation from
the destination carrier that the message was received, and this is not
a guarantee that the message has reached the intended device.
(https://www.twilio.com/help/faq/sms/what-do-the-sms-statuses-mean)
So, my question is: does Plivo, Tropo or Nexmo (or any other service that I missed) do anything like that? I mean, knowing that an SMS was received either by client directly, or client's carrier would be really important.
PS. I'm not even sure if it is possible
Any help or suggestions would be appreciated.
It's certainly possible with Nexmo - as the other answer and comment state, it's not possible with Twilio & Tropo. Plivo's docs look like their delivery receipts are similar to Nexmo's.
Nexmo sends a delivery receipt if it's supported by the carrier. In the US it's not, but internationally it is supported often. In those cases Nexmo will give your app a callback with a delivery receipt. You can also use the message ID to query for the message status.
This screencast shows checking the DLR from the dashboard, which is really just a UI on top of the API.
Kevin makes the point that this could be difficult if the message is bounced through multiple providers - one of Nexmo's focuses is getting as direct a connection as possible.
[Disclaimer: I do occasional developer evangelism for Nexmo.]
I'm a Tropo customer, and I've asked the same question, and so far, the answer's similar to what Kevin Burke gave for Twilio. It's hard to do, so there's no confirmation at this time. They do give some debugging information in the logs which is helpful with that first-hop negotiation, at least, even if it's hard to retrieve/parse easily. They are working on it, and have been very active adding new features.

Resources