Модуль 1С 7.7
ВНИМАНИЕ
Для использования данного вида интеграции Вам необходимо зарегистрироваться на серверной платформе Stream Telecom, либо зарегистрироваться через менеджера компании. При регистрации Вам присваивается логин, и тестовое имя отправителя SMS Info, которое будет автоматически удалено, после того как Вы запросите новое имя.
Пароль для интеграции задается в настройках пользователя во вкладке Настройки API.
Функции
Функция 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 сообщения // скрипт пакетной отправки СМС сообщений SMS_send = "1c_p.php"; Ответ = ""; ОтветПОСТ_POST = ""; // SMS_ID - не удалось получить Вернуть = "-1";
//SMS_To="79602330911,79111234567,79051234567";Num_To=3; //SMS_To="79602330911";Num_To=1;
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,"&" ,"&" ); // Обработка & SMS_Text=СтрЗаменить(SMS_Text,"<" ,"<" ); // Обработка < SMS_Text=СтрЗаменить(SMS_Text,">" ,">" ); // Обработка > SMS_Text=СтрЗаменить(SMS_Text,CrLf ,"<br>" ); // Обработка символов переноса
НТТР_клиент.УдалитьЗаголовкиЗапроса(); НТТР_клиент.УстановитьЗаголовокЗапроса("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 |
Ошибка: множественная отправка смс на один номер с одинаковым текстом. |