Melezh: ваш персональный центр интеграций с внешними API и сервисами

09.06.25

Интеграция - WEB-интеграция

Знакомьтесь, Melezh - ваш новый помощник в преодолении хаоса при работе с разрозненными API, сервисами и технологиями. Он позволяет быстро и прозрачно настроить единый HTTP API для вызова функций Открытого пакета интеграций и произвольных OneScript-модулей, со встроенным логированием и возможностью устанавливать значения параметров по умолчанию

Принцип работы

 

Melezh - это аддон для Открытого пакета интеграций, а конкретно для его CLI версии. Он умеет принимать HTTP-запросы на выбранном порту и интерпретировать их в команды самого ОПИ, а также в вызовы функций произвольных OneScript-обработчиков, которые вы можете написать сами

 

Если вы еще не слышали про Открытый пакет интеграций:

Открытый пакет интеграций - это бесплатное и с открытым исходным кодом расширение, представляющее из себя набор общих модулей для работы с разнообразными онлайн-сервисами и технологиями

 

Узнать больше:
Репозиторий на Github | Основная статья на Инфостарт | Документация

 

Melezh использует веб-сервер Kestrel (встроен в OneScript 2.0) для приема запросов и возвращает результаты выполнения соответствующих функций в качестве ответов на них. Однако, сервер не дает доступ сразу ко всем доступным функциям любому отправителю запроса: пути URL для вызова конкретных методов, значения параметров по умолчанию и возможность их перезаписи регламентируется гибкой системой настройки в виде отдельных обработчиков

 

Melezh имеет довольно много функций, аспектов и нюансов работы, подробное описание которых в рамках одной статьи рискует вылиться в невероятную духоту. Поэтому в этой статье моя цель лишь широкими мазками показать вам на простых примерах принципы работы и основной функционал данного проекта. Если это вас заинтересует (или уже заинтересовало), ознакомится со всеми тонкостями работы уже более подробно можно будет в нашей онлайн-документации

Ссылка на нее будет еще несколько раз по ходу и в конце статьи


 

Начало работы

Начнем с простого примера: вы скачали Melezh и хотите выполнить с его помощью первую задачу - организовать отправку сообщений в бота Telegram из, скажем, 1С конфигурации, где нет никакого функционала для работы с этим мессенджером

 

  • Изначально Melezh - консольное приложение (имеется веб-интерфейс, но его мы рассмотрим чуть позже). Для начала работы с ним, нам необходимо из командной строки создать новый проект - файл на диске, где будут храниться настройки для конкретного решения:
    melezh СоздатьПроект  --path C:\test_proj.melezh
    

  • Далее необходимо добавить обработчик запросов для нашей задачи - отправки сообщений в Telegram:

    melezh ДобавитьОбработчикЗапросов --proj C:\test_proj.melezh --lib telegram --func ОтправитьТекстовоеСообщение --method GET

    Здесь мы указываем путь к ранее созданному проекту, имя библиотеки ОПИ в CLI-варианте, имя функции и допустимый HTTP-метод для запросов (т.е. данный обработчик будет принимать GET-запросы от клиента)
     

  • Дополнительно, мы можем устанавливать значения параметров по умолчанию, чтобы не передавать их в будущих запросах:

    melezh УстановитьАргументОбработчика --proj C:\test_proj.melezh --handler 42281f11b --arg token --value "***"

    Здесь мы передаем все тот же путь к файлу проекта, ключ обработчика (будет в результате выполнения ДобавитьОбработчикЗапросов из предыдущего шага), имя параметра (token) и его значение
     

  • Остается лишь запустить проект:

    melezh ЗапуститьПроект --proj C:\test_proj.melezh --port 7788

    Так как при настройке мы выбрали HTTP-метод GET, URL для запроса будет выглядеть примерно вот так (с указанием чата и текста сообщения):

    http://localhost:7788/42281f11b?chat=123123123&text="Hello world!"

 

Для доступа к этому и другим обработчикам Melezh извне, необходимо проксировать его при помощи стороннего сервера, вроде nginx, IIS или Apache, как это происходит для сайтов или при организации внешнего доступа к базам 1С

Информацию о доступных библиотеках, функциях и параметрах из набора ОПИ можно найти в его документации

 
 Пример для функции ОтправитьТекстовоеСообщение, которую мы использовали

Таким же образом можно настроить обработчик на основе любой функции ОПИ: выбираете понравившиеся библиотеку и метод, указываете наиболее удобный для себя вид запроса (GET, POST с JSON или form-data телом) и все! Теперь вы можете отправлять на его URL данные из любой системы, не заботясь о реализации сложного обмена на вызывающей стороне. Достаточно простой отправки HTTP-запроса, которая доступна практически везде!

 

Полный список консольных команд и их назначение можно найти в соответствующем разделе документации Melezh

 


 

Веб-интерфейс

Но это была не интересная часть: подобная настройка в командной строке может показаться сложной и не наглядной, в чем, безусловно, есть доля правды. К счастью, кроме CLI, в Melezh есть встроенная веб-консоль, которая позволяет делать то же самое, только удобно и интерактивно:

 

Веб-интерфейс Melezh

 

Для того чтобы получить к ней доступ, необходимо только создать и запустить проект, после чего перейти в браузере на localhost:<ваш порт>/ui

 

melezh СоздатьПроект   --path C:\test_proj.melezh
melezh ЗапуститьПроект --proj C:\test_proj.melezh --port 7788

 

Вас встретит страница авторизации, где нужно будет ввести пароль по умолчанию - admin. Внутри есть несколько панелей с различным функционалом:

  • Главная панель, содержащая информацию о последних событиях
  • Панель обработчиков, где их можно создать и настроить
  • Страница просмотра логов
  • Страница с общими настройками проекта 

Рассказывать о них можно очень долго, но сегодня у нас лишь обзорная экскурсия. Интерфейс, на мой взгляд, достаточно интуитивный, а подробно о каждой странице и кнопке дополнительно расписано в онлайн-документации 

 

Здесь пока оставлю лишь несколько красивых скриншотов и пойдем дальше

 
 Красивые скриншоты

 

Логирование

Одним из преимуществ использования Melezh по сравнению с привычной организацией обмена "на местах", является единый и централизованный сбор логов об обработанных запросах

 

Все логи собираются автоматический (с возможностью отключения), в одном формате и могут быть удобно просмотрены в веб-консоли с отбором по обработчику и дате:

 

Просмотр логов по обработчику

 

В логи записывается основная информация о запросе, его заголовки, параметры URL, ответ и тело, если таковое имеется. При обработке multipart/form-data запросов, отдельно сохраняются также вложенные файлы из тела запроса

 

Часть страницы с информацией о конкретном запросе

 

Изменить некоторые аспекты логирования можно при помощи глобальных настроек:

  • logs_path - путь сохранения логов. Для отключения логирования установите пустое значение
  • logs_req_headers - логирование заголовков входящих запросов
  • logs_req_body - логирование тела входящих запросов
  • logs_req_max_size - отключение логирования logs_req_body для запросов, свыше этого размер (в байтах). 0 - без ограничений
  • logs_res_body - логирование тела исходящих ответов
  • logs_res_max_size - отключение логирования logs_res_body для запросов, свыше этого размер (в байтах). 0 - без ограничений

Расширения

Кроме вызова функций Открытого пакета интеграций, в Melezh также присутствует возможность добавления собственных методов для дальнейшего назначения их обработчикам запросов

 

Для определения подобных методов-расширений, необходимо добавить новый OneScript-модуль (.os файл с кодом) в подкаталог extensions основного каталога установки Melezh. Каждый метод такого модуля, который должен быть доступен в качестве функции обработчика, должен иметь документирующий комментарий следующего вида:

 

// Отображаемое имя метода
// Описание метода
//
// Параметры:
//  Поле1 - Строка  - Значение поля 1 - field1
//  Поле2 - Строка  - Значение поля 2 - field2
//  Поле3 - Строка  - Значение поля 3 - field3
//
// Возвращаемое значение:
//  Структура Из КлючИЗначение - возвращаемое значение

 

Пример функций одного из стандартных расширений - RequestEcho.os:

// Эхо полей
// Возвращает в ответе поля, отправленные в запросе
//
// Параметры:
//  Поле1 - Строка  - Значение поля 1 - field1
//  Поле2 - Строка  - Значение поля 2 - field2
//  Поле3 - Строка  - Значение поля 3 - field3
//
// Возвращаемое значение:
//  Структура Из КлючИЗначение - Эхо
Функция ЭхоПолей(Знач Поле1, Знач Поле2, Знач Поле3 = "") Экспорт
	Возврат Новый Структура("field1,field2,field3", Поле1, Поле2, Поле3);
КонецФункции

 

Это - практически полная копия документирующего комментария из EDT, но с четвертым блоком у каждого параметра - именем аргумента в CLI стиле. Также, в описании параметров нельзя использовать знак "-", кроме как для разделения блоков

 

А вот так расширение выглядит в меню создания нового обработчика в веб-интерфейсе:

 

 

В качестве возвращаемого значения, подобная функция может возвращать сериализуемую в JSON коллекцию (структуру, массив или соответствие), текст или двоичные данные. Подробнее о стандартной библиотеке и расширениях можно узнать в соответствующем разделе документации


 

Про установку

Melezh - проект с открытым исходным кодом. Вы можете попробовать его уже прямо сейчас, воспользовавшись одним из доступных способов установки:

  • Docker (рекомендуется)
    Самый простой способ установки. Достаточно получить образ из облака и запустить
        :: Вместо -deb можно указать -rpm для использования rpm-based дистрибутива
        :: Вместо -ru можно указать -en для получения английской версии
        :: Вместо latest можно указать конкретную версию Melezh
        :: Порт может быть изменен в аргументе -p
        
        docker pull ghcr.io/bayselonarrend/melezh:latest-deb-ru
        docker run -d -p 1921:1921 --name melezh ghcr.io/bayselonarrend/melezh:latest-deb-ru

    Кроме этого, вы можете воспользоваться локальным Dockerfile, который находится в .zip архиве одного из вариантов релиза на GitHub

  • Windows-установщик
    Melezh можно установить из обычного установщика для Windows, который в данном случае совмещен с установщиком OInt - консольного приложения Открытого пакета интеграций. Скачать его можно в последнем релизе репозитория OpenIntegrations



    В процессе установки одна из страниц установщика будет посвящена Melezh:


     

  • Linux
    В релизах Melezh есть rpm и deb пакеты для различных Linux-дистрибутивов. Все они зависят от пакета oint, который необходимо предварительно скачать из релизов OpenIntegrations (>= 1.24.0)
     

  • OneScript
    Melezh - это в первую очередь OneScript-пакет, а значит вы легко можете установить его из менеджера пакетов OPM, если уже используете OneScript 2.0
     

    opm install melezh

 

 

Подробнее о различных способах установки вы также можете узнать в соответствующем разделе документации


 

Послесловие

Надеюсь, я смог вас заинтересовать данным проектом. Мне очень нравится, каким он получился, и, надеюсь, вам понравится тоже. На данный момент это первая, пилотная версия, поэтому я буду очень признателен, если вы оставите свою обратную связь о работе с Melezh и, в частности, о найденных багах или недоработках. Сделать это можно в Issues на GitHub или комментариях к данной статье

 

Также вы можете помочь проектам Melezh и ОПИ, поставив им звездочки на GitHub. При желании поддержать проекты материально, вы всегда сможете найти информацию об этом в конце страницы каждого из этих репозиториев

 

Спасибо за внимание!

 

 

Репозиторий Melezh: github.com/Bayselonarrend/Melezh

Репозиторий ОПИ: github.com/Bayselonarrend/OpenIntegrations

Последний релиз: github.com/Bayselonarrend/Melezh/releases/tag/0.1.0

Документация: openintegrations.dev/docs/Addons/Melezh/Overview

 

 

 Мой GitHub:    https://gitub.com/Bayselonarrend 
 OpenYellow:    https://openyellow.org
 Лицензия MIT:  https://mit-license.org

Вступайте в нашу телеграмм-группу Инфостарт

Web ОПИ интеграция обмен http gateway api сервер

См. также

Оптовая торговля Розничная торговля WEB-интеграция 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Онлайн-заказ - это решение для автоматизации процесса оформления заказов на сайте в торговых организациях. Продукт обеспечивает легкое взаимодействие между компанией и клиентами через веб-интерфейс, интегрированный с 1С:Предприятие. Система позволяет снизить операционные расходы, повысить лояльность клиентов и оптимизировать работу отдела продаж.

57600 руб.

26.11.2024    5498    4    3    

7

WEB-интеграция Программист Бизнес-аналитик 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

14400 руб.

20.12.2024    2979    16    2    

17

WEB-интеграция Анализ продаж Системный администратор Программист Пользователь 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)

Модуль "Подсистема интеграции AmoCRM с 1С" позволяет обеспечить единое информационное пространство, в котором пользователи могут эффективно управлять клиентской базой, следить за статусами сделок и поддерживать актуальность данных как в AmoCRM, так и в 1С.

60000 руб.

07.05.2019    38083    73    45    

31

WEB-интеграция 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Оптовая торговля, дистрибуция, логистика Россия Платные (руб)

В расширении реализован механизм интеграции между системой поставщика и Личным кабинетом СДТ. Реализован обмен заказами и реализациями (накладными), предусмотрено отслеживание статусов документов. Расширение предназначено для 1С:УТ 11.4.

35856 руб.

27.11.2024    1535    1    0    

1

Обмен с ГосИС WEB-интеграция Бухгалтер Пользователь 1С v8.3 Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

3000 руб.

28.04.2016    96735    109    218    

359
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. artbear 1571 09.06.25 10:44 Сейчас в теме
Отличный продукт получился! +500
2. bayselonarrend 2870 09.06.25 10:47 Сейчас в теме
3. ixijixi 2042 09.06.25 10:56 Сейчас в теме
Респект, огромная работа проделана!

Обратная связь, как просили)
melezh СоздатьПроект  --path C:\test_proj.melezh

Как по мне, в данной конструкции не хватает параметра --name test_proj.
Потом можно было бы обращаться уже не по пути, а по имени
melezh ДобавитьОбработчикЗапросов --proj test_proj
bayselonarrend; +1 Ответить
4. bayselonarrend 2870 09.06.25 11:00 Сейчас в теме
(3) Спасибо. Что касается name, то, думаю, этот файл, который непонятно где для пользователя будет создан, обязательно потеряется потом) + нужен тогда список, вроде списка баз в 1С

Вообще, подразумевается, что на сервере только 1 проект будет, куда будут обработчики добавляться. Даже если несколько - думаю много их не будет
5. user612295_death4321 09.06.25 14:51 Сейчас в теме
Там с Yandex GPT случайно не планируется интеграцию в ОПИ затянуть?
6. bayselonarrend 2870 09.06.25 15:03 Сейчас в теме
(5) Там обратная совместимость с OpenAI API вроде. OpenAI API я планирую делать, да
7. dsdred 3998 10.06.25 13:45 Сейчас в теме
(6) и с deepseek API одинаковое
bayselonarrend; +1 Ответить
8. JohnyDeath 302 11.06.25 16:38 Сейчас в теме
Для доступа к этому и другим обработчикам Melezh извне, необходимо проксировать его при помощи стороннего сервера, вроде nginx, IIS или Apache, как это происходит для сайтов или при организации внешнего доступа к базам 1С

Я пока читал, наоборот подумал, что можно сделать из него Прокси-сервер вместо непонятного nginx.
Так нельзя? Не принято или по каким-то другим причинам?
9. bayselonarrend 2870 11.06.25 16:44 Сейчас в теме
(8) Ну, так не принято вроде. Я даже не уверен, умеет ли Kestrel во всякие SSL-сертификаты, фильтры и прочее. Тем более, можно ли это настроить в том, что от Kestrel доступно для управления из OneScript
Для отправки сообщения требуется регистрация/авторизация