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):
- Apache 2.2.24
- OpenSSL (incluso na instalação do Apache)
- 1C (com os módulos) servidor web)
- Seu próprio domínio
- 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.keyE 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



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);
FimProcedimentoResta 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:

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