| РазноеПодключение выделенных номеров для приема сообщенийВы можете через специальные команды API получать список свободных выделенных номеров для приема SMS-сообщений
и подключать любой номер к своему логину, оплачивая стоимость за остаток дней в текущем месяце. При подключении
выделенного номера вы автоматически соглашаетесь с правилами использования таких номеров.
Для получения списка доступных выделенных номеров необходимо вызвать методом GET или POST следующий адрес:
http://my.smsc.dp.ua/sys/receive_phones.php?get=1&login=<login>&psw=<password>
Для подключения выделенного номера необходимо вызвать методом GET или POST адрес:
http://my.smsc.dp.ua/sys/receive_phones.php?buy=1&login=<login>&psw=<password>&phone=<phone>
Для изменения признака продления выделенного номера на следующий месяц необходимо вызвать методом GET или POST адрес:
http://my.smsc.dp.ua/sys/receive_phones.php?chg=1&login=<login>&psw=<password>&phone=<phone>&noprolong=<noprolong>
Описание параметров, передаваемых Серверу:
Параметр | Значение
|
---|
login | Логин Клиента.
|
---|
psw | Пароль Клиента (можно добавить или изменить на данной странице).
|
---|
phone | Подключаемый номер.
|
---|
noprolong | Признак продления выделенного номера на следующий месяц. Данный параметр также возможно указывать при подключении
номера в команде buy.
0 (по умолчанию) – включить автоматическое продление номера.
1 – отключить автоматическое продление номера.
|
---|
В случае ошибки Сервер возвращает следующую строку:
- ERROR = N (описание)
- При fmt = 1:
0,-N
- При fmt = 2:
<result>
<error>описание</error>
<error_code>N</error_code>
</result> |
- При fmt = 3:
{
"error": "описание",
"error_code": N
} |
N – номер ошибки, может принимать следующие значения:
Значение | Описание
|
---|
1 | Ошибка в параметрах.
|
---|
2 | Неверный логин или пароль. Также возникает при попытке отправки сообщения с IP-адреса, не входящего в список разрешенных Клиентом (если такой список был настроен Клиентом ранее).
|
---|
3 | Недостаточно средств на счете для аренды номера.
|
---|
4 | IP-адрес временно заблокирован.
|
---|
9 | Попытка отправки более двух одинаковых запросов на получение списка доступных для аренды номеров или подключение номера,
либо изменение свойств выделенного номера в течение минуты.
Данная ошибка возникает также при попытке отправки пятнадцати и более запросов одновременно с разных подключений под одним логином (too many concurrent requests).
|
---|
В случае успешного запроса Сервер возвращает ответ в виде строки.
Для получения списка доступных номеров:
- при fmt = 0:
phone = <phone>, type = <type>, cost = <cost>, current_cost = <current_cost>, info = <info>
... |
- при fmt = 1:
<phone>,<type>,<cost>,<current_cost>,<info>
... |
- при fmt = 2:
<list>
<receive_phone>
<phone>phone</phone>
<type>type</type>
<cost>cost</cost>
<current_cost>current_cost</current_cost>
<info>info</info>
</receive_phone>
...
</list>
|
- при fmt = 3:
[{
"phone": "<phone>",
"type": <type>,
"cost": "<cost>",
"current_cost": "<current_cost>"
"info": "<info>"
},
...] |
Где:
<phone> – номер телефона.
<type> – тип номера: 1,4 – выделенный виртуальный номер, 2 – номер на услуге SIM-хостинга.
<cost> – стоимость аренды номера за полный месяц.
<current_cost> – стоимость аренды номера за остаток дней до конца текущего месяца.
<info> – название оператора и поддерживаемые типы уведомлений.
Для аренды номера:
- при fmt = 0: cost = <cost>
- при fmt = 1: <cost>
- при fmt = 2:
<phone>
<cost>cost</cost>
</phone>
|
- при fmt = 3:
Где:
<cost> – сумма, списанная со счета Клиента за аренду номера.
Для изменения признака продления номера:
- при fmt = 0,1: OK
- при fmt = 2:
<result>OK</result>
- при fmt = 3:
Примеры:
Получение списка свободных номеров для аренды:
http://my.smsc.dp.ua/sys/receive_phones.php?get=1&login=alex&psw=123
Подключение номера "79999999999":
http://my.smsc.dp.ua/sys/receive_phones.php?buy=1&login=alex&psw=123&phone=79999999999
Отключение возможности продления выделенного номера "79999999999" на следующий месяц:
http://my.smsc.dp.ua/sys/receive_phones.php?chg=1&login=alex&psw=123&phone=79999999999&noprolong=1
Сервер не принимает более двух одинаковых запросов в течение минуты на получение списка свободных
для аренды номеров или подключение номера, либо изменение свойств выделенного номера для снижения нагрузки и защиты
от ошибок и зацикливаний в программе на стороне Клиента.
Передача статусов и сообщений на обработчик КлиентаВ личном кабинете Клиента в "Настройках пользователя" имеется возможность
указания http(s)-адреса (URL) скрипта для обработки статусов доставки сообщений, входящих SMS-сообщений,
а также служебных сообщений (при использовании услуги "Подтверждение номера с помощью звонка") на стороне Клиента. Указанный скрипт будет вызываться Сервером после каждого получения статуса доставки ранее отправленного Клиентом сообщения, после получения входящего SMS-сообщения от абонента или звонка от абонента (при использовании услуги "Подтверждение номера с помощью звонка").
В адресе обработчика можно указать параметр charset для выбора кодировки передаваемых параметров:
?charset=utf-8
?charset=koi8-r
?charset=windows-1251
По умолчанию используется кодировка windows-1251.
Для защиты передаваемых данных от подмены в адресе обработчика дополнительно можно указать любой из параметров md5, sha1, crc32,
определяющих алгоритм подсчета контрольного параметра с хешем строки:
"id:phone:status:<секретная строка>" − для статуса доставки
"phone:mes:to:<секретная строка>" − для входящего сообщения
"phone:ts:<секретная строка>" − для подтверждения номера с помощью звонка
в виде:
?md5=<секретная строка>
?sha1=<секретная строка>
?crc32=<секретная строка>
В качестве символов секретной строки можно использовать латинские буквы, цифры, минус и подчеркивание.
Обработчику будет передан соответствующий параметр, в котором секретная строка будет заменена на значение хеша передаваемых данных.
Все параметры передаются методом POST.
Передаваемые параметры для статуса SMS-сообщения:
Параметр | Значение
|
---|
id | Идентификатор сообщения.
|
---|
phone | Номер телефона.
|
---|
status | Статус сообщения.
|
---|
time | Время изменения статуса (или доставки SMS-сообщения абоненту).
Формат: DD.MM.YY hh:mm:ss (по часовому поясу, указанному в настройках).
|
---|
ts | Время изменения статуса в виде штампа в секундах.
|
---|
err | Код ошибки, если сообщение не может быть доставлено (список). Передается, если не равен нулю.
|
---|
syserr | Дополнительная ошибка от оператора, присутствует не всегда.
|
---|
cnt | Количество частей (при отправке SMS-сообщения) либо 5-секундных блоков (при голосовом сообщении (звонке)).
|
---|
type | Тип сообщения (0 – SMS, 1 – Flash-SMS, 2 – Бинарное SMS, 3 – Wap-push, 4 – HLR-запрос, 5 – Ping-SMS, 6 – MMS, 7 –
Звонок, 10 – Viber).
|
---|
cost | Стоимость сообщения.
|
---|
flag | Флаг в виде 2-х байтового числа, содержащий различную информацию о сообщении. Возможны комбинации значений битов разных характеристик.
Биты 0-3 (тип сообщения):
0 (по умолчанию) – SMS.
1 – Flash-SMS.
2 – Бинарное SMS.
3 – Wap-push.
4 – HLR-запрос.
5 – Ping-SMS.
6 – MMS.
7 – Звонок.
10 – Viber.
Бит 5 – оплата сообщения со второго баланса.
Бит 8 – признак шаблонного сообщения.
|
---|
sender | Имя отправителя, отображаемое в телефоне получателя.
|
---|
dtmf | Последовательность символов, набираемая абонентом на цифровой клавиатуре во время прослушивания голосового сообщения (звонка).
|
---|
md5 | MD5-хеш строки "id:phone:status:<секретная строка>". Передается, если был указан в качестве дополнительного параметра
в http(s)-адресе обработчика.
|
---|
sha1 | sha1-хеш строки "id:phone:status:<секретная строка>". Передается, если был указан в качестве дополнительного параметра
в http(s)-адресе обработчика.
|
---|
crc32 | Контрольная сумма crc32 строки "id:phone:status:<секретная строка>". Передается, если был указан в качестве дополнительного параметра
в http(s)-адресе обработчика.
|
---|
Дополнительные параметры для HLR-запросов
|
---|
imsi | Уникальный код IMSI SIM-карты абонента.
|
---|
msc | Номер сервис-центра оператора, в сети которого находится абонент.
|
---|
mcc | Числовой код страны абонента.
|
---|
mnc | Числовой код оператора абонента.
|
---|
cn | Название страны регистрации абонента.
|
---|
net | Название оператора регистрации абонента.
|
---|
rcn | Название роуминговой страны абонента при нахождении в чужой сети.
|
---|
rnet | Название роумингового оператора абонента при нахождении в чужой сети.
|
---|
Передаваемые параметры для входящего SMS-сообщения:
Параметр | Значение
|
---|
id | Уникальный идентификатор входящего сообщения, назначаемый Сервером автоматически.
|
---|
sms_id | Идентификатор сообщения, на которое получен ответ. Данный параметр отсутствует, если сообщение от абонента было отправлено на выделенный входящий номер либо при указании абонентом префикса "логин, двоеточие и пробел".
|
---|
phone | Номер телефона абонента.
|
---|
mes | Текст SMS-сообщения.
|
---|
to | Входящий номер телефона, на который было отправлено сообщение абонентом.
|
---|
smsc | SMS-центр оператора, от которого было получено входящее сообщение.
|
---|
sent | Время отправки сообщения абонентом в виде штампа в секундах.
|
---|
time | Время получения сообщения Сервером в виде штампа в секундах.
|
---|
md5 | MD5-хеш строки "phone:mes:to:<секретная строка>". Передается, если был указан в качестве дополнительного параметра
в http(s)-адресе обработчика.
|
---|
sha1 | sha1-хеш строки "phone:mes:to:<секретная строка>". Передается, если был указан в качестве дополнительного параметра
в http(s)-адресе обработчика.
|
---|
crc32 | Контрольная сумма crc32 строки "phone:mes:to:<секретная строка>". Передается, если был указан в качестве дополнительного параметра
в http(s)-адресе обработчика.
|
---|
Передаваемые параметры при использовании услуги "Подтверждение номера с помощью звонка":
Параметр | Значение
|
---|
waitcall | 1 – признак служебного сообщения для услуги "Подтверждение номера с помощью звонка".
|
---|
phone | Номер телефона абонента, с которого поступил звонок.
|
---|
ts | Время звонка.
|
---|
md5 | MD5-хеш строки "phone:ts:<секретная строка>". Передается, если был указан в качестве дополнительного параметра
в http(s)-адресе обработчика.
|
---|
sha1 | sha1-хеш строки "phone:ts:<секретная строка>". Передается, если был указан в качестве дополнительного параметра
в http(s)-адресе обработчика.
|
---|
crc32 | Контрольная сумма crc32 строки "phone:ts:<секретная строка>". Передается, если был указан в качестве дополнительного параметра
в http(s)-адресе обработчика.
|
---|
Помимо описанных выше стандартных параметров Сервер также будет передавать методом POST все параметры,
указанные в http(s)-адресе обработчика после знака "?".
Для различия статуса сообщения, входящего SMS-сообщения или служебного сообщения (при использовании услуги "Подтверждение номера с помощью звонка") в одном обработчике можно выполнить проверку на наличие параметра mes (для входящего сообщения) и waitcall (для услуги подтверждения номера):
if (isset($_POST["mes"])) { // message } elseif (isset($_POST["waitcall"])) { // confirmation } else { // status }
Пересылка статусов на обработчик Клиента осуществляется только при отправке сообщений
по протоколам HTTP/HTTPS, SMTP или SMPP. При отправке сообщений с личного кабинета передача статусов на обработчик Клиента
не происходит.
В случае если от обработчика Клиента вернется ответ с кодом ошибки, отличным от 200 или 404, то Сервер с определенной периодичностью будет повторять запрос на обработчик. Подключение антиспам проверки (captcha) к сайтуИногда возникает необходимость отправки сообщений со своего сайта по запросу пользователей, и в таких случаях для исключения автоматизированных
спам-рассылок с помощью роботов можно легко внедрить антиспам проверку, используя наш сервис.
Для этого достаточно на форме для отправки сообщений разместить специальный код для вывода картинки (captcha) и поля для ввода кода:
Код с картинки <img src="http://my.smsc.dp.ua/sys/imgcode.php?1.1" onclick="src+=1" width="50" height="18" border="1"> <input type="text" size="9" name="code">
и передать его с другими данными формы в соответствующий скрипт отправки сообщений в качестве значения параметра imgcode.
Также с данным параметром необходимо передавать значение IP-адреса пользователя, которому отображалась картинка в качестве значения параметра userip.
Примеры:
Пример скрипта для отправки сообщений, использующего код с картинки (captcha), полученный с формы:
include_once "smsc_api.php";
if ($_POST["sendsms"]) { $r = send_sms($_POST["phone"], "Ваш код для регистрации на сайте mysite.com 123321.", 0, 0, 0, 0, false, "imgcode=".$_POST["code"]."&userip=".$_SERVER["REMOTE_ADDR"]);
if ($r[1] > 0) echo "<script>alert('Сообщение отправлено на номер ".$_POST["phone"]."')</script>"; elseif ($r[1] == -10) echo "<script>alert('Вы ввели неверный код с картинки!')</script>"; }
Подтверждение номера телефона с помощью звонкаПри различного рода операциях, таких как восстановление паролей, авторизация в общественных сетях Wi-Fi, подтверждение денежных переводов, вход в личный кабинет и так далее требуется отправка аутентификационных данных. Используя наш API можно организовать процедуру подтверждения номера телефона с помощью звонка самим абонентом.
Для создания запроса на получение номера телефона, по которому абонент должен будет осуществить подтверждающий звонок, необходимо вызвать методом GET или POST адрес:
http://my.smsc.dp.ua/sys/wait_call.php?login=<login>&psw=<password>&phone=<phone>
Серверу передаются следующие параметры:
Параметр | Значение
|
---|
login | Логин Клиента.
|
---|
psw | Пароль Клиента (можно добавить или изменить на данной странице).
|
---|
phone | Номер телефона абонента, с которого будет осуществлен подтверждающий звонок.
|
---|
В случае ошибки Сервер возвращает следующую строку:
- ERROR = N (описание)
- При fmt = 1:
0,-N
- При fmt = 2:
<result>
<error>описание</error>
<error_code>N</error_code>
</result> |
- При fmt = 3:
{
"error": "описание",
"error_code": N
} |
N – номер ошибки, может принимать следующие значения:
Значение | Описание
|
---|
1 | Ошибка в параметрах.
|
---|
2 | Неверный логин или пароль. Также возникает при попытке отправки сообщения с IP-адреса, не входящего в список разрешенных Клиентом (если такой список был настроен Клиентом ранее).
|
---|
3 | Недостаточно средств на счете Клиента.
|
---|
4 | IP-адрес временно заблокирован.
|
---|
5 | Указанный номер телефона абонента находится в черном списке Клиента.
|
---|
9 | Попытка отправки более пятидесяти одинаковых запросов на получение номера телефона для подтверждения в течение минуты.
Данная ошибка возникает также при попытке отправки пятнадцати и более запросов одновременно с разных подключений под одним логином (too many concurrent requests).
|
---|
В случае успешного запроса Сервер возвращает ответ в виде строки.
- при fmt = 0 и fmt = 1:
<phone>
- при fmt = 2:
<phone>phone</phone>
|
- при fmt = 3:
{
"phone": "<phone>"
} |
Где:
<phone> – номер телефона, на который в течение 15 минут должен осуществить звонок абонент для подтверждения своего номера телефона.
После звонка абонента Сервер зафиксирует факт звонка в виде входящего сообщения с текстом "[waitcall]" и отправит на обработчик Клиента всю необходимую информацию о данном звонке.
Сервер не принимает более пятидесяти одинаковых запросов на получение номера телефона для подтверждения в течение минуты для снижения нагрузки и защиты от ошибок и зацикливаний в программе на стороне Клиента.
|