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

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

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

Сообщение BubnovRV » 20 апр 2013, 11:16

Код: Выделить всё

    public enum DeliveryStatus
    {
        New = 0,                  // новая
        Pending = 1,            // поставлено в очередь провайдера
        Sent = 2,                 // отправлено абоненту
        Delivered = 3,          // доставлено абоненту
        NotSent = 4,            // не отправлено абоненту
        Sending = 5,            // отправляется у провайдера
        NotDelivered = 6,     // сообщение отправлено, но не доставлено
    }

    private DeliveryStatus GetMessageStatusComtube(string messageID, string login, string password)
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://api.comtube.ru/scripts/api/sms.php");

        request.Method = "POST";
        request.UserAgent = "Comtube SMS Client";
        request.Accept = "text/html, application/xml;q=0.9, application/xhtml+xml";

        SortedDictionary<string, string> param = new SortedDictionary<string, string>();
        param.Add("action", "state");
        param.Add("uid", messageID);
        param.Add("username", login);

        string postData = buildUrlParamsWithSignature(param, password);

        byte[] byteArray = Encoding.UTF8.GetBytes(postData);

        request.ContentType = "application/x-www-form-urlencoded;charset=" + Encoding.UTF8.BodyName;
        request.KeepAlive = false;
        request.ContentLength = byteArray.Length;

        request.SendChunked = false;
        request.ServicePoint.Expect100Continue = false;
        request.ProtocolVersion = HttpVersion.Version11;

        try
        {

            // Поток для записи
            Stream dataStream = request.GetRequestStream();
            // Записываем данные
            dataStream.Write(byteArray, 0, byteArray.Length);

            // закрываем поток
            dataStream.Close();

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            // Получаем поток для чтения
            dataStream = response.GetResponseStream();

            Byte[] read = new Byte[response.ContentLength];
            int count = dataStream.Read(read, 0, (int)response.ContentLength);
            Encoding encode = System.Text.Encoding.GetEncoding(response.CharacterSet);
            String xml = encode.GetString(read);
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xml);

            dataStream.Close();
            response.Close();

            XmlNodeList items = doc.GetElementsByTagName("status");
            if (items.Count > 0)
            {
                switch (items[0].InnerText)
                {
                    case "0":
                        return DeliveryStatus.NotSent;
                    case "10":
                        return DeliveryStatus.Sent;
                    case "12":
                        return DeliveryStatus.Delivered;
                    case "20":
                    default:
                        return DeliveryStatus.Pending;
                }
            }
        }
        catch (WebException ee)
        {
            Console.Write(ee.Response);
            if (ee.Status == WebExceptionStatus.ProtocolError)
            {
                Console.WriteLine("Status Code : {0}", ((HttpWebResponse)ee.Response).StatusCode);
                Console.WriteLine("Status Description : {0}", ((HttpWebResponse)ee.Response).StatusDescription);
            }
        }
        catch { }
        return DeliveryStatus.Pending;
    }

BubnovRV
 
Сообщения: 192
Зарегистрирован: 06 мар 2012, 05:41
Откуда: Новосибирск

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

Сообщение BubnovRV » 20 апр 2013, 19:35

Сегодня обнаружил еще одну "особенность". При попытке отправить сообщение длиной более 512 символов, сервис отвечает 500 ошибкой, а должно быть (я так думаю) 400 – Bad Request. И вообще откуда это ограничение, я с легкостью отправляю с телефона сообщение длиной более 512 символов, через USB модем AT командами вообще можно отправить сообщение из 255 частей (лично пробовал из 10 частей по 67 символов)?
BubnovRV
 
Сообщения: 192
Зарегистрирован: 06 мар 2012, 05:41
Откуда: Новосибирск

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

Сообщение sd » 20 апр 2013, 20:13

BubnovRV писал(а):Сегодня обнаружил еще одну "особенность". При попытке отправить сообщение длиной более 512 символов, сервис отвечает 500 ошибкой, а должно быть (я так думаю) 400 – Bad Request. И вообще откуда это ограничение, я с легкостью отправляю с телефона сообщение длиной более 512 символов, через USB модем AT командами вообще можно отправить сообщение из 255 частей (лично пробовал из 10 частей по 67 символов)?

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

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

Сообщение BubnovRV » 20 апр 2013, 20:29

Если принять в расчет PDU, то получается 67*255=17085. То есть получается USB модем круче Comtube?
BubnovRV
 
Сообщения: 192
Зарегистрирован: 06 мар 2012, 05:41
Откуда: Новосибирск

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

Сообщение sd » 20 апр 2013, 23:17

BubnovRV писал(а):Если принять в расчет PDU, то получается 67*255=17085. То есть получается USB модем круче Comtube?

Сейчас получается, что лучше. Наш провайдер разрешает до 8 сегментов в сообщении. Если брать русский варинат сообщения, то это 536 символов, и 1120 латиницей. Мы сделали просто - не зависимо от языка - 512 символов. Хотя надо было бы ограничивать размер не в символах, а в частях, но уже поздно...

Мне вот вообще интересно - хоть кто-нибудь из операторов разрешает отправлять сообщения из 255 сегментов?


P.S. Про максимальную длину сообщения в 1600 я был не прав, как оказалось.
Аватара пользователя
sd
 
Сообщения: 5184
Зарегистрирован: 31 июл 2009, 13:11

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

Сообщение BubnovRV » 21 апр 2013, 06:12

Мне вот вообще интересно - хоть кто-нибудь из операторов разрешает отправлять сообщения из 255 сегментов?

Билайн ограничивает 480 символами, через МТС Коммуникатор сейчас отправил сообщение в 1000 русских символов (а 2000 символов уже не пропустили, какое реально ограничение на длину я не нашел). Про Мегафон не знаю - они с нами не захотели сотрудничать. Через модем не могу сейчас отправить (нет под рукой), но боюсь опсос забанит симку (практически проверено, что после 90 смс симка блокируется навсегда).
BubnovRV
 
Сообщения: 192
Зарегистрирован: 06 мар 2012, 05:41
Откуда: Новосибирск

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

Сообщение sd » 21 апр 2013, 06:33

BubnovRV писал(а):
Мне вот вообще интересно - хоть кто-нибудь из операторов разрешает отправлять сообщения из 255 сегментов?

Билайн ограничивает 480 символами, через МТС Коммуникатор сейчас отправил сообщение в 1000 русских символов (а 2000 символов уже не пропустили, какое реально ограничение на длину я не нашел). Про Мегафон не знаю - они с нами не захотели сотрудничать. Через модем не могу сейчас отправить (нет под рукой), но боюсь опсос забанит симку (практически проверено, что после 90 смс симка блокируется навсегда).

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

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

Сообщение BubnovRV » 23 апр 2013, 08:33

Сейчас отправил через модем СМС из 74 и 33 частей - обе успешно дошли.
BubnovRV
 
Сообщения: 192
Зарегистрирован: 06 мар 2012, 05:41
Откуда: Новосибирск

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

Сообщение sd » 23 апр 2013, 19:46

BubnovRV писал(а):Сейчас отправил через модем СМС из 74 и 33 частей - обе успешно дошли.

А оператор какой был?
Аватара пользователя
sd
 
Сообщения: 5184
Зарегистрирован: 31 июл 2009, 13:11

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

Сообщение BubnovRV » 24 апр 2013, 05:09

МТС, симка корпоративная.
BubnovRV
 
Сообщения: 192
Зарегистрирован: 06 мар 2012, 05:41
Откуда: Новосибирск

Пред.След.

Вернуться в API

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

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