Пример за комуникация между 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 е взета от тук.