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

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

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

Сообщение sd » 28 мар 2014, 18:10

zelib0ba писал(а):Не могу пометить входящие сообщения как прочитанные.
получаю список сообщение с what=2

делаю запрос к апи.
с action=mark id = id сообщения и isread=1 + логины пароли и тп

получаю ответ 200 ОК

потом снова получаю список с what=2
поле msg_read = 0
и все те же самые сообщения которые и были с первого запроса.

Спасибо за информацию. Постараемся исправить в ближайшее время.
Аватара пользователя
sd
 
Сообщения: 5184
Зарегистрирован: 31 июл 2009, 13:11

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

Сообщение zelib0ba » 01 апр 2014, 08:35

отпишите как исправите, протестирую
zelib0ba
 
Сообщения: 4
Зарегистрирован: 20 янв 2014, 21:28

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

Сообщение Sajanagr » 16 апр 2014, 10:59

Добрый день.
Тестирую скрипт передачи в одном запросе файл с номерами и текстом для массовой рассылки смс. За основу взят пример со страницы 12. В параметрах указываю: acnion, numfile, username. Но при запуске скрипта возвращается ошибка с кодом 400, отсутствие параметров message, to. Если добавляю эти параметры, скрип выполняется но смс создается только по номеру указанному в параметре to. Что не так?
Код: Выделить всё
#!/usr/bin/php
<?php
$password="mypas";
function BuildUrlParamsWithSignature($params, $password, $exclude = '')
{

    ksort($params);
    $url = '';

    if (!is_array($params))
        return $url;

    if ($exclude && !is_array($exclude))
        $exclude = array($exclude);

    foreach($params as $key => $value)
    {
        if ($exclude && in_array($key, $exclude)) continue;

        $url .= $key . "=" . urlencode($value) . "&";
    }
    $signature = md5($url . "&password=".urlencode($password));
    $url .= "signature=" . $signature;
    $params['signature'] = $signature;
    return $url;
}

$baseurl = "http://api.comtube.ru/scripts/sms_api/sendsms.php";

$params = array();
$params["username"] = "myname";
$params["action"] = "send";
$params["message"] = " ";
//$params["to"] = "mytel";
$params["vmsgfile"] = "@./testfile.txt";

$urlparams = BuildUrlParamsWithSignature($params, $password, array('numfile','vmsgfile'));

$url = $baseurl . "?" . $urlparams;

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);

$data = curl_exec($ch);
curl_close($ch);

$res = json_decode($data, true);

?>
Sajanagr
 
Сообщения: 3
Зарегистрирован: 28 янв 2010, 17:46

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

Сообщение sd » 18 апр 2014, 06:18

Sajanagr писал(а):Добрый день.
Тестирую скрипт передачи в одном запросе файл с номерами и текстом для массовой рассылки смс. За основу взят пример со страницы 12. В параметрах указываю: acnion, numfile, username. Но при запуске скрипта возвращается ошибка с кодом 400, отсутствие параметров message, to. Если добавляю эти параметры, скрип выполняется но смс создается только по номеру указанному в параметре to. Что не так?


У вас, случаем,не опечатка вот тут:
Код: Выделить всё
$params["vmsgfile"] = "@./testfile.txt";


Файл с номерами должен указываться так:
Код: Выделить всё
$params["numfile"] = "@./testfile.txt";


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

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

Сообщение Sajanagr » 18 апр 2014, 11:19

У вас, случаем,не опечатка вот тут:
КОД: ВЫДЕЛИТЬ ВСЁ
$params["vmsgfile"] = "@./testfile.txt";


Файл с номерами должен указываться так:
КОД: ВЫДЕЛИТЬ ВСЁ
$params["numfile"] = "@./testfile.txt";

Это признаю, моя не доработка.

Ну и message не может содержать просто пробел - как раз будет ошибка 400.

А как же это:
message - Текстовое сообщение для отправки. Может быть пустым. В этом случае, текст сообщения будет браться из файла с номерами телефонов. Для action = send. В тексте сообщения разрешается использовать следующие переменные:

%CT_N% – имя получателя из адресной книги пользователя,
%CT_F% – фамилия получателя,
%CT_M% – отчество получателя,
%CT_FN% – отображаемое имя получателя,
%CT_COL_N% – номер колонки в текстовом файле, где N – номер от 1 (на данный момент еще не поддерживается).


Мне надо чтоб текст сообщения брался из файла, поэтому параметр message оставляю пустым .
Sajanagr
 
Сообщения: 3
Зарегистрирован: 28 янв 2010, 17:46

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

Сообщение sd » 22 апр 2014, 08:43

Sajanagr писал(а):
Ну и message не может содержать просто пробел - как раз будет ошибка 400.

А как же это:
message - Текстовое сообщение для отправки. Может быть пустым. В этом случае, текст сообщения будет браться из файла с номерами телефонов. Для action = send. В тексте сообщения разрешается использовать следующие переменные:

%CT_N% – имя получателя из адресной книги пользователя,
%CT_F% – фамилия получателя,
%CT_M% – отчество получателя,
%CT_FN% – отображаемое имя получателя,
%CT_COL_N% – номер колонки в текстовом файле, где N – номер от 1 (на данный момент еще не поддерживается).


Мне надо чтоб текст сообщения брался из файла, поэтому параметр message оставляю пустым .


Тут ситуация такая: если параметр message пустой, то файл numfile должен содержать в каждой строке в первой колонке номер телефона, потом точка с запятой и затем текст сообщения. Пример:

Код: Выделить всё
79261234567;Привет! Как жизнь?


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

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

Сообщение Sajanagr » 22 апр 2014, 11:25

Файл numfile содержит в каждой строке в первой колонке номер телефона, потом точка с запятой и текст сообщения. Это как раз у вас хорошо было расписано. А вот параметр message если указать с пробелом как раз ошибки не выдает, а вот пустой выдает ошибку с кодом 400.
Напишите пример как должна выглядеть строка запроса если содержится параметр numfile.
Sajanagr
 
Сообщения: 3
Зарегистрирован: 28 янв 2010, 17:46

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

Сообщение malec » 18 фев 2015, 17:52

Немного модернизировал код уважаемого donexpress_premium VB.NET 2013 .NET 3.5
Отправка SMS методом POST c ответом от сервера в виде XML
Код: Выделить всё
Module SMS2
    Private c_login As String = ""
    Private c_password As String = ""

    Public Function SendSMS2(from As String, tonum As String, message As String) As Boolean
        Dim W As New Net.WebClient
        Dim NC As New System.Collections.Specialized.NameValueCollection
        NC.Add("action", "send")
        NC.Add("message", message)
        NC.Add("number", tonum)
        NC.Add("senderid", from)
        NC.Add("username", c_login)
        NC.Add("type", "xml")

        Dim NC_SORT() As String = NC.AllKeys
        Array.Sort(NC_SORT)

        Dim res As String = ""

        For Each i As String In NC_SORT
            res &= i & "=" & ESCAPE(NC(i)) & "&"
        Next
        res = res & "&password=" & ESCAPE(c_password)

        NC.Add("signature", getMD5Hash(res))

        Dim RESP As Byte()
        RESP = W.UploadValues("https://api.comtube.com/scripts/api/sms.php", NC)

        Dim R As String
        R = System.Text.Encoding.UTF8.GetString(RESP)
        MsgBox(R)

    End Function

    Public Function ESCAPE(ByRef TEXT As String)
        ESCAPE = Uri.EscapeDataString(TEXT).Replace("%20", "+").Replace("!", "%21").Replace("*", "%2A").Replace("(", "%28").Replace(")", "%29").Replace("'", "%27")
    End Function

    Function getMD5Hash(ByVal strToHash As String) As String
        Dim md5Obj As New Security.Cryptography.MD5CryptoServiceProvider
        Dim ByteHash() As Byte = System.Text.Encoding.Default.GetBytes(strToHash)
        ByteHash = md5Obj.ComputeHash(ByteHash)
        Dim strResult As String = ""
        For Each b As Byte In ByteHash
            strResult += b.ToString("x2")
        Next
        Return strResult
    End Function

End Module


Вот только проблема есть, некоторые антивирусы определяют как вирус https://www.virustotal.com/ru/file/958b ... 424268417/
Вложения
WindowsApplication1.zip
Сам проект
(81.77 Кб) Скачиваний: 4432
2015-02-18 16-32-30 WindowsApplication1.png
Ответ сервера в виде XML
2015-02-18 16-32-30 WindowsApplication1.png (12.19 Кб) Просмотров: 102124
Последний раз редактировалось malec 26 мар 2015, 15:58, всего редактировалось 1 раз.
Изображение
Аватара пользователя
malec
 
Сообщения: 47
Зарегистрирован: 17 янв 2012, 18:19

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

Сообщение sd » 24 фев 2015, 06:07

malec писал(а):Немного модернизировал код уважаемого donexpress_premium VB.NET 2013 .NET 3.5
Отправка SMS методом POST c ответом от сервера в виде XML
Код: Выделить всё
Module SMS2
    Private c_login As String = ""
    Private c_password As String = ""

    Public Function SendSMS2(from As String, tonum As String, message As String) As Boolean
        Dim W As New Net.WebClient
        Dim NC As New System.Collections.Specialized.NameValueCollection
        NC.Add("action", "send")
        NC.Add("message", message)
        NC.Add("number", tonum)
        NC.Add("senderid", from)
        NC.Add("username", c_login)
        NC.Add("type", "xml")

        Dim NC_SORT() As String = NC.AllKeys
        Array.Sort(NC_SORT)

        Dim res As String = ""

        For Each i As String In NC_SORT
            res &= i & "=" & ESCAPE(NC(i)) & "&"
        Next
        res = res & "&password=" & ESCAPE(c_password)

        NC.Add("signature", getMD5Hash(res))

        Dim RESP As Byte()
        RESP = W.UploadValues("http://api.comtube.ru/scripts/api/sms.php", NC)

        Dim R As String
        R = System.Text.Encoding.UTF8.GetString(RESP)
        MsgBox(R)

    End Function

    Public Function ESCAPE(ByRef TEXT As String)
        ESCAPE = Uri.EscapeDataString(TEXT).Replace("%20", "+").Replace("!", "%21").Replace("*", "%2A").Replace("(", "%28").Replace(")", "%29").Replace("'", "%27")
    End Function

    Function getMD5Hash(ByVal strToHash As String) As String
        Dim md5Obj As New Security.Cryptography.MD5CryptoServiceProvider
        Dim ByteHash() As Byte = System.Text.Encoding.Default.GetBytes(strToHash)
        ByteHash = md5Obj.ComputeHash(ByteHash)
        Dim strResult As String = ""
        For Each b As Byte In ByteHash
            strResult += b.ToString("x2")
        Next
        Return strResult
    End Function

End Module


Вот только проблема есть, некоторые антивирусы определяют как вирус https://www.virustotal.com/ru/file/958b ... 424268417/

Насколько знаю, небольшая модификация исходников и все будет ок.
Аватара пользователя
sd
 
Сообщения: 5184
Зарегистрирован: 31 июл 2009, 13:11

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

Сообщение malec » 26 мар 2015, 15:59

Да
если исправить строку на
Код: Выделить всё
RESP = W.UploadValues("https://api.comtube.com/scripts/api/sms.php", NC)

то проблема исчезает =)
Изображение
Аватара пользователя
malec
 
Сообщения: 47
Зарегистрирован: 17 янв 2012, 18:19

Пред.След.

Вернуться в API

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

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