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С:ITIL(ИТИЛ), 1С:ITILIUM, Управление IT-отделом 8 через интернет с любого устройства посредством браузера, увеличивая эффективность работы пользователей и снижая нагрузку на сервер. Быстрая инсталляция портала за пару часов, удобный и интуитивно понятный интерфейс и безопасность данных помогут упростить работу с порталом и ускорить выполнение бизнес-процессов компании.

128000 руб.

19.12.2023    5431    4    0    

12

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

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

60000 руб.

07.05.2019    36343    71    45    

30

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

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    20007    26    24    

22

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

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

57600 руб.

26.11.2024    3806    3    3    

5

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    1671    11    2    

12

WEB-интеграция Программист Руководитель проекта Платформа 1С v8.3 1C:Бухгалтерия 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки.

24000 руб.

27.09.2024    6347    4    2    

8

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 1C:Бухгалтерия Управленческий учет Платные (руб)

Решение осуществляет синхронизацию задач Битрикс24 и 1С, что позволяет в одной системе ставить задачи, контролировать выполнение всего пула задач с группировкой по ответственным и проектам, формировать управленческие отчеты по работе сотрудников (загрузка, просроченные задачи), уведомлять сотрудников о ходе выполнения задач посредством чат-бот Telegram

7200 руб.

04.05.2021    21618    14    19    

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

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

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

Вообще, подразумевается, что на сервере только 1 проект будет, куда будут обработчики добавляться. Даже если несколько - думаю много их не будет
5. user612295_death4321 09.06.25 14:51 Сейчас в теме
Там с Yandex GPT случайно не планируется интеграцию в ОПИ затянуть?
6. bayselonarrend 2709 09.06.25 15:03 Сейчас в теме
(5) Там обратная совместимость с OpenAI API вроде. OpenAI API я планирую делать, да
Оставьте свое сообщение