MicrosoftのBot Framework(C#)を始めてみた

# はじめに

今回は Microsoft社のHPに記載されている [Create a bot with the Bot Framework SDK for .NET](https://docs.microsoft.com/en-us/azure/bot-service/dotnet/bot-builder-dotnet-sdk-quickstart?view=azure-bot-service-4.0) の手順に従って、ローカルボットの環境を作成してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348116/203edc3d-f476-5ae2-e025-86fab6ee6c9a.png)

※Bot Frameworkには、[JavaScript(Node.js)](https://docs.microsoft.com/en-us/azure/bot-service/javascript/bot-builder-javascript-quickstart?view=azure-bot-service-4.0) のバージョンもあります。

# 前提条件

本記載に従い、Bot Frameworkを始めるには、以下のものをインストールする必要があります。

- Visual Studio 2017 (ASP.NET Core)
- Bot Framework SDK v4 テンプレート for .NET
- Bot Framework エミュレータ

# VS2017

開発環境となる、Visual Studio 2017の設定を行います。

## VS2017のダウンロード

Visual Studio の[ダウンロードサイト](https://visualstudio.microsoft.com/ja/downloads/?utm_medium=microsoft&utm_source=docs.microsoft.com&utm_campaign=button+cta&utm_content=download+vs2017&rr=https%3A%2F%2Fdocs.microsoft.com%2Fja-jp%2Fvisualstudio%2Finstall%2Finstall-visual-studio%3Fview%3Dvs-2019)より、Visual Studio 2017をダウンロードします。
※Visual Studio 2019の記載の下に、Visual Studio 2017のダウンロードリンクがあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348116/dfd4249f-cdad-3db5-dace-56cfd9f619b0.png)

筆者はProfessional版を使用していますが、個人利用程度ならば、Community版の利用で問題ありません。
※Community版のリンクは[こちら](https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community&rel=15) (2019/04/19時点)

## VS2017のインストール

Visual Studio 2017のインストールは、基本的にインストーラーの表示に従って行ってください。
ただし、Bot Frameworkの開発には、ASP.NET Core 2.1が必要になりますので、ワークロードの選択時には、以下の項目を選択し、.NET Core 2.1がインストールされるようにしてください。

- ASP.NET と Web開発
- .NET Core クロスプラットフォームの開発

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348116/51f22517-313d-8ff3-e88c-e9df5fda7b79.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348116/11679c8c-04d7-5394-6a49-cfadbf913665.png)

# プロジェクトテンプレート

## プロジェクトテンプレートのダウンロード

[Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=BotBuilder.botbuilderv4#review-details) より、Bot Framework SDK v4 テンプレート for .NET をダウンロードします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/348116/ee9f9d65-4710-c313-43fe-53671fdcf2e8.png)

## プロジェクトテンプレートのインストール

ダウンロードしたVSIXパッケージを使用して、プロジェクトテンプレートをインストールします。

# プロジェクトの作成

## 新しいプロジェクトの開始

Visual Studio 2017を起動し、新しいプロジェクトを作成します。
\[Visual C#\] -> \[Cloud\] -> \[AzureBotService\]から、**EchoBot** を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348116/ae3e6ae3-64a4-be88-9762-3d685792b4a9.png)

任意のプロジェクト名を設定し、\[OK\]を選択してプロジェクトを生成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348116/64511ffa-db7d-ed01-6323-29ab19bd3c48.png)

## Nugetパッケージの更新

プロジェクトを作成したら、NugetパッケージマネージャーよりNugetパッケージの更新を行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348116/7e7b9455-bb21-dfd6-175f-7b87e4f8c47d.png)


# エミュレータのインストール

ローカルPC環境に、Bot Frameworkで作成したチャットボットをローカル環境上で実行出来るエミュレータをインストールします。エミュレータは、[GitHub](https://github.com/Microsoft/BotFramework-Emulator/releases)上に公開されているので、こちらから対応するインストーラをダウンロードして、インストールを行ってください。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/348116/b2deada4-8a30-e6fb-f4bc-3da0e2fb1503.png)

インストール終了後、エミュレータを起動すると、以下のような画面が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348116/c2d42d58-38f4-2c64-944b-90e561e826f3.png)

# プロジェクトのビルド

Visual Studio上で作成したプロジェクトをビルドします。
ビルドが正常に終了し、BOTファイル\(.bot\)が作成されることを確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348116/b35ae7a0-c905-e7dc-66d2-78faf3bef775.png)


BOTファイルが正常に作成されることを確認したら、IIS Expressでデバックを開始します。正常に開始出来たら、ブラウザで http://localhost:3978 にアクセスし、Webページが表示されることを確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348116/ef26e0b3-92b8-7d87-edd2-c5803b11b215.png)


# エミュレータで確認

Bot Framework Emulator にて、\[File\] -> \[Open Bot\]を選択し、[プロジェクトのビルド](#プロジェクトのビルド)にて作成されたBOTファイル\(.bot\)を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348116/e1fce28e-fd0e-358d-f3f5-e5ea23a0e399.png)


選択すると、Live Chatタブが開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348116/84c39bde-445b-4f52-37c9-160207642f90.png)

画面下の入力欄より、入力を行い送信をすると、結果が返ってくることを確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348116/f3baf112-e8cc-505a-c28c-0b4c455d9165.png)

エミュレータ上でのデバックについての詳細は、[こちら](https://docs.microsoft.com/en-us/azure/bot-service/bot-service-debug-emulator?view=azure-bot-service-4.0)を参照してください。

# まとめ

今回は、[Create a bot with the Bot Framework SDK for .NET](https://docs.microsoft.com/en-us/azure/bot-service/dotnet/bot-builder-dotnet-sdk-quickstart?view=azure-bot-service-4.0) の手順に従い、エミュレータ上にて、入力した結果をそのまま返却するチャットボットの作成・確認まで行いました。
次回は、[Microsoft Azure上へのデプロイ](https://docs.microsoft.com/en-us/azure/bot-service/bot-builder-deploy-az-cli?view=azure-bot-service-4.0&tabs=csharp)と、Microsoft社がGitHubで公開している[BotBuilder-Samples](https://github.com/Microsoft/BotBuilder-Samples/blob/master/README.md)を見てきたいと思います。