GAしたBotFrameworkについてのメモ

# はじめに

BotFrameworkがGA(一般提供開始)しました。
プレビュー版から変わったとことかのメモ。

## Botを管理する場所

今まで[Microsoft Bot Framework](https://dev.botframework.com/)でBotの作成や設定の変更などを行っていましたが、Azureポータルから行うようになります。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/199859/4757a16d-0671-ed08-3fc5-8868de30437a.png)

従来の管理画面。移行を促すメッセージと`Migration Status`、`Migrateボタン`が追加されています。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/199859/60fafc5b-8a99-06d9-7355-d908d7c0cc9a.png)

Azureポータルの管理画面。Azureを普段利用している方にとっては見慣れた画面ですね。

## Botの新規作成

Botの新規作成もAzureポータルから行うようになります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/199859/1b8b1c05-059b-b391-7fae-bcc07991a655.png)

新規 → AI + Cognitive Servicesを選ぶと、

- Web App Bot
- Bot Channels Registration
- Functions Bot

の3つがBotサービスとして用意されています。

### Web App Bot

Azure Web AppをベースにしたBotサービスです。
とりあえずBotを作りたい場合はこれがいいかと。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/199859/fb448e6b-b30d-af6a-f931-3e3be5238e49.png)

登録画面はお決まりなので省略しますが、
テンプレートが用意されているのである程度のものは最初から出来るようになっています。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/199859/889c856b-3127-061f-2ae9-e474f27616d2.png)

登録後画面では各種設定を変更出来るようになっています。
主要なものを紹介します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/199859/9d0ba4b7-ff3a-b9ae-3d4f-3ca3b8e44589.png)

プレビュー版を使ったことがある方なら見覚えのあるチャンネルの設定画面です。
ここでBotの接続先となるサービスに対する設定などを行います。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/199859/69bd93f6-837e-ee18-4706-d70dc0cfbdc4.png)

プレビュー版の時から有ったのかあまり記憶にないのですが、
ビルド画面からソースをダウンロードしたり、CIの設定などが出来ます。
後、オンラインでソースを編集出来るようです。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/199859/82f9449d-4ca8-498d-7023-8a690410c076.png)

オンラインコードエディタで編集をすると変更内容が即時反映されるので、余程のことが無い限り利用しそうにないですｗ

![image.png](https://qiita-image-store.s3.amazonaws.com/0/199859/cc47d2bc-a01c-0c40-b7ea-78a24d169a19.png)

プレビュー版の時にはチャンネルのページにあったWebChatでのテストが独立しています。

### Bot Channels Registration

名前の通りBotのチャンネルを登録するサービス。
Botテンプレートを使用しコードを作成し、App Serviceや別の場所(オンプレとかかな)にデプロイする場合などはこちらを使用します。
MSの方が作成しているサンプルとかを元にする場合とかもこれ。
[ヘルプ デスク ボットのハンズオン ラボ](https://github.com/satonaoki/help-desk-bot-lab-ja)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/199859/82bf3bad-54ae-a232-69c5-72a62422dae2.png)

登録画面はWeb App Botとあまり変わりませんが、`メッセージング エンドポイント`を指定出来るようになっています。
ちなみに登録時は必須ではないので、まだ開発中などの場合もとりあえず作成出来ます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/199859/bf82cf89-cd1d-9b76-d1b6-3b23539e421b.png)

登録後画面もあまり変わりがありませんが、ビルド項目とApp Service周りの設定が無くなっています。

### Functions Bot

Azure FunctionsをベースにしたBotサービスです。
Web App Botと比べて何がいいのかイマイチ分かっていません。
Azure Functionsベースということは従量課金プランが選べるので、あまり稼働頻度の多くないBotとかは費用が抑えられるくらい？

![image.png](https://qiita-image-store.s3.amazonaws.com/0/199859/de13f649-33af-ae72-6d4e-4bff64af98dd.png)

Web App Botと同様にテンプレートが用意されているので、ある程度のものは最初から出来ます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/199859/ea54367d-48be-8c96-70b6-671405f33f46.png)

登録後画面の項目はWeb App Botと同様。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/199859/750bfeed-ef14-862e-00bb-108421b6aa16.png)

ビルド画面は少し違っていて、オンラインコードエディタでは無くAzure Functionsへのリンクとなっています。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/199859/1c77b123-e3f8-725c-eb08-b0eb2b6131d9.png)

Azure Functionsの画面が表示されます。

### Botを新規作成する場合の注意点

Botを新規作成する際に`ajax Extended call failed`や`Service Error`などが表示され、Botの作成に失敗することがあります。
[Stack Overflow：ajax Extended call failed in Azure
](https://stackoverflow.com/questions/47883255/ajax-extended-call-failed-in-azure/47893412#47893412)↑にも同じようなエラーに遭遇した方がいますが、
原因としては、Azure Active Directory Appの作成権限が無いことです。
AzureサブスクリプションとAzure Active Directoryの権限は完全に別物のため、会社や部門などでAzureのアカウントを共有利用している場合は権限が設定されていない可能性があります。
詳しくは[Azure サブスクリプションと Azure AD の管理者](https://blogs.technet.microsoft.com/jpazureid/2017/11/04/azure-subscription-azuread-admin/)を参照してください。

適切な設定や権限があるのでしょうが、取りあえず管理者権限を設定してもらってやりすごしました…。

## プレビュー版のBotの移行

最初の方の管理画面の違いで`Migrate`ボタンがあることを書いていますが、
プレビュー版で作成したBotは移行することが出来ます。
プレビュー版で作成したBotについては2018年3月31日までに移行する必要があるようです。
それまでに移行出来なかったらどうなるかは不明です…。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/199859/4bc7f21b-f2e6-b44c-8fb1-2b3faec5db9a.png)

[Microsoft Bot Framework](https://dev.botframework.com/)のMy Botsを表示し、移行するBotの`Migrate`ボタンをクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/199859/ee1a4ee3-b17d-e226-e1a1-063eb7022e2f.png)

移行の画面が表示されるので、AzureのサブスクリプションIDとリージョンを指定します。
※プランは有償プラン固定ですが移行後に変更出来ます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/199859/13d6fa7a-77ad-8db2-8033-09d2b91a5e5e.png)

移行ダイアログが表示されず上記の画面が出る場合がありますが、正直原因不明です…。
出たり出なかったりするのでツライ。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/199859/e9363e29-1bbf-0dec-f037-b788730c57c9.png)

移行が完了したものはstatusが`Migrated`に変わっています。
移行期限の2018年3月31まではロールバックすることも出来ます。