Telegram + 1C + Webhooks + Apache + Certificado autofirmado

Se escriben muchas líneas sobre la integración de Telegram y 1C. Pero en ninguna parte vi las instrucciones completas para instalar y configurar webhooks. Intentaré escribirlo.

Para todo esto necesitamos (o será más correcto decir lo que usé):

  1. Apache 2.2.24
  2. OpenSSL (incluido con la instalación de Apache)
  3. 1C (con módulos de servidor web)
  4. Dominio propio
  5. Bot creado en Telegram (no describiré su creación, porque es bastante trivial)

Se supone que todo el software que ha instalado.

Entonces, comencemos por obtener un certificado. Abra la línea de comando y ejecute el siguiente código:

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"

Donde:

YOURPRIVATE.key es la clave privada del certificado. Se usará en

apache YOURPUBLIC.pem, la clave pública del certificado. Se utilizará al registrar un webhook

YOURDOMAIN.EXAMPLE: la dirección de su dominio con un webhook. ¡Aún debe coincidir con la dirección del webhook!

Después de ejecutar este código, los archivos de clave aparecerán en la carpeta openssl (tengo este "C: \ Archivos de programa \ Apache Software Foundation \ Apache2.2 \ bin").

Los copié a la carpeta de configuración de Apache.

Pasemos a configurar Apache.

He visto muchas formas diferentes. Lo siguiente funcionó para mí:

Las siguientes líneas se agregaron a httpd.conf:

Listen 443 

para que el Apache "escuche" el puerto 443.

El bloque <IfModule ssl_module> tiene la siguiente forma:

<IfModule ssl_module>
SSLMutex default
SSLSessionCache none
</IfModule>

Al final, se agregan líneas donde indico la ruta al certificado:

SSLEngine On
SSLCertificateFile conf/YOURPUBLIC.pem
SSLCertificateKeyFile conf/YOURPRIVATE.key

Y descomenta la línea:

LoadModule ssl_module modules/mod_ssl.so 

En la configuración creamos un servicio HTTP. Será él quien responderá el telegrama y procesará sus apelaciones.

En mi caso, se especifican los siguientes parámetros:

Nombre: TGWebhuk RootURL
: webhook
Reutilización de sesión: No usar (no funcionaba con el modo automático)
Vida útil : 20
patrones de URL: cualquier patrón se creó con dos métodos:

imagen

imagen

imagen

se crean manejadores de métodos GET y POST defecto. Agregaré lo siguiente al controlador POST, solo para verificar la conexión:

 POST()

	(""); //chat_id
	 =  HTTP(200);
	 ;
	



&
 ()
	
		 = " ";
		 = "";//  telegram
		 = "api.telegram.org";
	     = "bot" +  + "/sendMessage?chat_id=" + ((, "=; =; =."), ".", "") + "&text=" + ;
   		  =   HTTP(,443,,,,, OpenSSL());
		 =  HTTP();
		 = .();
	

Queda por publicar la base de datos y adjuntar el webhook.

La publicación se realiza como siempre, solo debe agregar marcas de verificación a la publicación del servicio HTTP:

imagen

como último paso, adjuntaremos nuestro 1C al telegrama. Para esto, utilicé una página html simple con el siguiente código:

<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>

En el formulario, simplemente seleccione la clave pública e ingrese la ruta completa a nuestro servicio http. Le recuerdo que la ruta completa al servicio se verá así:

YourDomain / BaseName / hs / ServiceName / v1

Por favor, no patee el código, algunas cosas se hacen intencionalmente por código rígido, porque Todo esto se hizo únicamente con fines de demostración.

La publicación fue escrita porque No he encontrado un solo ejemplo de trabajo sobre el trabajo con webhooks en el sitio, a excepción del constructor de bot Telegram. Pero se paga y, tal vez, no todos lo necesitan de esta forma.

El archivo contiene la instalación de Apache 2.2.24 junto con Openssl (por alguna razón, me llevó mucho tiempo encontrarlo), un archivo html para registrar un enlace web, un archivo de configuración de Apache y una configuración cf con un servicio http y un ejemplo de envío de un mensaje de prueba. Es opcional descargar, porque Todo el contenido está en el artículo.

All Articles