Bot Framework SDK for Javaで作ったWebアプリケーションとローカル環境で会話する
Botを開発できるBot Frameworkには現在4言語のSDKが用意されています。
Javaはまだプレビューですが、GitHubにサンプルがあったので試してみました。
echo-botを起動する
試したのは入力したメッセージをオウム返しする「02.echo-bot」です。このサンプルはSpring Bootで実装されています。
BotBuilder-Samplesをクローンして、「02.echo-bot」のフォルダを開きます。
git clone https://github.com/microsoft/BotBuilder-Samples.git
ビルドして
mvn clean package
実行します。
java -jar /target/*.jar
すると以下の画面が表示されます。
Emulatorを準備する
今回はローカル環境で試すため、Emulatorをダウンロードします。
https://github.com/Microsoft/BotFramework-Emulator/releases/tag/v4.5.2
実行すると以下のような画面が表示されます。
画面左下の設定(ギアマークのアイコン)をクリックします。
ngrokをダウンロードします。
「Path to ngrok」にダウンロードしたngrokの実行ファイルのパスを指定します。
Emulator起動後に表示された最初の画面を再度開いて、「Open Bot」ボタンでSpring BootのサンプルURLを設定します。
設定は以上です。Emulatorにメッセージを入力するとオウム返しで同じメッセージが返ってきます。
ハマったこと
最初ローカル環境で実行する際にはngrokは不要なのかなと(勝手に)思いこんでいて、「Path to ngrok」を空にしていました。そしてEmulatorでメッセージを入力すると以下のエラーが出て、原因がよくわからなくて困っていました。
POST 500 directline/conversations/<conversationId>/activities
Spring Bootでは以下のログが出ていて、ポート番号が異なるので、ngrokでトンネルしないだめなのかな?と試したところうまくいきました。
ERROR 11362 --- [ Bot-1] c.m.b.i.AdapterWithErrorHandler : onTurnError
java.util.concurrent.CompletionException: java.net.ConnectException: Failed to connect to localhost/127.0.0.1:62833
at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:331) ~[na:na]
at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:346) ~[na:na]
at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:632) ~[na:na]
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506) ~[na:na]
at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2088) ~[na:na]
at retrofit2.CompletableFutureCallAdapterFactory$ResponseCallAdapter$2.onFailure(CompletableFutureCallAdapterFactory.java:123) ~[retrofit-2.5.0.jar!/:na]
以下のドキュメントをベースに進めていましたが、ngrok周りの設定が細かく出てこないのでハマってしまいました。
これをAzureのBot Serviceにデプロイしたいけど方法がわからない...と思っていたら以下に書いてありました。
Author And Source
この問題について(Bot Framework SDK for Javaで作ったWebアプリケーションとローカル環境で会話する), 我々は、より多くの情報をここで見つけました https://qiita.com/kikutaro/items/5f12261d42cddba69592著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .