![見出し画像](https://assets.st-note.com/production/uploads/images/110609543/rectangle_large_type_2_f00ec78240c61d4f3b98d87345e7e673.png?width=800)
Bot Framework Composerでループ処理をする
概要
Power AppsもPVAもいい動きをしてくれない。過去の記事で紹介してきた方法では結局チャットボットとしてはいまいち動きがよくなくて、結果としてBot Framework Composerを使うことにしました。
インストール
申し訳ございません。インストールは公式にお任せします。あまり需要があるような話でもなさそうですので。
botの作成方法
こちらも公式に譲ります。全然難しくないので。
不明なインテントだけでは使わない
私のやり方が悪いのか、原因はよくわからないのですが、延々と会話をつなげたかったので、不要なインテントだけを使うことを止めました。
サンプルや、あちこちのサイトでは不要なインテントに色々と処理を書くようになっているのですが、不要なインテントに落ちると会話が終わってしまいます。
そのため、再び、案内から始まることになり、次々と質問するbotにできません。
ではどうするかというと、会話の開始インテント(案内とかBegin Dialog)でダイアログを起動します。そしてダイアログをループさせます。このダイアログを不明なインテントでも起動してあげると多少ましな動作になりました。
ダイアログの作成
botの右側の3点リーダーをクリックして、「ダイアログの追加」や「Add a dialog」をクリックして、新しいダイアログを作成します。名前を決めるだけなので、簡単です。
そしてそのダイアログで必要な処理を置いて行って、最後に「Repeat this dialog」を置くだけです。
これでbotの作成は目途が立ちました。
※追記
このダイアログですが、ユーザー入力変数をturnに入れると無限ループしてしまいました。dialog.userinputなどのdialog変数に入れるとうまくいきました。また、「Repeat this dialog」「このダイアログを繰り返す」のAllowLoopはtrueですね。
ちょっと困ったこと
「An error occurred validating the Microsoft App Id and Microsoft App Password.」chatbotのテストではこのエラーが毎日出ます。設定の「Development resources」の下のほうにAzure ActiveDirectoryのアプリのIDとパスワードを入れる欄があるのですが、その下の「Retrieve App ID」を毎回押してあげれば回復します。(解決策としてあっているのか不明です)
「An error occurred posting activity to the bot. Internal Server Error」chatbotを起動するとこういうエラーが出ました。これはローカルPCでflaskを使っている場合の5000/tcpの競合のようですので、テストでflask runをしていて、http://localhost:5000がリッスンしている場合はflaskを落としてください。(解決策としてあっているのか不明です)
公開する
色々と検索しましたが、
ほぼ、この手順通りで行けます。ただし、途中、端折られているのか後から追加になったのか、手順が抜けているところがありました。
なお、どこかのサイトにありましたが、Teamsの「開発者ポータル」でのボットの作成は不要でした。
Publishする
Bot Framework Composerからpublishをして、一旦、Azureへ上げます。
また、公式の貼り付けで申し訳ございません。
AzurePortalの「bot service」でテストができるのでテストをしましょう。
Teamsの開発者ポータルにあるアプリの基本情報で新しいバージョン番号を入れます。これ見落としがちですがやらないと後で怒られます。
「組織に公開する」に「アプリの更新プログラムを送信する」というのが出てくれば、Publishは成功です。「アプリの更新プログラムを送信する」をクリックします。
![](https://assets.st-note.com/img/1689145792734-m9WKXNtHmY.png?width=800)
どこに送信されるのかというと、Microsoft Teams管理センターというか、組織のTeamsアプリに入ります。ここに入った後、承認作業が必要です。
「Microsoft 365 管理センター」から「Microsoft Teams管理センター」へと移ります。
「Teamsのアプリ」→「アプリを管理」へ進み、作成したアプリを検索します。
![](https://assets.st-note.com/img/1689146039466-d4qSP93M4x.png?width=800)
きちんと送信されていると更新されたカスタムアプリに1とあるはずです。1つという前提ですけど。
アプリを検索して、開きます。
![](https://assets.st-note.com/img/1689146335934-Xw5LHebQ1A.png?width=800)
すでに発行済みのアプリを表示しているので、許可済みになっていますが、最初はブロック済みになっていると思います。許可します。右側に「更新プログラムの発行」がありますので、クリックして更新プログラムを適用してあげます。これでしばらくすると、Teamsのアプリの「組織向けに開発」に出てきます。これ、あっさり書いていますが、Bot Framework Composerが非常に不安定でいろいろおきますので、辛抱強く対応してください。
※追記です
最初のbotのpublishではAzurPortalからBotServiceを開いてTeamsで使えるようにしないといけないようです。上記で紹介した、「Publish Bot App to Teams Channel with Bot Framework Composer and Teams Developer Portal」にはそうあります。
アイコンなどのテスト
Teamsの開発者ポータルではアイコンなどの調整ができます。アイコンは非常に重要な要素ですが、なかなかうまくいきません。長い時間試行錯誤しました。
ところが、「ストアに公開」を選ぶと、アイコンが使えるかどうかなど、公開前にテストをしてくれます。それに気が付かず、すごい時間を無駄にしました。
また、アイコンですが、テーマを変えたりするとうまく表示できないなど、なにかバグのようなものもありました。
テスト方法
Botのテストは「AzurePortal」の「Bot Service」からボットを開いて、「チャネル」へ進み「Open in Teams」からやるのがベストではないかと思われます。
![](https://assets.st-note.com/img/1689243533320-JjUpFReLhN.png?width=800)
今の課題
とにかくbotが不安定です。アンインストールしないと会話がリセットできないなどの問題があります。この後の改良でリセット機構を作ってみたいとは思います。
関連記事
自分の振り返りも含めてPublishだけまとめました。
この記事が気に入ったらサポートをしてみませんか?