从Engee发送信息到Telegram
此示例讨论如何使用DotEnv包。jl和电报。jl用于通过Telegram机器人自动发送有关模拟进度和结果的报告。
导言
我们已经考虑过[与Telegram合作](https://engee.com/community/ru/catalogs/projects/detektor-zvuka-v-telegram-bote )在Engee中,嵌入在ESP8266上的Engee模型生成的代码接收命令并向Telegram bot发送报告。 此外,在其中一个[最近的例子](https://engee.com/community/ru/catalogs/projects/api-engee ),我们提供了从外部应用程序通过API管理Engee的必要材料。 但是,外部APIEngee允许您仅使用[软件控制]与模型交互(https://engee.com/helpcenter/stable/ru/modeling/programmatic-modeling.html ),这可能看起来不像是这样全面,灵活或简单的外部集成方式。
在这个例子中,我们将深入研究Engee模型本身-我们将让它有机会通过向Telegram频道发送消息来处理模拟结果并报告其工作。
环境变量
要与机器人和电报通道进行交互,我们需要两个变量,分别是在创建时发出的机器人令牌和易于进入应用程序的通道id。 这两个变量都将在环境配置文件-中正确定义。恩维 它没有显示在Engee文件浏览器中,但它在那里。 Engee不会在文件浏览器中显示以点开头的文件。
为了使示例工作,您需要获取自己的bot令牌和通道id,并将它们添加到。env文件。
]add DotEnv # 安装用于使用的软件包。env文件
下载文件内容 .env 从文件:
using DotEnv
cd(@__DIR__) # 转到示例文件夹
isfile(".env") && DotEnv.load!() # 正在下载。当前文件夹中的env
将必要的变量添加到工作区:
BOT_TOKEN = ENV["BOT_TOKEN"];
CHAT_ID = ENV["CHAT_ID"];
如果你在工作上有困难。env文件,可以在这里定义token和id。:
# BOT_TOKEN = '8555970365:AAF0fcmjsJxWIjVUFUmyKrVYv6TtjCT1jeI'
# CHAT_ID = '-1003547189719'
要非常小心-使用机器人令牌可能会导致失去对机器人的控制。
上面和文件中指定的令牌和id .env 它们是在准备示例后有意编辑的。
测试消息发送
让我们开始使用Telegram。 让我们安装电报.jl包,它为我们提供了几种使用Telegram API的方法。
]add Telegram
让我们准备发送数据:添加标点符号的屏幕,以便在发送之前由解析器正确处理它们。
EV = engee.version()
EV = replace(EV, r"([.-])" => s"\\\1")
向频道发送消息:
using Telegram, Telegram.API
TelegramClient(BOT_TOKEN; chat_id = CHAT_ID) # 创建具有通道访问权限的Telegram bot客户端
sendMessage(text = "*来自[Engee]的问候(https://engee.com/account /)\\!*n'engee。版本()`:\n>EV EV",
parse_mode = "MarkdownV2") # 使用Markdown标记支持发送消息
因此,我们将在通道中看到以下消息:
注意标记支持,以及发送消息中的标点符号转义。
在建模中使用Telegram API
现在让我们从[面向模型的设计]的角度继续进行Engee和Telegram的更有趣的集成(https://engee.com/helpcenter/stable/ru/explanation/model-based-design.html )。 考虑以下用户案例:
-您运行具有执行时间控制的模型-即在有条件的实时,
-你运行一个模型很长的执行时间,
-你运行一个"沉重"的模型。
在所有这些情况下,您很可能需要等待很长时间才能收到结果。 为了不浪费你的工作时间看图表的运动,你可以在[回调](https://engee.com/helpcenter/stable/ru/modeling/callbacks-engee.html ),并在空闲时间,休息一下阅读最新的[release-notes](https://engee.com/helpcenter/stable/ru/release-notes/2025/release-25.12.html )或[有趣的проекты](https://engee.com/community/ru/catalogs/projects/avtomaticheskaia-sborka-i-simuliatsiia-modeli )在Engee社区。 当您收到机器人的通知时,您将返回到模型。
本例的模型是正弦信号发生器。 执行时间控制在其设置中定义。 Engee试图以几乎等于真实的时间执行模型。
它的回调现在对我们感兴趣。 打开标签 PreLoadFunc:
它包含了我们已经熟悉的代码行。 接下来,在选项卡中 PostLoadFunc 我们拭目以待:
也就是说,在打开模型后,将向Telegram频道发送有关使用其数据打开模型的通知。 接下来,标签 StartFunc:
最有趣的是在标签上 StopFunc :
让我们运行模型,看看它是如何工作的。:
<视频src="https://files.kpm-ritm.ru/video/engee_telegram_test.mp4"控制宽度=100%>
一切都按计划进行。 让我们穿上一个模型,去吃午饭。
结论
此外,还可以实现"反馈"-例如,通过bot命令管理Engee帐户,计算和建模。 您可以将此模型用作项目中自动化报表的模板。 只是不要忘记添加您的机器人令牌和电报频道ID。