PHPを使用したTelegramとSlackのチャットボットの開発

一般的な情報


この記事では、 CleanTalkスパム対策サービスを使用してIP |電子メールのスパムをチェックする例を使用して、TelegramおよびSlackサービス用の簡単なチャットボットを作成する方法について説明します。







電報


最初のステップは、独自のボット(この場合は@CleanTalkBot)を作成することです-この目的のために、@ BotFatherボットはTelegramに存在します。 Telegramアカウントに追加し、/ newbotコマンドを設定します。 ボットは、ボットの名前を入力するように求めます-名前を入力します。 その後、ボットのユーザー名を入力します-ボットの名前とボットのユーザー名を同じにします-ユーザー名はボットまたはボットで終わる必要があります-たとえば、HabrArticleBotまたはCleanTalkBot。 ユーザー名を入力すると、ボットが作成され、トークンが付与されます。トークンは、今後識別に使用されます。









2番目のステップは、いわゆるwebhookのインストールです。つまり、チャットボットがユーザーから受け取ったリクエストのハンドラーです。 ユーザーがチャットボットにコマンドを設定すると、Telegramはwebhookとして設定されたアドレスに連絡し、ユーザーメッセージとサービス情報を送信し、ハンドラーが応答を生成してTelegramに送信します。その後、Telegramはユーザーに応答します。 これは、ターミナルでcurlコマンドを使用して行われます-







curl -d "url=https://example.com/telegramwaiter.php" https://api.telegram.org/botYOUR_TELEGRAM_TOKEN/setWebhook
      
      





YOUR_TELEGRAM_TOKENは、以前に@BotFatherによって発行されたトークンと同じトークンであり、 https: //example.com/telegramwaiter.phpは、Telegramがリクエストで連絡するアドレスです。 応答として、Telegramは次のようなjson文字列を返します。







 {"ok":true,"result":true,"description":"Webhook is set"}
      
      





つまり、チャットボットのハンドラーが正常にインストールされました。







ここで、Telegramがhttpsでのみ機能することを追加する必要があります-自己署名証明書ではなく特別な組織が発行した証明書がある場合、自己署名証明書を使用する場合はすべて問題ありません-ここのドキュメントを参照してくださいhttps://core.telegram.org/ボット/自己署名







3番目のステップ-リクエストプロセッサ自体をTelegram telegramwaiter.phpから作成します-PHPのサンプルスクリプトは次のようになります







 <?php set_time_limit(0); //   $botToken = "YOUR_TELEGRAM_TOKEN"; $website = "https://api.telegram.org/bot".$botToken; //    Telegram $content = file_get_contents("php://input"); $update = json_decode($content, TRUE); $message = $update["message"]; //     Telegram  ,     $chatId = $message["chat"]["id"]; $text = $message["text"]; //    /start if ($text == '/start') { $welcomemessage = 'Welcome!!! Check IP/Email for spam giving "check IP/Email" command'; //      Telegram  file_get_contents($website."/sendmessage?chat_id=".$chatId."&text=".$welcomemessage); } ?>
      
      





順序は次のとおりです。チャット内のユーザーから$テキスト変数でコマンドを受け取り、目的のロジックに従ってメッセージを作成し、file_get_contents()関数を使用してユーザーに返します。







すべてがどのように機能するか、Telegramに@CleanTalkBotボットを追加して少し楽しんでください -コマンドcheck IP | Emailを入力し、指定されたIP | Emailがスパムかどうかに関する情報を取得してください。







応答例







 Email stop_email@example.com is BLACKLISTED. Frequency 999. Updated Apr 24 2019. https://cleantalk.org/blacklists/stop_email@example.com.
      
      





たるみ



Slackサービスには、チャットボットを作成するためのわずかに異なるアプローチがあります。







https://api.slack.com/apps/newにアクセスして、新しいSlackアプリケーションを作成します。









AppNameはアプリケーションの名前です。

短い説明 -アプリケーションの短い説明。

Slackでのアプリの動作を説明してください -アプリケーションの完全な説明。

Slackアプリのインストール方法に関する明確な指示へのリンク。

Slackアプリのサポートへのリンク -このアプリケーションのインストールと使用法を説明するページへの2つのリンク。







https://api.slack.com/appsのアプリケーションのリストで、アプリケーション選択し、右側のメニューの[スラッシュコマンド]リンクに移動して、[新しいコマンドを作成]ボタンをクリックします。









表示されるフォームでは、次のフィールド









コマンド -/で始まるコマンドを入力します(例:/ ctcheck)。







リクエスト URL-コマンドリクエストハンドラのURL -webhook Telegramの類似物(たとえばhttps://cleantalk.org/slackwaiter.php )。







短い説明 -作成されたコマンドの助けを借りてできることの短い説明。







コマンドを保存します。 自己署名証明書はSlackサービスでサポートされていませんが、サイトはhttpsで動作する必要があります。







コマンドリストページで識別用のトークンを取得できます。コマンドのリストの下に確認トークンフィールドがあり、YOUR_SLACK_TOKENとして表示されます。







slackwaiter.phpハンドラーをPHPで記述します







 <?php set_time_limit(0); //    Slack        Slack if ($_POST['token'] == 'YOUR_SLACK_TOKEN') { // $param -   ,     //    /ctcheck 127.0.0.1 //  $param = 127.0.0.1 $param = $_POST['text']; //         $slackresponse = '   '; } else $slackresponse = ''; $response = array(); $response['text'] = $slackresponse; header('Content-Type: application/json'); echo json_encode($response); ?>
      
      





次に、 https: //api.slack.com/docs/slack-buttonに移動し、 [Slackボタン追加]セクションで、着信Webhookとコマンドのチェックボックスをチェックします。Slackは、他のチームがアプリケーションを統合できるボタンをクリックして、ボタンのhtmlコードを生成しますSlackアカウント。







上記のボタンをサイトに配置します-クリックすると、次の画像が開きます









承認するには、アプリケーションを使用できるチャネルを選択する必要があります。







Slackの許可ボタンをクリックすると、ユーザーはリダイレクトURIページにリダイレクトします。リダイレクトページは、ここ(開発者)がhttps://api.slack.com/appsで設定し、アプリケーションを選択して、App Credentialsリンクをクリックします。次の図が表示されます。









Slackはユーザーをこのページにリダイレクトするだけでなく、後でスクリプトで処理する必要がある値を持つコードGET変数を追加します-たとえば







 https://cleantalk.org/authscript.php?code=Slack_Code
      
      





以下は、authscript.phpスクリプトコードのサンプルです。 CLIENT_IDおよびCLIENT_SECRETは、前の画像の対応するフィールドから取得します。







 <?php if (isset($_GET['code'])) { $client_id = 'CLIENT_ID'; $client_secret = 'CLIENT_SECRET'; $code = $_GET['code']; $response = file_get_contents("https://slack.com/api/oauth.access?client_id=".$client_id."& client_secret=".$client_secret."&code=".$code); $responsearr = json_decode($response, true); if (isset($responsearr['team_name'])){ header('Location: https://'.$responsearr['team_name'].'.slack.com'); exit(); } else { echo '.'; exit(); } } else exit(); ?>
      
      





順序は次のとおりです。SlackGETからコード変数を取得し、さらに2つのパラメーターclient_idとclient_secretを使用して、GET要求をページhttps://slack.com/api/oauth.accessに送信します 。 応答として、Slackは多くのフィールドを持つJSON文字列を送信します-このようなもの







 {'ok': true, 'team_name': 'your_team_name'}
      
      





その後、単にチーム名を取得し、ユーザーをチームのメインページhttps://your_team_name.slack.comにリダイレクトします -アプリケーションが承認されたら、アプリケーションのコマンドを使用できます。







Cleantalkサービスチームは、この情報がチャットボットの開発に興味がある人にとって役立つことを願っています。








All Articles