Модуль 1С 7.7

Модуль 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С.