Модуль 1С 7.7 – Stream Telecom – универсальная платформа для рассылок
+7 (812) 326 10 75 Наш офис
8 800 333 10 75 Бесплатно по России

Модуль 1С 7.7

ВНИМАНИЕ

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

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

Модуль ERT для 1С 7.7.zip

Функции

Функция SMS_УзнатьБаланс(SMS_Server,SMS_User,SMS_Pass)

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

SMS_bal    = "1c_b.php";                 

Ответ="";   

// Подготовка к отправке GET запроса... когда POST, тогда 1С и PHP плохо сочетаются

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

НТТР_клиент.УдалитьЗаголовкиЗапроса();

НТТР_клиент.УстановитьЗаголовокЗапроса("SMS_User"  , SMS_User);

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

НТТР_клиент.УстановитьЗаголовокЗапроса("SMS_Pass"  , SMS_Pass);    

Попытка НТТР_клиент.Получить(SMS_Server+"/"+SMS_bal,Ответ,2);  

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

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

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

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

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

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

Иначе

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

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

// Balance: 98765

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

Если (СтрДлина(Строка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_To,Num_To,SMS_From,SMS_Text)

//SMS_Server сервер рассылки смс по умолчанию gateway.api.sc/1c

//SMS_User имя пользователя на сервере отправки

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

//SMS_To перечень телефонов получателей через запятую  не более 200 за запрос

//Num_To кол-во телефонов в списке получателей в списке  SMS_To не более 200 получателей за запрос

//SMS_From имя отправителя от кого придет смс для тестов всегда StreamSMS

//SMS_Text текст sms сообщения


CrLf = Симв(13) + Симв(10);

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

SMS_send = "1c_p.php";    

Ответ = "";

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

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

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


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

//SMS_To="79602330911,79111234567,79051234567";Num_To=3;  

//SMS_To="79602330911";Num_To=1;


// Подготовка, формирование 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        +  "</Text>"  +

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

"<PhonesList>" +  SMS_To     +  "</PhonesList>" + 

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

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

"</query>";

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

Попытка

НТТР_клиент.ОтправитьДляОбработки(SMS_Server+"/"+SMS_send, TextПОСТ_POST , 2, ОтветПОСТ_POST, 2) ;

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

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

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

// Сообщить(Ответ);

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


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

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

Если (Кол_воСтрокОтвета=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" Тогда       

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

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

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

КонецЕсли;

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

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

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

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

КонецЕсли;

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

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

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

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

КонецЕсли;

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

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

КоличествоИД=Кол_воСтрокОтвета-5; // (4 строк заголовка, плюс одна в конце)

Если КоличествоИД<>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 (строка) перечень телефонов получателей через запятую, не более 200 за запрос

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

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

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

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

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

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

ФункцияSMS_Отправка(SMS_Server,SMS_User,SMS_Pass,SMS_To,SMS_From,SMS_Flash,SMS_Text)

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

SMS_send   = "1c_s.php"; 

CrLf = Симв(13) + Симв(10);   

Ответ = "";                            

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

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

// Подготовка текста SMS к отправке - преобразование к HTML форме

SMS_Text=СтрЗаменить(SMS_Text,"&"     ,"&amp;" ); // Обработка  &

SMS_Text=СтрЗаменить(SMS_Text,"<"     ,"&lt;"  ); // Обработка  <

SMS_Text=СтрЗаменить(SMS_Text,">"     ,"&gt;"  ); // Обработка  >

SMS_Text=СтрЗаменить(SMS_Text,CrLf    ,"<br>"  ); // Обработка символов переноса


// Подготовка к отправке GET запроса... когда POST, тогда 1С и PHP плохо сочетаются

НТТР_клиент.УдалитьЗаголовкиЗапроса();

НТТР_клиент.УстановитьЗаголовокЗапроса("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);   

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

Попытка 

НТТР_клиент.Получить(SMS_Server+"/"+SMS_send,Ответ,2);  

Исключение

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

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

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

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

Если ((СтрКоличествоСтрок(Ответ)=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); 

Сообщить(Вернуть);    

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

Иначе     

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

КонецЕсли;

КонецЕсли;

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

КонецФункции    

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

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

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

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

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

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

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

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

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

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

Функция SMS_Статус(SMS_Server,SMS_User,SMS_Pass,SMS_ID_)

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

SMS_info   = "1c_i.php"; 

// Подготовка к отправке GET запроса... когда POST, тогда 1С и PHP плохо сочетаются

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

НТТР_клиент.УдалитьЗаголовкиЗапроса();

НТТР_клиент.УстановитьЗаголовокЗапроса("SMS_User"  , SMS_User);

НТТР_клиент.УстановитьЗаголовокЗапроса("SMS_Pass"  , SMS_Pass);

НТТР_клиент.УстановитьЗаголовокЗапроса("SMS_ID"    , SMS_ID_);   

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

Попытка 

НТТР_клиент.Получить(SMS_Server+"/"+SMS_info,Ответ,2);  

Исключение

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

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

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

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

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

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

Иначе

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

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

// 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);   

Иначе      

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

КонецЕсли;

КонецЕсли;

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

КонецФункции

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

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

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

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

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

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

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

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

Возможные статусы доставки

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

Значение

Описание

OK_Operation_Completed

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

Error_Not_Enough_Credits

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

Error_Message_Rejected

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

Error_Invalid_Source_Address

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

Error_Invalid_Destination_Address

Ошибка: некорректный номер получателя сообщения

Error_SMS_User_Disabled

Ошибка: СМС-пользователь заблокирован

Error_Invalid_MessageID

Ошибка: некорректный идентификатор сообщения

Error_Invalid_Header

Ошибка: некорректно переданы параметры

Error_Invalid_Login

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

Error_Invalid_Password

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

Error_Unauthorised_IP_Address

Ошибка: неавторизованный IP-адрес

Error_SMS_User_Not_Activated

Ошибка: СМС-пользователь не активирован

Error_Message_Queue_Full

Ошибка: очередь сообщений полна

Error_Gateway_Offline

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

Error_Gateway_Busy

Ошибка: сервер занят другим запросом

Error_Database_Offline

Ошибка: сервер базы данных недоступен

Error_Flood_SMS

Ошибка: множественная отправка смс на один номер с одинаковым текстом.

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

Значение

Описание

Enqueued 

Ожидает отправки

Delivered_To_Gateway

Отправленно

Sent

Отправленно

Delivered_To_Recipient

Доставленно

Error_Rejected

Сообщение отклонено

Error_Expired

Истек срок жизни сообщения

Error_Invalid_MessageID

Ошибка: некорректный идентификатор сообщения

Error_Invalid_Header

Ошибка: некорректно переданы параметры

Error_Invalid_Login

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

Error_Invalid_Password

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

Error_Unauthorised_IP_Address

Ошибка: неавторизованный IP-адрес

Error_SMS_User_Not_Activated

Ошибка: СМС-пользователь не активирован

Error_Message_Queue_Full

Ошибка: очередь сообщений полна

Error_Gateway_Offline

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

Error_Gateway_Busy

Ошибка: сервер занят другим запросом

Error_Database_Offline

Ошибка: сервер базы данных недоступен

Error_Flood_SMS

Ошибка: множественная отправка смс на один номер с одинаковым текстом.

* Все функции могут быть доработаны на усмотрение разработчиков, внедряющих службы SMS в систему 1С.