Telegrama + 1C + Webhooks + Apache + Certificado autoassinado

Muitas linhas são escritas sobre a integração do Telegram e 1C. Mas em nenhum lugar vi as instruções completas para instalar e configurar webhooks. Vou tentar escrever.

Por tudo isso, precisamos (ou será mais correto dizer o que foi usado por mim):

  1. Apache 2.2.24
  2. OpenSSL (incluído na instalação do Apache)
  3. 1C (com módulos de servidor web)
  4. Domínio próprio
  5. Criado bot no Telegram (não descreverei sua criação, porque é bastante trivial)

Supõe-se que todo o software que você instalou.

Então, vamos começar obtendo um certificado. Abra a linha de comando e execute o seguinte 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"

Onde:

YOURPRIVATE.key é a chave privada do certificado. Ele será usado no

apache YOURPUBLIC.pem - a chave pública do certificado. Será usado ao registrar um webhook

YOURDOMAIN.EXAMPLE - o endereço do seu domínio com um webhook. Ainda deve corresponder ao endereço do webhook !!!

Depois de executar esse código, os arquivos principais aparecerão na pasta openssl (eu tenho este "C: \ Arquivos de Programas \ Apache Software Foundation \ Apache2.2 \ bin").

Copiei-os para a pasta conf do Apache.

Vamos seguir para a configuração do Apache.

Eu já vi muitas maneiras diferentes. O seguinte funcionou para mim:

As seguintes linhas foram adicionadas ao httpd.conf:

Listen 443 

para que o Apache "escute" a porta 443.

O bloco <IfModule ssl_module> tem o seguinte formato:

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

No final, são adicionadas linhas onde eu indico o caminho para o certificado:

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

E descomente a linha:

LoadModule ssl_module modules/mod_ssl.so 

Na configuração, criamos um serviço HTTP. Será ele quem responderá ao telegrama e processará seus apelos.

No meu caso, os seguintes parâmetros são especificados:

Nome: TGWebhuk RootURL
: webhook
Reutilização da sessão: Não use (não funcionou no modo automático)
Tempo de vida: 20
padrões de URL: qualquer padrão foi criado com dois métodos: os

imagem

imagem

imagem

manipuladores de métodos GET e POST são criados padrão. Adicionarei o seguinte ao manipulador POST, apenas para verificar a conexão:

 POST()

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



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

Resta publicar o banco de dados e anexar o webhook.

A publicação é feita como sempre, você só precisa adicionar marcas de verificação à publicação do serviço HTTP:

imagem

A última etapa é anexar nosso 1C ao telegrama. Para isso, usei uma página html simples com o seguinte 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>

No formulário, basta selecionar a chave pública e digite o caminho completo para o nosso serviço http. Lembro que o caminho completo para o serviço será semelhante a:

YourDomain / BaseName / hs / ServiceName / v1

Por favor, não chute o código, algumas coisas são intencionalmente feitas por código rígido, porque tudo isso foi feito apenas para fins de demonstração.

A publicação foi escrita porque Não encontrei um único exemplo de trabalho sobre como trabalhar com webhooks no site, exceto o construtor de bot do Telegram. Mas é pago e, talvez, nem todos precisem dessa forma.

O arquivo contém a instalação do Apache 2.2.24 junto com o Openssl (por algum motivo, demorei muito para encontrá-lo), um arquivo html para registrar um webhook, um arquivo de configuração do Apache e uma configuração cf com um serviço http e um exemplo de envio de uma mensagem de teste. É opcional fazer o download, porque todo o conteúdo está no artigo.

All Articles