Se ha escrito mucho sobre la integración de Telegram y 1C. Pero no he visto ninguna instrucción completa sobre la instalación y configuración de webhooks. Intentaré escribirla.
Para todo esto necesitaremos (o sería más correcto decir, que utilicé):
- Apache 2.2.24
- OpenSSL (que viene con la instalación de Apache)
- 1C (con los módulos) de un servidor web)
- Tu propio dominio
- Un bot creado en Telegram (no describiré su creación, ya que es bastante trivial)
Se supone que todo el software está instalado.
Así que, empecemos por obtener el certificado. Abrimos la línea de comandos y ejecutamos 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 — clave privada del certificado. Se usará en Apache
YOURPUBLIC.pem — clave pública del certificado. Se usará al registrar el webhook
YOURDOMAIN.EXAMPLE — dirección de tu dominio con el webhook. ¡Debería coincidir exactamente con la dirección del webhook!
Después de ejecutar este código, aparecerán archivos de claves en la carpeta openssl (para mí está en "C:Program FilesApache Software FoundationApache2.2bin").
Los copié en la carpeta conf de Apache.
Pasemos a la configuración de Apache.
He visto muchos métodos diferentes. A mí me funcionó el siguiente:
Se añadieron las siguientes líneas en httpd.conf:
Listen 443 para que Apache 'escuche' el puerto 443.
El bloque <IfModule ssl_module> se modificó de la siguiente manera:
<IfModule ssl_module>
SSLMutex default
SSLSessionCache none
</IfModule>Al final se añadieron líneas donde indico las rutas al certificado:
SSLEngine On
SSLCertificateFile conf/YOURPUBLIC.pem
SSLCertificateKeyFile conf/YOURPRIVATE.keyY descomentar la línea:
LoadModule ssl_module modules/mod_ssl.so En la configuración, creamos un servicio HTTP. Este será el que responda a Telegram y procese sus solicitudes.
En mi caso, se indicaron los siguientes parámetros:
Nombre: TGWebhook
URL raíz: webhook
Reutilización de sesiones: No usar (no funcionó en modo automático)
Tiempo de vida: 20
Plantillas de URL: se creó una plantilla 'Cualquiera' con dos métodos: GET y POST



Los manejadores de métodos se crean por defecto. En el manejador POST añadiré lo siguiente, solo para probar la conexión:
Función CualquierPOST(Solicitud)
EnviarMensajePrueba(""); //chat_id
Respuesta = Nuevo ServicioHTTPRespuesta(200);
Retornar Respuesta;
FinFunción
&EnElServidor
Procedimiento EnviarMensajePrueba(Chat)
Mensaje = "Mensaje de prueba";
Token = ""; //Tu token de telegram
Servidor = "api.telegram.org";
Recurso = "bot" + Token + "\/sendMessage?chat_id=" + StrReemplazar(Formato(Chat, "CD=; CS=; CRG=."), ".", "") + "&text=" + Mensaje;
Conexión = Nuevo ServicioHTTP(Servidor,443,,,,,Nuevo ConexiónSeguraOpenSSL());
Solicitud = Nuevo SolicitudHTTP(Recurso);
Respuesta = Conexión.Obtener(Solicitud);
FinProcedimientoSolo queda publicar la base y vincular el webhook.
La publicación se hace como siempre, solo es necesario agregar las casillas a las publicaciones del servicio HTTP:

En el último paso vincularemos nuestro 1C a Telegram. Para esto, utilicé una simple página html con el siguiente código:
<html>
<body>
<form action="https://api.telegram.org/bot<ЗдесьДолженБытьТокен>/setwebhook" method="post" enctype="multipart/form-data">
Seleccione el certificado para cargar:
<input type="file" name="certificate" id="fileToUpload">
URL: <input type="text" name="url" value="https://<YOURWEBSITE>/<YOUR_PHP_URL>"><br>
<input type="submit" value="Cargar certificado" name="submit">
</form>
</body>
</html>En el formulario simplemente seleccionamos la clave pública e introducimos la ruta completa a nuestro servicio http. Recuerdo que la ruta completa al servicio se verá de la siguiente manera:
Por favor, no me critiquen por el código, algunas cosas se hicieron de forma hardcode, ya que todo fue realizado exclusivamente con fines de demostración.
La publicación fue escrita porque no encontré ningún ejemplo funcional sobre el trabajo con webhooks en el sitio, excepto el Constructor de bots de Telegram. Pero es de pago y, posiblemente, no a todos les resulte útil en esta forma.
En el archivo hay una instalación de apache 2.2.24 junto con Openssl (por alguna razón, la búsqueda de esto me llevó mucho tiempo), un archivo html para la registro del webhook, un archivo de configuración de apache y configuración cf con el servicio http y un ejemplo de envío de un mensaje de prueba. Su descarga no es obligatoria, ya que todo el contenido está en el artículo.
Fuente: habr.com
