Библиотека функций для разработчика 1С v 8.х – Stream Telecom – универсальная платформа для рассылок
+7 (812) 326 10 75 Наш офис
8 800 333 10 75 Бесплатно по России

Библиотека функций для разработчика 1С v 8.х

ВНИМАНИЕ

Для использования данного вида интеграции Вам необходимо
зарегистрироваться
на серверной платформе Stream Telecom, либо зарегистрироваться через менеджера компании. При регистрации Вам присваивается логин, и тестовое имя отправителя SMS Info, которое будет автоматически удалено, после того как Вы запросите новое имя.

Пароль для интеграции задается в настройках пользователя во вкладке Настройки API.

Документация разработчка Stream Telecom 1C.pdf

Функции

Для того, чтобы стоимость рассылок считалась согласно Вашему тарифу, необходимо перед началом работы с интеграцией изменить в коде обработчика Функцию ПроверитьВозможностьОтправки() . А именно, строчку

Разность = БалансЧисло - КолСМС, на

Разность = БалансЧисло - КолСМС * тариф , где

тариф- стоимость одной смс.

Для отправки единичных сообщений, Вам необходимо внедрить в Вашу систему 1С данную функцию.

 SMS_Отправка(SMS_Server,SMS_User,SMS_Pass,SMS_To,SMS_From,SMS_Flash,SMS_Text)

    SMS_Text_ToGo = ОбработатьТекстСМСПередОтправкой(SMS_Text);

    // скрипт отправки СМСки

    SMS_send   = "1c_s.php";

    Ответ = "";                        

    // SMS_ID - не удалось получить

    Вернуть = "-1";

       

    ЗаголовкиЗапроса = Новый Соответствие();

    ЗаголовкиЗапроса.Вставить("SMS_User", SMS_User);

    ЗаголовкиЗапроса.Вставить("SMS_Pass", SMS_Pass);

    ЗаголовкиЗапроса.Вставить("SMS_To", SMS_To);

    ЗаголовкиЗапроса.Вставить("SMS_From", SMS_From);

    Если SMS_Flash<>0 Тогда

        ЗаголовкиЗапроса.Вставить("SMS_Flash" , SMS_Flash);

    КонецЕсли;

    ЗаголовкиЗапроса.Вставить("SMS_Text", SMS_Text_ToGo);

       

    // Отправка SMS, получение ответа от сервера

    Попытка

        НТТР_клиент.Получить(SMS_send,ИмяФайлаВходящее,ЗаголовкиЗапроса);

    Исключение

        Сообщить("Неудачная попытка интернет-соединения.");

        Сообщить(ОписаниеОшибки());

       

        Возврат Вернуть;

    КонецПопытки;

   

    Ответ = Новый ТекстовыйДокумент;

    Ответ.Прочитать(ИмяФайлаВходящее);

   

    // Обработка ответа от сервера

    Кол_воСтрокОтвета=Ответ.КоличествоСтрок();

    Если (Кол_воСтрокОтвета=0) ИЛИ (Кол_воСтрокОтвета>2) Тогда

        Сообщить("Ошибка! Ответ от сервера не распознан!");

        Возврат Вернуть;

    КонецЕсли;

   

    // Предпологается что ответ от сервера был, обработаем его

    // Разобъем ответ на отдельные строки

    // Проверить наличие "Result: OK_Operation_Completed"

    Строка1_Result=Ответ.ПолучитьСтроку(1);

    // SMS_ID: 12345678

    Строка2_SMS_ID=Ответ.ПолучитьСтроку(2); 

   

    Если Строка1_Result="Result: OK_Operation_Completed"  Тогда

        // Выделить SMS_ID и вернуть

        // Выделение SMS_ID

        Вернуть = Сред(Строка2_SMS_ID,9);

        Предупреждение("Сообщение успешно отправлено! ID: " + Вернуть);

    // Если выполняется эта ветка, значит в запросе была ошибка, сообщить ошибку

    Иначе 

        Предупреждение("Сообщение не удалось отправить! " + Строка1_Result);

    КонецЕсли;

 

    Возврат Вернуть;

Передаваемые параметры 

SMS_Server (строка) - адрес сервера обработки запросов, указывается в зависимости от сервисной платформы к которой вы подключены (по умолчанию gateway.api.sc/1c)

SMS_User (строка)- имя пользователя в системе, логин

SMS_Pass (строка) - пароль для api (задается в личном кабинете во вкладке Настройка > Безопасность)

SMS_To (строка) - телефон получателя сообщения. Указывается в международном формате Напр. 79001234567 (код страны без +)

SMS_From (строка)  имя отправителя SMS сообщения. Все имена регистрируются в личном кабинете, доступ к списку имен отправителей доступен через Личный Кабинете (ЛК) по адресу www.stream-telecom.ru

SMS_Flash (булево) – тип SMS сообщения Flash

SMS_Text (строка) – текст SMS сообщения

Возвращаемые параметры

В случае ошибки при отправке сообщения функция вернет код "-1"

В случае успешной постановки в очередь сообщения будет возращен идентификатор сообщения.

Для отправки сообщений множеству получателей с идентичным номером, Вам необходимо внедрить в Вашу систему 1С данную функцию.

 SMS_Пакетная_Отправка(SMS_Server,SMS_User,SMS_Pass,SMS_List,Num_To,SMS_From,SMS_Text)

    SMS_Text_ToGo = ОбработатьТекстСМСПередОтправкой(SMS_Text);

    // скрипт пакетной отправки СМС сообщений

    SMS_send = "1c_p.php"; 

    Ответ = "";

    ОтветПОСТ_POST = "";

    Вернуть = "-1";

    // Формирования строки телефонов на отправку (для тестирования)

    //SMS_List="79602330911,7911123456,7905123456";Num_To=3;

    //SMS_List="79219256518,79219256518";Num_To=2;

       

    // Подготовка, формирование XML запроса... на CP1251

    TextПОСТ_POST = "<?xml version=""1.0"" encoding=""windows-1251"" ?>" +

    "<query>" +

    "<User>"  +  SMS_User        +  "</User>"  +

    "<Pass>"  +  SMS_Pass        +  "</Pass>"  +

    "<From>"  +  SMS_From        +  "</From>"  +

    // Текст сообщения

     "<Text>"  +  SMS_Text_ToGo        +  "</Text>"  + 

    // Список телефонов д/б раздельный запятой

    "<PhonesList>" +  SMS_List     +  "</PhonesList>" + 

    // Число телефонов (чтобы было более однозначное сопоставление с SMS_ID)

    "<NumPh>" +  Num_To          +  "</NumPh>" + 

    "</query>";

       

    ВремТекст = Новый ТекстовыйДокумент;

    ВремТекст.УстановитьТекст(TextПОСТ_POST);

    ВремТекст.Записать(ИмяФайлаИсходящее, "windows-1251");

           

    Попытка

        // Отправка запроса, получение ответа от сервера... т.е. обмен данными

        НТТР_клиент.ОтправитьДляОбработки(ИмяФайлаИсходящее, SMS_send,

        ИмяФайлаВходящее) ;

    Исключение

        Сообщить("Неудачная попытка интернет-соединения.");

        Сообщить(ОписаниеОшибки());

       

        Возврат Вернуть;

    КонецПопытки;

   

    Ответ = Новый ТекстовыйДокумент;

    Ответ.Прочитать(ИмяФайлаВходящее);

   

    // Обработка ответа от сервера

    Кол_воСтрокОтвета=Ответ.КоличествоСтрок();

    Если (Кол_воСтрокОтвета=0) Тогда

        Сообщить("Ошибка! Ответ от сервера не распознан!");

        Возврат Вернуть;

    КонецЕсли;

   

    // Предпологается что ответ от сервера был, обработаем его

    // Разобъем ответ на отдельные строки

    Строка1_PHP_Result=Ответ.ПолучитьСтроку(1); // Должно быть "Result: Ok"

    Строка2_XML_Result=Ответ.ПолучитьСтроку(2); // Должно быть "XML_ok"

    Строка3_WEB_Result=Ответ.ПолучитьСтроку(3); // Должно быть "Result=1"

    //Строка4_SMS_Result=Ответ.ПолучитьСтроку(4); // Должно быть "SMS_ID list:"

   

    Если Строка1_PHP_Result<>"Result: Ok" Тогда

        Сообщить("Ошибка: Запрос на отправку имеет ошибки, запрос не выполнен");

        Сообщить(Строка1_PHP_Result);

        Возврат Вернуть;

    КонецЕсли;

   

    Если Строка2_XML_Result<>"XML_ok" Тогда

        Сообщить("Ошибка: Проблема взаимодействия с сервером отправки");

        Сообщить(Строка2_XML_Result);

        Возврат Вернуть;

    КонецЕсли;

   

    Если Строка3_WEB_Result<>"Result=1" Тогда

        Сообщить("Ошибка: Запрос на отправку SMS сервером не принят");

        Сообщить(Строка3_WEB_Result);

        Возврат Вернуть;

    КонецЕсли;

   

    // Если запрос успешно выполнен

    // Скопировать демонстрационно SMS_ID и вывести их на экран

    // (4 строк заголовка, плюс одна в конце)

    КоличествоИД=Кол_воСтрокОтвета-5;

    Если КоличествоИД<>Num_To Тогда

        Сообщить("Ошибка: Запрос на отправку SMS сервером не принят");

        Сообщить(СтрПолучитьСтроку(Ответ,Кол_воСтрокОтвета));

    КонецЕсли;

   

    // Вывод идентификаторв сообщений.

    // ПРИМЕЧАНИЕ: Строки идентификаторов соответствуют 1:1

    // номерам из списка на отправку.

    Для НомерID=1 По КоличествоИД Цикл

        СтрокаОтвета=Ответ.ПолучитьСтроку(4+НомерID);

        ПризнакОшибки = Сред(СтрокаОтвета,1,3);

        Если ПризнакОшибки="!!!" тогда

            Сообщить("Сообщение из списка № "+НомерID+", отправка на номер - не  

            удалась. Ошибка: "+СтрокаОтвета);

        Иначе

            Сообщить("Сообщение из списка № "+НомерID+" отправлено, SMS_ID:

            "+СтрокаОтвета);

        КонецЕсли;

    КонецЦикла;

   

    Сообщить("Последняя строка: "+Ответ.ПолучитьСтроку(Кол_воСтрокОтвета));

   

    Вернуть="Ok";

    Возврат Вернуть;

Передаваемые параметры

SMS_Server (строка) - адрес сервера обработки запросов, указывается в зависимости от сервисной платформы к которой вы подключены (по умолчанию gateway.api.sc/1c)

SMS_User (строка)- имя пользователя в системе, логин

SMS_Pass (строка) - пароль для api (задается в личном кабинете во вкладке Настройка > Безопасность)

SMS_List (строка) перечень телефонов получателей через запятую, не более 1000 за запрос

Num_To (число) кол-во телефонов в списке получателей в списке SMS_To не более 1000 получателей за запрос. Данный параметр используется для контроля кол-ва номеров в строке SMS_To

SMS_From (строка)  имя отправителя SMS сообщения. Все имена регистрируются в личном кабинете, доступ к списку имен отправителей доступен через Личный Кабинете (ЛК) по адресу www.stream-telecom.ru

SMS_Text (строка) – текст SMS сообщения

Возвращаемые параметры

В случае ошибки при отправке сообщения функция вернет код "-1"

В случае успешной постановки в очередь сообщений вернет текст «Ок»

SMS_Отправка_Отложенная(SMS_Server,SMS_User,SMS_Pass,SMS_To,SMS_From,SMS_Flash,

SMS_Text,SMS_Time)

    SMS_Text1 = ОбработатьТекстСМСПередОтправкой(SMS_Text);

    SMS_Time1 = ОбработатьВремяСМСПередОтправкой(SMS_Time);

     // скрипт отправки СМСки

    SMS_send   = "1c_s_t.php";

   

    Ответ = "";  

    // SMS_ID - не удалось получить                      

    Вернуть = "-1";

   

    ЗаголовкиЗапроса = Новый Соответствие();

    ЗаголовкиЗапроса.Вставить("SMS_User", SMS_User);

    ЗаголовкиЗапроса.Вставить("SMS_Pass", SMS_Pass);

    ЗаголовкиЗапроса.Вставить("SMS_To", SMS_To);

    ЗаголовкиЗапроса.Вставить("SMS_From", SMS_From);

    Если SMS_Flash<>0 Тогда

        ЗаголовкиЗапроса.Вставить("SMS_Flash" , SMS_Flash);

    КонецЕсли;

    ЗаголовкиЗапроса.Вставить("SMS_Text", SMS_Text1);

    ЗаголовкиЗапроса.Вставить("SMS_Time", SMS_Time1);

    // Отправка SMS, получение ответа от сервера

    Попытка

        НТТР_клиент.Получить(SMS_send,ИмяФайлаВходящее,ЗаголовкиЗапроса);

    Исключение

        Сообщить("Неудачная попытка интернет-соединения.");

        Сообщить(ОписаниеОшибки());

       

        Возврат Вернуть;

    КонецПопытки;

   

    Ответ = Новый ТекстовыйДокумент;

    Ответ.Прочитать(ИмяФайлаВходящее);

   

    // Обработка ответа от сервера

    Кол_воСтрокОтвета=Ответ.КоличествоСтрок();

    Если (Кол_воСтрокОтвета=0) ИЛИ (Кол_воСтрокОтвета>2) Тогда

        Сообщить("Ошибка! Ответ от сервера не распознан!");

        Возврат Вернуть;

    КонецЕсли;

   

    // Предпологается что ответ от сервера был, обработаем его

    // Разобъем ответ на отдельные строки

    // Проверить наличие "Result: OK_Operation_Completed"

    Строка1_Result=Ответ.ПолучитьСтроку(1);

    // SMS_ID: 12345678

    Строка2_SMS_ID=Ответ.ПолучитьСтроку(2); 

   

    Если Строка1_Result="Result: OK_Operation_Completed"  Тогда

        // Выделить SMS_ID и вернуть

        // Выделение SMS_ID

        Вернуть = Сред(Строка2_SMS_ID,9);

        Предупреждение("Сообщение успешно отправлено! ID: " + Вернуть);

    // Если выполняется эта ветка, значит в запросе была ошибка, сообщить ошибку

    Иначе 

        Предупреждение("Сообщение не удалось отправить! " + Строка1_Result);

    КонецЕсли;

   

    Возврат Вернуть;

Передаваемые параметры

SMS_Server (строка) - адрес сервера обработки запросов, указывается в зависимости от сервисной платформы к которой вы подключены (по умолчанию gateway.api.sc/1c)

SMS_User (строка)- имя пользователя в системе, логин

SMS_Pass (строка) - пароль для api (задается в личном кабинете во вкладке Настройка > Безопасность)

SMS_To (строка) - телефон получателя сообщения. Указывается в международном формате Напр. 79001234567 (код страны без +)

SMS_From (строка)  имя отправителя SMS сообщения. Все имена регистрируются в личном кабинете, доступ к списку имен отправителей доступен через Личный Кабинете (ЛК) по адресу www.stream-telecom.ru

SMS_Flash (булево) – тип SMS сообщения Flash

SMS_Text (строка) – текст SMS сообщения

SMS_Time (строка) – время желаемой доставки SMS сообщения. Время задается по Московскому времени.  Формат времени    ГГГГ-ММ-ЧЧTЧЧ-ММ-ССZ Напр. 2012-01-30T13:10:00Z

Возвращаемые параметры

В случае ошибки при отправке сообщения функция вернет код "-1"

В случае успешной постановки в очередь сообщения будет возращен идентификатор сообщения.

SMS_УзнатьБаланс(SMS_Server,SMS_User,SMS_Pass)

// скрипт получения балланса 

SMS_bal    = "1c_b.php";           

          

    Вернуть="Error";

    ЗаголовкиЗапроса = "SMS_User:"+ SMS_User + Символы.ВК + Символы.ПС +

    "SMS_Pass:"+ SMS_Pass;

   

    // Получение ответа от сервера

    Попытка

        НТТР_клиент.Получить(SMS_bal,ИмяФайлаВходящее,ЗаголовкиЗапроса); 

    Исключение

        Сообщить("Неудачная попытка интернет-соединения.");

        Сообщить(ОписаниеОшибки());

        Возврат Вернуть;

    КонецПопытки;

   

    Ответ = Новый ТекстовыйДокумент;

    Ответ.Прочитать(ИмяФайлаВходящее);

   

    // Обработка ответа от сервера

    Кол_воСтрокОтвета=Ответ.КоличествоСтрок();

       

    // Обработка ответа от сервера

    Если ((Кол_воСтрокОтвета=0) или (Кол_воСтрокОтвета>2)) Тогда

        Сообщить("Ошибка! Ответ от сервера не распознан!");

    Иначе

        // Проверить наличие Result: OK_Operation_Completed

        Строка1_Result  = Ответ.ПолучитьСтроку(1); 

        Сообщить (Строка1_Result);

       // Balance: 98765

        Строка2_Balance = СокрЛП(Ответ.ПолучитьСтроку(2)); 

        Сообщить (Строка2_Balance);

        Если (СтрДлина(Строка1_Result)<10) Тогда

            Возврат Вернуть;

        КонецЕсли;

       

        // Если операция выполнена

        Если Строка1_Result="Result: OK_Operation_Completed" Тогда

           // Выделение Balance

            Вернуть = Сред(Строка2_Balance,9,130); 

        Иначе

            // Выдать сообщение об ошибке

            Сообщить(Строка1_Result);

           // Вернуть описание ошибки

            Вернуть = Строка1_Result; 

        КонецЕсли;

    КонецЕсли;

   

    Возврат Вернуть;

Передаваемые параметры

SMS_Server (строка) - адрес сервера обработки запросов, указывается в зависимости от сервисной платформы к которой вы подключены (по умолчанию gateway.api.sc/1c)

SMS_User (строка)- имя пользователя в системе, логин

SMS_Pass (строка) - пароль для api (задается в личном кабинете во вкладке Настройка > Безопасность)

Возвращаемые параметры

При успешном выполнении операции  возвращается сумма доступных средств на логине пользователя.

При ошибке запроса_числа_кредитов возвращается строка вида "Result: Error_...." с кодом ошибки

При ошибке функции возврат: "Error"  

 

SMS_Статус(SMS_Server,SMS_User,SMS_Pass,SMS_ID

    // скрипт получения информации о СМС

    SMS_info    = "1c_i.php";      

    Ответ="";

    Вернуть="-1";

    ЗаголовкиЗапроса = Новый Соответствие(); 

    ЗаголовкиЗапроса.Вставить("SMS_User", SMS_User)

    ЗаголовкиЗапроса.Вставить("SMS_Pass", SMS_Pass)

    ЗаголовкиЗапроса.Вставить("SMS_ID", SMS_ID);    

    Вернуть="Error";

    ЗаголовкиЗапроса = "SMS_User:"+ SMS_User + Символы.ВК + Символы.ПС +

    "SMS_Pass:"+ SMS_Pass;

   

    // Получение ответа от сервера

    Попытка

        НТТР_клиент.Получить(SMS_bal,ИмяФайлаВходящее,ЗаголовкиЗапроса); 

    Исключение

        Сообщить("Неудачная попытка интернет-соединения.");

        Сообщить(ОписаниеОшибки());

        Возврат Вернуть;

    КонецПопытки;

   

    Ответ = Новый ТекстовыйДокумент;

    Ответ.Прочитать(ИмяФайлаВходящее);  

   

    // Обработка ответа от сервера

    Кол_воСтрокОтвета=Ответ.КоличествоСтрок();

       

    // Обработка ответа от сервера

    Если ((Кол_воСтрокОтвета=0) или (Кол_воСтрокОтвета>3)) Тогда

        Сообщить("Ошибка! Ответ от сервера не распознан!");

    Иначе

        // Проверить наличие Result: OK_Operation_Completed

        Строка1_Result  = Ответ.ПолучитьСтроку(1); 

        Сообщить (Ответ.ПолучитьСтроку(1));

        Сообщить (Ответ.ПолучитьСтроку(2));

        Сообщить (Ответ.ПолучитьСтроку(3));

        // SMS_Time: 2008-06-02 13:31:24

        Строка2_Time    = Ответ.ПолучитьСтроку(2); 

        // SMS_Status: Delivered_To_Gateway

        Строка3_Status  = Ответ.ПолучитьСтроку(3); 

        Если Строка1_Result="Result: OK_Operation_Completed" Тогда

                // Выделение SMS_Status                 

                 Вернуть = Сред(Строка3_Status,12,130);    

                Предупреждение("Время сообщения: " + Строка2_Time + " статус: " +

                Строка3_Status); 

        Иначе

                Предупреждение("Не удалось получить статус. " + Строка1_Result); 

        КонецЕсли;

    КонецЕсли;

   

    Возврат Вернуть;

Передаваемые параметры

SMS_Server (строка) - адрес сервера обработки запросов, указывается в зависимости от сервисной платформы к которой вы подключены (по умолчанию gateway.api.sc/1c)

SMS_User (строка)- имя пользователя в системе, логин

SMS_Pass (строка) - пароль для интеграции задается отдельно через вкладку Настройка > Безопасность.

SMS_ID (строка)- Идентификатор сообщения, статус которого уточняется.

Возвращаемые параметры

При успешном выполнении операции возвращает статус сообщения. (см. приложение 1)

В случае ошибки возвращает «-1».

Список статусов операций 

При осуществлении операций, возвращаются данные статусы:

Значение

Описание

 OK_Operation_Completed

 Операция выполнена

 Error_Not_Enough_Credits

 Ошибка: недостаточно кредитов

 Error_Invalid_Login

 Ошибка: введен неправильный логин или пароль

 Invalid_Source_Address

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

 No_SourceAdress

 Не введен адрес отправителя сообщения

 No_SMS_PASS

 Не введен пароль пользователя

 No_SMS_TEXT

 Не введен текст сообщения

 No_SMS_USER

 Не введен логин пользователя

 User blocked

 Пользователь заблокирован

 Flood_SMS

 Множественная отправка смс на один номер с одинаковым текстом.

Статусы сообщений 

 Значение

 Описание

 Доставлено 

 Сообщение доставлено до абонента

 Не доставлено

 Сообщение не доставлено до абонента

 Отправлено

 Сообщение отправлено абоненту

 Просрочено

 Абонент находился не в сети в те моменты, когда делалась  попытка доставки,  в течении всего времени жизни сообщения

Если Вам требуется данный функционал, пожалуйста сообщите нам об этом письмом на адрес support@stream-telecom.ru и наши технические консультанты оперативно обработают Ваш запрос.
Если Вам требуется данный функционал, пожалуйста сообщите нам об этом письмом на адрес support@stream-telecom.ru и наши технические консультанты оперативно обработают Ваш запрос.
* Все функции могут быть доработаны на усмотрение разработчиков, внедряющих службы SMS в систему 1С.