Telegram と 1C の統合については、多くの文章が書かれています。しかし、Webhook のインストールと構成に関する完全な手順はどこにもありませんでした。書いてみます。
これらすべてのために必要なものは次のとおりです (または、私が使用したものという方が正確です)。
- Apacheの2.2.24
- OpenSSL (Apache インストールに含まれています)
- 1C(モジュール付き) ウェブサーバー)
- あなたのドメイン
- Telegram でボットを作成しました (非常に簡単なため、作成については説明しません)
すべてのソフトウェアがインストールされていることを前提としています。
それでは、証明書を取得することから始めましょう。コマンドラインを開き、次のコードを実行します。
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"ここで:
YOURPRIVATE.key は証明書の秘密キーです。 Apacheで使用されます
YOURPUBLIC.pem は証明書の公開キーです。 Webhookの登録時に使用されます
YOURDOMAIN.EXAMPLE - Webhook を使用するドメインのアドレス。 Webhook アドレスと一致する必要があります。
このコードを実行すると、キー ファイルが openssl フォルダーに表示されます (私の場合、それは「C:Program FilesApache Software FoundationApache2.2bin」です)。
これらを Apache conf フォルダーにコピーしました。
Apacheの設定に進みましょう。
私はさまざまな方法を見てきました。以下は私にとってうまくいきました:
次の行が httpd.conf に追加されました。
Listen 443 Apache がポート 443 を「リッスン」できるようにするためです。
ブロック次の形式に変換されます。
<IfModule ssl_module>
SSLMutex default
SSLSessionCache none
</IfModule>最後に、証明書へのパスを示す行が追加されています。
SSLEngine On
SSLCertificateFile conf/YOURPUBLIC.pem
SSLCertificateKeyFile conf/YOURPRIVATE.keyそして、次の行のコメントを解除します。
LoadModule ssl_module modules/mod_ssl.so 構成では、HTTP サービスを作成します。電報に応答し、彼の要求を処理するのは彼です。
私の場合、次のパラメータが指定されています。
名前: TGWebhook
ルートURL: Webhook
セッションの再利用: 使ってはいけません (自動モードではうまくいきませんでした)
ライフタイム: 20
URL テンプレート: GET と POST の 2 つのメソッドを使用して「Any」テンプレートを作成しました。



メソッド ハンドラーはデフォルトで作成されます。接続を確認するために、POST ハンドラーに次のコードを追加します。
Функция ЛюбойPOST(Запрос)
ВыслатьТестовоеСообщение(""); //chat_id
Ответ = Новый HTTPСервисОтвет(200);
Возврат Ответ;
КонецФункции
&НаСервере
Процедура ВыслатьТестовоеСообщение(Чат)
Сообщение = "Тестовое сообщение";
Токен = "";//Ваш токен telegram
Сервер = "api.telegram.org";
Ресурс = "bot" + Токен + "/sendMessage?chat_id=" + СтрЗаменить(Формат(Чат, "ЧДЦ=; ЧС=; ЧРГ=."), ".", "") + "&text=" + Сообщение;
Соединение = Новый HTTPСоединение(Сервер,443,,,,,Новый ЗащищенноеСоединениеOpenSSL());
Запрос = Новый HTTPЗапрос(Ресурс);
Ответ = Соединение.Получить(Запрос);
КонецПроцедуры残っているのは、データベースを公開して Webhook をアタッチすることだけです。
公開はいつものように行われます。HTTP サービスの公開にチェックボックスを追加するだけです。

最後のステップは、1C を Telegram にリンクすることです。このために、次のコードを含む単純な HTML ページを使用しました。
<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>フォームで公開キーを選択し、http サービスへのフル パスを入力するだけです。サービスへの完全なパスは次のようになることを思い出してください。
コードをキックしないでください。一部のものは意図的にハードコーディングされています。これはすべてデモンストレーションのみを目的として行われました。
この出版物が書かれた理由は、 Telegram Bot Constructor を除いて、サイト上で Webhook を操作する実際の例は 1 つも見つかりませんでした。しかし、それは有料であり、おそらく誰もがこの形式でそれを必要とするわけではありません。
アーカイブには、Apache 2.2.24 と Openssl のインストール (何らかの理由で、見つけるのに時間がかかりました)、Webhook を登録するための HTML ファイル、Apache 構成ファイル、http サービスを使用した cf 構成、およびサンプルが含まれています。テストメッセージの送信について。ダウンロードする必要はありません。すべての内容は記事内にあります。
出所: habr.com
