Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 10:15

Отправка СМС через шлюз GoIP4 POST запросом из 1С

Автор Marvak, 13 фев 2019, 10:44

0 Пользователей и 1 гость просматривают эту тему.

Marvak

Добрый день!

У нас тут возникла задача рассылать СМС через voip шлюз GoIP 4.
Можно послать СМС, сделав GET или POST запрос к веб-сервису, который крутится на GoIP 4,
как написано вот в этой статье
https://habr.com/ru/company/arttel/blog/395947/

С GET запроса получается. т.к. там несложно. СМС уходят.
Наподобие:
"http://192.168.1.190/default/en_US/send.html?u=admin&p=admin&l=1&n=89991234567&m=test"

В 1С примерно так:

СерверЗапроса = "192.168.1.190";

АдресРесурса = "default/en_US/send.html";
ПараметрыЗапроса = "?u=admin&p=admin&l=1&n=89991234567&m=test";
ТекстЗапроса = АдресРесурса + ПараметрыЗапроса;

СоединениеССервером = Новый HTTPСоединение(СерверЗапроса,,,,,);

ИмяВыходногоФайла = ПолучитьИмяВременногоФайла("txt");

СоединениеССервером.Получить(ТекстЗапроса, ИмяВыходногоФайла);

Но вот как выполнить из 1С приведенный там POST запрос?
Я просто в Веб-программировании вообще не спец.
В той статье приведен пример на языке Перл.

use utf8;
use Mojo::UserAgent;

my $ua = Mojo::UserAgent->new;

$ua->post('http://admin:admin@192.168.1.190/default/en_US/sms_info.html?type=sms';
    => {Accept => '*/*'}
    => form => {
        line    => '1',
        smskey  => '57867a25',
        action  => 'SMS',
        telnum  => '89991234567',
        smscontent => 'Привет!',
        send    => 'Send'
});

Как этот запрос реализовать в 1С?
Причем у нас версия еще 8.1, то есть доступен только объект HTTPСоединение и его метод ОтправитьДляОбработки().
Собрав разные примеры из Инета, пока дошел до этапа.
Там вопросы и уточнения я попутно в комментариях написал.
Я чувствую, что запрос этот в принципе несложный,
но не разбираюсь в этом вопросе (форматы POST запросов) вообще.
Где у них заголовок там например?
Что за описание "form =>"?
Подскажите, как написать этот запрос.

СерверЗапроса = "192.168.1.190";
АдресРесурса = "default/en_US/sms_info.html";
ПрефиксРесурса = "http://admin:admin@";
ПостфиксРесурса = "?type=sms";

СоединениеССервером = Новый HTTPСоединение(СерверЗапроса,,,,,);

ФайлЗапроса = ПолучитьИмяВременногоФайла();

ТекстовыйФайл = Новый ТекстовыйДокумент;

// Формирование текстового файла с POST-запросом.
// В каком виде/формате его формировать?
// Просто несколько строк или как? Как описывать там форму?

// "http://admin:admin@192.168.1.190 default/en_US/sms_info.html?type=sms"
// Это нужная строка в самом запросе или это просто передается в адрес ресурса в методе ОтправитьДляОбработки()?
// Адрес ресурса включает в себя "?type=sms" или нет?

ТекстовыйФайл.УстановитьТекст(ПрефиксРесурса + СерверЗапроса + "/" + АдресРесурса + ПостфиксРесурса);

// => {Accept => '*/*'} ????????
// Как описать форму в запросе, соответственно в этом текстовом файле?
ТекстовыйФайл.УстановитьТекст("&line=" + "1");
ТекстовыйФайл.УстановитьТекст("&smskey=" + "57867a25");
ТекстовыйФайл.УстановитьТекст("&action=" + "SMS");
ТекстовыйФайл.УстановитьТекст("&telnum=" + "89991234567");
ТекстовыйФайл.УстановитьТекст("&smscontent=" + "TEST");
ТекстовыйФайл.УстановитьТекст("&send=" + "Send");

ТекстовыйФайл.Записать(ФайлЗапроса, КодировкаТекста.UTF8);

ФайлРезультата = ПолучитьИмяВременногоФайла();

СтруктФормы = Новый Структура;

ЗаголовокHTTP = Новый Соответствие();
// => {Accept => '*/*'} - Вроде это из заголовка, допустимы любые типы?
ЗаголовокHTTP.Вставить("Accept", "*/*");

СоединениеССервером.ОтправитьДляОбработки(ФайлЗапроса, АдресРесурса, ФайлРезультата, ЗаголовокHTTP);

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск