Библиотека функций для разработчика 1С v 8.х
ВНИМАНИЕ
Для использования данного вида интеграции Вам необходимоПароль для интеграции задается в настройках пользователя во вкладке Настройки API.
Функции
Для того, чтобы стоимость рассылок считалась согласно Вашему тарифу, необходимо перед началом работы с интеграцией изменить в коде обработчика Функцию ПроверитьВозможностьОтправки() . А именно, строчку |
Разность = БалансЧисло - КолСМС, на |
Разность = БалансЧисло - КолСМС * тариф , где |
тариф- стоимость одной смс. |
Для отправки единичных сообщений, Вам необходимо внедрить в Вашу систему 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 |
Множественная отправка смс на один номер с одинаковым текстом. |
Статусы сообщений
Значение |
Описание |
Доставлено |
Сообщение доставлено до абонента |
Не доставлено |
Сообщение не доставлено до абонента |
Отправлено |
Сообщение отправлено абоненту |
Просрочено |
Абонент находился не в сети в те моменты, когда делалась попытка доставки, в течении всего времени жизни сообщения |