Пример за комуникация между 1C и месинджъра на Telegram

пример

В тази статия ще разгледаме следното:

  • HTTP връзка;
  • Четене на JSON за версия 1C 8.3.6 и по-нова, както и аналог на JSON за версия 1C под 8.3.6;
  • Свързване на манипулатор на чакане;
  • Някои основни характеристики на API на Telegram;
  • Как да създадете бот за Telegram;
  • Програмно създаване на дървовидни колони в управляван формуляр.

1. Регистрация на бот

Първо, нека регистрираме бот, да вземем неговия идентификатор - токен. Telegram създаде специален бот за това - @BotFather.

процедурата

Добавяме го към контакта. Получаваме списък с неговите команди, като напишем him / start.

Въведете командата /newbot - ботът ще ви помоли да измислите име за нашия нов бот (трябва да завършва с "bot"). BotFather ще предостави маркера на бота и връзка за добавяне на бота към контактите. Проверете получения токен чрез връзката api.telegram.org/bot /getMe

Това по принцип е достатъчно.

2. Създаване на обработка в 1C

Нека създадем външна обработка. Нека добавим детайлите за обработка на низа с променлива дължина "Bot", "Token", "Server".

защото Ние няма да обвързваме обработката с конкретна конфигурация, тогава ще съхраняваме списъка с разбираеми команди в табличната част на обработката „Таблица с разбираеми команди“ (и така по принцип командите могат да се съхраняват в конфигурационната директория).

Реквизити за низ: "Име", "Действие за изпълнение", "Параметър", "Описание"

версия

По същата причина потребителските команди (тези, които той ще напише на бота) ще се съхраняват в табличната част на „Потребителски команди“ по същата причина (ако не направите обработката универсална, тогава, разбира се, е за предпочитане да използвате информационния регистър - освен това ще посочим примери в списъците с кодовеи за информационния регистър също).

Подробности за PM: цифрово "chat_id", "date", булево "Done" и низ "Command".

комуникация

Сега нека създадем формуляр за управлявана обработка, да го зададем като основен и да поставим детайлите „Bot“ и „Token“ (по избор, но за яснота):

версия

Ще създадем и атрибут на формата "Дърво" - тип "Дърво на стойностите". Ще покаже чатове. За по-голяма яснота ще го покажем във формуляра. Дървовидните колони ще бъдат създадени програмно (вижте по-долу).

За събитието на формуляра OnCreateAtServer добавете процедура:

Нека създадем команда на формуляра "ShowMessages", да я покажем във формуляра като бутон и манипулатор на команда:

Моля, обърнете внимание, че за протокола "https" портът е посочен като 443.

Ако използвате версия 1C 8.3.6 и по-нова, тогава в процедуратаReadBinaryResponseData()ще използваме новия обектReadJSON().

В процедуратаFillRS()ще попълним табличната част на „Потребителски екипи“ (или информационния регистър). (код на процедурата по-долу).

ПроцедураFillStructureFromJSONResponse()запълва дървото на чата:

Ако използвате версия на 1C под 8.3.6, тогава процедуратаReadBinaryResponseData()ще бъде както следва:

Както вече споменахме, в процедуратаFillPC()ще попълним табличната част на „Потребителски екипи“ (или информационния регистър). (код на процедурата по-долу).

ПроцедураFillStructureFromJSONResponse()е анализатор на JSON и рекурсивно попълване на дърво за версии под 1C 8.3.6:

Сега ще опишем процедурата, която попълва табличната част на „Потребителски екипи“ или информационния регистър:

За да направим това, използваме две Unicode функции - анализатор (необходим е само за 1C версия под 8.3.6):

В процедураFillPC()се извиква функциятаRunBotCommand(RegisterRecord, Parameter), къдетоRegisterRecord е ред от табличната част на таблицата с разбираеми команди (или запис на вашия информационен регистър). Параметър – параметър на командата (това, което потребителят е написал на бота).

ТукOutputSystemInformation()- показва информация от базата данни 1C. В нашия пример ботът може да изпрати информация до потребител в Telegram:

  • относно версията на операционната система;
  • относно версията на 1C:Enterprise 8, използвана в . . . .(например 8.2.9.200);
  • Уникалният идентификатор на клиента. За даден компютър и даден потребител на операционна система идентификаторът е един и същ, независимо от информационната база и потребителя на информационната база;
  • относно уеб браузъра (userAgent);
  • относно размера на RAM;
  • ID на процесора;
  • вида на платформата, върху която се извършва работата.

Всичко, което направихме, ще работи само когато потребителят щракне върху бутона „Показване на публикации“.

За да работи всичко автоматично, по-добре е да използвате фонова задача. Но тъй като нашата обработка не е обвързана с конкретна база данни и с конкретна конфигурация. След това ще свържем манипулатора на чакане.

Нека създадем команда за формуляр "RunBackgroundTasks", поставете съответния бутон върху формуляра. Манипулатор на команди:

Това е всичко - приложена обработка.

Специални благодарности на потребителя Infostart igo1 - преобразуване от Unicode (Unicode) в низ.

Основата на 1C JSON парсер за версия 1C под 8.3.6 е взета от тук.