LaravelとBotManを使用してTelegramボットを構築する方法について、完全かつ包括的なガイドを日本語で説明します。
1. はじめに
Telegramボットは、Telegramメッセージングアプリケーション内でユーザーと自動的にやりとりを行うプログラムです。BotManは、複数のチャットプラットフォームをサポートするPHPのライブラリで、Telegramボットを簡単に構築できる強力なツールです。このガイドでは、LaravelフレームワークとBotManを使用して、Telegramボットを作成する方法をステップバイステップで解説します。
2. 必要なもの
- PHP(推奨バージョン:7.4以上)
- Composer(PHPパッケージ管理ツール)
- Laravel(バージョン8以上)
- Telegramアカウント
- BotManパッケージ
- ngrok(ローカルサーバーを公開するために必要)
- Telegram Botのトークン(後述する方法で取得)
3. Telegram Botの作成
まず、TelegramでBotを作成する必要があります。以下の手順で行います。
ステップ1: TelegramでBotFatherにアクセス
- Telegramを開き、「BotFather」を検索します。
- 「BotFather」とのチャットを開始し、
/newbotコマンドを入力します。 - ボットの名前とユーザー名(@付きのユニークな名前)を指定します。
- ボットが作成されると、BotFatherからボットの「APIトークン」が提供されます。このトークンは後で使用するので、必ずメモしておきます。
4. Laravelプロジェクトのセットアップ
次に、Laravelプロジェクトを作成します。
ステップ1: Laravelのインストール
bashcomposer create-project --prefer-dist laravel/laravel telegram-bot
ステップ2: ディレクトリに移動
bashcd telegram-bot
5. BotManパッケージのインストール
LaravelにBotManをインストールします。BotManはTelegramを含むさまざまなメッセージングプラットフォームに対応しています。
ステップ1: BotManパッケージのインストール
bashcomposer require botman/botman composer require botman/driver-telegram
ステップ2: BotMan設定ファイルの作成
BotManの設定を行うため、configフォルダに新しい設定ファイルを作成します。config/botman.phpというファイルを作成し、以下の内容を追加します。
phpreturn [
'telegram' => [
'token' => env('TELEGRAM_TOKEN'),
],
];
ステップ3: .envファイルにトークンを追加
.envファイルに、先ほどBotFatherから取得したTelegramボットのAPIトークンを追加します。
envTELEGRAM_TOKEN=your-telegram-bot-token
6. Webhookの設定
Telegramは、ボットにメッセージが送信されるとWebhooksを使用して通知します。そのため、Webhooksを設定する必要があります。
ステップ1: ngrokのインストールと起動
ローカル環境でWebhookをテストするために、ngrokを使用してローカルサーバーをインターネットに公開します。ngrokは公式サイトからインストールできます。
bashngrok http 8000
これにより、https://xxxxxx.ngrok.ioのようなURLが提供されます。このURLをTelegramにWebhookとして設定します。
ステップ2: Webhookエンドポイントの作成
routes/web.phpにWebhookを処理するためのルートを追加します。
phpuse BotMan\BotMan\BotMan;
use BotMan\BotMan\Messages\Conversations\Conversation;
Route::post('/botman', 'BotManController@handle');
次に、app/Http/Controllers/BotManController.phpを作成し、Webhookを処理するメソッドを実装します。
phpnamespace App\Http\Controllers;
use BotMan\BotMan\BotMan;
use BotMan\BotMan\Messages\Incoming\IncomingMessage;
use BotMan\BotMan\Messages\Outgoing\OutgoingMessage;
use BotMan\BotMan\Drivers\DriverManager;
use BotMan\BotMan\BotManFactory;
class BotManController extends Controller
{
public function handle()
{
$config = [
'telegram' => [
'token' => env('TELEGRAM_TOKEN'),
]
];
$botman = BotManFactory::create($config);
$botman->hears('こんにちは', function (BotMan $bot) {
$bot->reply('こんにちは!どうしましたか?');
});
$botman->listen();
}
}
ステップ3: WebhookをTelegramに設定
次に、Telegram APIを使用してWebhookを設定します。ngrokで提供されたURLをWebhookとしてTelegramに設定します。
bashcurl -X POST https://api.telegram.org/bot/setWebhook -d "url=https://xxxxxx.ngrok.io/botman"
YOUR_BOT_TOKENを実際のボットのトークンに置き換え、ngrokで取得したURLを指定します。
7. ボットの動作確認
ブラウザまたはPostmanでWebhookが正しく設定されているか確認します。Telegramでボットにメッセージを送信し、ボットが正しく応答するか確認します。
例えば、「こんにちは」と送信すると、ボットが「こんにちは!どうしましたか?」と返答するはずです。
8. BotManでの高度な機能の追加
BotManでは、さまざまな機能を追加できます。例えば、ユーザーからの入力を処理したり、カルーセルメニューを表示したり、スケジュールされたメッセージを送信することもできます。これらの機能はBotManの公式ドキュメントを参考にして、必要に応じて追加してください。
9. 結論
LaravelとBotManを使ってTelegramボットを作成する方法を学びました。これで、基本的なTelegramボットを作成し、ユーザーとのやりとりを開始する準備が整いました。BotManの強力な機能を活用すれば、さらに高度なボットを作成することができます。
このガイドを参考にして、さまざまなBotManの機能を試しながら、あなたのTelegramボットを進化させてください。
