This is a wrapper for AWS.SNS and SMSC API.
yarn add @frankast/sms-sender
There are three providers Smsc.js
(default), Sns.js
, Mobizon
. If you want to use Sns.js
do not forget to add aws-sdk
optional dependency.
To send an SMS you have to create an instance of provider and call sendSms()
method:
import { Smsc } from '@frankast/sms-sender';
const smsc = new Smsc({
login: YOUR_SMSC_LOGIN,
password: YOUR_SMSC_PASSSWORD,
});
// You can use Promises as well.
const response = await smsc.sendSms('phone_number', 'message');
// The response object will contain `messageId` and `rawResponse`:
// response = { messageId: 'id-phone_number', rawResponse: { cnt: 1, id: 50 }}
To check the delivery status of SMS call getStatus()
method:
const response = await smsc.getStatus('40-77718637484'); // takes messageId (id-phone_number)
// The response object will contain 'rawResponse' with general info and 'status':
// response = {
// rawResponse: {
// cost: '0.00',
// country: 'Казахстан',
// last_date: '13.03.2018 15:50:50',
// last_timestamp: 1520934650,
// message: 'hello',
// operator: 'Beeline',
// phone: '77718637484',
// region: '',
// send_date: '13.03.2018 15:50:46',
// send_timestamp: 1520934646,
// sender_id: 'SMS-CENTRE',
// status: 1,
// status_name: 'Доставлено',
// type: 0,
// },
// status: 'ok',
// }
P.S. You can get status codes here or in SMSC docs.
To get a cost of SMS call getCost()
method:
const response = await smsc.getCost('phone_number','message');
// The response object will contain 'rawResponse' and 'cost':
// response = { cost: '0', rawResponse: { cnt: 1, cost: '25' } };
getCost()
is not available for Mobizon
provider.
To get the current balance on your account call getBalance()
method:
const response = await smsc.getBalance();
// The response object will contain 'balance' and 'currency':
// response = { balance: '84.75', currency: 'KZT' };
Here is an example of usage with RegExp:
// @flow
import { Smsc, Sns, Mobizon } from '@frankast/sms-sender';
// don't forget to put your credentials
const providers = {
smsc: new Smsc({
login: '',
password: '',
}),
sns: new Sns({
region: '',
accessKeyId: '',
secretAccessKey: '',
}),
mobizon: new Mobizon({
apiKey: '',
}),
};
async function send(phone: string, message: string): Promise<Object> {
const regexp = RegExp('7708', 'g');
let provider;
if (regexp.test(phone)) {
provider = providers.smsc;
} else {
provider = providers.sns;
}
const res = await provider.sendSms(phone, message);
return res;
}
send('+77081113344', 'hello world').then(res => {
console.log(res);
});
Other examples are available in ./examples.
Feel free to submit pull request to us. Also, be sure all tests has passed otherwise pull request won't be accepted.