Конфигурация
- Slack приложение, которое инициирует API вызовы
- AWS Lambda функция с публичным URL
- Веб-сервер 1C с опубликованным HTTP сервисом
- 1С база данных как процессор и хранитель данных - подойдет любая из версий платформы 8.3 за последние годы т.к. используются только HTTP-сервис. Тестировалось на 8.3.21.
AWS Lambda конфигурация:
- создайте новую Lambda функцию в том же регионе, где находится 1C веб-сервер
- используйте Python 3.x
- создайте новый Function URL (страница Configuration) - этот URL будет использован Slack в качестве цели API запросов
- добавите Python код для проксирования запросов (замените целевой адрес 1С веб-сервера)
import json import urllib3 import os def lambda_handler(event, context): http = urllib3.PoolManager() r = http.request('POST', 'http://<1C:Enterprise Web Server>/slack/hs/slack/customer-form', headers={'Content-Type': 'application/json'}, body=json.dumps(event)) result = r.data return { 'statusCode': 200, 'headers': {'Content-Type': 'application/json'}, 'body': result }
Создайте новое Slack приложение
Наиболее простой вариант это использовать Slack App Manifest - измените URL на адрес AWS Lambda публичный URL.
Опубликуйте приложение в своем workplace и добавите к тому каналу, куда нужно будет отправлять результаты.
display_information:
name: Slack-1C
features:
bot_user:
display_name: Slack-1C
always_online: false
slash_commands:
- command: /create-new-customer
url: https://your-lambda-id.lambda-url.us-west-2.on.aws/
description: Create new customer directly from Slack
should_escape: false
oauth_config:
scopes:
bot:
- commands
- chat:write
- incoming-webhook
settings:
interactivity:
is_enabled: true
request_url: https://your-lambda-id.lambda-url.us-west-2.on.aws/
org_deploy_enabled: false
socket_mode_enabled: false
token_rotation_enabled: false
Создайте и опубликуйте 1С приложение
Используйте slack
в качестве имени веб-приложения.
Заполните две константы:
AccessToken
-Bot User OAuth Token
токен со страницыOAuth & Permissions
ChannelId
- ИД целевого канала куда отправлять результаты
Все должно быть готово для использования. Журнал логов в 1C содержит некоторую информацию для помощи в разборе ошибок.
Вызвать только что созданную slash-комманду
Появится форма для создания нового клиента - структура полностью формируется в 1С
Заполнить все поля
НажатьSave to 1C
Ответ от 1С возвращается в виде отдельного сообщения
Созданные элементы справочника в 1С
Лицензия - MIT
Оригинальная публикация на GitHub.