Telegram + 1C + Webhooks + Apache + 自签名证书

关于 Telegram 和 1C 的集成已经写了很多文章。 但我没有看到安装和配置 webhook 的完整说明。 我会尝试写一下。

对于这一切,我们需要(或者说我用过什么会更正确):

  1. 阿帕奇2.2.24
  2. OpenSSL(包含在 Apache 安装中)
  3. 1C(带模块) 网络服务器)
  4. 您的域
  5. 在 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

Telegram + 1C + Webhooks + Apache + 自签名证书

Telegram + 1C + Webhooks + Apache + 自签名证书

Telegram + 1C + Webhooks + Apache + 自签名证书

默认情况下会创建方法处理程序。 我将向 POST 处理程序添加以下内容,只是为了检查连接:

Функция ЛюбойPOST(Запрос)

	ВыслатьТестовоеСообщение(""); //chat_id
	Ответ = Новый HTTPСервисОтвет(200);
	Возврат Ответ;
	
КонецФункции


&НаСервере
Процедура ВыслатьТестовоеСообщение(Чат)
	
		Сообщение = "Тестовое сообщение";
		Токен = "";//Ваш токен telegram
		Сервер = "api.telegram.org";
	    Ресурс = "bot" + Токен + "/sendMessage?chat_id=" + СтрЗаменить(Формат(Чат, "ЧДЦ=; ЧС=; ЧРГ=."), ".", "") + "&text=" + Сообщение;
   		Соединение  =  Новый HTTPСоединение(Сервер,443,,,,,Новый ЗащищенноеСоединениеOpenSSL());
		Запрос = Новый HTTPЗапрос(Ресурс);
		Ответ = Соединение.Получить(Запрос);
	
КонецПроцедуры

剩下的就是发布数据库并附加 Webhook。

发布一如既往,您只需在 HTTP 服务发布中添加复选框即可:

Telegram + 1C + Webhooks + Apache + 自签名证书

最后一步是将我们的 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 服务的完整路径。 让我提醒您,该服务的完整路径如下所示:

您的域名/数据库名称/hs/服务名称/v1

请不要踢代码,有些东西是故意硬编码的,因为...... 这一切只是为了演示目的。

该出版物的撰写是因为除了 Telegram Bot Builder 之外,我在网站上没有找到任何使用 Webhook 的工作示例。 但它是付费的,也许并不是每个人都需要这种形式。

该存档包含 Apache 2.2.24 和 Openssl 的安装(由于某种原因我花了很长时间才找到它)、一个用于注册 webhook 的 html 文件、一个 Apache 配置文件和一个带有 http 服务的 cf 配置以及一个示例发送测试消息。 不需要下载,因为所有内容都在文章中。

来源: habr.com

为具有 DDoS 保护、VPS VDS 服务器的站点购买可靠的主机 🔥 购买具备 DDoS 防护的可靠网站托管服务,包括 VPS 和 VDS 服务器 | ProHoster