![]() |
0 Всего найдено: 5
cramen
Сообщение
02/08/2010 08:49
Копия темы
Отправляем SMS.ru с удобством Было дело, проскакивала на хабре статься о сервисе sms.ru Попробовал, работает. Понравилось. Тогда на этом дело и закончилось. Но вот недавно потребовалось мне сделать отправку SMS подписавшимся клиентам. API на сайте сервися хорошо документирован и приведены примеры, но не хватает удобства использования. В результате написал небольшой класс для взаимодействия с sms.ru. <?php /** * Класс взаимодействия с сервисом sms.ru */ class Z_Service_Sms { protected $_apiId = NULL; protected $_responseCode = NULL; protected $_lastAction = NULL; const HOST = 'http: // sms.ru/'; const SEND = 'sms/send?'; const STATUS = 'sms/status?'; const BALANSE = 'my/balance?'; const LIMIT = 'my/limit?'; protected $_responseCodeTranstale = array( 'send' => array( '100' => 'Сообщение принято к отправке', '200' => 'Неправильный api_id', '201' => 'Не хватает средств на лицевом счету', '202' => 'Неправильно указан получатель', '203' => 'Нет текста сообщения', '204' => 'Имя отправителя не согласовано с администрацией', '205' => 'Сообщение слишком длинное (превышает 5 СМС)', '206' => 'Превышен дневной лимит на отправку сообщений', '207' => 'На этот номер нельзя отправлять сообщения', '208' => 'Параметр time указан неправильно', '210' => 'Используется GET, где необходимо использовать POST', '211' => 'Метод не найден', '220' => 'Сервис временно недоступен, попробуйте чуть позже.', ), 'status' => array( '-1' => 'Сообщение не найдено', '100' => 'Сообщение находится в очереди', '101' => 'Сообщение передается оператору', '102' => 'Сообщение отправлено (в пути)', '103' => 'Сообщение доставлено', '104' => 'Не может быть доставлено: время жизни истекло', '105' => 'Не может быть доставлено: удалено оператором', '106' => 'Не может быть доставлено: сбой в телефоне', '107' => 'Не может быть доставлено: неизвестная причина', '108' => 'Не может быть доставлено: отклонено', '200' => 'Неправильный api_id', '210' => 'Используется GET, где необходимо использовать POST', '211' => 'Метод не найден', '220' => 'Сервис временно недоступен, попробуйте чуть позже', ), 'balanse' => array( '100' => 'Запрос выполнен', '200' => 'Неправильный api_id', '210' => 'Используется GET, где необходимо использовать POST', '211' => 'Метод не найден', '220' => 'Сервис временно недоступен, попробуйте чуть позже.', ), 'limit' => array( '100' => 'Запрос выполнен', '200' => 'Неправильный api_id', '210' => 'Используется GET, где необходимо использовать POST', '211' => 'Метод не найден', '220' => 'Сервис временно недоступен, попробуйте чуть позже.', ), ); /** * * Идентификатор api_id * @param string $id */ public function __construct($id) { $this->_apiId = $id; } /** * * @param string $to телефон: 11 знаков. например 79060000000 * @param string $text текст сообщение * @param string $from отправитель * @return string id сообщения */ public function send($to,$text,$from=NULL) { $url = self::HOST.self::SEND.'api_id='.$this->_apiId; $url .= '&to='.$to; $url .= '&text='.urlencode($text); if ($from) $url .= '&from='.urlencode($from); $body = file_get_contents($url); @list($code,$smsId) = explode("\n", $body); $this->_lastAction = 'send'; $this->_responseCode = $code; return $smsId; } /** * * @param string $id id сообщения * @return string код статуса сообщения. */ public function status($id) { $url = self::HOST.self::STATUS.'api_id='.$this->_apiId; $url .= '&id='.$id; $body = file_get_contents($url); $status = $body; $this->_lastAction = 'status'; $this->_responseCode = $status; return $status; } /** * * @return string Баланс в рублях */ public function balanse() { $url = self::HOST.self::BALANSE.'api_id='.$this->_apiId; $body = file_get_contents($url); @list($code,$balance) = explode("\n", $body); $this->_lastAction = 'balanse'; $this->_responseCode = $code; return $balance; } /** * * @return int количество оставшихся сообщений */ public function limit() { $url = self::HOST.self::LIMIT.'api_id='.$this->_apiId; $body = file_get_contents($url); @list($code,$count,$limit) = explode("\n", $body); $this->_lastAction = 'limit'; $this->_responseCode = $code; return (int)($count $limit); } /** * * @return string код результата выполнения последней операции */ public function getResponseCode() { return $this->_responseCode; } /** * * @return string расшифровка кода результата выполнения последней операции */ public function getResponseMessage() { if ($this->_lastAction) return $this->_responseCodeTranstale[$this->_lastAction][$this->getResponseCode() ]; else return 'Нет данных для возврата сообщения'; } }
cramen
Сообщение
04/08/2010 04:52
Копия темы
Регистрация бесплатно. Стоимость одной СМС 50 копеек. Это дешевле, чем у остальных СМС сервисов.
umbr
Сообщение
04/08/2010 07:13
Копия темы
Тогда зачем вот это при регистрации? "Через пару секунд на свой номер (ххх) ууу-уууу вы получите специальный 5 значный код. Введите его."
cramen
Сообщение
04/08/2010 07:18
Копия темы
0
Чтобы подтвердить, что это ваш номер телефона. СМС входящая бесплатно. |
Выразить восторг, поругаться или предложить что-нибудь можно на форуме |
Для обсуждения этого сервиса так же есть темы на фрилансе по поиску , флудотопу ,и по удалённым сообщениям ,и по Актуальным/популярным темам , и по топу "кто кому больше наотвечал" |