Для разработчиков

Для разработчиков, Интеграции, Новости

Отправка СМС на php

SMS.BY делает все, чтобы разработчикам было удобно использовать API для интеграции с нашим сервисом.

Чтобы Вам было быстрее и проще сделать интеграцию, мы написали пример кода на Php, доступный на GitHub.
Кстати, в конце статьи Вас ждет видео с разбором отправки СМС на Php.

В данном репозитории содержится 4 файла:

1
2
3
4
SMS_BY.php
CountSmsParts.php
Transliterate.php
examples.php

SMS_BY.php — это базовый класс, содержащий все методы по отправке смс, проверку статусов, отправку запроса и так далее.

CountSmsParts.php — класс для подсчета длины строки с учетом кодировок ascii / unicode.

Если вы ранее не сталкивались с отправкой смс, то в целом должны помнить что русский символ требует 2 байта в unicode, поэтому длина смс на русском — 70 символов, а на английском — 140.

1
2
3
4
"lengths" => [
      "ascii" => [160, 306, 459, 628, 785, 942, 1071, 1224, 1377, 1530],
      "unicode" => [70, 134, 201, 252, 315, 378, 469, 536, 603, 670],
]

Но, в тоже время, если у Вас более 2 смс в одном сообщении, то длина будет уже менее 70 символов (68 если точнее), так как для отправки смс требуется добавление системной информации.

Это стоит учитывать при отправке длинных смс, или стараться делать смс короче.
Transliterate.php — как уже можно догадаться, класс по транслитерации русского текста в латиницу.
examples.php — содержит примеры вызова функций по подсчету длины смс-сообщения, а также транслитерации русского текста в английский.
Функция транслитерации также учитывает регистр, поэтому Вам не придется делать дополнительный ucfirst.

Итак, разберем основные моменты в examples.php: 

В самом верху идет подключение классов.

1
2
3
4
5
6
7
8
include('SMS_BY.php');
require_once('Transliterate.php');
require_once('CountSmsParts.php').
// Код токена вы можете получить здесь: https://app.sms.by/user-api/token

$token = ''; // КОД_ВАШЕГО_ТОКЕНА
// Номер телефона для теста
$phone = ''; // НОМЕР ТЕЛ ДЛЯ ТЕСТА

После того, как Вы вставите свой токен и номер телефона, Вы сможете отправить себе тестовое сообщение (проверьте, что у вас включен CURL).

Код в example.php состоит из блоков if(false).

Вы можете выбрать какой именно метод вы хотите протестировать и поставить там if (true).

Например, отправка смс:

1
2
3
4
5
6
7
8
9
10
11
12
13
if (false) {
     echo("Отправка простого sms-сообщения на номер: $phone");
     /** Отправка простого сообщения: */
     $sms = new SMS_BY($token);
     $res = $sms->createSMSMessage('Моё сообщение');
     $message_id = $res->message_id;
     $res2 = $sms->sendSms($message_id, $phone);
     if ($res2 == false) {
         echo("Во время отправки сообщения произошла ошибка");
     } else {
         echo("Сообщение успешно отправлено, его ID: {$res2->sms_id}");
     }
}

Меняем в блоке выше if(false) на if(true) вызываем и на указанный вами телефон будет доставлена смс.

Пример запуска из командной строки:

отправка смс на Php пример

Как вы видите в конце выводится сообщение об ошибке.

Это происходит, потому что у отправителя пока что нет одобренных Альфаимен (имен отправителя). Заявку на Альфаимя вы можете сделать в кабинете по ссылке: https://app.sms.by/alphanames

 

Смс, полученное на телефон:

photo_2021-04-01_12-05-445

Видео, в котором подробно описана отправка СМС на php:

Читать дальше