Telegram + 1C + Webhooks + Apache + Certificado Autofirmado

Muitas linhas foram escritas sobre a integração do Telegram com o 1C. Mas não vi em nenhum lugar um guia completo sobre a instalação e configuração de webhooks. Vou tentar escrevê-lo.

Para tudo isso, precisamos (ou seria mais correto dizer, que foi utilizado por mim):

  1. Apache 2.2.24
  2. OpenSSL (incluso na instalação do Apache)
  3. 1C (com os módulos) servidor web)
  4. Seu próprio domínio
  5. Bot criado no Telegram (não vou descrever sua criação, pois é bastante trivial)

Supõe-se que todo o software esteja instalado.

Então, vamos começar com a obtenção do certificado. Abra o terminal 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 — chave privada do certificado. Será utilizada no Apache

YOURPUBLIC.pem — chave pública do certificado. Será utilizada ao registrar o webhook

YOURDOMAIN.EXAMPLE — endereço do seu domínio com o webhook. Deve coincidir com o endereço do webhook!!!

Após executar esse código, os arquivos de chave aparecerão na pasta openssl (para mim, é "C:Program FilesApache Software FoundationApache2.2bin").

Eu os copiei para a pasta conf do Apache.

Vamos para a configuração do Apache.

Eu vi muitas maneiras diferentes. A que funcionou para mim foi a seguinte:

Foram adicionadas as seguintes linhas ao httpd.conf:

Listen 443 

para que o Apache "escute" a porta 443.

O bloco <IfModule ssl_module> foi alterado da seguinte forma:

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

No final, foram adicionadas as linhas onde indico os caminhos 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. É ele que irá responder ao Telegram e processar suas solicitações.

No meu caso, foram especificados os seguintes parâmetros:

Nome: TGWebhook
URL raiz: webhook
Reutilização de sessões: Não usar (no modo automático, não funcionou para mim)
Tempo de vida: 20
Modelos de URL: criei um modelo "Qualquer" com dois métodos: GET e POST

Telegram + 1C + Webhooks + Apache + Certificado Autofirmado

Telegram + 1C + Webhooks + Apache + Certificado Autofirmado

Telegram + 1C + Webhooks + Apache + Certificado Autofirmado

Os manipuladores de métodos são criados por padrão. No manipulador POST, adicionarei o seguinte, apenas para verificar a conexão:

Função QualquerPOST(Requisição)

	EnviarMensagemTeste(""); //chat_id
	Resposta = Novo HTTPServiçoResposta(200);
	Retornar Resposta;
	
FimFunção


&NoServidor
Procedimento EnviarMensagemTeste(Chat)
	
		Mensagem = "Mensagem de teste";
		Token = ""; //Seu token telegram
		Servidor = "api.telegram.org";
	    Recurso = "bot" + Token + "\/sendMessage?chat_id=" + StrSubstituir(Formatar(Chat, "CDC=; CS=; CRG=."), ".", "") + "&text=" + Mensagem;
   		Conexão = Novo HTTPConexão(Servidor,443,,,,,Novo ConexãoSeguraOpenSSL());
		Requisição = Novo HTTPRequisição(Recurso);
		Resposta = Conexão.Obter(Requisição);
	
FimProcedimento

Resta publicar o banco e vincular o webhook.

A publicação é feita como sempre, basta adicionar as marcas de seleção para a publicação do serviço HTTP:

Telegram + 1C + Webhooks + Apache + Certificado Autofirmado

Na última etapa, iremos vincular nosso 1C ao Telegram. Para isso, usei uma simples página html com o seguinte código:

<html>
<body>

<form action="https://api.telegram.org/bot<ЗдесьДолженБытьТокен>/setwebhook" method="post" enctype="multipart/form-data">
    Selecione o certificado para fazer o 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="Fazer upload do certificado" name="submit">
</form>

</body>
</html>

Na forma, basta escolher a chave pública e inserir o caminho completo para o nosso serviço http. Lembro que o caminho completo para o serviço será assim:

SeuDominio/NomeBanco/hs/NomeServiço/v1

Peço desculpas pelo código, algumas coisas foram intencionalmente feitas em hardcode, pois tudo foi feito exclusivamente para fins de demonstração.

A publicação foi escrita, pois não encontrei nenhum exemplo funcional de trabalho com webhooks no site, além do Construtor de bots Telegram. Mas ele é pago e, possivelmente, não é necessário para todos nesse formato.

No arquivo está a instalação do apache 2.2.24 junto com Openssl (por algum motivo, a busca demorou muito), o arquivo html para registrar o webhook, o arquivo de configuração do apache e a configuração cf com o serviço http e um exemplo de envio de mensagem teste. O download não é obrigatório, pois todo o conteúdo está no artigo.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster