0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Corradeボット入門(その3:HTTPサーバ化して外部に公開)

Last updated at Posted at 2017-12-16

Corradeボット入門その1その2では、インワールドからボットにインスタントメッセージを送る方法でボットに命令していました。チャットボットやスマートスピーカーなど、クラウドサービスを経由してボットを動作させるには至極不便です。

というわけで、結局、CorradeボットのHTTPインターフェースを有効化して、HTTPサーバーとして動作するようにしてしまいます。そして、ngrokを使って、インターネット上からCorrade関連のポートにアクセスできるようにします。

CorradeボットをHTTPサーバー化する

Corrade.iniの編集

Corradeのマニュアルには、Corrade.iniファイルを直接変更する方法が紹介されています。

<httpserver>true</httpserver>
<httpserverprefix>http://+:8080/</httpserverprefix>

Configurator.exeを使う場合は、HTTPタブのServer項目のEnabledチェックボックスにチェックを入れて、上書き保存します。

enable.png

2体以上ボットを動かす予定がある場合は、ポート番号を被らない値に変更してください。

HTTPSにしたい!という方は、ここを見て頑張ってください

テスト

ローカルホストで、cURLやPostmanなどでコマンドを発行してみます。IMでコマンドを発行するのと全く同じ構文です。試しに、その2の「地面に座る」と「立ち上がる」をやってみましょう。

「Corradeボットをインターネットに公開する」でngrokの設定を行うと、ファイアウォールの設定を変更することなく、Corradeサーバーにアクセスできるようになります。ngrok設定前に、別のPCでテストする場合は、お使いのOSに応じて、Corradeポート(デフォルトでは8080)への外部からの通信を許可する必要があります。

地面に座る

curl -X POST \
  http://<ホスト>:<ポート>/ \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'command=relax&group=<グループのUUID>&password=<グループのパスワード>'

Postmanの場合、以下のような感じです。

relax.png

成功すると、以下のような内容でHTTP 200レスポンスが返ります。その1やその2の時よりも若干早く、スッと座ってくれます。

group=<グループ名>&command=relax&success=True&time=<タイムスタンプ>

立ち上がる

curl -X POST \
  http://<ホスト>:<ポート>/ \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'command=stand&group=<グループのUUID>&password=<グループのパスワード>'

成功すると、以下のような内容でHTTP 200レスポンスが返ります。

group=<グループ名>&command=stand&success=True&time=<タイムスタンプ>

Corradeボットをインターネットに公開する

ngrokの設定

https://ngrok.com からバイナリをダウンロードして、アーカイブを展開して、適当な場所に配置します。

Windowsの場合、ngrok.exeを配置したフォルダで、ngrokを実行します。以下は、ポート8080の場合の実行例です。

ngrok http 8080

うまくいくと、画面が切り替わり、アドレスが振られます。

ngrok by @inconshreveable                                                                               (Ctrl+C to quit)

Session Status                online
Version                       2.2.8
Region                        United States (us)
Web Interface                 http://127.0.0.1:4040
Forwarding                    http://a1d1acee.ngrok.io -> localhost:8080
Forwarding                    https://a1d1acee.ngrok.io -> localhost:8080

Connections                   ttl     opn     rt1     rt5     p50     p90
                              0       0       0.00    0.00    0.00    0.00

上記の場合、振られたアドレスはhttp://a1d1acee.ngrok.ioです。

プロキシ環境などで利用している場合は、そもそもngrokを使って良いか規程を十分に確認の上、「これで無駄な社内手続きともおさらばできる!?ngrokを使って超簡単に公開サーバを手に入れる」記事等を参考に設定してください。ngrokを使っていたことが後からバレて余計に面倒なことになっても、筆者は責任を負いません。

テスト

先ほどのURLの部分を、振られたアドレスに変更するだけです。ポート番号は不要です。

curl -X POST \
  http://<振られたアドレス>.ngrok.io/ \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'command=relax&group=<グループのUUID>&password=<グループのパスワード>'

毎回同じアドレスにしたい場合は?

書き始めたら長くなってしまったので、記事を分けました。「ngrokで常に同じアドレスを使う方法(2017年12月版)」を見てください。課金が必要です。

ngrokもサービス化したいんだけど?

ngrok linkにサービス化コマンドが用意されているようですが、完全に商用サービスとなっていて、筆者は手を出せません。NSSMなどを使って、自分でWindowsサービス化する必要があります。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?