database1С. Взаимодействие с http-сервисами

1С позволяет создать API-доступ, что даёт возможность взаимодействия бота с внутренней БД компании.

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

Для настройки взаимодействия с базой данных через HTTP необходимо на стороне платформы опубликовать соответствующий веб-сервис.

Для этого проектируется логика API, которая предоставляет доступ к определенным данным через заранее определенные запросы. Как правило, такое взаимодействие строится по принципам REST-архитектуры, однако конкретная реализация API определяется на этапе проектирования. Способ доступа к данным (их структура, фильтрация, сортировка и т.д.) полностью определяется в момент проектирования API. Как и при развертывании любого API, создаются основные методы (эндпоинты) и настраиваются правила авторизации.

circle-check

Для настройки взаимодействия бота с базой данных Вам необходимо следующее:

  1. URL метода. Дополнительно необходимо иметь информацию о том, какой тип запроса обработчик на стороне 1С поддерживает, какие параметры принимает и возвращает.

  2. Необходимые заголовки.

  3. Метод авторизации. Авторизация может отсутствовать.

circle-info

Какие запросы, параметры и заголовки поддерживаются методом,- задается при его проектировании. Если Вы можете влиять на процесс проектирования, то предпочтительней заранее заложить возможность работы с POST-запросами вместе (или вместо) с GET-запросом в методах, в том числе для получения данных, так как это упрощает передачу сложных параметров и больших объемов данных.

Настройка

Настройка действия

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

Для взаимодействия бота с базой данных по API используется действие "Вебхук".

  1. Перейдите на вкладку "Действия" и нажмите "Добавить".

  1. Выберите действие "Вебхук".

  1. Внесите необходимые для подключения данные.

Введите URL и выберите метод запроса.

circle-check

На вкладке "Переменные действия" добавьте аргументы, соответствующие тем параметрам, которые необходимо передать в запрос, в данном примере это будет один параметр order_number.

Заполните необходимые заголовки и тело запроса. Данные для авторизации обычно передаются в заголовке Authorization, но это не единственный способ авторизации.

На вкладке "Условия срабатывания" задайте название функции и ее описание, таким образом бот будет знать, какое действие использовать при необходимости проверки статуса заказа.

Настройка авторизации

Если спроектирован доступ с авторизацией, то для доступа потребуется логин и пароль, которые будет необходимо передавать в самом запросе.

Авторизация Basic

Рассмотрим простой вариант авторизации Basic. Он предполагает передачу пары логина и пароля login:password, данные должны быть закодированы в Base64. Для кодирования можно использовать онлайн-сервисы, например https://www.base64decode.org/arrow-up-right. В запросе формируется заголовок Authorization, в него добавляются закодированные данные после слова Basic, которое определяет схему авторизации.

Передача данных для авторизации в URL

Данные для авторизации могут быть переданы в URL.

triangle-exclamation
circle-info

Логин и пароль должны быть URL-encoded, если содержат спецсимволы, например: @, :, /, #, ?, %.

username = [email protected] password = p@ss:word

URL-encoded: user%40example.com:p%40ss%3Aword

Работа с действием

В инструкции бота необходимо прописать вызов функции действия и передачу номера заказа в аргумент этой функции.

Бот выполнит запрос по API к Вашей базе данных и выведет клиенту информацию, которую получит от базы данных.

circle-info

Формат и объем информации, который будет доступен при запросе определяется при проектировании API.

Last updated

Was this helpful?