Bot Framework SDK を使用してボットを作成する
[アーティクル]
03/08/2023
6 人の共同作成者
フィードバック
この記事の内容
適用対象: SDK v4
この記事では、Bot Framework SDK for C#、Java、JavaScript、または Python を使用して最初のボットを構築する方法と、Bot Framework Emulatorを使用してボットをテストする方法について説明します。
最初のボットを作成するには、Azure サブスクリプションや Azure AI Bot Service リソースは必要ありません。 このクイックスタートでは、最初のボットをローカルで作成することに重点を置いています。 Azure でボットを作成する方法については、「Azure Bot リソースを作成する 」を参照してください。
注意
Bot Framework JavaScript と C# SDK は引き続きサポートされますが、Python SDK と Java SDK は、2023 年 11 月に終了する最終的な長期サポートで廃止されます。
このリポジトリ内の重要なセキュリティとバグの修正のみが行われます。
これらの SDK で構築された既存のボットは引き続き機能します。
新しいボット構築の場合は、 Power Virtual Agents の 使用を検討し、 適切なチャットボット ソリューションの選択に関する記事を 参照してください。
詳細については、「 ボット構築の未来 」を参照してください。
前提条件
C# テンプレート
現在のボット サンプルでは .NET Core 3.1 テンプレートを使用しています。
ボット テンプレートを Visual Studio に追加するには、 Bot Framework v4 SDK Templates for Visual Studio VSIX ファイルをダウンロードしてインストールします。
注意
Visual Studio 内からテンプレートをインストールできます。
メニューで[ 拡張機能 ]、[ 拡張機能の管理 ] の順に選択します。
[ 拡張機能の管理 ] ダイアログで、 Visual Studio 用 Bot Framework v4 SDK テンプレートを 検索してインストールします。
.NET ボットを Azure にデプロイする方法については、「ボットを プロビジョニングして発行 する方法」を参照してください。
.NET Core テンプレートは、Bot Framework v4 を使用して新しい会話型 AI ボットをすばやく構築するのに役立ちます。
2020 年 5 月の時点で、これらのテンプレートと生成されるコードには .NET Core 3.1 以降が必要です。
Bot Framework テンプレートをインストールするには:
コンソール ウィンドウを開きます。
.NET Core SDK ダウンロード バージョン 3.1 以降をダウンロードしてインストールします。
このコマンドを使用して、インストールされている .NET Core コマンド ライン インターフェイスのバージョンを確認できます。
dotnet --version
3 つの Bot Framework C# テンプレート (エコー、コア、空のボット テンプレート) をインストールします。
dotnet new -i Microsoft.Bot.Framework.CSharp.EchoBot
dotnet new -i Microsoft.Bot.Framework.CSharp.CoreBot
dotnet new -i Microsoft.Bot.Framework.CSharp.EmptyBot
テンプレートが正しくインストールされていることを確認します。
dotnet new --list
注意
上記の手順では、3 つの Bot Framework テンプレートをすべてインストールします。 すべてのテンプレートをインストールする必要がなく、使用するものだけをインストールできます。 この記事では、 エコー ボット テンプレートを使用します。
Java テンプレート
Yeoman ジェネレーターを使用して、 Bot Framework v4 のコア AI 機能を使用して会話型 AI ボットをすばやく作成します。 詳細については、「 yeoman.io 」を参照してください。
ジェネレーターは、次に示すように 3 つの異なるテンプレート オプションをサポートしています。
テンプレート
説明
エコー ボット
「Hello World」より少し多くしたいが、それほど多くを必要としない場合は、良いテンプレート。 このテンプレートは、ボットにメッセージを送信し、ボットがメッセージをユーザーに繰り返して処理することの基本を処理します。 このテンプレートは、ユーザーがボットに対して何を言った場合でも、単にユーザーに "エコー" するボットを生成します。
空のボット
Bot Framework v4 に精通していて、基本的なスケルトン プロジェクトが必要な場合は、優れたテンプレートです。 また、ドキュメントからサンプル コードを取得し、それを最小限のボットに貼り付けて学習する場合にも適しています。
コア ボット
高度なボットを作成する場合は、マルチターン ダイアログと Azure AI LUIS を使用して言語理解を実装する場合に適したテンプレートです。 このテンプレートは、フライトを予約する場所と日付を抽出できるボットを作成します。
Yeoman のインストール
バージョン 12.10 以降 node.js インストールしていることを確認します。
最新の npm を インストールします。
npm install -g npm
Yeoman を インストールします。 必ずグローバルにインストールしてください。
npm install -g yo
generator-botbuilder-java をインストールします 。 必ずグローバルにインストールしてください。
npm install -g generator-botbuilder-java
Yeoman と generator-botbuilder-java が正しくインストールされていることを確認します。
yo botbuilder-java --help
JavaScript テンプレートと TypeScript テンプレート
Bot Framework v4 用の Yeoman ジェネレーターと Yeoman ジェネレーターをインストールするには:
ターミナルまたは管理者特権でのコマンド プロンプトを開きます。
JavaScript ボットのディレクトリに切り替えます。 まだない場合は最初に作成します。
mkdir myJsBots
cd myJsBots
npm と Yeoman の最新バージョンがあることを確認します。
npm install -g npm
npm install -g yo
Yeoman ジェネレーターをインストールします。
Yeoman は、アプリケーションを作成するためのツールです。 詳細については、「 yeoman.io 」を参照してください。
npm install -g generator-botbuilder
注意
下記の Windows ビルド ツールのインストールは、開発用オペレーティング システムとして Windows を使用している場合にのみ必要となります。
一部のインストールでは、restify のインストール手順で に node-gyp
関連するエラーが発生しています。
該当する場合は、管理者特権のアクセス許可を使用してこのコマンドを実行してみてください。
Python がシステムに既にインストールされている場合、この呼び出しは終了せずにハングする可能性もあります。
このコマンドは、Windows を使用している場合にのみ実行します。
npm install -g windows-build-tools
仮想環境を作成して有効にする
仮想環境は、グローバル設定とは異なる特定の Python インタープリターとライブラリの組み合わせです。 仮想環境はプロジェクトに固有であり、プロジェクト フォルダーに保持されます。 仮想環境を使用する利点は、時間の経過に伴ってプロジェクトを開発するときに、仮想環境に常にプロジェクトの正確な依存関係が反映される点です。 仮想環境の詳細については、「仮想環境 の作成 」を参照してください。
ボットを作成するディレクトリに移動します。 次に、お好みのプラットフォームに対して次のコマンドを実行します。 仮想環境をアクティブ化した後は、コマンド ラインまたはターミナルの前に を付ける (venv)
必要があります。 これにより、仮想環境がアクティブであることを知ることができます。 仮想環境はいつでも、次のように入力 deactivate
して非アクティブ化できます。
macOS/Linux
python3 -m venv venv
source venv/bin/activate
Windows
python -m venv venv
venv\Scripts\activate.bat
Python テンプレート
次 pip install
のコマンドを実行して、必要なパッケージをインストールします。
pip install botbuilder-core
pip install asyncio
pip install aiohttp
pip install cookiecutter==1.7.0
重要
32 ビット バージョンの Python を使用している場合は、 も実行 pip install cryptography==2.8
してください。
ボットの作成
Visual Studio で新しいボット プロジェクトを作成し、 Echo Bot (Bot Framework v4 - .NET Core 3.1) テンプレートを使用します。 ボット テンプレートのみを表示するには、 AI Bots プロジェクトの種類を選択します。
.NET Core 3.1 以降がインストールされていることを確認します。
Visual Studio Code で、新しいターミナル ウィンドウを開きます。
ボット プロジェクトを作成するディレクトリに移動します。
次のコマンドを使用して、新しいエコー ボット プロジェクトを作成します。 をボット プロジェクトに使用する名前に置き換えます <your-bot-name>
。
dotnet new echobot -n <your-bot-name>
新しいターミナル ウィンドウを開きます。
ボット プロジェクトを作成するディレクトリに移動します。
次のコマンドを使用して、新しいエコー ボット プロジェクトを作成します。 をボット プロジェクトに使用する名前に置き換えます <your-bot-name>
。
dotnet new echobot -n <your-bot-name>
テンプレートのおかげで、このクイックスタートでボットを作成するために必要なすべてのコードがプロジェクトに含まれています。 ボットをテストするために、これ以上のコードは必要ありません。
次のコマンドを実行して、テンプレートからエコー ボットを作成します。 コマンドは、パラメーターに既定のオプションを使用します。
yo botbuilder-java -T "echo"
Yeoman により、作成するボットに関する情報の入力が求められます。 このチュートリアルでは、既定値を使います。
? What's the name of your bot? (echo)
? What's the fully qualified package name of your bot? (com.mycompany.echo)
? Which template would you like to start with? (Use arrow keys) Select "Echo Bot"
? Looking good. Shall I go ahead and create your new bot? (Y/n) Enter "y"
ジェネレーターは、ジェネレーターの既定値を変更したり、プロンプトを事前にシード処理したりするために使用できる多くのコマンド ライン オプションをサポートしています。 オプションでは、大文字と小文字が区別されます。
コマンドライン オプション
説明
--help, -h
サポートされているすべてのコマンド ライン オプションのヘルプ テキストを一覧表示する
--botName, -N
ボット プロジェクトに指定された名前
--packageName, -P
ボットに使用する Java パッケージ名
--template, -T
プロジェクトの生成に使用されるテンプレート。 オプションは、echo
、empty
、core
です。 さまざまなテンプレートの詳細については、言語、 C# 、 JavaScript 、 Python 、または Java の GitHub リポジトリを参照してください。
--noprompt
ジェネレーターは、新しいボットを作成する前に確認を求めるメッセージを表示しません。 コマンド ラインで渡されない要件オプションでは、適切な既定値が使用されます。 このオプションは、テスト目的でボットの自動生成を有効にすることを目的としています。
テンプレートのおかげで、プロジェクトには、このクイック スタートでボットを作成するのに必要なすべてのコードが含まれています。 ボットをテストするために他のコードは必要ありません。
ジェネレーターを使用してエコー ボットを作成します。
yo botbuilder
Yeoman により、作成するボットに関する情報の入力が求められます。 このチュートリアルでは、既定値を使います。
? What's the name of your bot? my-chat-bot
? What will your bot do? Demonstrate the core capabilities of the Microsoft Bot Framework
? What programming language do you want to use? JavaScript
? Which template would you like to start with? Echo Bot - https://aka.ms/bot-template-echo
? Looking good. Shall I go ahead and create your new bot? Yes
テンプレートのおかげで、プロジェクトには、このクイック スタートでボットを作成するのに必要なすべてのコードが含まれています。 ボットをテストするために他のコードは必要ありません。
作業ディレクトリから次のコマンドを実行して、 エコー ボット テンプレートとその依存関係をダウンロードします。
cookiecutter https://github.com/microsoft/BotBuilder-Samples/releases/download/Templates/echo.zip
ボットに名前と説明を入力するように求められます。 次の値を入力します。
bot_name : echo_bot
bot_description : ユーザーの応答をエコーバックするボット。
ボットの起動
Visual Studio:
ボット プロジェクトを開きます。
デバッグなしでプロジェクトを実行します。
Visual Studio によってアプリケーションがビルドされ、localhost にデプロイされ、Web ブラウザーが起動してアプリケーションの default.htm
ページが表示されます。
この時点では、ボットはローカルのポート 3978 で実行されています。
Visual Studio Code:
ボット プロジェクト フォルダーを開きます。
プロジェクトの選択を求めるメッセージが表示されたら、作成したボットのプロジェクトを選択します。
メニューから [ 実行 ] を選択し、[ デバッグなしで実行 ] を選択します。
環境の選択を求められたら、[.Net Core ] を選択します。
このコマンドによって起動設定が更新された場合は、変更を保存してコマンドを再実行します。
run コマンドは、アプリケーションをビルドし、localhost にデプロイし、Web ブラウザーを起動してアプリケーションの default.htm
ページを表示します。
この時点では、ボットはローカルのポート 3978 で実行されています。
コマンド プロンプトまたはターミナルから:
ディレクトリをボットのプロジェクト フォルダーに変更します。
ボットを起動するには、 を使用 dotnet run
します。
dotnet run
このコマンドは、アプリケーションをビルドし、localhost にデプロイします。
アプリケーションの既定の Web ページは表示されませんが、この時点では、ボットはポート 3978 でローカルで実行されています。
ターミナルから bot を保存したディレクトリに移動し、以下に示すコマンドを実行します。
Maven プロジェクトをビルドし、 それを .jar ファイル (アーカイブ) にパッケージ化します。
mvn package
ボットをローカルで実行します。 archive-name を、前のコマンドの実際の名前に置き換えます。
java -jar .\target\<archive-name>.jar
これでエミュレーターを起動する準備ができました。
ターミナルまたはコマンド プロンプトで、ボット用に作成したディレクトリに変更し、npm start
でボットを起動します。
cd my-chat-bot
npm start
この時点では、ボットはローカルのポート 3978 で実行されています。
コマンド ラインまたはターミナルから、ディレクトリを に echo_bot
変更します。
cd echo_bot
エコー ボット テンプレートの依存関係をインストールします。
pip install -r requirements.txt
依存関係がインストールされたら、次のコマンドを実行してボットを起動します。
python app.py
次のスクリーンショットに示されている最後の行が表示されたら、ボットをテストする準備ができていることがわかります。
最後の行の http アドレスをコピーします。 エミュレーターを使用してボットと対話するときに必要になります。
エミュレーターの起動とボットの接続
Bot Framework Emulator を起動します。
エミュレーターの [ようこそ ] タブで [ボットを開く ] を選択します。
ボットの URL (ローカル ホストとポート) を入力し、 /api/messages
パスに を追加します。 通常、アドレスは です。 http://localhost:3978/api/messages
次に、 [接続]\(Connect\) を選択します。
ボットにメッセージを送信すると、ボットが応答します。
次のステップ
Visual Studio または Visual Studio Code とBot Framework Emulatorを使用してデバッグする方法については、「ボットのデバッグ 」を参照してください。
ngrok の詳細については、「 トンネリング (ngrok)」 を参照してください。