Здравствуйте!
Есть код на PHP? как такое написать на 1С Учитывая, что PHP я вообще не знаю.
function SendSMS($url, $username, $password, $from, $phone, $text, $channel=-1, $is_flush=false)
{
$cu = curl_init($url . '/sendsms');
if (empty($username) || empty($password) || empty($from) || empty($phone) || empty($text)) {
return 'FAILED';
}
$encoded =
'email=' . urlencode($from) .
'&ch=' . intval($channel) .
'&is_flush=' . intval($is_flush) .
'&phone=' . urlencode($phone) .
'&text=' . urlencode($text);
curl_setopt($cu, CURLOPT_HEADER, 0);
curl_setopt($cu, CURLOPT_POSTFIELDS, $encoded);
curl_setopt($cu, CURLOPT_POST, 1);
curl_setopt($cu, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
curl_setopt($cu, CURLOPT_USERPWD, $username . ':'. $password);
curl_setopt($cu, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($cu);
curl_close($cu);
return $output;
}
Есть код на PHP? как такое написать на 1С Учитывая, что PHP я вообще не знаю.
function SendSMS($url, $username, $password, $from, $phone, $text, $channel=-1, $is_flush=false)
{
$cu = curl_init($url . '/sendsms');
if (empty($username) || empty($password) || empty($from) || empty($phone) || empty($text)) {
return 'FAILED';
}
$encoded =
'email=' . urlencode($from) .
'&ch=' . intval($channel) .
'&is_flush=' . intval($is_flush) .
'&phone=' . urlencode($phone) .
'&text=' . urlencode($text);
curl_setopt($cu, CURLOPT_HEADER, 0);
curl_setopt($cu, CURLOPT_POSTFIELDS, $encoded);
curl_setopt($cu, CURLOPT_POST, 1);
curl_setopt($cu, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
curl_setopt($cu, CURLOPT_USERPWD, $username . ':'. $password);
curl_setopt($cu, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($cu);
curl_close($cu);
return $output;
}
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) чтобы понять код нужно уметь пользоваться гугл
https://www.php.net/manual/ru/function.curl-setopt.php
https://www.php.net/manual/ru/function.curl-exec.php
функция создает запрос на урл адрес проверяются непустые параметры, добавляются в url
запрос POST
CURLOPT_POSTFIELDS Все данные, передаваемые в HTTP POST-запросе.
CURLOPT_POST TRUE для использования обычного HTTP POST. Данный метод POST использует обычный application/x-www-form-urlencoded, обычно используемый в HTML-формах.
и что зная это вы не можете написать пост запрос на 1с к известному адресу передаваемому в параметре урл
функция создает запрос на урл адрес проверяются непустые параметры, добавляются в url
запрос POST
CURLOPT_POSTFIELDS Все данные, передаваемые в HTTP POST-запросе.
CURLOPT_POST TRUE для использования обычного HTTP POST. Данный метод POST использует обычный application/x-www-form-urlencoded, обычно используемый в HTML-формах.
и что зная это вы не можете написать пост запрос на 1с к известному адресу передаваемому в параметре урл
GPT-4 так делает, не знаю будет ли работать)
Функция ОтправитьСМС(СсылкаНаСервис, ИмяПользователя, Пароль, Отправитель, Телефон, Текст, Канал = -1, ПринудительнаяОтправка = Ложь)
Попытка
ТекстЗапроса = СтрШаблон(
"email=%1&ch=%2&is_flush=%3&phone=%4&text=%5",
URLEncode(Отправитель),
Конвертация(Канал, "Число"),
Конвертация(ПринудительнаяОтправка, "Число"),
URLEncode(Телефон),
URLEncode(Текст)
);
Запрос = Новый HTTPЗапрос(СсылкаНаСервис + "/sendsms");
Запрос.УстановитьПоле("Content-Type", "application/x-www-form-urlencoded");
Запрос.УстановитьПоле("Authorization", "Basic " + КодироватьBase64(ИмяПользователя + ":" + Пароль));
Запрос.УстановитьПоле("User-Agent", "1C:Enterprise");
Запрос.УстановитьПоле("Accept", "application/json");
Запрос.УстановитьТело(ТекстЗапроса);
Ответ = Запрос.Выполнить();
Если Ответ.СтатусКода <> 200 Тогда
Возврат "FAILED";
Иначе
Возврат Ответ.Текст;
КонецЕсли;
Исключение
Возврат "FAILED";
КонецПопытки;
КонецФункции
Показать
(10)
Хотя не, гении не смущаются.
сверхразум просто знает
Вот кроме базовой авторизации, оно ничего и не знает. Потому как в материалах обучения ничего про дигест не было. Вон там оно, в исправленом примере, засмущалось и вообще авторизацию выкинуло. Это уже не сеньор, а гений наш получается =]
Хотя не, гении не смущаются.
(6) сказал ему поправить))
Функция ОтправитьСМС(Адрес, Пользователь, Пароль, ОтКого, Телефон, Текст, Канал = -1, Сбросить = Ложь)
Если ПустаяСтрока(Пользователь) ИЛИ ПустаяСтрока(Пароль) ИЛИ ПустаяСтрока(ОтКого) ИЛИ ПустаяСтрока(Телефон) ИЛИ ПустаяСтрока(Текст) Тогда
Возврат "FAILED";
КонецЕсли;
Запрос = Новый HTTPЗапрос("/sendsms");
Запрос.УстановитьТелоИзСтроки("email=" + ОтКого + "&ch=" + Канал + "&is_flush=" + Сбросить + "&phone=" + Телефон + "&text=" + Текст);
Соединение = Новый HTTPСоединение(Адрес, , Пользователь, Пароль);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Если Ответ.КодСостояния <> 200 Тогда
Возврат "FAILED";
КонецЕсли;
Возврат Ответ.ПолучитьТелоКакСтроку();
КонецФункции
Функция ОтправитьСМС(Адрес, Пользователь, Пароль, ОтКого, Телефон, Текст, Канал = -1, Сбросить = Ложь)
Если ПустаяСтрока(Пользователь) ИЛИ ПустаяСтрока(Пароль) ИЛИ ПустаяСтрока(ОтКого) ИЛИ ПустаяСтрока(Телефон) ИЛИ ПустаяСтрока(Текст) Тогда
Возврат "FAILED";
КонецЕсли;
Запрос = Новый HTTPЗапрос("/sendsms");
Запрос.УстановитьТелоИзСтроки("email=" + ОтКого + "&ch=" + Канал + "&is_flush=" + Сбросить + "&phone=" + Телефон + "&text=" + Текст);
Соединение = Новый HTTPСоединение(Адрес, , Пользователь, Пароль);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Если Ответ.КодСостояния <> 200 Тогда
Возврат "FAILED";
КонецЕсли;
Возврат Ответ.ПолучитьТелоКакСтроку();
КонецФункции
А это от гугла нейронка сделала)
Функция SendSMS(Url, Username, Password, From, Phone, Text, Channel = -1, IsFlush = Ложь)
Если ПустаяСтрока(Username) Или ПустаяСтрока(Password) Или ПустаяСтрока(From) Или ПустаяСтрока(Phone) Или ПустаяСтрока(Text) Тогда
Возврат "FAILED";
КонецЕсли;
Подключение = Новый HTTPСоединение(Url, , Username, Password);
Запрос = Новый HTTPЗапрос("/sendsms");
Запрос.УстановитьТелоИзСтроки("email=" + From + "&ch=" + Строка(Channel) + "&is_flush=" + Строка(IsFlush) + "&phone=" + Phone + "&text=" + Text);
Запрос.Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");
Ответ = Подключение.ОтправитьДляОбработки(Запрос);
Если Ответ.КодСостояния = 200 Тогда
Возврат Ответ.ПолучитьТелоКакСтроку();
Иначе
Возврат "FAILED";
КонецЕсли;
КонецФункции
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот