Интеграция с сервисом (API)

API позволяет рассылать сообщения через ваши проекты и сервисы по протоколам HTTP/HTTPS, SMTP и SMPP. Готовые библиотеки на разных языках программирования подключаются к вашему проекту и помогают отправлять сообщения из любого места с помощью одной команды. Для упрощенной авторизации вместо пары логин и пароль можно использовать специальный API-ключ.


HTTP/HTTPS SMTP SMPP SOAP OMS SMS-команды Библиотеки и примеры кода

Примеры

Форма для отправки SMS-сообщений

Для отправки SMS-сообщений со своего сайта можно воспользоваться следующим примером HTML-формы и соответствующего PHP-скрипта, обрабатывающего данные этой формы.


Телефон


Сообщение


Отправитель


Отложить до
(дд.мм.гг чч:мм)

Транслит Flash-SMS


Исходный код формы: <html>
<
form method="post" action="send.php">

Телефон<br/><input name="phone" value=""><br/><br/>

Сообщение<br/><textarea name="message" rows="4" cols="40"></textarea><br/><br/>

Оправитель<br/><input name="sender" value=""><br/><br/>

Отложить до<br/><input name="time" value=""> (дд.мм.гг чч:мм)<br/><br/>

<
input type="checkbox" name="translit">Транслит
<input type="checkbox" name="flash"> Flash SMS<br/><br/>

<
input type="submit" name="send" value="Отправить">
</
form>
</
html>

Файл send.php, обрабатывающий данные формы и использующий библиотеку smsc_api.php: <?
if ($_POST["send"]) {
include_once
"smsc_api.php";

$r = send_sms($_POST["phone"], $_POST["message"],
$_POST["translit"], $_POST["time"], 0,
$_POST["flash"], $_POST["sender"]);

// $r = array(<id>, <количество sms>, <стоимость>, <баланс>) или array(<id>, -<код ошибки>)

if ($r[1] > 0)
echo
"Сообщение отправлено";
else
echo
"Произошла ошибка № ", -$r[1];
}
?>

Форма для подтверждения номера телефона

Для подтверждения номера мобильного телефона, например, при активации новой учетной записи на сайте можно использовать следующий пример HTML-формы и PHP-скрипта, обрабатывающего данные формы. Во избежание отправки множественных запросов на форме можно дополнительно разместить антиспам проверку (captcha).


Номер телефона

Код подтверждения 


Исходный код формы: <html>
<
form method="post" action="act.php">

<
table>
<
tr><td>Номер телефона<td><input name="phone">
<
tr><td><br/>

<
tr><td>Код подтверждения<td><input name="code" size="6">&nbsp;
<
input type="submit" name="sendsms" value="Выслать код">
<
tr><td><br/>

<
tr><td><input type="submit" name="ok" value="Подтвердить">
</
table>

</
form>
</
html>

Файл act.php, обрабатывающий данные формы и использующий библиотеку smsc_api.php: <?
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
"Неверный код подтверждения";
}

function
ok_code($s) {
    return
hexdec(substr(md5($s."<секретная строка>"), 7, 5));
}
?>

Исходный код формы: <html>
<
form method="post" action="act.php" target="ifr">

<
table>
<
tr><td>Номер телефона<td><input name="phone">
<
tr><td><br/>

<
tr><td>Код подтверждения<td><input name="code" size="6">&nbsp;
<
input type="submit" name="sendsms" value="Выслать код">
<
tr><td><br/>

<
tr><td><input type="submit" name="ok" value="Подтвердить"><td colspan="2" id="_out">
</
table>

</
form>
<
iframe name="ifr" frameborder="0" height="0" width="0" style="visibility:hidden"></iframe>
</
html>

Файл act.php, обрабатывающий данные формы и использующий библиотеку 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));
}
?>


Для избежания множественных запросов кода подтверждения с одного IP-адреса и на один номер телефона рекомендуем сделать соответствующий контроль на своем сервере. Для ограничения количества запросов на один номер телефона возможно установить соответствующий лимит в "Настройках пользователя". Также в форму подтверждения желательно добавить картинку с кодом (captcha) для защиты от программных автоматических спам-рассылок.

Форма для подтверждения адреса электронной почты

Для подтверждения адреса электронной почты, например, при активации новой учетной записи на сайте можно использовать следующий пример HTML-формы и PHP-скрипта, обрабатывающего данные формы. Во избежание отправки множественных запросов на форме можно дополнительно разместить антиспам проверку (captcha).


E-mail адрес

Код подтверждения 


Исходный код формы: <html>
<
form method="post" action="act.php">

<
table>
<
tr><td>E-mail адрес<td><input name="phone">
<
tr><td><br/>

<
tr><td>Код подтверждения<td><input name="code" size="6">&nbsp;
<
input type="submit" name="sendsms" value="Выслать код">
<
tr><td><br/>

<
tr><td><input type="submit" name="ok" value="Подтвердить">
</
table>

</
form>
</
html>

Файл act.php, обрабатывающий данные формы и использующий библиотеку smsc_api.php: <?
include_once "smsc_api.php";

if (isset(
$_POST["sendsms"])) {
   
$r = send_sms($_POST["phone"], "Ваш код подтверждения: ".ok_code($_POST["phone"]), 0, 0, 0, 8, "www@mysite.com", "subj=Confirmation");

    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
"Неверный код подтверждения";
}

function
ok_code($s) {
    return
hexdec(substr(md5($s."<секретная строка>"), 7, 5));
}
?>

Исходный код формы: <html>
<
form method="post" action="act.php" target="ifr">

<
table>
<
tr><td>E-mail адрес<td><input name="phone">
<
tr><td><br/>

<
tr><td>Код подтверждения<td><input name="code" size="6">&nbsp;
<
input type="submit" name="sendsms" value="Выслать код">
<
tr><td><br/>

<
tr><td><input type="submit" name="ok" value="Подтвердить"><td colspan="2" id="_out">
</
table>

</
form>
<
iframe name="ifr" frameborder="0" height="0" width="0" style="visibility:hidden"></iframe>
</
html>

Файл act.php, обрабатывающий данные формы и использующий библиотеку 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"]), 0, 0, 0, 8, "www@mysite.com", "subj=Confirmation");

    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));
}
?>


Для избежания множественных запросов кода подтверждения с одного IP-адреса и на один адрес электронной почты рекомендуем сделать соответствующий контроль на своем сервере. Также в форму подтверждения желательно добавить картинку с кодом (captcha) для защиты от программных автоматических спам-рассылок.

SOAP протокол

<?
// Отправка сообщения

$client = new SoapClient ("http://m.smsc.ru/sys/soap.php?wsdl");
$ret = $client->send_sms(array("login"=>"alex", "psw"=>"123", "phones"=>"79999999999", "mes"=>"Hello world!", "id"=>"", "sender"=>"ivan", "time"=>0));

if (
$ret->sendresult->error)
    echo
"Ошибка №".$ret->sendresult->error;
else {
    echo
$ret->sendresult->id, "\n";
    echo
$ret->sendresult->balance, "\n";
    echo
$ret->sendresult->cost, "\n";
    echo
$ret->sendresult->cnt, "\n";
}


//Flash сообщение от отправителя "ivan", которое должно быть доставлено абоненту 01.01.2012 г. в 00:00:

$ret = $client->send_sms2(array("login"=>"alex", "psw"=>"123", "phones"=>"79999999999", "mes"=>"Hello world!", "id"=>"", "sender"=>"ivan", "time"=>"0101120000", "query"=>"flash=1"));

if (
$ret->sendresult->error)
    echo
"Ошибка №".$ret->sendresult->error;
else {
    echo
$ret->sendresult->id, "\n";
    echo
$ret->sendresult->balance, "\n";
    echo
$ret->sendresult->cost, "\n";
    echo
$ret->sendresult->cnt, "\n";
}


//Несколько сообщений разным абонентам:

$ret = $client->send_sms2(array("login"=>"alex", "psw"=>"123", "phones"=>"", "mes"=>"", "id"=>"", "sender"=>"", "time"=>0, "query"=>"list=79999999999:message1%0A79999999998:message2"));

if (
$ret->sendresult->error)
    echo
"Ошибка №".$ret->sendresult->error;
else {
    echo
$ret->sendresult->id, "\n";
    echo
$ret->sendresult->balance, "\n";
    echo
$ret->sendresult->cost, "\n";
    echo
$ret->sendresult->cnt, "\n";
}


// Получение стоимости

$ret = $client->get_sms_cost(array("login"=>"alex", "psw"=>"123", "phones"=>"79999999999", "mes"=>"Hello world!"));

if (
$ret->costresult->error)
    echo
"Ошибка №".$ret->costresult->error;
else {
    echo
$ret->sendresult->cost, "\n";
    echo
$ret->sendresult->cnt, "\n";
}


// Проверка статуса

$ret = $client->get_status(array("login"=>"alex", "psw"=>"123", "phone"=>"79999999999", "id"=>"999", "all"=>"0"));
    echo
"Ошибка №".$ret->statusresult->error;
else {
    echo
$ret->statusresult->status, "\n";
    echo
$ret->statusresult->last_date, "\n";
    echo
$ret->statusresult->err, "\n";
}


// Расширенный статус

$ret = $client->get_status(array("login"=>"alex", "psw"=>"123", "phone"=>"79999999999", "id"=>"999", "all"=>"2"));
    echo
"Ошибка №".$ret->statusresult->error;
else {
    echo
$ret->statusresult->status, "\n";
    echo
$ret->statusresult->last_date, "\n";
    echo
$ret->statusresult->err, "\n";
    echo
$ret->statusresult->last_timestamp, "\n";
    echo
$ret->statusresult->send_date, "\n";
    echo
$ret->statusresult->send_timestamp, "\n";
    echo
$ret->statusresult->phone, "\n";
    echo
$ret->statusresult->cost, "\n";
    echo
$ret->statusresult->sender_id, "\n";
    echo
$ret->statusresult->status_name, "\n";
    echo
$ret->statusresult->message, "\n";
    echo
$ret->statusresult->operator, "\n";
    echo
$ret->statusresult->region, "\n";
}


// Проверка баланса

$ret = $client->get_status(array("login"=>"alex", "psw"=>"123"));

if (
$ret->balanceresult->balance)
    echo
"Ошибка №".$ret->sendresult->error;
else
    echo
$ret->balanceresult->balance, "\n";

?>