API для отправки SMS сообщений

В данном форуме описаны все API, поддерживаемые нашими услугами.

Re: API для отправки SMS сообщений

Сообщение sd » 17 мар 2011, 00:28

dionalco писал(а):понять востребованность и функциональность можно только путем проб и ошибок ))
Для изготовления сайта никого не нанимал, сам на коленке сделал, благо разобраться с joomla очень просто.


Если сможете сделать у себя на сайте форму, которая может вызывать php файл, то я вам его смогу предоставить. Он будет принимать с формы номер телефона и отправлять SMS с неким текстом, который вы укажите.
Аватара пользователя
sd
 
Сообщения: 5184
Зарегистрирован: 31 июл 2009, 13:11

Re: API для отправки SMS сообщений

Сообщение af » 17 мар 2011, 02:03

dionalco писал(а):
sd писал(а):Я так понимаю вы нанимали кого-то, чтобы сделать сайт? Может попросить их еще раз? К сожалению, на данный момент нет простого способа сделать запрашиваемую функциональность. А за идею спасибо, мы подумаем, может что-то в это роде и появится: например, наподобие услуги "Клик-вызов", где необходимо разместить некий HTML код, реализующий форму, куда посетитель сайта должен ввести номер телефона, после чего ему будет выслано SMS сообщение с заранее подготовленным текстом. Только бы понять, насколько такая функциональность будет востребована.

понять востребованность и функциональность можно только путем проб и ошибок ))

Для изготовления сайта никого не нанимал, сам на коленке сделал, благо разобраться с joomla очень просто.


Для dionalco. Можете скачать по ссылке. Распакуйте и залейте в одну папку, чтобы каптча путь не потеряла. Файл form.php корректируете (там внутри все написано, только там где написано Сайт фирмы ставьте свое имя латинскими символами или цифрами без пробелов точек тире ипр., а то ошибку выдаст ) запускаете его же. Обновление каптчи происходит один раз за сессию. Если нужно принудительно просто кликните по картинке. Оформление за Вами. Только хочется предупредить, что на джумле встраивать сможете только враппером, если стандарными методами, а так можете использовать specialHTML модуль (если дж-ла 1.5.х).
Впрочем, я согласен с sd в том, что данный функционал сомнителен. Причем не только с точки зрения посетителя сайта (лично я не стал бы раздавать свой телефон налево и направо), а главное владельцу ресурса. Представте, что я начну указывать телефоны каких-нибудь экзотических стран, где стоимость СМС отнюдь не 50 коп.? Платить то Вам...

Фай удален автором...
Последний раз редактировалось af 18 мар 2011, 21:34, всего редактировалось 1 раз.
af
 
Сообщения: 7
Зарегистрирован: 26 фев 2011, 01:03

Re: API для отправки SMS сообщений

Сообщение dionalco » 17 мар 2011, 22:50

спасибо Вам други. Отдаю Ваше сообщение для расшифровки профессионалам :lol:
dionalco
 
Сообщения: 6
Зарегистрирован: 17 сен 2009, 17:20

Re: API для отправки SMS сообщений

Сообщение af » 18 мар 2011, 21:33

dionalco писал(а):спасибо Вам други. Отдаю Ваше сообщение для расшифровки профессионалам :lol:

Так значит есть "профессионалы" все таки? Интересно, где ж профессию приобретали, если разобраться не смогли?
На будущее, если хотите есть , возьмите удочку и наловите рыбы, а не ждите, чтобы ее Вам дали. Сейчас пока ее Вам дали. Но это мое мнение.
И как же реализовывать бартерное предложение? ))) Хоть бы сайт свой дали посмотреть (в личку). Был бы еще один посетитель.
af
 
Сообщения: 7
Зарегистрирован: 26 фев 2011, 01:03

Re: API для отправки SMS сообщений

Сообщение dionalco » 22 мар 2011, 14:53

Так значит есть "профессионалы" все таки?
- "профессионалы" скорее именно так, в кавычках

Интересно, где ж профессию приобретали, если разобраться не смогли?
- вообще то я приобретал несколько другую профессию.

На будущее, если хотите есть , возьмите удочку и наловите рыбы, а не ждите, чтобы ее Вам дали. Сейчас пока ее Вам дали.
- это относится только к поесть рыбы, честное слово ;) пусть сапоги делает сапожник, а пироги печет пирожник.
Поверьте, граждане пренебрегающие услугами юристов в суде - жалкое зрелище. и ладно если это человек у которого нет денег, а то ведь самыми умными себя считают, а когда проигрывают ссылаются на коррупцию.

И как же реализовывать бартерное предложение? ))) Хоть бы сайт свой дали посмотреть (в личку). Был бы еще один посетитель.
- да не жалко, если можно могу и здесь бросить: http://legal-field.ru/
dionalco
 
Сообщения: 6
Зарегистрирован: 17 сен 2009, 17:20

Re: API для отправки SMS сообщений

Сообщение Metus » 15 июл 2011, 18:55

Итак, по долгу службы пришлось реализовывать отправку СМС средствами этого сервиса с сайта.
Я сделал модуль на PHP и решил его здесь выложить (мне нежалко + вдруг кто-то найдёт ошибки :) )

ComtubeSMS - обработка результата с помощью SimpleXML
ComtubeSMS_notXML - с помощью парсинга HTML
ComtubeSMS_test необходим для процесса встраивания и тестирования в сам сайт. при этом сообщения на сервер не отправляются

Отправку можно осуществлять двумя методами: get (возможно отправлять сообщения до 2000 символов, зависит от серверов и прочего, 2000 - это наверняка) и post - отправлять сообщения любой длины, но необходим cURL.

Реализован абстрактный метод protected function user_function(), который вызывается по окончанию обработки результатов. Если создать новый класс, пронаследованный от одного из приведённых трёх, то можно его реализовать.

Ниже приведём мой говнокод:
Код: Выделить всё
<?php
//-------------------------------------------------------------------------------------------------------
//Класс для рассылки смс
class ComtubeSMS
{
    protected $baseurl = "http://api.comtube.ru/scripts/sms_api/sendsms.php";  //адрес сервиса - для отправки запроса
    protected $login = "";                                                     //логин
    protected $password = "";                                                  //пароль
   
    protected $params = array();                                               //массив переданных параметров
    protected $encode_params = "";                                             //преобразованные параметры, готовые к отправке
    protected $result = array();                                               //результаты отправки SMS
   
   
    //свойства для отправки конкретного письма
    protected $message = "";
    protected $to =null;
    protected $from = null;
    protected $method = "get";
    protected $return_type = "xml";
   
   
    /**
    * Конструктор - определяет пользователя comtube
    *
    * @param строка - логин пользователя
    * @param строка - пароль
    * @return ComtubeSMS - объект, посредством которого осуществляется отправка SMS
    */
    public function __construct($login, $password)
    {
        $this->login = $login;
        $this->password = $password;
    }
   
    /**
    * Метод, отвечающий за формирование и отправку письма тем или иным методом
    *
    * @param строка - сообщение для отправки
    * @param массив/строка - номер/номера получателя. Запись нескольких номеров возможна массивом или через ";". 218784 - тестовый номер
    * @param строка - номер отправителя - не более 11 симоволов. По умолчанию "comtube"
    * @param get/post - принимает 2 возможных значения: get и post. С помощью метода POST возможно отправлять любые объёмы информации(свыше 2000 символов по сравнению с GET), однако, для работы необходима библиотека cURL
    */
    public function send_sms($message, $to, $from=null, $method="get")
    {   
        //сам текст сообщения
        $this->message = $message;
        //если это строка, сделаем из неё массив из одного элемента
        if(!is_array($to)) $this->to = array($to);
        else $this->to = $to;
        //от кого
        $this->from = $from;
        //метод отправки
        $this->method = $method;
       
       
        //создаём параметры для отправки
        $this->create_params();
        //а теперь отправляем
        $this->go_sending();
        //вызываем пользовательскую функцию
        $this->user_function();
       
        return $this->result;
    }
   
    /**
    * Создаём каркас - массив, содеражщий все параметры.
    *
    */
    protected function create_params()
    {
        $this->params =array();
        $this->params['username'] = $this->login;
        $this->params['message'] = $this->message;
        $this->params['to'] = implode(";",$this->to);
        if(!is_null($this->from)) $this->params['from'] = substr($this->from, 0, 11);
        $this->params['type']=$this->return_type;
        //сортируем - это обязательно!
        ksort($this->params);
       
        //и вызываем метод, который закодируем и соберёт параметры в нужный нам вид
        $this->create_encode_params();
    }
   
    /**
    * Метод, создающий из массива $this->params данные, готовые для отправки одним из методов
    *
    */
    protected function create_encode_params()
    {
        $this->encode_params="";
        foreach($this->params as $key => $value)
        {
            $this->encode_params .= $key . "=" . urlencode($value) . "&";
        }
        $this->encode_params .= "signature=" . md5($this->encode_params . "&password=".urlencode($this->password));
    }
   
    /**
    * Запуск рассылки на указанные номера
    *
    * @param массив/строка - номер/номера получателя
    * @param get/post - принимает 2 возможных значения: get и post. С помощью метода POST возможно отправлять
    */
    protected function go_sending()
    {
        $this->result = array_merge($this->result, $this->params);
       
        //проверяем наличие такого метода
        $method_name = "use_".$this->method;
        if(!method_exists($this, $method_name))
        {
            $this->result['code_error'] = "Указан неверный метод отправки: $method_name. Допустимые методы: post и get.";
            return false;
        }
       
        //если такой метод есть, рассылаем на указанные номера
        $check_result = $this->check_result($this->$method_name());
        $this->result = array_merge($this->result, $check_result);
        return true;
    }
   
    /**
    * Отправка сообщения запросом GET
    *
    */
    protected function use_get()
    {
        $result = file_get_contents($this->baseurl."?".$this->encode_params);
        return $result;
    }
   
    /**
    * Отправка сообщения запросом POST
    *
    */
    protected function use_post()
    {
        $curl = curl_init();
        if(!$curl)
        {
            $this->result['code_error']="Не удалось инициализировать curl";
            return false;
        }
       
        curl_setopt($curl, CURLOPT_URL, $this->baseurl);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $this->encode_params);
        $result = curl_exec($curl);
        curl_close($curl);
       
        return $result;
    }
   
    /**
    * Обработка результатов работы XML
    *
    */
    protected function check_result($result)
    {
        $return_result_array = array();
        if($result)
        {
            $simple_xml_obj = new SimpleXMLElement($result);
            foreach($simple_xml_obj as $key => $value)
            {
                $return_result_array[$key] = (string)$value;
            }
        }
        return $return_result_array;
    }
   
    /**
    * Виртуальный метод, позволяющий навесить какую-либо дополнительную обработку.
    * Например, запись в БД или отправка отчёта об отправке на почту
    * Для использования необходимо создать класс, наследуемый от ComtubeSMS или ComtubeSMS_notXML
    * и реализовать данный метод
    *
    */
    protected function user_function()
    {}
}

//-------------------------------------------------------------------------------------------------------
//Класс для рассылки смс - резервный. Можно использовать, если не поддерживается SimpleXML
class ComtubeSMS_notXML extends ComtubeSMS
{
    protected $return_type = "html";
   
    /**
    * Обработка результатов работы HTML
    *
    */
    protected function check_result($result)
    {
        $return_result_array = array();
       
        if($result)
        {
            $explode_result = explode("<br>",$result);
            foreach($explode_result as $string)
            {
                if(empty($string)) continue;
                $explode_parameter=explode(":",$string);
                $return_result_array[$explode_parameter[0]]=$explode_parameter[1];
            }
        }
        return $return_result_array;
    }
}

//-------------------------------------------------------------------------------------------------------
//Класс для тестирования рассылки. Письма не отправляются, однако методы возвращают результат.
//Необходимо для встраивания в остальной код, чтоюы не спамить СМС-ками
class ComtubeSMS_test extends ComtubeSMS_notXML
{
    /**
    * Отправка сообщения запросом GET
    *
    */
    protected function use_get()
    {
        $this->result['desc']="тест метода GET";
        return false;
    }
   
    /**
    * Отправка сообщения запросом POST
    *
    */
    protected function use_post()
    {
        $this->result['desc']="тест метода POST";
        $curl = curl_init();
        if(!$curl) $this->result['code_error']="Не удалось инициализировать curl";
        curl_close($curl);
        return false;
    }
}

$test = new ComtubeSMS("login","password");
$result = $test->send_sms("test",'218784',null,'post');
print_r($result);
?>
Вложения
sms_module.txt
(8.13 Кб) Скачиваний: 2957
Metus
 
Сообщения: 1
Зарегистрирован: 15 июл 2011, 18:44

Re: API для отправки SMS сообщений

Сообщение sd » 17 июл 2011, 21:04

Metus, спасибо за скрипт. На вашей учетке можете найти небольшой бонус ;)
Аватара пользователя
sd
 
Сообщения: 5184
Зарегистрирован: 31 июл 2009, 13:11

Re: API для отправки SMS сообщений

Сообщение kushedow » 11 авг 2011, 21:36

Не нашел в описании API про отправку СМС на несколько номеров. Плохо искал? Это вообще возможно?
kushedow
 
Сообщения: 1
Зарегистрирован: 11 авг 2011, 10:48

Re: API для отправки SMS сообщений

Сообщение sd » 11 авг 2011, 22:44

kushedow писал(а):Не нашел в описании API про отправку СМС на несколько номеров. Плохо искал? Это вообще возможно?

По-хорошему, нужно указывать один номер для SMS. Но поддерживается несколько номеров, разделенных между собой точкой с запятой или пробелом. Поддерживается до 100 номеров. При этом не возвращается общая стоимость.
Аватара пользователя
sd
 
Сообщения: 5184
Зарегистрирован: 31 июл 2009, 13:11

Re: API для отправки SMS сообщений

Сообщение argus_klient3 » 12 янв 2012, 20:40

Можете что нибудь для делпфи предложить?
argus_klient3
 
Сообщения: 1
Зарегистрирован: 12 янв 2012, 20:11

Пред.След.

Вернуться в API

Просмотр страницы «Кто сейчас на форуме COMTUBE»

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 58