Поисковая форма:) поиск по free-lance.ru Топ/история/обновления фриланса, по разным параметрам (темы, сообщения, пользователи...) Автоматическое удаление постов от ненужных юзеров в топике (php скрипт) Досье(точный ник)
 

Ник (или часть ника):
?
Какой текст ищем:
?
Раздел блогов:
За срок
дней
Тип поиска: (по вхождению: по тексту гуг выдаст посты с "гуг", "гугл", "огугл"; "полнотекстовый": по тексту "гуг" выдаст посты только с "гуг")
По вхождению строки:  Полнотекстовый: 
(поиск не 100% актуальный, есть определённая задержка при обновлении данных для поиска. )
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 'Нет данных для возврата сообщения';
   }

}
umbr Сообщение 03/08/2010 18:37 Копия темы
Интересно.
Сколько там стоит регистрация?
cramen Сообщение 04/08/2010 04:52 Копия темы
Регистрация бесплатно.
Стоимость одной СМС 50 копеек. Это дешевле, чем у остальных СМС сервисов.
umbr Сообщение 04/08/2010 07:13 Копия темы
Тогда зачем вот это при регистрации?

"Через пару секунд на свой номер (ххх) ууу-уууу вы получите специальный 5 значный код.
Введите его."
cramen Сообщение 04/08/2010 07:18 Копия темы
Чтобы подтвердить, что это ваш номер телефона.
СМС входящая бесплатно.
0

©2008 edogs egods
Выразить восторг, поругаться
или предложить что-нибудь можно на форуме
Для обсуждения этого сервиса так же есть темы на фрилансе по
поиску , флудотопу ,и по удалённым сообщениям ,и по Актуальным/популярным темам , и по топу "кто кому больше наотвечал"