Sender shows as NOTICE when sending sms from a dedicated Indian AWS pinpoint phone number - aws-pinpoint

I have purchased a dedicated AWS pinpoint long code for India (ie. An Indian phone number) for $120/mo. I'm not using any keywords. I've enabled two way sms on it. I'm able to receive messages on it and send messages, however when I send a message, the sender id shows up as NOTICE to the user.
Thus a conversation is not possible because while to user has to send a message to the dedicated long code, they receive a reply from a different number.
eg. When I send this message:
{
"ApplicationId":"6b07b70b18714cf6ba60fb5446123456",
"MessageRequest":{
"Addresses":{
"+914321321321":{
"ChannelType":"SMS"
}
},
"MessageConfiguration":{
"SMSMessage":{
"Body":"Your message was received, we will contact you shortly. ",
"MessageType":"TRANSACTIONAL",
"OriginationNumber":"+911234123123"
}
}
}
}
The person receiving it sees it from sender "NOTICE". Even if I explicitly specify the senderId to be the same as the origination number. ie. I add ,"SenderId":"+911234123123" to the above, the behavior is the same.
Am I missing something, or is the AWS Pinpoint dedicated long code two way sms functionality broken in India?
This use case should be supported according to the AWS docs here:
https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-sms-originating-identities.html

I've found that this is not possible on all SMS api providers in India and I experienced the same behaviour on multiple different SMS api providers (aws/textlocal/some other). I also found a picture in the docs of one provider that showed this was not possible.
ie. India telecom infrastructure does not allow responses from long codes.
The infrastructure does allow responses from shortcodes, but sending a sms to a short code charges customers Rs 3., while a customer sending a message to a long code is billed at their standard sms rates.

Related

Command status 69 error while sending SMS

I am using node-smpp for sending SMS. I have 2 accounts. One for marketing SMS and One for transactional SMS. Everything was working fine. I send around 6000 SMS from both accounts at a time. But suddenly I am not able to send SMS through my Transactional account. The promotional account is working fine. Now I am getting the following PDU response if I send SMS through my transactional account.
PDU {
command_length: 17,
command_id: 2147483652,
command_status: 69,
sequence_number: 3,
command: 'submit_sm_resp',
message_id: ''
}
Do you guys have any idea what's the issue?.
The error code 69 is submit_sm or submit_multi failed which doesn't really help you much. If the code is identical between the two accounts (and I would validate that), then obvious answer is that something changed for your transactional account. My first guess would be that the account is being throttled. Do you have a way validate that the account is in good standing? Do you handle the error event? The command is a response. Are you responding to message? Why is message_id the empty string? Do you get the same behavior for different message (i.e. does this happen for all receivers or only some)?

Nodejs Email Sending using sendgrid web api

I am developing an email sending service, probably for sending bulk emails using sendgrid web API, but I am not able to figure out best practice for scalable system. I wish to keep a record of all those emails which failed to deliver and retry sending to those failed emails after all emails have been sent. I am using NodeJs, so just wanted to know if there is any way to speed up my process(something like sending multiple emails at the same time)
There are multiple ways to handle this, I will suggest two which seems obvious to me.
(Recommended - Easy) Use Async module's control flow option called queue Async Documentation. You can feed in all the request in form of an array of object request and then change concurrency setting to let's say 100, it'll run concurrent 100 workers at one time and to log errors make a separate mechanism and once all the values have been run through handle it separately.
Spawn multiple workers using node.js native approach.
Sendgrid offers an npm package for node.js integration, so you don't have to reinvent the wheel. It accepts messages at a high rate, so you shouldn't have problems delivering yours to sendgrid. You just dump your messages into sendgrid.
Email, being a store-and-forward system, is inherently asynchronous. That means it operates far from real time. Some messages are delivered in a few seconds, and others take hours (when they get soft--"retry later"--rejections from destination servers, for example).
Sendgrid handles this issue with a "bounces" API. (And with "bounces" features in their web back end application). Many bounces are "hard" bounces, meaning you must avoid trying to send messages to that address again. You can use the bounces API to retrieve a list of bounced messages. You should remove those addresses from your email list, and not try to send them again. (Sendgrid bans users who repeatedly send mailings with a high undeliverable rate.)
They also have an "invalid emails" API. This works like "bounces" and returns lists of addresses that are ill-formed or, if sendgrid can tell, not present on the destination server. Again, you should remove these addresses from your email list. If they're invalid now, they will be invalid tomorrow.
Sendgrid offers all sorts of tutorials on this subject.

MessageBird: How to read a response from consumer

I am evaluating MessageBird service. I got a Virtual Mobile Number. I am able to send message to dummy numbers (until i get approval for sending messages to real USA number)
Unknown: My problem is about reading the messages received by a VMN.
Details: If I as a VMN owner send a message to consumer e.g. +1(111)111-1111 and i am interested in reading the response from the consumer, how to do get it?
MessageBird documentation expects me to know the ID for response message object (or my understanding is wrong). The documentation is good but i don't see a way to programmatically achieve it. Any suggestions How to achieve it?
Thanks in advance!
Messagebird have a feature of forward incoming sms data through webhook(get or post method). if you set an url then Messagebird will forward every incoming sms to you(or your server). You can easily read get/post response.

Twilio messages not getting delivered until recently

I am using a free account. I am using SMS service for testing purposes. I got an number through which the messages were getting delivered successfully until recently. Since three days the messages are not getting delivered and the status of the message remains "sent" and not delivered. What could be the issue?
Sometimes, if the delivery record cannot be received from carrier partner for some reason, the delivery status remains as "sent" . You can refer to the details in this FAQ.
You may also experience limitation of sending SMS based upon location for example, in India, all SMS messages sent from Twilio phone numbers are categorized as “Promotional” , even if your message content is transactional.

Where/how does Skype queue group chat messages when users are offline?

In this SuperUser.com question and elsewhere, I've read that Skype doesn't store your historical chat messages on their servers in a way that's user-accessible. (Of course, what they do for internal archival and analytical purposes is a different story -- as reflected by their privacy policy).
But the user experience for group chats is: when you've been offline and you sign back into Skype... all the messages you missed appear. Even if it's been a while and there are a lot of messages. (I don't know if there are limits on how long or how many.)
So: how is this UX implemented if the messages don't come from Skype servers?
I've read this offhand description which states:
Syncing of group chats ("More than 2 people in a chat") is done by chat sync partners in those chats, and not provided by Skype servers.
If that's correct, I'd love more details about how this works, like:
Has the protocol been specified or reverse-engineered?
Is it available through an API?
Are requests routed through Skype, or is it direcly peer-to-peer?
If peer-to-peer, how are requests authenticated?
My experience is I can only "see" history back to the time when I joined a chat; can a client request or receive messages farther back in the history?
I understand some of of the protocols are currently in flux -- so, bonus points if you can explain whether/how these details are changing.
When you login your client has the last recieved id of that conversation.
Sends it to the other clients. The client who recieves the id looks up all messages after that one, and then sends it back to you.
That way they don't have to store the messages on their servers.

Resources