Пример реализации протокола работы с СМС-шлюзом на PHP

Функция отправки сообщения

// функция передачи сообщения
function sendSMS($login, $password, $phone, $text, $sender)
{
    $host = "api.infosmska.ru";
    $fp = fsockopen($host, 80);

    fwrite($fp, "GET /interfaces/SendMessages.ashx" .
        "?login=" . rawurlencode($login) .
        "&pwd=" . rawurlencode($password) .
        "&phones=" . rawurlencode($phone) .
        "&message=" . rawurlencode($text) .
        "&sender=" . rawurlencode($sender) .
        "  HTTP/1.1\r\nHost: $host\r\nConnection: Close\r\n\r\n");
    fwrite($fp, "Host: " . $host . "\r\n");
    fwrite($fp, "\n");
    while(!feof($fp)) {
        $response .= fread($fp, 1);
    }
    fclose($fp);

    list($other, $responseBody) = explode("\r\n\r\n", $response, 2);
    list($other, $ids_str) = explode(":", $responseBody, 2);
    list($sms_id, $other) = explode(";", $ids_str, 2);

    return $sms_id;
}
                

Входные параметры:

  • $login - логин
  • $pasword - пароль
  • $phone - телефон адресата в формате 7xxxxxxxxxx
  • $text - текст сообщения
  • $sender - имя отправителя. чувствительно к регистру. по умолчанию можно передавать SMS. Чтобы завести своё имя отправителя, зайдите в создание рассылки в личном кабинете и используйте кнопку "создать/удалить" в поле "адрес отправителя".

Функция ставит сообщение в очередь на отправку и возвращает идентификатор сообщения. В дальнейшем этот идентификатор можно использовать для получения статуса сообщения.

Пример использования данной функции:

// отправляем смс
$sms_id = sendSMS("login", "password", "71111111111", "Тестовое сообщение", "SMS");
                

Если вместо русских букв приходят знаки вопроса, необходимо перевести оптравляемый текст в кодировку utf-8.

// отправляем смс
$sms_id = sendSMS("login", "password", "71111111111", iconv("windows-1251", "utf-8", "Тестовое сообщение"), "SMS");
                    

Функция получения статуса сообщения

// функция чтения статуса сообщения
function getSMSstatus($login, $password, $sms_id)
{
    $host = "api.infosmska.ru";
    $fp = fsockopen($host, 80);

    fwrite($fp, "GET /interfaces/GetMessagesState.ashx" .
        "?login=" . rawurlencode($login) .
        "&pwd=" . rawurlencode($password) .
        "&ids=" . rawurlencode($sms_id) .
        "  HTTP/1.1\r\nHost: $host\r\nConnection: Close\r\n\r\n");
    fwrite($fp, "Host: " . $host . "\r\n");
    fwrite($fp, "\n");
    while(!feof($fp)) {
            $response .= fread($fp, 1);
    }
    fclose($fp);

    list($other, $responseBody) = explode("\r\n\r\n", $response, 2);
    list($other, $ids_str) = explode(":", $responseBody, 2);
    list($sms_status, $other) = explode(";", $ids_str, 2);

    return $sms_status;
}
                

Входные параметры:

  • $login - логин
  • $pasword - пароль
  • $sms_id - идентификатор сообщения полученный при отправки

Функция возвращает статус сообщения.

Пример использования данной функции:

// отправляем смс
$sms_id = sendSMS("login", "password", "71111111111", "Тестовое сообщение", "SMS");
// получаем статус
$sms_status = getSMSstatus("login", "password", $sms_id);
                    

Полное описание HTTP протокла взаимодействия с SMS шлюзом

Документы

  • Лицензия PDF DOC
  • Реквизиты компании PDF DOC
  • Учредительные документы PDF DOC
  • Образец договора PDF DOC
  • Наши цены PDF DOC

Контакты

8 (800) 333-03-04
Продвижение сайтов в поисковиках - продвижение сайтов
дизайн: Чипса
 
Попробуйте наш новый продукт:
Готовая программа лояльности
для бизнеса
Узнать подробнее>