PHP: Отправка СМС сообщений

Я уже писал о том как можно отправить смс на языке C# через сервис sms.ru. Сегодня я расскажу о том как это можно сделать на языке PHP.

Для того чтобы отправить смс через сервис смс ру, используя язык программирования PHP можно воспользоваться классом:

class SmsRu 
{
    private static $_apiId = '';      //Ваш ключ API
    private static $_fromName = '';   //Имя отправителя (если есть)
         
    public static function Send($to, $text, $translit = false, $test = false, $apiId = '', $fromName = '') 
    {
        if($apiId == '') {
            $apiId = self::$_apiId;
        }
        if($fromName == '') {
            $fromName = self::$_fromName;                    
        }
        if(!is_array($to) || $apiId == '') {
            return array('Status' => 1, 'Message' => 'No API id');
        }
        //$to = array('79000000000', ...)
        $result = array();
        foreach($to as $number) {
            $urlSms = "http://sms.ru/sms/send?partner_id=103184&api_id=".$apiId.
                "&to=".$number.
                "&text=".urlencode($text).
                ($fromName !== '' ? '$from='.$fromName : '').
                ($test ? "&test=1" : '').
                ($translit ? "&translit=1" : '');
                
            $answer = file_get_contents($urlSms);
            $result[$number] = array();
            $temp = explode("\n", $answer);
            $result[$number]['Status'] = $temp[0];
            $result[$number]['Ids'] = array();
            $count = count($temp);
            for($i = 1; $i < $count; ++$i) {
                $result[$number]['Ids'][] = $temp[$i];
            } 
        }
        
        /* SMS statuses
        100	Сообщение принято к отправке. На следующих строчках вы найдете идентификаторы отправленных сообщений в том же порядке, в котором вы указали номера, на которых совершалась отправка.
        200	Неправильный api_id
        201	Не хватает средств на лицевом счету
        202	Неправильно указан получатель
        203	Нет текста сообщения
        204	Имя отправителя не согласовано с администрацией
        205	Сообщение слишком длинное (превышает 8 СМС)
        206	Будет превышен или уже превышен дневной лимит на отправку сообщений
        207	На этот номер (или один из номеров) нельзя отправлять сообщения, либо указано более 100 номеров в списке получателей
        208	Параметр time указан неправильно
        209	Вы добавили этот номер (или один из номеров) в стоп-лист
        210	Используется GET, где необходимо использовать POST
        211	Метод не найден
        212	Текст сообщения необходимо передать в кодировке UTF-8 (вы передали в другой кодировке)
        220	Сервис временно недоступен, попробуйте чуть позже.
        230	Сообщение не принято к отправке, так как на один номер в день нельзя отправлять более 60 сообщений.
        300	Неправильный token (возможно истек срок действия, либо ваш IP изменился)
        301	Неправильный пароль, либо пользователь не найден
        302	Пользователь авторизован, но аккаунт не подтвержден (пользователь не ввел код, присланный в регистрационной смс)
        */
        
        $result['Status'] = 0; 
        return $result;
     } 
}

Для отправки СМС используем такой код:

SmsRu::Send(array(79600000000), 'Hello world!');

Если же Вам нужно отправить смс, используя другой ключ API, то

SmsRu::Send(array(79600000000), 'Hello world!', false, false, 'другой API ключ');

Для тестирования необходимо установить 4ый параметры ($test) в true

SmsRu::Send(array(79600000000), 'Test sms!', false, true);
Запись опубликована в рубрике PHP с метками , , , , , . Добавьте в закладки постоянную ссылку.