プログラムの用意ができたら、次はサーバーにアップして公開します。
今回は、一番簡単なレンタルサーバーでの方法を紹介します。
プログラムファイルをサーバー上に公開
前回作成した「hellobot.php」ファイルをFTPクライアントソフトなどで、レンタルサーバーの【SSL通信が可能】な任意の場所にアップします。
重要なのでもう一度、【SSL通信が可能】な環境にアップしてください。
※サーバーのopensslのバージョンが古いと、後述の「setwebhook」が上手く通らないことがあります。なかなか気づきにくい部分でしばらくハマったので、ご注意ください。
レンタルサーバーやFTPクライアントソフトを使ったことがない人は、「ホームページ 公開」などで検索してもらえれば情報はいくらでも出てくると思います。
以下の場所にアップしました。
1 |
https://telegram-creators.bacronym.net/demo/hellobot.php |
前のページで146行目を書き換えていない場合は、URLの部分をこのパスに書き換えて保存してからアップし直してください。
1 2 3 4 5 |
//書き換え前 define('WEBHOOK_URL', 'https://my-site.example.com/secret-path-for-webhooks/'); //書き換え後 define('WEBHOOK_URL', 'https://telegram-creators.bacronym.net/demo/hellobot.php'); |
このままだと、単に自分のサーバーにプログラムがあるだけなので、ボットAPIと繋げる必要があります。
プログラムをボットAPIにセットする
ファイルが信頼できるSSL環境にアップされている場合は、ブラウザで以下のURLにアクセスするだけでセットが完了します。
1 |
https://api.telegram.org:443/bot[token]/setwebhook?url=[webhook] |
今回の環境の場合は以下のURLになります(トークンはダミーです)
1 |
https://api.telegram.org:443/bot123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ-a1b2c3d4e/setwebhook?url=https://telegram-creators.bacronym.net/demo/hellobot.php |
成功すると以下のステータスが返ってきます。
1 |
{"ok":true,"result":true,"description":"Webhook was set"} |
トークンが違っていたりサーバーにつながらない場合は以下のステータスが返ります。
1 2 3 4 5 |
//トークンが違う場合 {"ok":false,"error_code":401,"description":"Unauthorized"} //サーバーが見つからない場合 {"ok":false,"error_code":400,"description":"Bad Request: bad webhook: getaddrinfo: Name or service not known"} |
ただし、トークンとサーバーが合っていて、ファイルのパスが違っている場合は、成功した時と同じステータスが返ります。
成功しているはずなのに、ボットが上手く動かない場合は、ファイルのパスを間違えていないか確認してください。
何度確かめても間違えていない場合は、他に原因がある場合があります。
少し難しい内容になりますが、サーバーにsshで接続してcurlコマンドでsetwebhookをしてみると、エラー内容が見れるので、試してみてください。
1 |
curl -F "<ファイルのパス>" "https://api.telegram.org/bot<トークン>/setwebhook" |
※opensslのバージョンが古い場合、ここでエラーがでるので、アップデートか他の環境をお試しください。
以上で、ボットの設定が完了しました。簡単ですね。
次回は、実際にボットを動かしてみて、コードを編集して簡単なカスタマイズを試してみます。
「プログラムをアップしてボットAPIにセット」に関するコメント
全体の流れがわからなくて困ってたので、助かりました <(_ _)>