关于 Telegram 和 1C 的集成已经写了很多文章。 但我没有看到安装和配置 webhook 的完整说明。 我会尝试写一下。
对于这一切,我们需要(或者说我用过什么会更正确):
- 阿帕奇2.2.24
- OpenSSL(包含在 Apache 安装中)
- 1C(带模块) 网络服务器)
- 您的域
- 在 Telegram 中创建了机器人(我不会描述它的创建,因为它非常琐碎)
假设您已安装所有软件。
那么,让我们从获取证书开始吧。 打开命令行并执行以下代码:
openssl req -newkey rsa:2048 -sha256 -nodes -keyout YOURPRIVATE.key -x509 -days 365 -out YOURPUBLIC.pem -subj "/C=US/ST=New York/L=Brooklyn/O=Example Brooklyn Company/CN=YOURDOMAIN.EXAMPLE"在哪里:
YOURPRIVATE.key 是证书的私钥。 将在 Apache 中使用
YOURPUBLIC.pem 是证书的公钥。 将在注册 webhook 时使用
YOURDOMAIN.EXAMPLE - 使用 Webhook 的域地址。 它必须与 webhook 地址匹配!
执行此代码后,关键文件将出现在 openssl 文件夹中(对我来说是“C:Program FilesApache Software FoundationApache2.2bin”)。
我将它们复制到 Apache conf 文件夹中。
让我们继续设置 Apache。
我见过很多不同的方式。 以下对我有用:
以下行已添加到 httpd.conf 中:
Listen 443 为了让 Apache “监听”端口 443。
堵塞简化为以下形式:
<IfModule ssl_module>
SSLMutex default
SSLSessionCache none
</IfModule>在最后添加了几行,我在其中指示了证书的路径:
SSLEngine On
SSLCertificateFile conf/YOURPUBLIC.pem
SSLCertificateKeyFile conf/YOURPRIVATE.key并取消注释该行:
LoadModule ssl_module modules/mod_ssl.so 在配置中我们创建一个 HTTP 服务。 他将回复电报并处理他的请求。
就我而言,指定了以下参数:
名称:TGWebhook
RootURL:网络钩子
重用会话: 不使用 (自动模式对我来说不起作用)
续航时间:20
URL 模板:使用两种方法创建“任意”模板:GET 和 POST



默认情况下会创建方法处理程序。 我将向 POST 处理程序添加以下内容,只是为了检查连接:
Функция ЛюбойPOST(Запрос)
ВыслатьТестовоеСообщение(""); //chat_id
Ответ = Новый HTTPСервисОтвет(200);
Возврат Ответ;
КонецФункции
&НаСервере
Процедура ВыслатьТестовоеСообщение(Чат)
Сообщение = "Тестовое сообщение";
Токен = "";//Ваш токен telegram
Сервер = "api.telegram.org";
Ресурс = "bot" + Токен + "/sendMessage?chat_id=" + СтрЗаменить(Формат(Чат, "ЧДЦ=; ЧС=; ЧРГ=."), ".", "") + "&text=" + Сообщение;
Соединение = Новый HTTPСоединение(Сервер,443,,,,,Новый ЗащищенноеСоединениеOpenSSL());
Запрос = Новый HTTPЗапрос(Ресурс);
Ответ = Соединение.Получить(Запрос);
КонецПроцедуры剩下的就是发布数据库并附加 Webhook。
发布一如既往,您只需在 HTTP 服务发布中添加复选框即可:

最后一步是将我们的 1C 链接到 Telegram。 为此,我使用了一个简单的 html 页面,其中包含以下代码:
<html>
<body>
<form action="https://api.telegram.org/bot<ЗдесьДолженБытьТокен>/setwebhook" method="post" enctype="multipart/form-data">
Select Certificate to upload:
<input type="file" name="certificate" id="fileToUpload">
URL: <input type="text" name="url" value="https://<YOURWEBSITE>/<YOUR_PHP_URL>"><br>
<input type="submit" value="Upload Certificate" name="submit">
</form>
</body>
</html>在表单中,只需选择公钥并输入我们的 http 服务的完整路径。 让我提醒您,该服务的完整路径如下所示:
请不要踢代码,有些东西是故意硬编码的,因为...... 这一切只是为了演示目的。
该出版物的撰写是因为除了 Telegram Bot Builder 之外,我在网站上没有找到任何使用 Webhook 的工作示例。 但它是付费的,也许并不是每个人都需要这种形式。
该存档包含 Apache 2.2.24 和 Openssl 的安装(由于某种原因我花了很长时间才找到它)、一个用于注册 webhook 的 html 文件、一个 Apache 配置文件和一个带有 http 服务的 cf 配置以及一个示例发送测试消息。 不需要下载,因为所有内容都在文章中。
来源: habr.com
