The API allows you to send messages through your projects and services over HTTP/HTTPS, SMTP and SMPP protocols. Ready-made libraries in different programming languages connect to your project and help you send messages from anywhere with a single command. For simplified authorization, instead of a login and password pair, you can use a special API key.
To work with our service via HTTP/HTTPS or SMTP protocols, you just need to connect a file of the corresponding
library, after which you can send SMS messages or check the status by calling a single command.
Library source code:
<?php // SMSCENTRE.COM API (smscentre.com) версия 3.8 (03.07.2019)
define("SMSC_LOGIN", ""); // логин клиента define("SMSC_PASSWORD", ""); // пароль клиента. Если передан пустой логин, то SMSC_PASSWORD используется, как API ключ, вместо логина и пароля define("SMSC_POST", 0); // использовать метод POST define("SMSC_HTTPS", 0); // использовать HTTPS протокол define("SMSC_CHARSET", "windows-1251"); // кодировка сообщения: utf-8, koi8-r или windows-1251 (по умолчанию) define("SMSC_DEBUG", 0); // флаг отладки define("SMTP_FROM", "api@smscentre.com"); // e-mail адрес отправителя
// Функция отправки SMS // // обязательные параметры: // // $phones - список телефонов через запятую или точку с запятой // $message - отправляемое сообщение // // необязательные параметры: // // $translit - переводить или нет в транслит (1,2 или 0) // $time - необходимое время доставки в виде строки (DDMMYYhhmm, h1-h2, 0ts, +m) // $id - идентификатор сообщения. Представляет собой 32-битное число в диапазоне от 1 до 2147483647. // $format - формат сообщения (0 - обычное sms, 1 - flash-sms, 2 - wap-push, 3 - hlr, 4 - bin, 5 - bin-hex, 6 - ping-sms, 7 - mms, 8 - mail, 9 - call, 10 - viber, 11 - soc, 13 - telegram) // $sender - имя отправителя (Sender ID). // $query - строка дополнительных параметров, добавляемая в URL-запрос ("valid=01:00&maxsms=3&tz=2") // $files - массив путей к файлам для отправки mms или e-mail сообщений // // возвращает массив (<id>, <количество sms>, <стоимость>, <баланс>) в случае успешной отправки // либо массив (<id>, -<код ошибки>) в случае ошибки
if (SMSC_DEBUG) { if ($m[1] > 0) echo "Стоимость рассылки: $m[0]. Всего SMS: $m[1]\n"; else echo "Ошибка №", -$m[1], "\n"; }
return $m; }
// Функция проверки статуса отправленного SMS или HLR-запроса // // $id - ID cообщения или список ID через запятую // $phone - номер телефона или список номеров через запятую // $all - вернуть все данные отправленного SMS, включая текст сообщения (0,1 или 2) // // возвращает массив (для множественного запроса двумерный массив): // // для одиночного SMS-сообщения: // (<статус>, <время изменения>, <код ошибки доставки>) // // для HLR-запроса: // (<статус>, <время изменения>, <код ошибки sms>, <код IMSI SIM-карты>, <номер сервис-центра>, <код страны регистрации>, <код оператора>, // <название страны регистрации>, <название оператора>, <название роуминговой страны>, <название роумингового оператора>) // // при $all = 1 дополнительно возвращаются элементы в конце массива: // (<время отправки>, <номер телефона>, <стоимость>, <sender id>, <название статуса>, <текст сообщения>) // // при $all = 2 дополнительно возвращаются элементы <страна>, <оператор> и <регион> // // при множественном запросе: // если $all = 0, то для каждого сообщения или HLR-запроса дополнительно возвращается <ID сообщения> и <номер телефона> // // если $all = 1 или $all = 2, то в ответ добавляется <ID сообщения> // // либо массив (0, -<код ошибки>) в случае ошибки
Library source code:
#!/usr/bin/perl # SMSCENTRE.COM API (smscentre.com) версия 1.9 (03.07.2019)
package smsc_api;
use strict; use warnings;
# Константы для настройки библиотеки use constant SMSC_LOGIN => ""; # логин клиента use constant SMSC_PASSWORD => ""; # пароль клиента. Если передан пустой логин, то SMSC_PASSWORD используется, как API ключ, вместо логина и пароля use constant SMSC_POST => 0; # использовать метод POST use constant SMSC_HTTPS => 0; # использовать HTTPS протокол use constant SMSC_CHARSET => 'utf-8'; # $charset - кодировка сообщения (windows-1251 или koi8-r), по умолчанию используется utf-8 use constant SMSC_DEBUG => 0; # флаг отладки
# Константы для отправки SMS по SMTP use constant SMTP_FROM => 'api@smscentre.com'; # e-mail адрес отправителя use constant SMTP_SERVER => 'send.smscentre.com'; # адрес smtp сервера
use LWP::UserAgent; use URI::Escape; use Net::SMTP;
use vars qw(@EXPORT); use Exporter 'import'; @EXPORT = qw(send_sms send_sms_mail get_sms_cost get_status get_balance);
# Функция отправки SMS # # обязательные параметры: # # $phones - список телефонов через запятую или точку с запятой # $message - отправляемое сообщение # # необязательные параметры: # # $translit - переводить или нет в транслит (1,2 или 0) # $time - необходимое время доставки в виде строки (DDMMYYhhmm, h1-h2, 0ts, +m) # $id - идентификатор сообщения. Представляет собой 32-битное число в диапазоне от 1 до 2147483647. # $format - формат сообщения (0 - обычное sms, 1 - flash-sms, 2 - wap-push, 3 - hlr, 4 - bin, 5 - bin-hex, 6 - ping-sms, 7 - mms, 8 - mail, 9 - call, 10 - viber, 11 - soc, 13 - telegram) # $sender - имя отправителя (Sender ID). # $query - строка дополнительных параметров, добавляемая в URL-запрос ("valid=01:00&maxsms=3") # # возвращает массив (<id>, <количество sms>, <стоимость>, <баланс>) в случае успешной отправки # либо массив (<id>, -<код ошибки>) в случае ошибки
sub send_sms { my ($phones, $message, $translit, $time, $id, $format, $sender, $query) = @_;
class SMSC
# Константы для настройки библиотеки
SMSC_LOGIN = "" # логин клиента
SMSC_PASSWORD = "" # пароль клиента. Если передан пустой логин, то SMSC_PASSWORD используется, как API ключ, вместо логина и пароля
SMSC_POST = false # использовать метод POST
SMSC_HTTPS = false # использовать HTTPS протокол
SMSC_CHARSET = "utf-8" # кодировка сообщения: koi8-r или windows-1251 (по умолчанию utf-8)
SMSC_DEBUG = false # флаг отладки
SMTP_FROM = "api@smscentre.com" # e-mail адрес отправителя
# Функция отправки SMS
#
# обязательные параметры:
#
# phones - список телефонов через запятую или точку с запятой
# message - отправляемое сообщение
#
# необязательные параметры:
#
# translit - переводить или нет в транслит (1,2 или 0)
# time - необходимое время доставки в виде строки (DDMMYYhhmm, h1-h2, 0ts, +m)
# id - идентификатор сообщения. Представляет собой 32-битное число в диапазоне от 1 до 2147483647.
# format - формат сообщения (0 - обычное sms, 1 - flash-sms, 2 - wap-push, 3 - hlr, 4 - bin, 5 - bin-hex, 6 - ping-sms, 7 - mms, 8 - mail, 9 - call, 10 - viber, 11 - soc, 13 - telegram)
# sender - имя отправителя (Sender ID).
# query - строка дополнительных параметров, добавляемая в URL-запрос ("valid=01:00&maxsms=3&tz=2")
#
# возвращает массив (<id>, <количество sms>, <стоимость>, <баланс>) в случае успешной отправки
# либо массив (<id>, -<код ошибки>) в случае ошибки
if SMSC_DEBUG
if m[1] > "0"
puts "Сообщение отправлено успешно. ID: #{m[0]}, всего SMS: #{m[1]}, стоимость: #{m[2]}, баланс: #{m[3]}\n"
else
puts "Ошибка №#{m[1][1]}" + (m[0] > "0" ? ", ID: #{m[0]}" : "") + "\n";
end
end
return m
end
# SMTP версия функции отправки SMS
def send_sms_mail(phones, message, translit = 0, time = 0, id = 0, format = 0, sender = "")
$VERBOSE = nil
Net::SMTP.start("send.smscentre.com") do |smtp|
smtp.send_message("Content-Type: text/plain; charset=#{SMSC_CHARSET}\n\n#{SMSC_LOGIN}:#{SMSC_PASSWORD}:#{id}:#{time}:#{translit},#{format},#{sender}:#{phones}:#{message}", SMTP_FROM, "send@send.smscentre.com")
end
$VERBOSE = true
end
# Функция получения стоимости SMS
#
# обязательные параметры:
#
# phones - список телефонов через запятую или точку с запятой
# message - отправляемое сообщение
#
# необязательные параметры:
#
# translit - переводить или нет в транслит (1,2 или 0)
# format - формат сообщения (0 - обычное sms, 1 - flash-sms, 2 - wap-push, 3 - hlr, 4 - bin, 5 - bin-hex, 6 - ping-sms, 7 - mms, 8 - mail, 9 - call, 10 - viber, 11 - soc, 13 - telegram)
# sender - имя отправителя (Sender ID)
# query - строка дополнительных параметров, добавляемая в URL-запрос ("list=79999999999:Ваш пароль: 123\n78888888888:Ваш пароль: 456")
#
# возвращает массив (<стоимость>, <количество sms>) либо массив (0, -<код ошибки>) в случае ошибки
if (i > 1)
url = url_orig.clone
url.sub!("://smscentre.com/", "://www" + i.to_s + ".smscentre.com/")
uri = URI.parse(url)
http = _server_connect(uri)
end
begin
r = (SMSC_POST || url.length > 2000) ? http.post2(uri.path, uri.query) : http.get2(uri.path + "?" + uri.query)
ret = r.body
rescue
ret = ""
end
i+=1
end until ret != "" || i == 6
if ret == ""
puts "Ошибка чтения адреса: #{url}\n" if SMSC_DEBUG
Library source code:
# -*- coding: utf-8 -*- # SMSCENTRE.COM API (smscentre.com) версия 2.0 (03.07.2019)
from datetime import datetime from time import sleep import smtplib
try: from urllib import urlopen, quote except ImportError: from urllib.request import urlopen from urllib.parse import quote
# Константы для настройки библиотеки SMSC_LOGIN = "" # логин клиента SMSC_PASSWORD = "" # пароль клиента. Если передан пустой логин, то SMSC_PASSWORD используется, как API ключ, вместо логина и пароля SMSC_POST = False # использовать метод POST SMSC_HTTPS = False # использовать HTTPS протокол SMSC_CHARSET = "utf-8" # кодировка сообщения (windows-1251 или koi8-r), по умолчанию используется utf-8 SMSC_DEBUG = False # флаг отладки
# Константы для отправки SMS по SMTP SMTP_FROM = "api@smscentre.com" # e-mail адрес отправителя SMTP_SERVER = "send.smscentre.com" # адрес smtp сервера SMTP_LOGIN = "" # логин для smtp сервера SMTP_PASSWORD = "" # пароль для smtp сервера
# Вспомогательная функция, эмуляция тернарной операции ?: def ifs(cond, val1, val2): if cond: return val1 return val2
# Класс для взаимодействия с сервером smscentre.com
class SMSC(object):
# Метод отправки SMS # # обязательные параметры: # # phones - список телефонов через запятую или точку с запятой # message - отправляемое сообщение # # необязательные параметры: # # translit - переводить или нет в транслит (1,2 или 0) # time - необходимое время доставки в виде строки (DDMMYYhhmm, h1-h2, 0ts, +m) # id - идентификатор сообщения. Представляет собой 32-битное число в диапазоне от 1 до 2147483647. # format - формат сообщения (0 - обычное sms, 1 - flash-sms, 2 - wap-push, 3 - hlr, 4 - bin, 5 - bin-hex, 6 - ping-sms, 7 - mms, 8 - mail, 9 - call, 10 - viber, 11 - soc, 13 - telegram) # sender - имя отправителя (Sender ID). # query - строка дополнительных параметров, добавляемая в URL-запрос ("valid=01:00&maxsms=3") # # возвращает массив (<id>, <количество sms>, <стоимость>, <баланс>) в случае успешной отправки # либо массив (<id>, -<код ошибки>) в случае ошибки
String SMSC_LOGIN = ""; // логин клиента String SMSC_PASSWORD = ""; // пароль клиента. Если передан пустой логин, то SMSC_PASSWORD используется, как API ключ, вместо логина и пароля boolean SMSC_HTTPS = false; // использовать HTTPS протокол String SMSC_CHARSET = "utf-8"; // кодировка сообщения: koi8-r, windows-1251 или utf-8 (по умолчанию) boolean SMSC_DEBUG = false; // флаг отладки boolean SMSC_POST = false; // Использовать метод POST
Library source code:
// SMSCENTRE.COM API (smscentre.com) версия 3.1 (03.07.2019)
using System;
using System.Web;
using System.Net;
using System.IO;
using System.Net.Mail;
using System.Text;
public class SMSC
{
// Константы с параметрами отправки
const string SMSC_LOGIN = ""; // логин клиента
const string SMSC_PASSWORD = ""; // пароль клиента. Если передан пустой логин, то SMSC_PASSWORD используется, как API ключ, вместо логина и пароля
bool SMSC_POST = false; // использовать метод POST
const bool SMSC_HTTPS = false; // использовать HTTPS протокол
const string SMSC_CHARSET = "utf-8"; // кодировка сообщения (windows-1251 или koi8-r), по умолчанию используется utf-8
const bool SMSC_DEBUG = false; // флаг отладки
// Константы для отправки SMS по SMTP
const string SMTP_FROM = "api@smscentre.com"; // e-mail адрес отправителя
const string SMTP_SERVER = "send.smscentre.com"; // адрес smtp сервера
const string SMTP_LOGIN = ""; // логин для smtp сервера
const string SMTP_PASSWORD = ""; // пароль для smtp сервера
public string[][] D2Res;
// Метод отправки SMS
//
// обязательные параметры:
//
// phones - список телефонов через запятую или точку с запятой
// message - отправляемое сообщение
//
// необязательные параметры:
//
// translit - переводить или нет в транслит
// time - необходимое время доставки в виде строки (DDMMYYhhmm, h1-h2, 0ts, +m)
// id - идентификатор сообщения. Представляет собой 32-битное число в диапазоне от 1 до 2147483647.
// format - формат сообщения (0 - обычное sms, 1 - flash-sms, 2 - wap-push, 3 - hlr, 4 - bin, 5 - bin-hex, 6 - ping-sms, 7 - mms, 8 - mail, 9 - call, 10 - viber, 11 - soc, 13 - telegram)
// sender - имя отправителя (Sender ID).
// query - строка дополнительных параметров, добавляемая в URL-запрос ("valid=01:00&maxsms=3")
//
// возвращает массив строк (<id>, <количество sms>, <стоимость>, <баланс>) в случае успешной отправки
// либо массив строк (<id>, -<код ошибки>) в случае ошибки
public string[] send_sms(string phones, string message, int translit = 0, string time = "", int id = 0, int format = 0, string sender = "", string query = "", string[] files = null)
{
if (files != null)
SMSC_POST = true;
public void send_sms_mail(string phones, string message, int translit = 0, string time = "", int id = 0, int format = 0, string sender = "")
{
MailMessage mail = new MailMessage();
mail.To.Add("send@send.smscentre.com");
mail.From = new MailAddress(SMTP_FROM, "");
if (SMSC_DEBUG) {
if (Convert.ToInt32(m[1]) > 0)
_print_debug("Стоимость рассылки: " + m[0] + ". Всего SMS: " + m[1]);
else
_print_debug("Ошибка №" + m[1].Substring(1, 1));
}
return m;
}
// Метод проверки статуса отправленного SMS или HLR-запроса
//
// id - ID cообщения или список ID через запятую
// phone - номер телефона или список номеров через запятую
// all - вернуть все данные отправленного SMS, включая текст сообщения (0,1 или 2)
//
// возвращает массив (для множественного запроса возвращается массив с единственным элементом, равным 1. В этом случае статусы сохраняются в
// двумерном динамическом массиве класса D2Res):
//
// для одиночного SMS-сообщения:
// (<статус>, <время изменения>, <код ошибки доставки>)
//
// для HLR-запроса:
// (<статус>, <время изменения>, <код ошибки sms>, <код IMSI SIM-карты>, <номер сервис-центра>, <код страны регистрации>, <код оператора>,
// <название страны регистрации>, <название оператора>, <название роуминговой страны>, <название роумингового оператора>)
//
// при all = 1 дополнительно возвращаются элементы в конце массива:
// (<время отправки>, <номер телефона>, <стоимость>, <sender id>, <название статуса>, <текст сообщения>)
//
// при all = 2 дополнительно возвращаются элементы <страна>, <оператор> и <регион>
//
// при множественном запросе (данные по статусам сохраняются в двумерном массиве D2Res):
// если all = 0, то для каждого сообщения или HLR-запроса дополнительно возвращается <ID сообщения> и <номер телефона>
//
// если all = 1 или all = 2, то в ответ добавляется <ID сообщения>
//
// либо массив (0, -<код ошибки>) в случае ошибки
public string[] get_status(string id, string phone, int all = 0)
{
string[] m = _smsc_send_cmd("status", "phone=" + _urlencode(phone) + "&id=" + _urlencode(id) + "&all=" + all.ToString());
// (status, time, err, ...) или (0, -error)
if (id.IndexOf(',') == -1)
{
if (SMSC_DEBUG)
{
if (m[1] != "" && Convert.ToInt32(m[1]) >= 0)
{
int timestamp = Convert.ToInt32(m[1]);
DateTime offset = new DateTime(1970, 1, 1, 0, 0, 0, 0);
DateTime date = offset.AddSeconds(timestamp);
_print_debug("Статус SMS = " + m[0] + (timestamp > 0 ? ", время изменения статуса - " + date.ToLocalTime() : ""));
}
else
_print_debug("Ошибка №" + m[1].Substring(1, 1));
}
var
SMSC_POST: Boolean = False; // использовать метод POST
const
// Константы с параметрами отправки
SMSC_LOGIN: String = ''; // логин клиента
SMSC_PASSWORD: String = ''; // пароль клиента. Если передан пустой логин, то SMSC_PASSWORD используется, как API ключ, вместо логина и пароля
SMSC_CHARSET: String = {$IFDEF UNICODE}// кодировка сообщения (utf-8 или koi8-r), по умолчанию используется windows-1251
'utf-8'
{$ELSE}
'windows-1251'
{$ENDIF};
SMSC_DEBUG: Boolean = False; // флаг отладки
// Константы для отправки SMS по SMTP
SMTP_FROM: String = 'api@smscentre.com'; // e-mail адрес отправителя
SMTP_SERVER: String = 'send.smscentre.com'; // адрес smtp сервера
SMTP_LOGIN: String = ''; // логин для smtp сервера
SMTP_PASSWORD: String = ''; // пароль для smtp сервера
private
// Приватные методы класса SMSС
function _smsc_send_cmd(cmd: String; arg: String; files: TStringList = nil): TStringDynArray;
function _urlencode(str: String): String;
procedure _print_debug(str: String);
function _ifs(cond: Boolean; val1: String; val2: String): String;
end;
var
formats: array[0..13] of String = ('', 'flash=1', 'push=1', 'hlr=1', 'bin=1', 'bin=2', 'ping=1', 'mms=1', 'mail=1', 'call=1', 'viber=1', 'soc=1', '', 'tg=1');
implementation
// Метод отправки SMS
//
// обязательные параметры:
//
// phones - список телефонов через запятую или точку с запятой
// mes - отправляемое сообщение
//
// необязательные параметры:
//
// translit - переводить или нет в транслит
// time - необходимое время доставки в виде строки (DDMMYYhhmm, h1-h2, 0ts, +m)
// id - идентификатор сообщения. Представляет собой 32-битное число в диапазоне от 1 до 2147483647.
// format - формат сообщения (0 - обычное sms, 1 - flash-sms, 2 - wap-push, 3 - hlr, 4 - bin, 5 - bin-hex, 6 - ping-sms, 7 - mms, 8 - mail, 9 - call, 10 - viber, 11 - soc, 13 - telegram)
// sender - имя отправителя (Sender ID).
// query - строка дополнительных параметров, добавляемая в URL-запрос ('valid=01:00&maxsms=3')
// files - массив путей к файлам при отправке mms или e-mail сообщений
//
// возвращает массив (<id>, <количество sms>, <стоимость>, <баланс>) в случае успешной отправки
// либо (<id>, -<код ошибки>) в случае ошибки
if SMSC_DEBUG then
if StrToInt(Result[1]) > 0 then
_print_debug('Стоимость рассылки: ' + Result[0] + '. Всего SMS: ' + Result[1])
else
_print_debug('Ошибка №' + Result[1][2]);
end;
// Метод проверки статуса отправленного SMS или HLR-запроса
//
// id - ID cообщения или список ID через запятую
// phone - номер телефона или список номеров через запятую
// all - вернуть все данные отправленного SMS, включая текст сообщения (0,1 или 2)
//
// возвращает массив (для множественного запроса возвращается массив с единственным элементом, равным 1. В этом случае статусы сохраняются в
// двумерном динамическом массиве класса D2Res):
//
// для одиночного SMS-сообщения:
// (<статус>, <время изменения>, <код ошибки доставки>)
//
// для HLR-запроса:
// (<статус>, <время изменения>, <код ошибки sms>, <код IMSI SIM-карты>, <номер сервис-центра>, <код страны регистрации>, <код оператора>,
// <название страны регистрации>, <название оператора>, <название роуминговой страны>, <название роумингового оператора>)
//
// при all = 1 дополнительно возвращаются элементы в конце массива:
// (<время отправки>, <номер телефона>, <стоимость>, <sender id>, <название статуса>, <текст сообщения>)
//
// при all = 2 дополнительно возвращаются элементы <страна>, <оператор> и <регион>
//
// при множественном запросе (данные по статусам сохраняются в двумерном массиве D2Res):
// если all = 0, то для каждого сообщения или HLR-запроса дополнительно возвращается <ID сообщения> и <номер телефона>
//
// если all = 1 или all = 2, то в ответ добавляется <ID сообщения>
//
// либо массив (0, -<код ошибки>) в случае ошибки
function SMSC.get_status(id: String; phone: String; all: Integer = 0): TStringDynArray;
var
ans: String;
TZInfo: TIME_ZONE_INFORMATION;
i, idx: Integer;
begin
if Pos(',', id) = 0 then
begin
if SMSC_DEBUG then
if (Result[1] <> '') and (StrToInt(Result[1]) >= 0) then
begin
ans := 'Статус SMS = ' + Result[0];
GetTimeZoneInformation(TZInfo);
if StrToInt(Result[1]) > 0 then
ans := ans + ', время изменения статуса - ' + DateTimeToStr(UnixToDateTime(StrToInt64(Result[1]) - TZInfo.Bias * 60));
_print_debug(ans);
end
else
_print_debug('Ошибка №' + Result[1][2]);
idx := StrToInt(_ifs(all = 1, '9', '12'));
if (all > 0) and (Length(Result) > idx) and ((Length(Result) < idx + 5) or (Result[idx + 5] <> 'HLR')) then
begin
ans := '';
for i := 0 to Length(Result) - 1 do
ans := ans + Result[i] + _ifs(i = Length(Result) - 1, '', ',');
SetLength(Result, idx);
for i := 0 to idx - 2 do
IdStrings.SplitString(ans, ',', Result[i], ans);
Result[idx - 1] := ans;
end;
end
else
begin
if (Length(Result) = 1) and (Pos('-', Result[0]) = 3) then
Result := StrUtils.SplitString(Result[0], ',')
else
begin
SetLength(D2Res, 0);
SetLength(D2Res, Length(Result));
for i := 0 to Length(D2Res) - 1 do
D2Res[i] := StrUtils.SplitString(Result[i], ',');
repeat
if cnt > 0 then
aurl := StringReplace(_aurl, 'smscentre.com', 'www' + IntToStr(cnt) + '.smscentre.com', [rfReplaceAll])
else
Inc(cnt);
try
if SMSC_POST then
begin
par := TIdMultiPartFormDataStream.Create;
for i := 1 to files.Count do
par.AddFile('File' + IntToStr(i), files.Strings[i-1], 'application/octet-stream');
params := StrUtils.SplitString(arg, '&');
for i := 1 to Length(params) do
begin
IdStrings.SplitString(params[i-1], '=', VLeft, VRight);
pf := par.AddFormField(VLeft, VRight);
pf.Charset := SMSC_CHARSET;
pf.ContentTransfer := 'binary';
end;
s := Post(aurl, par);
par.Destroy;
end
else
s := Get(aurl + '?' + arg);
except
s := '';
end;
Inc(cnt);
until (s <> '') or (cnt > 5);
if s = '' then
begin
if SMSC_DEBUG then
_print_debug('Ошибка чтения адреса: ' + aurl + '?' + arg);
s := ','; // фиктивный ответ
end;
Destroy;
end;
delim := ',';
if cmd = 'status' then
begin
params := StrUtils.SplitString(arg, '&');
for i := 0 to Length(params) - 1 do
begin
IdStrings.SplitString(params[i], '=', VLeft, VRight);
if (VLeft = 'id') and (Pos('%2C', VRight) > 0) then // запятая в id - множественный запрос
delim := #10;
end;
end;
Result := StrUtils.SplitString(s, delim);
end;
// кодирование параметра в http-запросе
function SMSC._urlencode(str: String): String;
var
EncodeStr, UnsafeChars: String;
UStr: UTF8String;
i, j: Integer;
begin
UnsafeChars := '!"#%&''*,:;<=>?[]^`{|} ';
EncodeStr := '';
if SMSC_POST then
Result := str
else
begin
for i := 1 to Length(str) do
if (CharIsInSet(str, i, UnsafeChars) or not CharIsInSet(str, i, CharRange(Char(33), Char(126)))) then
begin
UStr := UTF8String(str[i]);
for j := 1 to Length(UStr) do
EncodeStr := EncodeStr + '%' + IntToHex(Byte(UStr[j]), 2);
end
else
EncodeStr := EncodeStr + str[i];
Result := EncodeStr;
end;
end;
// вывод отладочной информации
procedure SMSC._print_debug(str: String);
begin
with Application do MessageBox(PChar(str), '');
end;
function SMSC._ifs(cond: Boolean; val1: String; val2: String): String;
begin
if cond then
Result := val1
else
Result := val2;
end;
end.
// Examples:
// var
// sms: SMSC;
// ret: TStringDynArray;
// balance: String;
// begin
// sms := SMSC.Create;
// ret := sms.send_sms('79999999999', 'Ваш пароль: 123', 1);
// ret := sms.send_sms('79999999999', 'http://smscentre.com'#13#10 + 'SMSCENTRE.COM', 0, '', 0, 0, '', 'maxsms=3');
// ret := sms.send_sms('79999999999', '0605040B8423F0DC0601AE02056A0045C60C036D79736974652E72750001036D7973697465000101', 0, '', 0, 5);
// ret := sms.send_sms('79999999999', '', 0, '', 0, 3);
// ret := sms.send_sms('dest@mysite.com', 'Ваш пароль: 123', 0, 0, 0, 8, 'source@mysite.com', 'subj=Confirmation');
// ret := sms.get_sms_cost('79999999999', 'Вы успешно зарегистрированы!');
// sms.send_sms_mail('79999999999', 'Ваш пароль: 123', 0, '0101121000', 0, 1);
// ret := sms.get_status(12345, '79999999999');
// balance := sms.get_balance;
// sms.Destroy;
// end;
An example of using the library:
uses smsc_api; ... var sms: SMSC; ret: TStringDynArray; balance: String; ... begin ... sms := SMSC.Create; ... ret := sms.send_sms('79999999999', 'Ваш пароль: 123', 1); ... ret := sms.send_sms('79999999999', 'http://smscentre.com'#13#10 + 'SMSCENTRE.COM', 0, '', 0, 0, '', 'maxsms=3'); ... ret := sms.send_sms('79999999999', '0605040B8423F0DC0601AE02056A0045C60C036D79736974652E72750001036D7973697465000101', 0, '', 0, 5); ... ret := sms.send_sms('79999999999', '', 0, '', 0, 3); ... ret := sms.get_sms_cost('79999999999', 'Вы успешно зарегистрированы!'); ... ret := sms.get_status(12345, '79999999999'); ... balance := sms.get_balance; ... // отправка SMS через e-mail sms.send_sms_mail('79999999999', 'Ваш пароль: 123'); ... sms.Destroy; ... end;
// Константы с параметрами отправки
const char* SMSC_LOGIN = ""; // логин клиента
const char* SMSC_PASSWORD = ""; // пароль клиента. Если передан пустой логин, то SMSC_PASSWORD используется, как API ключ, вместо логина и пароля
Boolean SMSC_POST = false; // использовать метод POST
const char* SMSC_CHARSET =
#ifdef _DELPHI_STRING_UNICODE
"utf-8";
#else
"windows-1251";
#endif // кодировка сообщения (utf-8 или koi8-r), по умолчанию используется windows-1251
const Boolean SMSC_DEBUG = false; // флаг отладки
// Константы для отправки SMS по SMTP
const char* SMTP_FROM = "api@smscentre.com"; // e-mail адрес отправителя
const char* SMTP_SERVER = "send.smscentre.com"; // адрес smtp сервера
const char* SMTP_LOGIN = ""; // логин для smtp сервера
const char* SMTP_PASSWORD = ""; // пароль для smtp сервера
// Общедоступные методы класса SMSС
//
// Метод отправки SMS
//
// обязательные параметры:
//
// phones - список телефонов через запятую или точку с запятой
// mes - отправляемое сообщение
//
// необязательные параметры:
//
// translit - переводить или нет в транслит
// time - необходимое время доставки в виде строки (DDMMYYhhmm, h1-h2, 0ts, +m)
// id - идентификатор сообщения. Представляет собой 32-битное число в диапазоне от 1 до 2147483647.
// format - формат сообщения (0 - обычное sms, 1 - flash-sms, 2 - wap-push, 3 - hlr, 4 - bin, 5 - bin-hex, 6 - ping-sms, 7 - mms, 8 - mail, 9 - call, 10 - viber, 11 - soc, 13 - telegram)
// sender - имя отправителя (Sender ID).
// query - строка дополнительных параметров, добавляемая в URL-запрос ("valid=01:00&maxsms=3")
// files - массив путей к файлам при отправке mms или e-mail сообщений
//
// возвращает массив (<id>, <количество sms>, <стоимость>, <баланс>) в случае успешной отправки
// либо (<id>, -<код ошибки>) в случае ошибки
TStringDynArray send_sms(String phones, String mes, int translit = 0, String time = "", int id = 0, int format = 0, String sender = "", String query = "", TStringList *files = NULL)
{
TStringDynArray m;
void send_sms_mail(String phones, String mes, int translit = 0, String time = "", int id = 0, int format = 0, String senderid = "")
{
TIdMessage* msg = new TIdMessage(0);
TIdSMTP* idsmtp = new TIdSMTP(0);
if (SMSC_DEBUG)
if (StrToInt(m[1]) > 0)
_print_debug("Стоимость рассылки: " + m[0] + ". Всего SMS: " + m[1]);
else
_print_debug("Ошибка №" + m[1].SubString(2, 1));
return m;
}
// Метод проверки статуса отправленного SMS или HLR-запроса
//
// id - ID cообщения или список ID через запятую
// phone - номер телефона или список номеров через запятую
// all - вернуть все данные отправленного SMS, включая текст сообщения (0,1 или 2)
//
// возвращает массив (для множественного запроса возвращается массив с единственным элементом, равным 1. В этом случае статусы сохраняются в
// двумерном динамическом массиве класса D2Res):
//
// для одиночного SMS-сообщения:
// (<статус>, <время изменения>, <код ошибки доставки>)
//
// для HLR-запроса:
// (<статус>, <время изменения>, <код ошибки sms>, <код IMSI SIM-карты>, <номер сервис-центра>, <код страны регистрации>, <код оператора>,
// <название страны регистрации>, <название оператора>, <название роуминговой страны>, <название роумингового оператора>)
//
// при all = 1 дополнительно возвращаются элементы в конце массива:
// (<время отправки>, <номер телефона>, <стоимость>, <sender id>, <название статуса>, <текст сообщения>)
//
// при all = 2 дополнительно возвращаются элементы <страна>, <оператор> и <регион>
//
// при множественном запросе (данные по статусам сохраняются в двумерном массиве D2Res):
// если all = 0, то для каждого сообщения или HLR-запроса дополнительно возвращается <ID сообщения> и <номер телефона>
//
// если all = 1 или all = 2, то в ответ добавляется <ID сообщения>
//
// либо массив (0, -<код ошибки>) в случае ошибки
TStringDynArray get_status(String id, String phone, int all = 0)
{
TIME_ZONE_INFORMATION TZInfo;
TStringDynArray m;
String ans;
int i;
if (id.Pos(",") == 0) {
if (SMSC_DEBUG)
if ((m[1] != "") && (StrToInt(m[1]) >= 0))
{
String ans = "Статус SMS = " + m[0];
GetTimeZoneInformation(&TZInfo);
if (StrToInt(m[1]) > 0)
ans = ans + ", время изменения статуса - " + DateTimeToStr(UnixToDateTime(StrToInt64(m[1]) - TZInfo.Bias * 60));
_print_debug(ans);
}
else
_print_debug("Ошибка №" + m[1].SubString(2, 1));
// Константы с параметрами отправки
const CString SMSC_LOGIN = ""; // логин клиента
const CString SMSC_PASSWORD = ""; // пароль клиента. Если передан пустой логин, то SMSC_PASSWORD используется, как API ключ, вместо логина и пароля
const bool SMSC_HTTPS = false; // использовать протокол HTTPS
const bool SMSC_POST = false; // использовать метод POST
const CString SMSC_CHARSET =
#if defined _UNICODE || defined UNICODE
"utf-8";
#else
"windows-1251";
#endif // кодировка сообщения (utf-8 или koi8-r), по умолчанию используется windows-1251
const bool SMSC_DEBUG = false; // флаг отладки
class SMSC {
public:
// Общедоступные методы класса SMSС
//
// Метод отправки SMS
//
// обязательные параметры:
//
// phones - список телефонов через запятую или точку с запятой
// message - отправляемое сообщение
//
// необязательные параметры:
//
// translit - переводить или нет в транслит
// time - необходимое время доставки в виде строки (DDMMYYhhmm, h1-h2, 0ts, +m)
// id - идентификатор сообщения. Представляет собой 32-битное число в диапазоне от 1 до 2147483647.
// format - формат сообщения (0 - обычное sms, 1 - flash-sms, 2 - wap-push, 3 - hlr, 4 - bin, 5 - bin-hex, 6 - ping-sms, 7 - mms, 8 - mail, 9 - call, 10 - viber, 11 - soc, 13 - telegram)
// sender - имя отправителя (Sender ID).
// query - строка дополнительных параметров, добавляемая в URL-запрос ("valid=01:00&maxsms=3")
//
// возвращает массив (<id>, <количество sms>, <стоимость>, <баланс>) в случае успешной отправки
// либо (<id>, -<код ошибки>) в случае ошибки
vector<CString> send_sms(CString phones, CString message, int translit = 0, CString time = "", int id = 0, int format = 0, CString sender = "", CString query = "")
{
CString tt, ir;
CString formats[13] = {"flash=1", "push=1", "hlr=1", "bin=1", "bin=2", "ping=1", "mms=1", "mail=1", "call=1", "viber=1", "soc=1", "", "tg=1"};
ir.Format((CString)"%i", id);
tt.Format((CString)"%i", translit);
Library source code:
// SMSCENTRE.COM API (smscentre.com) версия 1.2 (08.11.2021)
var Api = function () { 'use strict'; var http = require('http'); var qs = require('querystring'); var FormData = require('form-data'); var fs = require('fs');
var login = "", // логин клиента password = "", // пароль клиента. Если передан пустой логин, то SMSC_PASSWORD используется, как API ключ, вместо логина и пароля sender, log = console.log;
var PHONE_TYPES = { 'string' : 1, 'number' : 2 };
var get_host = function (www) { if (!www) www = ''; return (ssl? 'https://' : 'http://') + www + host + '/sys/'; };
var isInArr = function (arr, val) { if (!arr || !arr.length) return false; return arr.indexOf(val) !== -1; };
var convert_data = function (data, notConvert) { if (data.fmt) delete data.fmt; if (data.msg) { data.mes = data.msg; delete data.msg; } if (data.message) { data.mes = data.message; delete data.message; } if (data.phone && !isInArr(notConvert, 'phone')) { data.phones = data.phone; delete data.phone; } if (data.number) { data.phones = data.number; delete data.number; }
if (data.list) { var list = ''; for (var i in data.list) { list += i + ':' + data.list[i]+'\n'; } data.list = list; delete data.mes; }
if (data.phones && !(typeof data.phones in PHONE_TYPES)) data.phones = data.phones.join(','); };
var convert_files = function (form, data) { if (!data.files) return;
if (typeof data.files === 'string') { var f = data.files; var bin = fs.readFileSync(f); form.append(i, bin, { filename : f }); return; }
for (var i in data.files) { var f = data.files[i]; var bin = fs.readFileSync(f); form.append(i, bin, { filename : f }); }
delete data.files; };
var read_url = function (prs, clb, notConvert) { var fmt = prs.fmt ? prs.fmt : def_fmt;
// Отправка сообщения любого типа (data — объект, включающий параметры отправки. Подробнее смотрите в документации к API) this.send = function (type, data, clb) { if (typeof data !== 'object') data = {}; var opts = { file : 'send.php', data : data }; opts['type'] = type; read_url(opts, clb); };
// Отправка простого SMS сообщения this.send_sms = function (data, clb) { if (typeof data !== 'object') data = {}; read_url({ file : 'send.php', data : data }, clb); };
// Получение статуса сообщения this.get_status = function (data, clb) { if (data.phones) { data.phone = data.phones; delete data.phones; } if (data.number) { data.phone = data.number; delete data.number; }
if (data.phone && !(typeof data.phone in PHONE_TYPES)) { data.phone = data.phone.join(','); }
read_url({ file : 'status.php', data : data }, clb, ['phone']); };
// Получение баланса this.get_balance = function (clb) { read_url({ file : 'balance.php', data : { cur : 1 } }, function (b, r, e, c) { clb(e ? 0 : b.balance, r, e, c); }); };
// Получение стоимости сообщения this.get_sms_cost = function (data, clb) { if (typeof data !== 'object') data = {}; if (!data.cost) data.cost = 1; read_url({ file : 'send.php', data : data }, function (b, r, e, c) { clb(e ? 0 : b.cost, r, e, c); }); };
// Запрос к API this.raw = function (file, data, clb) { read_url({ file : file, data : data }, clb); };
// Тестирование подключения и данных авторизации this.test = function (clb) { read_url({ file : 'balance.php' }, function (d, r, err) { clb(err); }); };
};
module.exports = new Api();
An example of using the library:
var smsc = require('./smsc/smsc.js');
// Отправка e-mail smsc.send('mail', { phones : 'alex@mysite.ru', mes : 'Тестовое сообщение', subj : 'Тема сообщения', sender : 'alex2@mysite.ru', }, function (data, raw, err, code) { if (err) return console.log(err, 'code: '+code); console.log(data); // object // console.log(raw); // string in JSON format });
// Отправка MMS smsc.send('mms', { phones : '79999999999', mes : 'Тестовое сообщение', fmt : 2, files : [ 'files/123.png' ] }, function (data, raw, err, code) { if (err) return console.log(err, 'code: '+code); console.log(data); // object // console.log(raw); // string in JSON format });
// Отправка списка SMS сообщений smsc.send_sms({ list : { '79999999999' : 'Hello, Alex!', '79999999999' : 'Hello, Petr!' } }, function (data, raw, err, code) { if (err) return console.log(err, 'code: '+code); console.log(data); // object console.log(raw); // string in JSON format });
// Отправка SMS smsc.send_sms({ phones : ['79999999999', '79999999999'], mes : 'Привет!' }, function (data, raw, err, code) { if (err) return console.log(err, 'code: '+code); console.log(data); // object console.log(raw); // string in JSON format });
// Обращение к скриптам API smsc.raw('send.php', { phones : '79999999999,79999999999', mes : 'Hello!' }, function (data, raw, err, code) { if (err) return console.log(err, 'code: '+code); console.log(data); // object console.log(raw); // string in JSON format });
#define UNICODE // Константы с параметрами отправки
static char* const SMSC_LOGIN = "";// логин клиента static char* const SMSC_PASSWORD = "";// пароль клиента. Если передан пустой логин, то SMSC_PASSWORD используется, как API ключ, вместо логина и пароля static char const SMSC_HTTPS = 1;// использовать протокол HTTPS static char SMSC_POST = 0;// использовать метод POST static char* const SMSC_CHARSET = #if defined _UNICODE || defined UNICODE "utf-8"; #else "windows-1251"; #endif // кодировка сообщения (utf-8 или koi8-r), по умолчанию используется windows-1251 static char const SMSC_DEBUG = 1; // флаг отладки
// Константы для отправки SMS по SMTP static char* const SMTP_FROM = "api@smscentre.com"; // e-mail адрес отправителя static char* const SMTP_SERVER = "send.smscentre.com"; // адрес smtp сервера static char* const SMTP_LOGIN = ""; // логин для smtp сервера static char* const SMTP_PASSWORD = ""; // пароль для smtp сервера
typedef char* string_t;
// Функция отправки SMS // // обязательные параметры: // // phones - список телефонов через запятую или точку с запятой // message - отправляемое сообщение // // необязательные параметры: // // translit - переводить или нет в транслит (1,2 или 0) // time - необходимое время доставки в виде строки (DDMMYYhhmm, h1-h2, 0ts, +m) // id - идентификатор сообщения. Представляет собой 32-битное число в диапазоне от 1 до 2147483647. // format - формат сообщения (0 - обычное sms, 1 - flash-sms, 2 - wap-push, 3 - hlr, 4 - bin, 5 - bin-hex, 6 - ping-sms, 7 - mms, 8 - mail, 9 - call, 10 - viber, 11 - soc, 13 - telegram) // sender - имя отправителя (Sender ID). // query - строка дополнительных параметров, добавляемая в URL-запрос ("valid=01:00&maxsms=3&tz=2") // files - массив путей к файлам для отправки mms или e-mail сообщений // // возвращает <id>, <количество sms>, <стоимость>, <баланс> в случае успешной отправки // либо <id>, -<код ошибки> в случае ошибки
string_t send_sms (string_t phones, string_t message, int translit, string_t time, int id, int format, string_t sender, string_t query, string_t files);
// SMTP версия метода отправки SMS void send_sms_mail(string_t phones, string_t mes, int translit, string_t time, int id, int format, string_t sender);
// Получение стоимости SMS // // обязательные параметры: // // phones - список телефонов через запятую или точку с запятой // message - отправляемое сообщение // // необязательные параметры: // // translit - переводить или нет в транслит // format - формат сообщения (0 - обычное sms, 1 - flash-sms, 2 - wap-push, 3 - hlr, 4 - bin, 5 - bin-hex, 6 - ping-sms, 7 - mms, 8 - mail, 9 - call, 10 - viber, 11 - soc, 13 - telegram) // sender - имя отправителя (Sender ID) // query - строка дополнительных параметров, добавляемая в URL-запрос ("list=79999999999:Ваш пароль: 123\n78888888888:Ваш пароль: 456") // // возвращает <стоимость>, <количество sms> либо 0, -<код ошибки> в случае ошибки
string_t get_sms_cost(string_t phones, string_t mes, int translit, int format, string_t sender, string_t query);
// Проверка статуса отправленного SMS или HLR-запроса // // id - ID cообщения или список ID через запятую // phone - номер телефона или список номеров через запятую // all - вернуть все данные отправленного SMS, включая текст сообщения (0,1 или 2) // // // для одиночного SMS-сообщения: // <статус>, <время изменения>, <код ошибки доставки> // // для HLR-запроса: // <статус>, <время изменения>, <код ошибки sms>, <код IMSI SIM-карты>, <номер сервис-центра>, <код страны регистрации>, <код оператора>, // <название страны регистрации>, <название оператора>, <название роуминговой страны>, <название роумингового оператора> // // при all = 1 дополнительно возвращаются элементы: // <время отправки>, <номер телефона>, <стоимость>, <sender id>, <название статуса>, <текст сообщения> // // при all = 2 дополнительно возвращаются элементы <страна>, <оператор> и <регион> // // если all = 0, то для каждого сообщения или HLR-запроса дополнительно возвращается <ID сообщения> и <номер телефона> // // если all = 1 или all = 2, то в ответ добавляется <ID сообщения> // // либо 0, -<код ошибки> в случае ошибки
string_t get_status(string_t id, string_t phone, int all);
// Получение баланса // // без параметров // // возвращает баланс в виде строки или пустую строку в случае ошибки
string_t send_sms (string_t phones, string_t message, int translit, string_t time, int id, int format, string_t sender, string_t query, string_t files) { string_t res=NULL, arg=NULL;
if (SMSC_DEBUG) printf("%s\n",arg); res = _smsc_send_cmd("send", arg, files); free(arg); return res; }
void send_sms_mail(string_t phones, string_t mes, int translit, string_t time, int id, int format, string_t sender) { CURL *curl; CURLcode res = CURLE_OK; struct curl_slist *recipients = NULL;
curl = curl_easy_init(); string_t mail_body;
asprintf(&mail_body,"%s:%s:%d:%s:%d,%d,%s:%s:%s", SMSC_LOGIN, SMSC_PASSWORD, id, time, translit, format, sender, phones, mes); if (SMSC_DEBUG) printf("%s\n",mail_body);
if (curl) { curl_easy_setopt(curl, CURLOPT_URL, SMTP_SERVER); recipients = curl_slist_append(recipients, SMTP_FROM); curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients); res = curl_easy_perform(curl); if (res != CURLE_OK) fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
struct MemoryStruct chunk; chunk.memory = malloc(1); // will be grown as needed by the realloc above chunk.memory[0] = 0; chunk.size = 0; // no data at this point
Library source code:
Attribute VB_Name = "smsc_api"
' SMSCENTRE.COM API (www.smscentre.com) версия 1.2 (03.07.2019)
Public Const SMSC_DEBUG As Byte = 0 ' флаг отладки
Public Const SMSC_CHARSET As String = "utf-8" ' кодировка сообщения (utf-8 или koi8-r), по умолчанию используется windows-1251
Public SMSC_LOGIN As String ' логин клиента
Public SMSC_PASSWORD As String ' пароль клиента
Public SMSC_HTTPS As Byte ' использовать HTTPS протокол
Public Const SMTP_SERVER As String = "smtp.mail.ru" ' адрес SMTP сервера
Public Const SMTP_USERNAME As String = "<smtp_user_name>" ' логин на SMTP сервере
Public Const SMTP_PASSWORD As String = "<smtp_password>" ' пароль на SMTP сервере
Public Const SMTP_FROM As String = "smtp_user_name@mail.ru" ' e-mail адрес отправителя
Public CONNECT_MODE As Byte ' режим соединения с интернетом: 0 - прямое, 1 - Proxy, 2 - настройки из Internet Exporer
Public PROXY_SERVER As String ' адрес Proxy-сервера
Public PROXY_PORT As Integer ' порт Proxy-сервера
Public PROXY_AUTORIZATION As Byte ' флаг использования авторизации на Proxy-сервере
Public PROXY_USERNAME As String ' логин на Proxy-сервере
Public PROXY_PASSWORD As String ' пароль на Proxy-сервере
Public Connection As Object
' Пауза в приложении
'
' Параметры:
' PauseTime - время паузы в секундах
'
Private Sub Sleep(PauseTime As Integer)
Start = Timer
Do While Timer < Start + PauseTime
DoEvents
Loop
End Sub
Public Function URLEncode(ByVal Str As String) As String
Dim Ret
Ret = ""
CharStr = " !""@№#;%:?*().,/$^&\+"
Str = Trim(Str)
For i = 1 To Len(Str)
S = Mid(Str, i, 1)
SymCode = Asc(S)
' Перевод из UNICODE в ASCII
If ((SymCode > 1039) And (SymCode < 1104)) Then
SymCode = SymCode - 848
ElseIf SymCode = 8470 Then
SymCode = 185
ElseIf SymCode = 1105 Then
SymCode = 184
ElseIf SymCode = 1025 Then
SymCode = 168
End If
fl_replace = 0
If InStr(1, CharStr, S, vbBinaryCompare) > 0 Then
Ret = Ret & "%" & Hex(Int(SymCode / 16)) & Hex(Int(SymCode Mod 16))
fl_replace = 1
End If
If (SymCode <= 127) And (fl_replace = 0) Then
Ret = Ret & S
ElseIf fl_replace = 0 Then
Ret = Ret + "%" + Hex(Int(SymCode / 16)) & Hex(Int(SymCode Mod 16))
End If
Next i
URLEncode = Ret
End Function
' Функция чтения URL.
'
Private Function SMSC_Read_URL(URL As String, Params As String) As String
Dim Ret As String
On Error GoTo 0
Connection.Open "POST", Trim(URL), 0
Connection.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
Connection.Send Trim(Params)
Ret = Connection.ResponseText()
If Err.Number <> 0 Then
MsgBox "Не удалось получить данные с сервера!", , "Ошибка"
SMSC_Read_URL = ""
Exit Function
End If
SMSC_Read_URL = Ret
End Function
' Функция вызова запроса. Формирует URL и делает 5 попыток чтения.
'
Private Function SMSC_Send_Cmd(Cmd As String, Optional Arg As String = "")
Dim URL As String, Params As String, Ret As String
' Функция получения стоимости SMS
'
' обязательные параметры:
'
' Phones - список телефонов через запятую или точку с запятой
' Message - отправляемое сообщение
'
' необязательные параметры:
'
' Translit - переводить или нет в транслит (1 или 0)
' Sender - имя отправителя (Sender ID)
' Query - дополнительные параметры
'
' возвращает массив (<стоимость>, <количество sms>) либо массив (0, -<код ошибки>) в случае ошибки
'
Public Function Get_SMS_Cost(Phones As String, Message As String, Optional Translit = 0, Optional sender = "", Optional Query = "")
' Функция проверки статуса отправленного SMS
'
' Id - ID cообщения
' Phone - номер телефона
'
' возвращает массив
' для отправленного SMS (<статус>, <время изменения>, <код ошибки sms>)
' для HLR-запроса (<статус>, <время изменения>, <код ошибки sms>, <код страны регистрации>, <код оператора абонента>,
' <название страны регистрации>, <название оператора абонента>, <название роуминговой страны>, <название роумингового оператора>,
' <код IMSI SIM-карты>, <номер сервис-центра>)
' либо список (0, -<код ошибки>) в случае ошибки
'
Public Function Get_Status(Id, Phone)
Dim m
m = SMSC_Send_Cmd("status", "phone=" & URLEncode(Phone) & "&id=" & Id)
' (status, time, err) или (0, -error)
Get_Status = m
End Function
' Инициализация подключения
'
Public Function SMSC_Initialize()
On Error GoTo 0
Set Connection = CreateObject("WinHttp.WinHttpRequest.5.1")
Connection.Option 9, 80
If Err.Number = 440 Or Err.Number = 432 Then
MsgBox "Не удалось создать объект ""WinHttp.WinHttpRequest.5.1""!" & Chr(13) & "Проверьте наличие системной библиотеки ""WinHttp.dll""", , "Ошибка"
Err.Clear
End If
End Function
Full-featured add-in for sending SMS messages based on the library.
Instructions for installing the add-in:
1) While in the main Excel window, open the File menu, nextParameters.
2) Open the tabAdd-ons and clickGo over.
3) In the window that appears, clickBrowse and select the file with the add-in.
4) After the add-in appears in the windowAvailable add-ons, select it and click OK.
5) In the main window, in the add-ons tab, a button will appearSend SMS.
6) To send an SMS to multiple numbers select the column with the numbers and clickSend SMS.
7) To send individual messages, place the phone numbers in the first column and the message texts in the second column, select them and clickSend SMS.
In some cases, due to a Windows security update, all files received from the Internet/mail are blocked when uploaded to Excel. This is done without any warning messages.
If the "Send SMS" button or the "Add-ons" tab does not appear during the installation of our add-in, then you can remove the lock as follows:
1. Close all Excel windows.
2. In File Explorer, right-click on the add-in file.
3. Select " Properties".
4. On the "General" tab, set the "Unblock" flag.".
5. Click the "Apply" - "OK" or just " OK".
To send SMS messages from Microsoft Access, follow these steps::
1) Open the smsc_api_access.accdb file using Microsoft Access version 2007 or higher.
2) Open the smsc_api module.
3) Specify Public Const SMSC_LOGIN As String, Public Const SMSC_PASSWORD As String Your username and password, respectively, and save the file.
4) Go to the formSending, fill in the fieldsTelephone, The message and, if necessary, the Sender ID and clickSend.
//*************************************************************************************** // ВНУТРЕННИЕ СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ //*************************************************************************************** // Процедура инициализации переменных // Процедура ИнициализацияПеременных()
//*************************************************************************************** // Функция преобразования строки вида х,у в список значений // Функция Строка2Список(Стр)
Перем Рез;
Рез = СоздатьОбъект("СписокЗначений"); й = 1;
Для й = 1 По 4 Цикл
Поз = Найти(Стр, ",");
Если Поз = 0 Тогда Рез.ДобавитьЗначение(Стр); Прервать; Иначе Рез.ДобавитьЗначение(Лев(Стр,Поз-1)); КонецЕсли;
Стр = Сред(Стр, Поз+1, СтрДлина(Стр)-Поз);
КонецЦикла;
Возврат Рез;
КонецФункции // Строка2Список()
//*************************************************************************************** Функция URLEncode(Стр1)
Если (КС <= 127) и (флЗаменили = 0) Тогда Рез = Рез + Символ; ИначеЕсли флЗаменили = 0 Тогда Рез = Рез + "%"+ Hex[Цел(КС/16)+1] + Hex[Цел(КС%16)+1]; КонецЕсли;
КонецЦикла;
Возврат Рез;
КонецФункции // URLEncode()
//******************************************************************************* // Переводит время в формате Unix DateTimeStamp в строку с датой, временем // // Пареметры: // ШтампВремени - штамп времени в формате Unix // Функция Unix2Date (ШтампВремени)
//******************************************************************************* // Осуществляет загрузку внешней компоненты WinHttp.dll // Функция УстановитьКомпоненту()
Попытка
Соединение = СоздатьОбъект("WinHttp.WinHttpRequest.5.1"); Соединение.Option(9, 80); Если ЕСТЬ_ПРОКСИ = 1 Тогда Соединение.SetProxy(2, СокрЛП(ПРОКСИ_АДРЕС) + ":" + СокрЛП(ПРОКСИ_ПОРТ)); КонецЕсли;
Исключение
Сообщить("Не удалось создать объект WinHttp.WinHttpRequest.5.1!" + РазделительСтрок + "Проверьте наличие системной библиотеки ""WinHttp.dll""!"); Возврат 0;
КонецПопытки;
Возврат 1;
КонецФункции // УстановитьКомпоненту()
//*************************************************************************************** // Функция чтения адреса // Функция _SMSC_ПрочитатьАдрес(Адрес, Параметры)
Перем Рез;
Попытка Соединение.Open("POST", СокрЛП(Адрес), 0); Если ЕСТЬ_ПРОКСИ = 1 Тогда Соединение.SetCredentials(СокрЛП(ПРОКСИ_ЛОГИН), СокрЛП(ПРОКСИ_ПАРОЛЬ), 1); КонецЕсли; Соединение.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); Соединение.Send(СокрЛП(Параметры)); Рез = Соединение.ResponseText(); Исключение Сообщить("Не удалось получить данные с сервера!", "!"); Возврат ""; КонецПопытки;
Возврат Рез;
КонецФункции //_SMSC_ПрочитатьАдрес()
//*************************************************************************************** // Функция вызова запроса. Формирует URL и делает 5 попыток чтения. // Функция _SMSC_ПослатьКоманду(Команда, Аргументы = "")
//*************************************************************************************** // Функция получения стоимости SMS // // обязательные параметры: // // Телефоны - список телефонов через запятую или точку с запятой // Сообщение - отправляемое сообщение // // необязательные параметры: // // Транслит - переводить или нет в транслит (1 или 0) // Отправитель - имя отправителя (Sender ID) // ДопПараметры - строка дополнительных параметров, добавляемая в URL-запрос ("list=79999999999:Ваш пароль: 123\n78888888888:Ваш пароль: 456") // // возвращает список (<стоимость>, <количество sms>) либо список (0, -<код ошибки>) в случае ошибки // Функция ПолучитьСтоимость(Телефоны, Сообщение, Транслит = 0, Отправитель = "", ДопПараметры = "")
Если (Рез2 >= 0) Тогда Сообщить ("Статус SMS = " + Рез1 + ?(ПустоеЗначение(Рез2) = 0, ", время изменения статуса - " + Unix2Date(Число(Ответ.ПолучитьЗначение(2))), "")); Иначе Сообщить ("Ошибка № " + Строка(-Рез2)); КонецЕсли;
КонецЕсли;
Возврат Ответ;
КонецФункции // ПолучитьСтатус()
//*************************************************************************************** // Функция получения баланса // // без параметров // // возвращает баланс в виде строки или 0 в случае ошибки
Функция ПолучитьБаланс()
Ответ = _SMSC_ПослатьКоманду("balance"); // (balance) или (0, -error) Рез = Число(Ответ.ПолучитьЗначение(1));
Если (SMSC_Отладка = 1) Тогда
Если Рез >= 0 тогда Сообщить("Сумма на счете: " + Рез + " руб."); Иначе Сообщить("Ошибка № " + Строка(-Число(Ответ.ПолучитьЗначение(2)))); КонецЕсли;
Перем ЕСТЬ_ПРОКСИ; // Флаг использования PROXY-сервера Перем ПРОКСИ_АДРЕС; Перем ПРОКСИ_ПОРТ; Перем ПРОКСИ_ЛОГИН; Перем ПРОКСИ_ПАРОЛЬ;
Перем Соединение; Перем ФорматыСообщений;
//*************************************************************************************** // ВНУТРЕННИЕ СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ //***************************************************************************************
//*************************************************************************************** // Функция преобразования строки вида х,у в список значений // Функция Строка2Список(Стр)
Перем Рез;
Рез = Новый СписокЗначений; Сч = 1;
Для Сч = 1 По 4 Цикл
Поз = Найти(Стр, ",");
Если Поз = 0 Тогда Рез.Добавить(Стр); Прервать; Иначе Рез.Добавить(Лев(Стр,Поз-1)); КонецЕсли;
Стр = Сред(Стр, Поз+1, СтрДлина(Стр)-Поз);
КонецЦикла;
Возврат Рез;
КонецФункции // Строка2Список()
//*************************************************************************************** // Переводит время в формате Unix DateTimeStamp в строку с датой, временем // // Пареметры: // ШтампВремени - штамп времени в формате Unix // Функция Unix2Date (ШтампВремени)
Возврат Дата("19700101000000") + ШтампВремени;
КонецФункции // Unix2Date()
//*************************************************************************************** функция Hex(КС)
//*************************************************************************************** // Функция вызова запроса. Формирует URL и делает 3 попытки чтения. // Функция _SMSC_ПрочитатьАдрес(Сервер, РесурсНаСервере, _Параметры) Экспорт Перем Рез; Перем ХТТПОтвет;
ЕСТЬ_ПРОКСИ = Ложь;
Прокси = Неопределено; Если ЕСТЬ_ПРОКСИ Тогда Прокси = Новый ИнтернетПрокси; Прокси.НеИспользоватьПроксиДляЛокальныхАдресов = Истина; Прокси.Пользователь = ПРОКСИ_ЛОГИН; Прокси.Пароль = ПРОКСИ_ПАРОЛЬ; Прокси.Установить("http" + ?(SMSC_HTTPS=1, "s", ""), ПРОКСИ_АДРЕС, ПРОКСИ_ПОРТ); КонецЕсли; Попытка Если SMSC_HTTPS = 0 Тогда Соединение = Новый HTTPСоединение(Сервер, , , , Прокси, Ложь); Иначе Соединение = Новый HTTPСоединение(Сервер, , , , Прокси, 10, Новый ЗащищенноеСоединениеOpenSSL); Конецесли; Исключение Сообщить("Не удалось установить соединение с сервером:" + Символы.ПС + ИнформацияОбОшибке().Описание, СтатусСообщения.Важное); Возврат ""; КонецПопытки;
РесурсПараметры = РесурсНаСервере+"?"+_Параметры; Если СтрДлина(РесурсПараметры) < 2000 Тогда // GET
Попытка ХТТПОтвет = Соединение.Получить(РесурсПараметры, ИмяФайлаРезультата); Соединение = Неопределено; Исключение Сообщить("Не удалось получить данные с сервера", СтатусСообщения.Важное); Возврат ""; КонецПопытки;
//Формируем заголовок POST-запроса. ЗаголовокHTTP = Новый Соответствие(); ЗаголовокHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded"); ФайлОтправки = Новый Файл(ИмяФайлаОтправки); РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Размер()); ЗаголовокHTTP.Вставить("Content-Length", Строка(РазмерФайлаОтправки));
Попытка ХТТПОтвет = Соединение.ОтправитьДляОбработки(ИмяФайлаОтправки, РесурсНаСервере, ИмяФайлаРезультата, ЗаголовокHTTP); Соединение = Неопределено; Исключение Сообщить("Не удалось получить данные с сервера:" + Символы.ПС + ИнформацияОбОшибке().Описание, СтатусСообщения.Важное); Возврат ""; КонецПопытки;
КонецЕсли;
Кодировка = ""; Если Найти(ХТТПОтвет.Заголовки.Получить("Content-Type"), "charset=utf-16be") > 0 Тогда Кодировка = "UTF-16BE"; КонецЕсли; ФайлРезультата = Новый ЧтениеТекста(ИмяФайлаРезультата, Кодировка); Рез = ФайлРезультата.ПрочитатьСтроку();
Возврат Рез;
КонецФункции //_SMSC_ПрочитатьАдрес()
//*************************************************************************************** // Функция вызова запроса. Формирует URL и делает 5 попыток чтения. // Функция _SMSC_ПослатьКоманду(Команда, Аргументы = "")
Сервер = "smscentre.com"; Ресурс = "/sys/" + Команда + ".php"; _Параметры = "login=" + СокрЛП(URLEncode(SMSC_LOGIN)) + "&psw=" + СокрЛП(URLEncode(SMSC_PASSWORD)) + "&fmt=1&charset=utf-16" + ?(Не ПустаяСтрока(Аргументы), "&" + СокрЛП(Аргументы), ""); Для Сч = 1 По 5 Цикл
Если Сч > 1 Тогда Сервер = "www" + Сч + ".smscentre.com"; КонецЕсли;
//*************************************************************************************** // Функция получения стоимости SMS // // обязательные параметры: // // Телефоны - список телефонов через запятую или точку с запятой // Сообщение - отправляемое сообщение // // необязательные параметры: // // Транслит - переводить или нет в транслит // Отправитель - имя отправителя (Sender ID) // ДопПараметры - строка дополнительных параметров, добавляемая в URL-запрос ("list=79999999999:Ваш пароль: 123\n78888888888:Ваш пароль: 456") // // возвращает список (<стоимость>, <количество sms>) либо список (0, -<код ошибки>) в случае ошибки // Функция ПолучитьСтоимость(Телефоны, Сообщение, Транслит = Ложь, Отправитель = "", ДопПараметры = "")
Если (Рез2 >= 0) Тогда Сообщить ("Статус SMS = " + Рез1 + ?(Рез2 > 0, ", время изменения статуса - " + Ответ[1].Значение, "")); Иначе Сообщить ("Ошибка № " + Строка(-Рез2)); КонецЕсли;
КонецЕсли;
Возврат Ответ;
КонецФункции // ПолучитьСтатус()
//*************************************************************************************** // Функция получения баланса // // без параметров // // возвращает баланс в виде строки или 0 в случае ошибки // Функция ПолучитьБаланс()
Ответ = _SMSC_ПослатьКоманду("balance"); // (balance) или (0, -error) Рез = Число(Ответ[0].Значение);
Если SMSC_DEBUG Тогда
Если Рез >= 0 тогда Сообщить("Сумма на счете: " + Рез + " руб."); Иначе Сообщить("Ошибка № " + Строка(-Число(Ответ[1].Значение))); КонецЕсли;
//*************************************************************************************** // ОПЕРАТОРЫ ОСНОВНОЙ ПРОГРАММЫ //***************************************************************************************
if ($wait_sec >= 0) { $header = unpack("N4", $pdu); $pdu .= socket_read($this->socket, $header[1] - 16); // body }
return $pdu; }
private function bind($system_type = '') { $pdu = pack("a".strlen(SMSC_LOGIN)."xa".strlen(SMSC_PASSWORD)."xa".strlen($system_type)."xCCCx", SMSC_LOGIN, SMSC_PASSWORD, $system_type, 0x34, 5, 1); // body $pdu = pack("NNNN", strlen($pdu) + 16, 0x02/*BIND_TRANSMITTER*/, 0, $this->sequence_number).$pdu; // header + body
return $this->send_pdu($pdu); }
public function unbind() { $pdu = pack("NNNN", 16, 0x06/*UNBIND*/, 0, $this->sequence_number); $this->send_pdu($pdu); }
// Функция отправки SMS // // обязательные параметры: // // $phones - список телефонов через запятую или точку с запятой // $message - отправляемое сообщение // // необязательные параметры: // // $sender - имя отправителя (Sender ID). Для отключения Sender ID по умолчанию необходимо в качестве имени // передать пустую строку или точку // $valid - "время жизни" сообщения в минутах // $use_tlv - тип отправки. true - передача текста сообщения в tlv-поле message_payload, false - передача // текста сообщения в поле short_message // time - необходимое время доставки в виде строки (DDMMYYYYhhmm или timestamp)
public function send_sms($phone, $message, $sender = ".", $valid = "", $use_tlv = true, $time = "") // $message в кодировке SMSC_CHARSET { if (preg_match('/[`\x80-\xff]/', $message)) { // is UCS chars $message = iconv(SMSC_CHARSET, "UTF-16BE", $message); $coding = 2; // UCS2 } else $coding = 0; // 7bit
if (!$use_tlv && strlen($message) > 255) $use_tlv = true;
This section contains modules and scripts for various Internet services that extend the capabilities of these services to send various types
of notifications via SMS messages. Our specialists have also developed external modules for various CRM systems and business management systems,
such as amoCRM, Webasyst, and others.
The script allows you to send notifications about the receipt of a new order to the specified list of phones.
To configure notifications, follow these steps::
Скопируйте файл smsc.php в каталог <Корневой_каталог_установки_OCStore>/system/smsgate/.
In the administrative control panel, go to System – Settings.
On the Store Management page for the selected store, click the Edit link on the right in the Action column.
On the Settings page, select the SMS tab.
In the SMS Sending Service item, select the smsc SMS gateway.
In the Sender's Alias field, specify the name of the sender (Sender ID) from whom the messages will be received (the sender's name must be
previously registered in the personal account on this page).
In the Recipient's Phone number field, specify the phone number of the recipient of notifications about the new order. In the Additional numbers field
you can specify a list of numbers to which notifications will also be sent.
In the Message text section, specify the text of the notification to be sent. When composing the text of the message, you can use the appropriate
macros.
In the Login field for the SMS gateway, enter the login, and in the Password field for the SMS gateway, enter the password specified during registration.
In the Enable SMS notifications section, select Yes.
Click the Save button at the top right of the page.
The module allows you to send SMS notifications to the system administrator when registering a new user, receiving a new order,
or receiving a new email via the contact form. The module also allows you to configure sending notifications to the buyer when a new order
is placed, the registration is completed successfully, and when the order status changes (if the buyer notification feature is set). When configuring
notification texts, you can use a set of macros to substitute different values from the database. It is possible to specify different
message texts for different order statuses.
To install the module, follow these steps::
Install OpenCart.
For version 1.x, install the vQmod module 2. x (http://code.google.com/p/vqmod/downloads/list).
For versions 1.x and 2.x, copy the files of the corresponding smsc_opencart module to the specified directories.
For the 2 version.x in the "Install extensions" section, download the smsc.ocmod.xml modification (for the 3.x version, the smsc.ocmod.zip modification). After installation
, do not forget to clear the cache in the "Modifiers" section by clicking the "Update" button".
To configure notifications, follow these steps::
In the administrative control panel, go toAdd-ons – Modules.
On the pageModules select the SMSC module and on the right in the columnActions click the linkInstall.
After installing the module, select the actionTo change.
On the SMSC module page in the tabConnection in the fieldLogin enter your username, and in the fieldPassword – the password
specified during registration in the service. In the fieldSender name specify the name from which the notifications will be sent. The sender's name
must first be registered in the personal account on this page.
In the Administrator tab, check the boxes to send the appropriate notifications to the system administrator and specify
the administrator's phone number. When composing the text of the notification of a new order, you can use special macros.
In the tabBuyer specify which notifications will be sent to the buyer.
After setting the settings, to the right of the SMSC module name, clickSave.
To send notifications to the buyer about changes in the order status, you must select the appropriate check box in the order settings
to activate sending the notification to the buyer. To do this, go toSales – Orders, select the required order and in the column
Actions click the linkViewing.
On the pageOrders select the tabOrder history, then set the required order status and check the boxNotify the buyer.
Then click the buttonAdd a story.
Module for IP.Board
This development allows you to expand the capabilities of the standard form for registering a new user by adding an additional verification
of the phone number belonging to the user by entering an SMS code. The module was tested for the basic version of 3.4.6, but
it is likely to work on other versions of the forum as well.
To install the module, follow these steps::
Copy the file send_code.php from the upload folder of the archive ipboard_3.zip and the library file
smsc_api.php to the root directory of the forum installation.
In the file smsc_api.php set the SMSC_LOGIN and SMSC_PASSWORD constants to the values corresponding to the username and password specified during
registration in the service, and the SMSC_CHARSET constant to the utf-8 value.
Install the smsc.xml hook from the archive ipboard_3.zip. To do this, in the admin center of the forum, select the menu items sequentially
System – Applications – Manage hooks, click the buttonInstall the hook and select the desired file.
To protect against automatic mailing of the phone confirmation code, a general picture (captcha) is used, which is updated after each
code is sent.
The module allows you to send SMS notifications with information about the order to customers and notify the store administrator about the received order.
To install the module, follow these steps::
Install Prestashop version 1.3 or higher
In the store's administrative panel, go to the pageModules. ClickAdd a new module and select the archive with the module.
Select the SMSC module from the list and clickInstall. After installation, the settings page opens.
Configuring the module:
In the fieldLogin enter your username in the fieldPassword - the password specified during registration in the service. In the fieldEnter the administrator's phone number to send notifications about incoming orders to.
In the fieldsMessage to the administrator andMessage to the buyer you can specify the text of the SMS messages that will be sent. When composing text, you can use macros, as shown in the figure. All available macros and their values can be seen on the right.
Set the optionsSend to the administrator and/orSend to the buyer and clickSave.
The module allows you to configure the sending of SMS notifications for various events in the online store, as well as to send newsletters to subscribers.
There are two ways to install the module:
Follow the link above and clickInstall and follow the instructions of the installer.
In the administrative panel of your store, go to the Marketplace tab, thenCatalog of solutions. In the search, type SMSCENTRE.COM: SMS alerts. After
the module is found, clickInstall and follow the instructions of the installer.
Configuring the module:
In the administrative panel of your online store, go to the tabSettings, thenModule settings and select module SMSCENTRE.COM: SMS Alerts from the drop-down list.
On the tabGateway settings specify your username and password for gateway smscentre.com
On the tabOnline store set templates for all events (macros are allowed).
InIn the sender field, you can specify the name of the sender from which the messages will be sent. The sender's name must be registered in the personal account.
The application allows you to organize the sending of SMS, Viber, voice messages, as well as messages in the social network "Odnoklassniki", "VKontakte" or
"Mail.Ru Agent" users from lead cards, deals and contacts, mass mailings from lists of these entities, as well as configure sending from robots and business processes.
To install the application, you need to find it in the list of applications named "SMS center", click "Install" and follow the instructions of the installer. After installation, in the settings form, you will need to enter the correct username and password specified during registration in the service (or specify the password for the http protocol created in the personal account of the service), set the required options.
When sending, macros can be used to substitute the corresponding data from the cards into the message text, select the sender's name, and translate the message text into transliteration. The application also allows you to receive message delivery statuses (if you check the box "Set handler for message statuses" when installing the application). When sending voice messages, it is possible to receive a key combination pressed by the subscriber on the phone keyboard while listening to the message.
Module for BILLmanager
The module allows you to organize fraud protection (confirmation for certain services), password recovery, as well as various notifications
(about the extension of services, the end of the validity period, etc.) via SMS or voice messages (calls).
Installing the module:
Log in to the command shell on your server and run the command "wget http://smscentre.com/files/smsc_billmgr.zip" (for SMS notifications)
or "wget http://smscentre.com/files/smsc_billmgr_voice.zip" (for voice notifications)
Unzip the archive and move the files from the etc and sbin folders to the corresponding BILLmanager folders (/usr/local/ispmgr/etc and /usr/local/ispmgr/sbin)
Run the command chmod o+x /usr/local/ispmgr/sbin/fpsmsc.php
WordPress WooCommerce Plugin
The plugin allows you to configure sending SMS notifications to customers with information about the order, as well as to inform the store administrator about the receipt of a new order and the change of its status.
Please note that the WooCommerce plugin is required for the plugin to work! You can download it here.
Installing the plugin:
In the administrative panel, go to the pagePlugins and clickAdd a new one.
Go to the Download tab, clickBrowse and select the archive with the plugin.
ClickInstall. After the plugin is installed, clickActivate the plugin.
Configuring the plugin:
Hover over the WooCommerce menu item and select SMS Alerts
In the formGateway settings specify your username, password, and phone number to send notifications to. You can also specify the sender's name.
In the Message Templates form, specify the templates for sending messages when events occurNew order andThe order status has been changed. When filling out templates
, you can use macros (the allowed macros are shown on the right).
Set options for sending notifications to the administrator and / or clients.
To be able to send and receive SMS message statuses using the R-Keeper (UCS) protocol, you need to call the script:
https://smscentre.com/sys/rkeeper_api.php
and pass it the corresponding XML document. After receiving and processing the data, the Server returns a confirmation to the Client
indicating the result of processing.
Module for Joomla! 3.6 (VirtueMart)
The module allows you to configure sending SMS notifications to the store administrator and customers about the receipt of a new order and the change of the order status.
Выбираем в меню "Расширения -> Менеджер расширений -> Install".
Choose the installation method - from the package file, from the directory.
Depending on the installation method, either download the package file or install the pre-unpacked files from the temporary folder.
If the installation is successful, you will see a corresponding message and a description of the installed package.
Configuring the module:
Переходим в Plugin Manager (Расширения -> Plugin Manager).
Find the plugin " SMS Plugin by SMSCENTRE.COM".
Click on the name of the plugin and open its settings.
If you have not yet registered on the SMSCENTRE.COM site , we do it right now.
We enter the user data received on the site SMSCENTRE.COM-login, password, sender's name.
We add the phone number of the store administrator and edit at our discretion the messages that will be sent to the store administrator and the buyer when certain events occur - a new order or a change in the order status.
Use the "On" and "Off" buttons to select the ability to send messages.
Click " Save and close".
Select the plugin checkmark and click "Enable".
The plugin is ready to work.
Widget for amoCRM
The widget allows you to send SMS and Viber messages in the amoCRM system from lists and cards of deals, contacts and companies. When forming messages, you can specify the sender's name, use macros and templates, and select the time when messages are sent. The widget supports automatic sending of messages from the digital funnel when various events occur.
To install a widget in a private office amoCRM go to menu "Settings" - "Integration", to find the widget in the list, click on the icon of the widget, and then enter the username and password provided when registering for our services (or the password for the API (HTTP/S, SOAP, SMTP)), and set the checkbox "I agree to the data transfer of an account in amoCRM server of the company "SMS center. After successfully saving the settings, the widget is ready to work.
Webasyst Plugin (Shop-Script)
The plugin allows you to send notification SMS messages when various events occur related to the change of the status of orders made in the online store based on the Shop-Script. When creating notifications, you can use macros that characterize various properties of the product (price, name, quantity, etc..).
Installing the plugin:
Go to the Webasyst admin panel.
Select "Installer-Plugins" in the menu".
On the page that opens, we find our plugin "SMS Center" and install it.
Configuring the plugin:
After installing the plugin, go to the "Store - Settings" item. At the very bottom of the settings page, fill in the "Login" and "Password" fields with the values specified during registration in our service (for a password, you can specify the value from the API item (HTTP/S, SOAP, SMTP)). After successfully saving the settings, the plugin is ready to work. You can create and configure the required SMS notifications in the "Notifications" section.".
Checking phone numbers
To check the format of phone numbers on the Client side, you can use the regular expressions listed below.
For all countries:
In the CIS:
Defining the tariff zone
To determine the tariff zone on the Client side, you can use the following regular expressions:
Form for sending SMS messages
To send SMS messages from your site, you can use the following example of an HTML form and the corresponding
A PHP script that processes the data of this form.
The source code of the form:
<html> <form method="post" action="send.php">
<input type="submit" name="send" value="Отправить"> </form> </html>
A send.php file that processes form data and uses the library smsc_api.php:
<? if ($_POST["send"]) { include_once "smsc_api.php";
To confirm the mobile phone number, for example, when activating a new account on the site
, you can use the following example of an HTML form and a PHP script that processes the form data. To avoid sending multiple requests
, you can additionally place an anti-spam check (captcha) on the form).
The source code of the form:
<html> <form method="post" action="act.php">
</form> <iframe name="ifr" frameborder="0" height="0" width="0" style="visibility:hidden"></iframe> </html>
A act.php file that processes form data and uses the library smsc_api.php:
<? echo "<script>parent.document.getElementById('_out').innerHTML = '";
include_once "smsc_api.php";
if (isset($_POST["sendsms"])) { $r = send_sms($_POST["phone"], ok_code($_POST["phone"]));
if ($r[1] > 0) echo "Код подтверждения отправлен на номер ".$_POST["phone"]; }
if (isset($_POST["ok"])) { $oc = ok_code($_POST["phone"]);
if ($oc == $_POST["code"]) echo "Номер активирован"; else echo "Неверный код подтверждения"; }
echo "'</script>";
function ok_code($s) { return hexdec(substr(md5($s."<секретная строка>"), 7, 5)); } ?>
To avoid multiple confirmation code requests from a single IP address
and for one phone number, we recommend that you make the appropriate control on
your server. To limit the number of requests per phone number, you can
set the appropriate limit in "User Settings".
Also, in the confirmation form, it is desirable to add a picture with a code (captcha)
to protect against software automatic spam mailings.
Form for confirming the email address
To confirm the email address, for example, when activating a new account on the site
, you can use the following example of an HTML form and a PHP script that processes the form data. In order to avoid sending multiple requests
, you can additionally place an anti-spam check (captcha) on the form.
The source code of the form:
<html> <form method="post" action="act.php">
</form> <iframe name="ifr" frameborder="0" height="0" width="0" style="visibility:hidden"></iframe> </html>
A act.php file that processes form data and uses the library smsc_api.php:
<? echo "<script>parent.document.getElementById('_out').innerHTML = '";
if ($r[1] > 0) echo "Код подтверждения отправлен на e-mail адрес ".$_POST["phone"]; }
if (isset($_POST["ok"])) { $oc = ok_code($_POST["phone"]);
if ($oc == $_POST["code"]) echo "E-mail адрес активирован"; else echo "Неверный код подтверждения"; }
echo "'</script>";
function ok_code($s) { return hexdec(substr(md5($s."<секретная строка>"), 7, 5)); } ?>
To avoid multiple confirmation code requests from a single IP address
and for one email address, we recommend that you do the appropriate control on
your server. It is also advisable to add a captcha image to the confirmation form
to protect against software automated spam mailings.