Telegram + 1C + Webhook + Apache + 自己署名証明書

Telegram と 1C の統合については、多くの文章が書かれています。しかし、Webhook のインストールと構成に関する完全な手順はどこにもありませんでした。書いてみます。

これらすべてのために必要なものは次のとおりです (または、私が使用したものという方が正確です)。

  1. Apacheの2.2.24
  2. OpenSSL (Apache インストールに含まれています)
  3. 1C(モジュール付き) ウェブサーバー)
  4. あなたのドメイン
  5. 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」テンプレートを作成しました。

Telegram + 1C + Webhook + Apache + 自己署名証明書

Telegram + 1C + Webhook + Apache + 自己署名証明書

Telegram + 1C + Webhook + Apache + 自己署名証明書

メソッド ハンドラーはデフォルトで作成されます。接続を確認するために、POST ハンドラーに次のコードを追加します。

Функция ЛюбойPOST(Запрос)

	ВыслатьТестовоеСообщение(""); //chat_id
	Ответ = Новый HTTPСервисОтвет(200);
	Возврат Ответ;
	
КонецФункции


&НаСервере
Процедура ВыслатьТестовоеСообщение(Чат)
	
		Сообщение = "Тестовое сообщение";
		Токен = "";//Ваш токен telegram
		Сервер = "api.telegram.org";
	    Ресурс = "bot" + Токен + "/sendMessage?chat_id=" + СтрЗаменить(Формат(Чат, "ЧДЦ=; ЧС=; ЧРГ=."), ".", "") + "&text=" + Сообщение;
   		Соединение  =  Новый HTTPСоединение(Сервер,443,,,,,Новый ЗащищенноеСоединениеOpenSSL());
		Запрос = Новый HTTPЗапрос(Ресурс);
		Ответ = Соединение.Получить(Запрос);
	
КонецПроцедуры

残っているのは、データベースを公開して Webhook をアタッチすることだけです。

公開はいつものように行われます。HTTP サービスの公開にチェックボックスを追加するだけです。

Telegram + 1C + Webhook + Apache + 自己署名証明書

最後のステップは、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 サービスへのフル パスを入力するだけです。サービスへの完全なパスは次のようになることを思い出してください。

あなたのドメイン/データベース名/hs/サービス名/v1

コードをキックしないでください。一部のものは意図的にハードコーディングされています。これはすべてデモンストレーションのみを目的として行われました。

この出版物が書かれた理由は、 Telegram Bot Constructor を除いて、サイト上で Webhook を操作する実際の例は 1 つも見つかりませんでした。しかし、それは有料であり、おそらく誰もがこの形式でそれを必要とするわけではありません。

アーカイブには、Apache 2.2.24 と Openssl のインストール (何らかの理由で、見つけるのに時間がかかりました)、Webhook を登録するための HTML ファイル、Apache 構成ファイル、http サービスを使用した cf 構成、およびサンプルが含まれています。テストメッセージの送信について。ダウンロードする必要はありません。すべての内容は記事内にあります。

出所: habr.com

DDoS 保護機能を備えた信頼性の高いサイト用ホスティング、VPS VDS サーバーを購入する 🔥 DDoS攻撃対策付きの信頼性の高いウェブサイトホスティング、VPS/VDSサーバーを購入しましょう | ProHoster