[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Класс для отправки СМС
GET
Привет, сделал себе класс с бесплатной отправкой смс (разрешается 5 штук в день бесплатно, но на один телефон-логин), зацепил на него, кое какие сервисы сайта оооочень доволен.

Чтоб пользоваться надо на этом сайте зарегится и само собой получить от них api_id, который для каждого уникален. Ну и все, ваш телефон и готово. Там кстати длинна СМС`ок на кириллице всего 70 символов, а латиницей 160, поэтому прикрутил еще транслятор в кириллицу если она есть и ответ класса - результат отправки пришедший от API.

Вдруг кому пригодится :) :


<?php
class
sms
{
private static function code($code)//коды ответов SMS API http://sms.ru/sms/send
{
$codes=[
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=>'Пользователь авторизован, но аккаунт не подтвержден (пользователь не ввел код, присланный в регистрационной смс)'];
return ((isset($codes[$code]))?$codes[$code]:'Неизвестный код ответа');
}

private static function translation($cont)//транслятор кириллицы в латиницу
{
return strtr($cont,[
'а'=>'a','б'=>'b','в'=>'v','г'=>'g','д'=>'d',
'е'=>'e','ё'=>'e','ж'=>'zh','з'=>'z','и'=>'i',
'й'=>'y','к'=>'k','л'=>'l','м'=>'m','н'=>'n',
'о'=>'o','п'=>'p','р'=>'r','с'=>'s','т'=>'t',
'у'=>'u','ф'=>'f','х'=>'h','ц'=>'c','ч'=>'ch',
'ш'=>'sh','щ'=>'sch','ь'=>'','ы'=>'y','ъ'=>'',
'э'=>'e','ю'=>'yu','я'=>'ya','А'=>'A','Б'=>'B',
'В'=>'V','Г'=>'G','Д'=>'D','Е'=>'E','Ё'=>'E',
'Ж'=>'Zh','З'=>'Z','И'=>'I','Й'=>'Y','К'=>'K',
'Л'=>'L','М'=>'M','Н'=>'N','О'=>'O','П'=>'P',
'Р'=>'R','С'=>'S','Т'=>'T','У'=>'U','Ф'=>'F',
'Х'=>'H','Ц'=>'C','Ч'=>'Ch','Ш'=>'Sh','Щ'=>'Sch',
'Ь'=>'','Ы'=>'Y','Ъ'=>'','Э'=>'E','Ю'=>'Yu','Я'=>'Ya']);
}
public static function send($cont,$tel="7902555555")//отправка, 7902555555 - по умолчанию телефон-логин с 5 бесплатными СМС в день
{
//если есть кириллица переводим в латиницу т.к. СМС с кирилицей только 70 символов, а латиницей 160
if(preg_match("#[а-яё]+?#ui",$cont))$cont=self::translation($cont);
if($ch = curl_init("http://sms.ru/sms/send"))
{
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_POSTFIELDS, [
"api_id" => '64343ff-afg4-2274-gg4t-ffgfgfdgcb4',
"to" => $tel,
"text" => iconv('windows-1251','utf-8',mb_substr($cont,0,160))]);

$code=curl_exec($ch);
$result=((!curl_errno($ch))?self::code($code):'SMS center API error.');
curl_close($ch);
}
else $result='SMS center connect error.';
return $result;
}
}

?>


p.s. Если у вас PHP ниже 5.5 используйте запись массивов ни как [], а как array();

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.