电报+ 1C + Webhooks + Apache +自签名证书

关于Telegram和1C的集成,写了很多行。但是我从没看到关于安装和配置Webhooks的完整说明。我会尝试写它。

为此,我们需要所有这些(或者说我所用的东西会更正确):

  1. 阿帕奇2.2.24
  2. OpenSSL(包含在Apache安装中)
  3. 1C(带有Web服务器模块)
  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 Files \ Apache Software Foundation \ Apache2.2 \ bin”)。

我将它们复制到Apache conf文件夹。

让我们继续配置Apache。

我见过很多不同的方式。以下对我

有用:将以下行添加到httpd.conf中:

Listen 443 

这样Apache就会“监听”端口443。

<IfModule ssl_module>块具有以下形式:

<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服务。将由他来答复电报并处理他的上诉。

在我的情况下,指定了以下参数:

名称:TGWebhuk RootURL
:webhook
会话重用:不使用(我不使用自动模式)
寿命: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附加到电报中。为此,我使用了一个带有以下代码的简单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服务的完整路径。我提醒您,该服务的完整路径应如下所示:

YourDomain / BaseName / hs / ServiceName / v1

请不要踢代码,某些事情是有意通过硬编码完成的,因为 所有这些都是出于演示目的。

该出版物之所以写是因为 除了Telegram bot构造函数外,我还没有在该站点上找到任何有关处理Webhooks的工作示例。但是它是有偿的,也许并不是每个人都需要这种形式。

该归档文件包含Apache 2.2.24和Openssl的安装(由于某种原因,我花了很长时间才找到它),用于注册Web钩子的html文件,带有http服务的Apache配置文件和cf配置以及发送测试消息的示例。可以选择下载,因为 所有内容均在文章中。

All Articles