├── README.md
└── docs
├── 01_install.md
├── 02_composer_basic.md
├── 03_composer_basic2.md
├── 04_composer_luis.md
├── 05_create_knowledgebase.md
├── 06_test_qnatrigger.md
├── 07_help_and_suggestion.md
├── 08_deploy_bot.md
└── images
├── 01
├── bfcomp_install_01.jpg
├── bfcomp_install_02.jpg
├── bfcomp_nodejs_request.jpg
├── bfcomp_start.jpg
├── bfemu_install_01.jpg
├── bfemu_install_02.jpg
├── dncore_install_01.jpg
└── dncore_install_02.jpg
├── 02
├── bfcomp_config_lang.jpg
├── bfcomp_config_lang_jajp.jpg
├── bfcomp_create_emptybot_cs.jpg
├── bfcomp_defaultlang_jajp.jpg
├── bfcomp_echomessage_literal.jpg
├── bfcomp_edit_greeting_resp.jpg
├── bfcomp_greeting_resp.jpg
├── bfcomp_input_propref.jpg
├── bfcomp_insert_propref.jpg
├── bfcomp_localbot_rtman.jpg
├── bfcomp_new_project.jpg
├── bfcomp_open_webchat.jpg
├── bfcomp_project_created.jpg
├── bfcomp_project_name.jpg
├── bfcomp_remove_enus.jpg
├── bfcomp_say_something.jpg
├── bfcomp_select_propref1.jpg
├── bfcomp_select_propref2.jpg
├── bfcomp_select_unknownintent.jpg
├── bfcomp_startbot.jpg
└── win_set_firewalls.jpg
├── 03
├── bfcomp_add_help_begin_dialog.jpg
├── bfcomp_add_help_trigger.jpg
├── bfcomp_add_message.jpg
├── bfcomp_add_new_dialog.jpg
├── bfcomp_create_help_trigger.jpg
├── bfcomp_greeting_mes1.jpg
├── bfcomp_greeting_mes2.jpg
├── bfcomp_help_add_send_res.jpg
├── bfcomp_help_dialog_name.jpg
├── bfcomp_help_send_mes.jpg
├── bfcomp_input_newmessage.jpg
├── bfcomp_set_help_dialog_name.jpg
├── bfcomp_set_rectype.jpg
└── webchat_test_help.jpg
├── 04
├── bfcomp_change_condition.jpg
├── bfcomp_create_luis_done.jpg
├── bfcomp_create_luis_resource.jpg
├── bfcomp_help_trigger_phrases.jpg
├── bfcomp_labeled_all_entities.jpg
├── bfcomp_labeled_entity.jpg
├── bfcomp_labeling_entity.jpg
├── bfcomp_luis_add_entity_menu.jpg
├── bfcomp_luis_added_entities.jpg
├── bfcomp_set_help_condition.jpg
├── bfcomp_set_luis_name.jpg
├── bfcomp_set_rectype.jpg
├── bfcomp_setup_luis.jpg
├── bfcomp_show_luis_key.jpg
├── bfcomp_test_luis.jpg
└── bfcomp_webchat_trace.jpg
├── 05
├── bfcomp_add_kb.jpg
├── bfcomp_add_qna_phrase1.jpg
├── bfcomp_add_qna_phrase2.jpg
├── bfcomp_create_kb.jpg
├── bfcomp_create_qna_resource.jpg
├── bfcomp_delete_kb.jpg
├── bfcomp_delete_qapair.jpg
├── bfcomp_kb_created.jpg
├── bfcomp_qna_key.jpg
├── bfcomp_select_qna_subscription.jpg
├── bfcomp_set_qna_name.jpg
├── bfcomp_setup_qnamaker.jpg
└── surface_warrantyfaq_page.jpg
├── 06
├── bfcomp_add_new_trigger.jpg
├── bfcomp_add_qnatrigger.jpg
├── bfcomp_create_qnabot.jpg
├── bfcomp_qna_intent.jpg
├── bfcomp_startbot.jpg
├── webchat_test_qna.jpg
└── webchat_test_qna2.jpg
├── 07
├── bfcomp_add_help_to_greeting.jpg
├── bfcomp_add_help_to_unknown.jpg
├── bfcomp_greeting_help_dialog.jpg
├── bfcomp_select_suggested_actions.jpg
├── bfcomp_suggested_actions.jpg
├── bfcomp_test_help.jpg
├── bfcomp_test_suggesntion.jpg
└── bfcomp_unknown_help_dialog.jpg
├── 08
├── az_app_service_plan_to_f1.jpg
├── az_delete_rg.jpg
├── az_delete_rg_confirm.jpg
├── az_get_azurebot_endpoint.jpg
├── az_search_rg.jpg
├── bfcomp_add_new_profile.jpg
├── bfcomp_appid_pw.jpg
├── bfcomp_do_publish_bot.jpg
├── bfcomp_edit_profile.jpg
├── bfcomp_profile_add_resources.jpg
├── bfcomp_profile_import.jpg
├── bfcomp_profile_name.jpg
├── bfcomp_profile_resource_name.jpg
├── bfcomp_profile_review.jpg
├── bfcomp_profile_select_create_new.jpg
├── bfcomp_publish_selected_bots.jpg
├── bfemu_open_bot.jpg
├── bfemu_settings_ngrok.jpg
└── bfemu_test_azurebot.jpg
├── 09
├── azure_create_qna.jpg
├── azure_rg.jpg
├── azure_support_page.jpg
├── bfcomp_configure_qna.jpg
├── qna_create_kb.jpg
├── qna_create_kb_button.jpg
├── qna_create_qna_service.jpg
├── qna_kb_created.jpg
├── qna_populate_kb.jpg
├── qna_publish.jpg
├── qna_published_settings.jpg
├── qna_save_and_train.jpg
├── qna_select_resource.jpg
├── qna_signin.jpg
├── qna_test.jpg
└── qna_test_inspect.jpg
└── bfcomp_main.jpg
/README.md:
--------------------------------------------------------------------------------
1 | # Bot Framework Composer + QnA Maker で作る Q&A チャットボット ハンズオン
2 |
3 | このハンズオンでは、[**Bot Framework Composer**](https://aka.ms/bfc-doc) + [**QnA Maker**](https://www.qnamaker.ai/) を使って Q&A チャットボットを作成します。
4 |
5 | 1. [開発環境の構築](./docs/01_install.md)
6 | 2. [Bot Framework Composer の基礎 - 1 (Echo Bot)](./docs/02_composer_basic.md)
7 | 3. [Bot Framework Composer の基礎 - 2 (機能追加)](./docs/03_composer_basic2.md)
8 | 4. [Language Understanding でユーザーの意図を予測](./docs/04_composer_luis.md)
9 | 5. [ナレッジベース作成](./docs/05_create_knowledgebase.md)
10 | 6. [QnA Maker のナレッジベースの呼び出し](./docs/06_test_qnatrigger.md)
11 | 7. [操作性の向上](./docs/07_help_and_suggestion.md)
12 | 8. [Bot アプリケーションをクラウドに発行](./docs/08_deploy_bot.md)
13 |
14 |
15 |
16 | > このハンズオンでは [**Bot Framework Composer v2.1.0**](https://techcommunity.microsoft.com/t5/azure-ai/build-2021-conversational-ai-update/ba-p/2375203) を使用しています。
17 |
18 |
19 |
20 | ---
21 |
22 |
23 |
24 | Bot Framework Composer は、Bot アプリケーションを GUI で開発できるツールです。
25 |
26 | - GUI の操作で開発
27 | - ダイアログ(一連の対話)の作成や管理が簡単
28 | - [Language Understanding](https://luis.ai/) (LUIS) との統合
29 | - [QnA Maker](https://qnamaker.ai/) と簡単に連携
30 | - 外部サービスの利用で機能拡張が可能
31 | - Power Virtual Agents との連携
32 |
33 | Bot Framework Composer の公式ドキュメントは [**こちら**](https://aka.ms/bfc-doc) です。
34 |
35 |
36 |
37 | ---
38 |
39 | Copyright (C) 2020-2021 Seosoft All rights reserved.
40 | 本コンテンツの著作権、および本コンテンツ中に出てくる商標権、団体名、ロゴ、製品、サービスなどはそれぞれ、各権利保有者に帰属します。
41 |
--------------------------------------------------------------------------------
/docs/01_install.md:
--------------------------------------------------------------------------------
1 | # 開発環境の構築
2 |
3 | ハンズオンの最初に [**Bot Framework Composer**](https://aka.ms/bfc-doc/) で Bot 開発のための環境を構築します。
4 |
5 | このハンズオンでは、[**Bot Framework Composer v2.1.0**](https://techcommunity.microsoft.com/t5/azure-ai/build-2021-conversational-ai-update/ba-p/2375203) を使用します。
6 | ハンズオン実施の時期によっては画面の構成などが一部異なる可能性があります。
7 |
8 |
9 |
10 | > Bot Framework Composer は [ソースコードからビルドする](https://docs.microsoft.com/ja-jp/composer/install-composer#build-composer-from-source) も紹介します。
11 | > 不具合修正や機能追加・変更が、アプリケーション版より早いタイミングで行われる可能性があります。
12 | 興味がある方はソースコードからビルドする方法を検討してください。
13 |
14 |
15 |
16 | ---
17 |
18 | ## デスクトップアプリケーション版をインストール
19 |
20 | Bot Framework Composer を使用するには、構築が簡単なデスクトップアプリケーション版をお勧めします。
21 | Windows 版、macOS 版、Linux 版が用意されています。
22 |
23 | 1. **Bot Framework Emulator インストール**
24 | [**Bot Framework Emulator**](https://github.com/microsoft/BotFramework-Emulator/releases) をダウンロードしてインストールします。
25 |
26 |
27 |
28 |
29 |
30 | Bot Framework Emulator は Bot 開発の **テスト用クライアント** として使用します。
31 |
32 |
33 |
34 | 2. **.NET Core 3.1 SDK インストール**
35 | [**.NET Core 3.1 SDK**](https://dotnet.microsoft.com/download/dotnet-core/3.1) をダウンロードしてインストールします。
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 | 3. **Node.js インストール**
44 | [**Node.js**](https://nodejs.org/ja/download/) をダウンロードしてインストールします。
45 |
46 | このハンズオンの Bot 開発の範囲では Node.js のインストールは必須ではありませんが、Bot Framework Composer は Node.js のコードを生成するプロジェクト テンプレートが用意されています。
47 | このタイミングでインストールすることをお勧めします。
48 |
49 |
50 |
51 | > Windows を使用している場合、Node.js のインストーラーの途中で Chocolatey もインストールするかを確認されます。
52 | > Bot Framework Composer での開発には Chocolatey は不要なので、任意で追加インストールしてください。
53 |
54 | > Node.js をインストールしていない環境で Bot Framework Composer で新規プロジェクトを作成すると、Node.js のインストールを促すポップアップが表示されます。
55 | キャンセルすれば C# のテンプレートを利用して Bot 開発を進めることができますが、毎回メッセージが表示されるのが気になる場合や Node.js 用のテンプレートを利用したい場合は、Node.js のインストールをしてください。
56 | >
57 | >
58 |
59 |
60 |
61 | 4. **Bot Framework Composer インストール**
62 | 使用している OS にあわせて、**Bot Framework Composer** のインストーラーをダウンロードしてインストールします。
63 |
64 | |OS|インストーラーのアドレス|
65 | |---|---|
66 | |Windows|[https://aka.ms/bf-composer-download-win](https://aka.ms/bf-composer-download-win)|
67 | |macOS|[https://aka.ms/bf-composer-download-mac](https://aka.ms/bf-composer-download-mac)|
68 | |Linux|[https://aka.ms/bf-composer-download-linux](https://aka.ms/bf-composer-download-linux)|
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 | 5. **Bot Framework Composer 起動確認**
77 | 確認のために Bot Framework Composer を起動します。
78 |
79 |
80 |
81 |
82 |
83 | 6. **ngrok インストール**
84 | [**ngrok**](https://ngrok.com/download) をダウンロードして、ZIP ファイル内の "ngrok.exe" をローカル PC の任意のフォルダーにコピーします。
85 | インストーラーはないので exe ファイルをコピーするだけです。パスが通ったフォルダーでなくてもかまいません。
86 |
87 | ngrok は [ステップ 7](./07_help_and_suggestion.md) までの Bot アプリケーション開発の範囲では不要です。
88 | [ステップ 8](./08_deploy_bot.md) で Bot アプリケーションを Azure に発行したあとの動作確認に使用します。
89 |
90 |
91 |
92 | > Bot Framework Composer で開発する場合、以下のケースで ngrok が必要になります。
93 | > - Azure に発行した Bot アプリケーションを Bot Framework Emulator でテストしたい場合
94 | > - ローカルで実行している Bot アプリケーションに他のマシンから接続したい場合
95 |
96 |
97 |
98 | > 環境によっては、上記の手順で構築しても Bot Framework Composer が **正常に動作しない** ことがあるようです。([tfukumori](https://github.com/tfukumori) さん、情報ありがとうございます)
99 | > 具体的には Composer が ["**Starting Server**" のままで起動しない](https://github.com/microsoft/BotFramework-Composer/issues/7964) ことがあります。
100 | >
101 | > この場合は、[**Visual C++ 再頒布可能ファイル**](https://aka.ms/vs/16/release/vc_redist.x64.exe) を追加でインストールすることで正常に起動するようになります。
102 | >
103 | > この後のステップで Composer が正常に起動しない場合は実施してください。
104 |
105 |
106 |
107 | 以上で、Bot アプリケーション開発環境の構築は完了です。
108 |
109 |
110 |
111 | ---
112 |
113 | 以上で、Bot Framework Composer のインストールが完了しました。
114 | 次のステップでは、Bot Framework Composer 操作の超基礎を理解するために、Echo Bot を作ります。
115 |
116 | [次に進む](./02_composer_basic.md)
117 | [目次に戻る](../README.md)
118 |
--------------------------------------------------------------------------------
/docs/02_composer_basic.md:
--------------------------------------------------------------------------------
1 | # Bot Framework Composer の基礎 - 1 (Echo Bot)
2 |
3 | [前のステップ](./01_install.md) で Bot Framework Composer と他のツールのインストールが終わりました。
4 |
5 | このステップでは、Bot Framework Composer の基礎として **Echo bot** (オウム返し Bot) を作ります。
6 |
7 | [1. 新規プロジェクト作成](#%e6%96%b0%e8%a6%8f%e3%83%97%e3%83%ad%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e4%bd%9c%e6%88%90)
8 | [2. Bot 言語を変更](#bot-言語を変更)
9 | [3. あいさつメッセージを変更](#あいさつメッセージを変更)
10 | [4. オウム返しアクションを追加](#オウム返しアクションを追加)
11 | [5. Web Chat で実行](#web-chat-で実行)
12 |
13 |
14 |
15 | ---
16 |
17 | ## 新規プロジェクト作成
18 |
19 | Bot Framework Composer をインストールしていない場合は、[前のステップ](./01_install.md) で Composer のインストールインストールを済ませてください。
20 |
21 | 1. Bot Framework Composer を起動します。
22 |
23 | 2. Home 画面で [**Create new**] をクリックします。
24 |
25 |
26 |
27 |
28 |
29 | 3. [**C#**] - [**Empty Bot**] を選択して [Next] をクリックします。
30 |
31 |
32 |
33 |
34 |
35 | 4. 今回は [**Name**] を "**MyQnaBot**" とします。
36 | [Location] は任意のフォルダーを選択します。
37 | [**Rumtime type**] は今回は "**Azure Web App**" を選択します。
38 |
39 | このステップではオウム返し Bot を作りますが、以降のステップで QnA Bot 機能を追加します。
40 | このためプロジェクト名は "MyQnaBot" とします。
41 |
42 |
43 |
44 |
45 |
46 | 続いて [**Create**] をクリックします。
47 | テンプレートとパッケージがダウンロードされて、プロジェクト作成とランタイムのビルドが自動的に実行されます。
48 | [Get started] パネルが表示されれば完了です。
49 |
50 |
51 |
52 |
53 |
54 | > プロジェクト作成後に [Creation Journey] が表示されるかもしれません。興味がある方は Composer の使い方を覚えるために参照してください。
55 | > 不要であれば [×] で閉じてしまってもかまいません。
56 |
57 |
58 |
59 | ---
60 |
61 | ## Bot 言語を変更
62 |
63 | 日本語を適切に処理できるように Bot の言語を日本語に変更します。
64 |
65 | > オウム返しの範囲では言語変更をしなくても動作しますが、あとの手順のために最初に設定を変更しておきます。
66 |
67 |
68 |
69 | 1. [**Configure**] - [**MyQnaBot (Root)**] - [**Localization**] と進み、[**Manage bot languages**] をクリックします。
70 |
71 |
72 |
73 |
74 |
75 | 2. 検索ボックスに "**japanese**" (または "**japa**" など数文字) と入力して、[**Japanese (Japan)**] を選択します。
76 | さらに [**When done, ...**] をチェックして [Done] をクリックします。
77 |
78 |
79 |
80 |
81 |
82 | 3. "**Japanese (Japan)**" をデフォルト言語にします。
83 | "Japanese (Japan)" の近くにカーソルを移動すると右側に [**Set it as default language**] と表示されます。これをクリックします。
84 |
85 | > カーソルを近くに持っていくまでは [Set it as ...] は非表示です。
86 |
87 |
88 |
89 |
90 |
91 | 4. 英語を削除します。
92 | "**English (United States)**" の近くにカーソルを移動すると右側に [**Remove**] と表示されます。これをクリックします。
93 |
94 |
95 |
96 | > 英語を削除せずに残しておくことで複数言語対応の Bot を作ることができます。
97 | > 今回は日本語専用の Bot にするので英語を削除します。
98 | >
99 | > なお Composer v2.0.0 では複数言語を持つプロジェクトで、Composer で作成したナレッジベースを QnA Maker リソースに発行するとデフォルト以外の言語を正しく作成できない不具合が発生します。
100 | > 今回はこれの回避のためにも言語は日本語だけにします。
101 |
102 |
103 |
104 | 5. Bot Framework Composer を一度終了して、改めて今回作成したプロジェクトを開きなおします。
105 |
106 | > 言語を変更した場合や接続するリソースを設定・変更した後などは、Composer を再起動することをお勧めします。
107 | >
108 | > 再起動しないままで開発を続けるとローカルでのビルドに失敗することがあります。その場合は Composer を一度閉じると正常に動作するようになります。
109 |
110 |
111 |
112 | ---
113 |
114 | ## あいさつメッセージを変更
115 |
116 | 新規作成した Bot は "Greeting" トリガーがあらかじめ用意されています。
117 | Greeting はユーザーが対話に参加した時に自動的に呼び出されるものです。
118 | あらかじめ英語のあいさつが定義されているので、このメッセージを日本語に変更します。
119 |
120 | > 一般的には、ユーザーに対して Bot が稼働していることを示すために、Greeting であいさつや Bot の機能を送信します。
121 | >
122 | > Bot アプリケーションが挨拶メッセージを返すのは
123 | ?
124 | > - Bot が稼働していることを知らせる
125 | > - Bot の機能を知らせる
126 | > - ユーザーが最初に何をすればいいのかを知らせる
127 | >
128 | > などが目的です。
129 |
130 |
131 |
132 | 1. [Create] - [Greeting] を選択して [**Send a response**] を選択します。
133 |
134 |
135 |
136 |
137 |
138 | 2. [**Response**] を "**ようこそ、QnA Botへ**" に変更します。
139 |
140 |
141 |
142 |
143 |
144 | > 今のステップではまだオウム返し Bot ですが、あとでの手順に備えて "Greeting" で返すメッセージをあいさつにしておきます。
145 |
146 |
147 |
148 | ---
149 |
150 | ## オウム返しアクションを追加
151 |
152 | オウム返しの機能を実装します。
153 |
154 | EmptyBot テンプレートではトリガーとして "Greeting" と "Unknown intent" の二つが事前に定義されています。
155 | "Greeting" はユーザーが対話を開始したタイミングで一度だけ呼び出されます。
156 | ユーザーの入力は、今の時点ではすべて "**Unknown intent**" で処理されます。
157 |
158 | 1. [Navigation Pane] で "**Unknown intent**" を選択します。
159 |
160 |
161 |
162 |
163 |
164 | 2. [**Send a response**] をクリックします。
165 |
166 | 3. [**Responses**] に以下を入力します。
167 |
168 | ```txt
169 | 「」と言いましたね
170 | ```
171 |
172 |
173 |
174 |
175 |
176 | 4. キャレットを "「" と "」" の間に持っていき、"**Insert a property reference in memory**" (**{x}** のアイコン) をクリックします。
177 |
178 |
179 |
180 |
181 | 5. プロパティツリーで "**turn.activity.text**" を選択します。
182 |
183 | またはキーボードで以下のとおり入力します。
184 |
185 | ```txt
186 | 「${turn.activity.text}」と言いましたね
187 | ```
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 | "**${turn.activity.text}**" はユーザーが入力した内容です。
196 | これでオウム返しするようになりました。確認してみます。
197 |
198 |
199 |
200 | ---
201 |
202 | ## Web Chat で実行
203 |
204 | Bot Framework Composer 組み込みの **Web Chat** で Bot の動作を確認します。
205 |
206 | 1. [**Start Bot**] をクリックします。 ローカルの Bot の起動が始まります。
207 |
208 |
209 |
210 |
211 |
212 | 2. [**Local bot runtime manager**] ([Start bot] の右にあるアイコン) で ローカル Bot の状態を確認します。[Status] が "Running" になれば動作しています。
213 |
214 |
215 |
216 |
217 |
218 | 3. ローカル Bot が起動したら Web Chat を開きます。
219 | [**Web Chat**] アイコンをクリックするか、[Local bot runtime manager] の [**Open Web Chat**] をクリックします。
220 |
221 |
222 |
223 |
224 |
225 | > Bot Framework Emulator 起動時にファイアウォールの設定画面が表示された場合は、適切に設定します。
226 | >
227 | >
228 |
229 |
230 |
231 | 4. Web Chat が開いたら何か入力します。
232 | 入力した内容で Bot が応答することを確認します。
233 |
234 | > Web Chat を開くと、最初に Bot が自動的に "ようこそ、QnA Botへ" と応答してきます。
235 |
236 |
237 |
238 |
239 |
240 | Bot は期待通りに動作しました。
241 |
242 |
243 |
244 | ---
245 |
246 | 以上で、Bot Framework Composer の基礎的な操作方法を理解するためにオウム返し Bot を作りました。
247 | 次のステップでは、オウム返し Bot に機能を追加して Bot Framework Composer の理解を深めます。
248 |
249 | [前に戻る](./01_install.md) | [次に進む](./03_composer_basic2.md)
250 | [目次に戻る](../README.md)
251 |
--------------------------------------------------------------------------------
/docs/03_composer_basic2.md:
--------------------------------------------------------------------------------
1 | # Bot Framework Composer の基礎 - 2 (機能追加)
2 |
3 | [前のステップ](./02_composer_basic.md) では、Bot アプリケーションの最も基本的なものとして、オウム返し Bot を作成しました。
4 |
5 | 続いて、この Bot アプリケーションにヘルプメッセージを返す機能を追加してみます。
6 |
7 | 応答するメッセージはシンプルなものですが、Bot アプリケーションを拡張する重要な操作です。
8 |
9 | [1. あいさつメッセージの追加](#あいさつメッセージの追加)
10 | [2. ヘルプ ダイアログの追加](#ヘルプ-ダイアログの追加)
11 | [3. ヘルプ ダイアログへの切り替え](#ヘルプ-ダイアログへの切り替え)
12 | [4. Web Chat で動作確認](#web-chat-で動作確認)
13 |
14 |
15 |
16 | ---
17 |
18 | ## あいさつメッセージの追加
19 |
20 | [前のステップ](./02_composer_basic.md) で Greeting トリガー(ユーザーが対話を開始した時に呼び出される)の応答メッセージを定義しました。
21 | 応答メッセージは常に固定である必要はなく、複数個をランダムに応答させることができます。
22 |
23 | 挨拶メッセージをひとつ追加して、ランダムで応答するようにします。
24 |
25 |
26 |
27 | 1. "**Greeting**" トリガーを選択して、[**Send a response**] を選択します。さらにプロパティで [**Add alternative**] をクリックします。
28 |
29 |
30 |
31 |
32 |
33 | 2. 新しいテキスト領域に以下を入力して Enter で確定します。
34 |
35 | ```txt
36 | こんにちは、QnA Botです
37 | ```
38 |
39 |
40 |
41 |
42 |
43 | 3. 異なるあいさつメッセージが帰ってくることを Web Chat で確認します。
44 | [**Start Bot**] または [**Restart Bot**] をクリックして、Bot を起動します。
45 | [**Restart Conversation - new user ID**] を何度かクリックして、ランダムで挨拶メッセージが変わることを確認します。
46 |
47 |
48 |
49 |
50 |
51 |
52 | ---
53 |
54 | ## ヘルプ ダイアログの追加
55 |
56 | Bot にヘルプメッセージを応答する機能を追加します。
57 |
58 | まず **ヘルプ ダイアログを Bot に追加** します。
59 |
60 |
61 |
62 | > ダイアログは一般的には、他から独立した一連の対話を定義するために使用します。
63 | > ここでの手順は一つのメッセージを応答するだけなので、必ずしもダイアログにする必要はありません。
64 | >
65 | > またハンズオンで扱っている Bot は簡単な機能なのでヘルプは不要なはずです。今回はダイアログの定義と呼び出し方とを理解するために、ダイアログを使ってヘルプメッセージを応答します。
66 |
67 | 1. 一番上の [**MyQnaBot**] の [**...**] をクリックして [**Add a dialog**] を選択します。
68 |
69 |
70 |
71 | > 一番上の MyQnABot は **プロジェクト**、2行目の MyQnABot は **ダイアログ** と言います。
72 |
73 |
74 |
75 | 2. [**Name**] にダイアログの名前を入力します。
76 | 今回は "**Help**" とします。
77 |
78 |
79 |
80 |
81 |
82 | 3. [**Help**] - [**BeginDialog**] で [**+**] をクリックして、続いて [**Send a response**] をクリックします。
83 |
84 |
85 |
86 |
87 |
88 | 4. [**Send a response**] をクリックして [**Bot Response**] に以下を入力します。
89 |
90 | ```txt
91 | Azure についての疑問に答えます。
92 |
93 | 質問を入力してください。
94 | ```
95 |
96 |
97 |
98 |
99 |
100 | ---
101 |
102 | ## ヘルプ ダイアログへの切り替え
103 |
104 | ユーザーの入力は最初に "**MyQnaBot**" ダイアログが受け取ります。
105 | ヘルプメッセージを表示するには、メインからヘルプ ダイアログへの **コンテキスト切り替え** が必要です。
106 |
107 | 以下では **正規表現** (Regular expression) を
108 |
109 | 1. "**MyQnaBot**" ダイアログ (2行目の MyQnABot) を選択して、Property の [**Recognizer Type**] で "**Regular expression recognizer**" を選択します。
110 |
111 |
112 |
113 |
114 |
115 | > 今までは Intent(=意図、ユーザーが Bot に何をさせようとしているのか)を分類するルールを持っていませんでした。
116 | > この手順で正規表現でユーザー入力の意図を分類するようになります。
117 |
118 |
119 |
120 | 2. ヘルプダイアログを呼び出すための Trigger を "**MyQnaBot**" に追加します。
121 | "MyQnaBot" ダイアログで [**Add new trigger**] を選択します。
122 |
123 |
124 |
125 |
126 |
127 | 3. [**Create a trigger**] ダイアログが開いたら、以下を入力・選択をします。
128 |
129 | |項目名|値|
130 | |---|---|
131 | |トリガーの種類|Intent recognized|
132 | |トリガー名|ここでは "**Help**"|
133 | |正規表現のパターン|(?i)(?:help\|ヘルプ\|使い方)|
134 |
135 |
136 |
137 |
138 |
139 | 4. [**+**] をクリックして、続いて [**Dialog Management**] - [**Begin a new dialog**] をクリックします。
140 |
141 |
142 |
143 |
144 |
145 | 5. [**Begin a new dialog**] アクションの Property の [**Dialog name**] で "**Help**" を選択します。
146 |
147 |
148 |
149 |
150 |
151 | ---
152 |
153 | ## Web Chat で動作確認
154 |
155 | 以上でヘルプメッセージの追加が終わりました。
156 | Web Chat で動作を見てみます。
157 |
158 | 1. [Start Bot] または [Restart Bot] をクリックします。
159 |
160 | 2. Bot が起動したら Web Chat を開きます。
161 |
162 | 3. 以下を参考に入力して、Bot が期待した応答を返すことを確認します。
163 |
164 | |入力|応答|
165 | |---|---|
166 | |(※対話開始時)|"こんにちは、Q&A Bot です" または "ようこそ、Q&A Bot へ"|
167 | |help|Azure についての質問に答えます|
168 | |Help|Azure についての質問に答えます|
169 | |HELP|Azure についての質問に答えます|
170 | |ヘルプ|Azure についての質問に答えます|
171 | |使い方|Azure についての質問に答えます|
172 | |任意の入力|「(入力した内容)」と言いましたね|
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 | > ヘルプのように Intent の分類が比較的簡単なルールの場合には、[**Recognizer Type**] を "**Regular Expression**" にすることができます。
181 | >
182 | > ユーザーにもっと自由な入力を認める場合は **Default recognizer** で分類する必要があります。
183 | > Default recognizer を選択すると、Composer は自然言語処理のエンジンとして Language Understanding (= LUIS) を利用します。
184 | >
185 | >この後のステップで取り上げる方法で [QnA Maker と連携する](./05_create_knowledgebase.md) 場合にも Recognizer Type を Default recognizer に変更して Language Understanding を利用する必要があります。
186 | >
187 | > Language Understanding については次のステップで取り上げます。
188 |
189 |
190 |
191 | ---
192 |
193 | 以上で、正規表現を利用してユーザー入力の意図を理解するようになりました。
194 | 次のステップでは Language Understanding を利用して、より柔軟で強力な方法でユーザーの意図を予測するように変更します。
195 |
196 | [前に戻る](./02_composer_basic.md) | [次に進む](./04_composer_luis.md)
197 | [目次に戻る](../README.md)
--------------------------------------------------------------------------------
/docs/04_composer_luis.md:
--------------------------------------------------------------------------------
1 | # Language Understanding でユーザーの意図を予測
2 |
3 | [前のステップ](05_composer_qna.md) では正規表現を利用してユーザー入力の意図を理解しました。
4 |
5 | このステップでは、[**Language Understanding** (LUIS)](https://azure.microsoft.com/ja-jp/services/cognitive-services/language-understanding-intelligent-service/) を利用して、より柔軟で強力にユーザーの意図を予測するように変更します。
6 | ([Bot Framework Composer の基礎 - 2](03_composer_basic2.md) では、**正規表現** でユーザーの意図を認識しました)
7 |
8 | [1. Recognizer Type の変更](#recognizer-type-の変更)
9 | [2. Language Understanding の設定](#language-understanding-の設定)
10 | [3. Help トリガーのフレーズの入力](#help-トリガーのフレーズの入力)
11 | [4. Web Chat で動作確認](#web-chat-で動作確認)
12 |
13 | Language Understanding (LUIS) とは、自然言語による入力に対して、
14 |
15 | - 全体の意味を予測
16 | - 関連性のある詳細な情報を引き出す
17 |
18 | サービスです。
19 |
20 |
21 |
22 | > "Language Understanding" はプレビューでは "LUIS" と呼ばれていました。
23 | > GA して Language Understanding と名称が変わりましたが、ドキュメントやライブラリにも LUIS という表記が残っていたり、GA 後も LUIS と呼ばれることが多くあります。
24 |
25 | > このハンズオンでは、ヘルプを呼び出す範囲でのみ Language Understanding を使用するので機能が実感しづらいですが、実装手順を理解することを目的とします。
26 |
27 |
28 |
29 | ---
30 |
31 | ## Recognizer Type の変更
32 |
33 | "MyQnaBot" の **Recognizer Type** (=ユーザー意図の識別方法) は、[Bot Framework Composer の基礎 - 2](./03_composer_basic2.md) では "Regular expression recognizer" にしました。
34 |
35 | ここで "Default recognizer" (= Language Understanding 利用) に変更して、もう少し柔軟な自然言語処理でユーザー意図を予測するように変更します。
36 |
37 |
38 |
39 | 1. [**MyQnaBot**] ダイアログを選択して、Property の [**Recognizer Type**] を "**Default recognizer**" に変更します。
40 |
41 |
42 |
43 |
44 |
45 | ---
46 |
47 | ## Language Understanding の設定
48 |
49 | Bot Framework Composer の設定画面で Language Understanding のセットアップを行います。
50 |
51 | 1. [**Configure**] - [**Development resources**] を開いて [**Set up Language Understanding**] をクリックします。
52 |
53 |
54 |
55 |
56 |
57 | 2. [**Create and configure new Azure Resources**] を選択して [Next] を選択します。
58 |
59 |
60 |
61 |
62 |
63 | 3. Azure の認証を求められたらサインインします。
64 | 4. Language Understanding のリソースを作成する Azure アカウントとサブスクリプションとを選択します。
65 |
66 | 5. リソースグループ、リージョン、価格プランを入力・選択します。続いて [Next] をクリックします。
67 |
68 | |項目名|値|
69 | |---|---|
70 | |Azure resource group|ドロップダウンを開いて [+ Create new] を選択|
71 | |Resource group name|任意の名前で新規作成 (上で "Create new" するまでは非表示)|
72 | |Region|West US|
73 | |Language Understanding resouce name|任意の名前で新規作成|
74 |
75 |
76 |
77 |
78 |
79 | 6. しばらく待つと Language Understanding のリソースが作成されます。
80 | リソース作成に成功するとキーが取得されて [Create Language Understanding resources] が表示されます。
81 | ポップアップは [Done] で閉じます。
82 |
83 |
84 |
85 |
86 | ---
87 |
88 | ## Help トリガーのフレーズの入力
89 |
90 | Help ダイアログにコンテキストを切り替える契機となるフレーズを入力します。
91 |
92 | 1. "**MyQnaBot**" の "**Help**" トリガーを選択します。
93 |
94 | > 選択するのは "Help" ダイアログではありません。
95 |
96 |
97 |
98 | 2. Property の [**Trigger phrases**] に以下の入力をします。
99 |
100 | ```txt
101 | - Help
102 | - ヘルプ
103 | - ボットの使い方
104 | - Botの機能
105 | - このボットで何が出来るの
106 | - あなたの機能について教えて
107 | ```
108 |
109 |
110 |
111 |
112 |
113 | "Trigger phrases" では、類義語を使用した別のフレーズを登録したり、英語と日本語とを組み合わせるなどをすると認識精度が上がることがあります。
114 | 例えば
115 |
116 | - "使い方" と "機能"
117 | - "help" と "ヘルプ"
118 | - "Bot" と "ボット"
119 |
120 | などを使います。
121 | こうすると "このボットの使い方" や "Botの機能を教えて" などの日本語(自然言語)の表現の揺らぎを吸収してくれます。
122 |
123 |
124 |
125 | 3. 認識の精度をより上げるために **エンティティ** も合わせて設定します。
126 | [**Trigger phrases**] の [**Add entity**] - [**Machine learning entity**] を選択します。
127 |
128 |
129 |
130 |
131 |
132 | 4. 追加された行を変更します。
133 | さらに同様の操作でもう一つエンティティを追加・変更します。
134 |
135 | > @ ml Action
136 | >
137 | > @ ml Bot
138 |
139 |
140 |
141 |
142 |
143 | 5. ヘルプの例文にエンティティを設定します。
144 | 1行目の "**Help**" を選択すると [labe entity] が表示されます。ここで "**Action**" を選択します。
145 | この操作で 1行目が以下のように変更されます。
146 |
147 | > \- {Action = Help}
148 |
149 |
150 |
151 |
152 |
153 | 6. ほかの例文にも同様の操作でエンティティを設定します。
154 | 以下はエンティティも含めた Trigger phrases 全体です。
155 |
156 | > \- {Action = Help}
157 | > \- {Action = ヘルプ}
158 | > \- {Bot = ボット}の{Action = 使い方}
159 | > \- {Bot = Bot}の{Action = 機能}
160 | > \- この{Bot = ボット}で何が{Action = 出来る}の
161 | > \- {Bot = あなた}の{Action = 機能}について教えて
162 | >
163 | > @ ml Action
164 | >
165 | > @ ml Bot
166 |
167 |
168 |
169 |
170 |
171 |
172 | 7. [**Condition**] のドロップダウンを開いて "**Write an expression**" を選択します。
173 |
174 |
175 |
176 |
177 |
178 | 8. [**Condition**] に以下の入力をします。
179 | 前の操作で [Condition] には "**=**" が設定されているので、それも利用して以下のとおり指定します。
180 |
181 | ```txt
182 | =#Help.Score > 0.94
183 | ```
184 |
185 |
186 |
187 |
188 |
189 | > Language Understanding での推論の結果、ユーザーの入力が "Help" である可能性が 94% より高い場合に Help ダイアログにコンテキストを切り替えることを意味します。
190 | > それ以下の場合は、ユーザーの入力は "Help" 以外で処理されます。(現在は "Unknown intent" のみ)
191 | >
192 | > 上で指定した 94% という数値は中途半端な値に思えるかもしれません。
193 | > この後の方法で動作確認をしたところ、子のハンズオンを作成時には閾値として適切な値になったために今回は 94% にしました。
194 | > Language Understanding のスコアは随時変更される可能性があるので、その場合はより適切な予測ができる値に変更してください。
195 |
196 |
197 |
198 | ---
199 |
200 | ## Web Chat で動作確認
201 |
202 | 1. 組み込みの Web Chat で何か入力してみます。
203 |
204 | - ヘルプ
205 | - ボットの機能
206 | - こんにちは
207 | - ランチのおすすめは
208 |
209 | などを入力します。
210 |
211 | ヘルプに関係する入力の場合はヘルプメッセージが返ってくること、それ以外の入力にはオウム返しすることが確認できます。
212 |
213 |
214 |
215 |
216 |
217 | 2. "ヘルプ" などと入力した際には Language Understanding で入力の意図を類推していることを確認します。
218 |
219 |
220 |
221 | > ボットの応答の内容だけ見ると、正規表現を使っていた時と同じように見えるかもしれません。
222 | > Web Chat のトレースを見ると、今回は確かに "Language Understanding" への問い合わせが実行されていることがわかります。
223 | >
224 | >
225 |
226 | ---
227 |
228 | 以上で Language Understanding を利用してユーザーの意図を予測できるようになりました。
229 |
230 | 次のステップでは QnA Maker と連携して、FAQ ボットの機能を追加します。
231 |
232 | [前に戻る](./03_composer_basic2.md) | [次に進む](./05_create_knowledgebase.md)
233 | [目次に戻る](../README.md)
234 |
--------------------------------------------------------------------------------
/docs/05_create_knowledgebase.md:
--------------------------------------------------------------------------------
1 | # ナレッジベース作成
2 |
3 | [前のステップ](03_composer_basic2.md) までで Bot Framework Composer の基本的な操作を理解しました。
4 |
5 | この手順では Bot Framework Composer 組み込み機能でナレッジベースを作成します。
6 |
7 | [1. QnA Maker の設定](#qna-maker-の設定)
8 | [2. ナレッジベースの作成](#ナレッジベースの作成)
9 | [3. ナレッジベースの編集](#ナレッジベースの編集)
10 |
11 |
12 |
13 | > ナレッジベースとして [**Surface の保証: よくある質問**](https://support.microsoft.com/ja-jp/surface/surface-%E3%81%AE%E4%BF%9D%E8%A8%BC-%E3%82%88%E3%81%8F%E3%81%82%E3%82%8B%E3%81%94%E8%B3%AA%E5%95%8F-1217913a-2692-424e-a5c4-0eb0de84f05a) を利用します。
14 | >
15 | >
16 |
17 |
18 |
19 | > QnA Maker のナレッジベースは、QnA Maker ポータルで作成して Composer から接続する方法もあります。
20 |
21 |
22 |
23 | ---
24 |
25 | ## QnA Maker の設定
26 |
27 | Bot Framework Composer の設定画面で QnA Maker のセットアップを行います。
28 |
29 | 1. [**Configure**] - [**Development resources**] を開いて [**Set up QnA Maker**] をクリックします。
30 |
31 |
32 |
33 |
34 |
35 | 2. [**Create and configure new Azure Resources**] を選択して [Next] を選択します。
36 |
37 |
38 |
39 |
40 |
41 | 3. Azure の認証を求められたらサインインします。
42 | 4. QnA Maker のリソースを作成する Azure アカウントとサブスクリプションとを選択します。
43 |
44 |
45 |
46 |
47 |
48 | 5. リソースグループ、リージョン、価格プランを入力・選択します。続いて [Next] をクリックします。
49 |
50 | |項目名|値|
51 | |---|---|
52 | |Azure resource group|Language Understanding のリソースを作成したリソースグループ|
53 | |Region|West US|
54 | |QnA Maker resouce name|任意の名前で新規作成|
55 | |Pricing tier|任意|
56 |
57 |
58 |
59 |
60 |
61 | 6. しばらく待つと QnA Maker のリソースが作成されます。
62 | リソース作成に成功するとキーが取得されて [QnA Maker Subscription key] に自動的に表示されます。
63 |
64 |
65 |
66 |
67 |
68 | ---
69 |
70 | ## ナレッジベースの作成
71 |
72 | Web ページをインポートしてナレッジベースを作成します。
73 |
74 | 1. Composer のナビゲーションで [**Knowledge base**] を選択して [**Create new KB**] をクリックします。
75 |
76 |
77 |
78 |
79 |
80 | 2. [**Add Qna Maker knowledge base**] でナレッジベースの名前(任意)を入力して、[**FAQ website (source)**] に FAQ ページのアドレスを入力します。
81 | 今回は "https://support.microsoft.com/ja-jp/surface/surface-%E3%81%AE%E4%BF%9D%E8%A8%BC-%E3%82%88%E3%81%8F%E3%81%82%E3%82%8B%E3%81%94%E8%B3%AA%E5%95%8F-1217913a-2692-424e-a5c4-0eb0de84f05a" と入力します。
82 |
83 |
84 |
85 | > [Surface の保証: よくあるご質問](https://support.microsoft.com/ja-jp/surface/surface-%E3%81%AE%E4%BF%9D%E8%A8%BC-%E3%82%88%E3%81%8F%E3%81%82%E3%82%8B%E3%81%94%E8%B3%AA%E5%95%8F-1217913a-2692-424e-a5c4-0eb0de84f05a)
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 | 3. 少し待つとナレッジベースが作成されます。
94 |
95 |
96 |
97 |
98 |
99 | > ナレッジベース作成時に先頭の数個だけ表示されて全体の作成には失敗することがあります。
100 | > この場合は [**Delete knowledge base**] でナレッジベースを削除してから改めて作り直すか、[**Import new URL and overwrite**] でナレッジベースを取り込み直しします。
101 | >
102 | >
103 |
104 |
105 |
106 | ---
107 |
108 | ## ナレッジベースの編集
109 |
110 | Q&A の内容を確認して、必要に応じて質問や回答の文言を修正・追加・削除します。
111 | 実際に次の操作でナレッジベースを編集してみます。
112 |
113 | > ここで使用する FAQ ページの内容は随時更新されます。Q&A の内容が以下とは異なるかもしれません。
114 | > その場合は以下の操作を参考に適宜適切な編集をしてください。
115 |
116 | 1. 不要な Q&A ペアを [ごみ箱] アイコンで削除します。
117 | ここでは先頭の Q&A ペアが適切ではないので削除します。 (ページ表示コントロールのスクリプト部分を回答として認識しています)
118 |
119 |
120 |
121 | 2. この後のステップで利用する質問を追加します。
122 | ひとつの回答に対して複数の質問を定義する形にします。
123 |
124 | > ここで追加する質問は Help メッセージの追加の応答として **Suggested Action** で利用します。
125 |
126 |
127 |
128 | |追加箇所|追加の質問|
129 | |---|---|
130 | |使用中のデバイスの保証契約条件は、どこで確認することができますか? - 保証に関してよく寄せられる質問|保証内容を確認|
131 | |サポートに連絡する方法を教えてください。 - サービスに関してよく寄せられる質問|サポートに連絡|
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 | ---
141 |
142 | ここでは Composer に組み込まれたナレッジベース管理機能でナレッジベースの新規作成、編集を行いました。
143 |
144 | 次のステップでは、ここで作成したナレッジベースを Bot アプリケーションから呼び出してみます。
145 |
146 | [前に戻る](03_composer_basic2.md) | [次に進む](06_test_qnatrigger.md)
147 | [目次に戻る](../README.md)
148 |
--------------------------------------------------------------------------------
/docs/06_test_qnatrigger.md:
--------------------------------------------------------------------------------
1 | # QnA Maker のナレッジベースの呼び出し
2 |
3 | [前のステップ](04_create_knowledgebase.md) で、Composer 組み込みの機能でナレッジベースを作成しました。
4 |
5 | このステップでは、Bot アプリケーションからナレッジベースに接続して応答を得られることを確認してみます。
6 |
7 | [1. QnA Intent recognized トリガーの実装確認](#qna-intent-recognized-トリガーの実装確認)
8 | [2. ナレッジベースの呼び出しの動作確認](#ナレッジベースの呼び出しの動作確認)
9 |
10 |
11 |
12 | > アプリケーションの新規作成時に [**Create new**] - [**Core Bot with QnA Maker**] テンプレートを選択してQ&A ボットを作成することもできます。
13 | >
14 | > このハンズオンでは、Composer の主な機能や操作を体験するために Empty Bot テンプレートを使っています。
15 | >
16 | >
17 |
18 |
19 |
20 | ---
21 |
22 | ## QnA Intent recognized トリガーの実装確認
23 |
24 | [前のステップ](./04_create_knowledgebase.md) で Composer 組み込みの管理機能でナレッジベースを作成しました。
25 |
26 | この機能を使うと、QnA Maker から応答を得るトリガーが自動的に生成されます。
27 | このトリガーを確認してみます。
28 |
29 | 1. [**Create**] - [**Qna Intent recognized**] を選択します。
30 | ナレッジベースから回答を取得する処理がトリガーで定義されています。適切な回答が得られなかった場合の処理も含んでいます。
31 |
32 |
33 |
34 |
35 |
36 | > 作成済みの "Qna Intent recognizer" を削除してしまった場合でも再作成できます。
37 | >
38 | > [**MyQnaBot**] ダイアログで [**Add new trigger**] を選択して、[**QnA Intent recognizer**] を選択します。
39 | > これで同じトリガーが作成できます。
40 | >
41 | >
42 | >
43 |
44 |
45 |
46 | ---
47 |
48 | ## ナレッジベースの呼び出しの動作確認
49 |
50 | 1. Web Chat を使って動作確認します。
51 | Bot Framework Composer の [**Start Bot**] または [**Resatrt Bot]** をクリックします。
52 |
53 | 2. [**Open Web Chat**] で Web Chat を起動します。
54 | 初回はナレッジベースの発行が行われるので少し時間がかかります。
55 |
56 |
57 |
58 |
59 |
60 | 3. Web Chat に質問を入力します。ナレッジベースから適切な応答が返ってくることを確認します。
61 | ただしナレッジベースにない内容(Surface の保証に関係しない内容)を入力した場合にはヘルプメッセージまたは入力のオウム返しが表示されます。
62 |
63 | 例えば以下の内容を入力します。
64 |
65 | - 保証の概要を教えて
66 | - 修理状況を確認するには
67 | - ヘルプ
68 | - ランチのおすすめは
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 | ---
78 |
79 | ここでは QnA Maker のナレッジベースから適切な回答を得られることを確認しました。
80 | 以上で Language Understanding および QnA Maker と連携できるようになりました。
81 |
82 | 次のステップでは、ユーザーの操作性を向上する機能を追加してみます。
83 |
84 | [前に戻る](./05_create_knowledgebase.md) | [次に進む](./07_help_and_suggestion.md)
85 | [目次に戻る](../README.md)
86 |
--------------------------------------------------------------------------------
/docs/07_help_and_suggestion.md:
--------------------------------------------------------------------------------
1 | # 操作性の向上
2 |
3 | [前のステップ](04_create_knowledgebase.md) で、Composer 組み込みの機能でナレッジベースを作成しました。
4 |
5 | このステップでは、ユーザーにとっての操作性を向上する機能を追加します。
6 |
7 | [1. ヘルプメッセージを応答するタイミングの追加](#ヘルプメッセージを応答するタイミングの追加)
8 | [2. サジェスチョンの追加](#サジェスチョンの追加)
9 |
10 |
11 |
12 | ---
13 |
14 | ## ヘルプメッセージを応答するタイミングの追加
15 |
16 | [前のステップ](./04_composer_luis.md) で、ユーザーが "ヘルプ" などと入力した時にヘルプメッセージを応答する処理を実装しました。
17 |
18 | ユーザーにとっての操作性を考えると、他のタイミングでもヘルプメッセージを応答するのがよさそうです。
19 |
20 | - ユーザーが Bot と対話を開始した時(あいさつメッセージに加えてヘルプメッセージ)
21 | - ユーザーが Q&A やヘルプを求める以外の入力をした場合(ユーザーの意図が不明で "Unknown Intent" に分類された場合)
22 |
23 | これらのタイミングでもヘルプメッセージを応答する処理を追加します。
24 | すでに [Help ダイアログは実装済み](./03_composer_basic2.md) なので処理の追加は簡単です。
25 |
26 | 1. [**Create**] - [**Greeting**] でトリガーを開き、"**ようこそ、QnA Bot へ**" [**Send a response**] の下の [**+**] をクリックします。
27 | 続いて、[**Dialog management**] - [**Begin a new dialog**] を選択します。
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 | 2. [**Dialog name**] で "**Help**" を選択します。
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 | 3. 同様に [**Unknown Intent**] にも [**Begin a new dialog**] を追加して、"**Help**" ダイアログを呼び出します。
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 | 4. [**Restart bot**] で ローカルの Bot ランタイムを再起動します。
53 | 続いて Web Chat を開きます。
54 | 以下のタイミングでヘルプメッセージが表示されることを確認します。
55 |
56 | - チャットを開始した時("Restart Conversation" で Web Chat を再起動した後)
57 | - "ランチのおすすめは" と入力した時
58 |
59 |
60 |
61 | ---
62 |
63 | ## サジェスチョンの追加
64 |
65 | サジェスチョンとはユーザーに対する入力例の提示のことです。
66 |
67 | ユーザーが Bot と対話する際、主にキーボードを通して自然言語の入力を行います。(クライアントによっては音声入力)
68 |
69 | 入力例を提示することで、ユーザーの操作性が向上することがあります。
70 |
71 | - (そのタイミングで)ユーザーがよく入力すると思われる内容を提示することで入力の手間を省く
72 | - ユーザーに何を入力したらいいかを例示する
73 |
74 | 1. [**Help**] - [**BeginDialog**] を選択して、さらに [**Send a response**] を選択します。
75 | 2. [**Bot responses**] で [**+**] をクリックして [Suggested Actions] を選択します。
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 | 3. [**Suggested Actions**] に以下を入力します。
84 |
85 | - 保証内容を確認
86 | - サポートに連絡
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 | > [Suggested Actions] に入力したものは、[前のステップ](./05_create_knowledgebase.md) でナレッジベースに追加の Question として入力したものです。
95 | > Bot から提示した内容がナレッジベースで確実に見つかるように Question として追加しておきました。
96 |
97 |
98 |
99 | 4. [**Restart bot**] で ローカルの Bot ランタイムを再起動して Web Chat を開きます。
100 | 以下のタイミングでヘルプメッセージと一緒にサジェスチョンが表示されることを確認します。
101 |
102 | - チャットを開始した時("Restart Conversation" で Web Chat を再起動した後)
103 | - "ヘルプ" と入力した時
104 | - "ランチのおすすめは" と入力した時
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 | ---
113 |
114 | 以上で、Q&A Bot アプリケーションを開発は完了です。
115 |
116 | 次のステップでは、作成したアプリケーションを Azure に発行します。
117 |
118 | [前に戻る](./06_test_qnatrigger.md) | [次に進む](./08_deploy_bot.md)
119 | [目次に戻る](../README.md)
--------------------------------------------------------------------------------
/docs/08_deploy_bot.md:
--------------------------------------------------------------------------------
1 | # Bot アプリケーションをクラウドに発行
2 |
3 | [前のステップ](06_composer_luis.md) までで Q&A Bot アプリケーションの開発は完了しました。
4 |
5 | このステップでは、作成したアプリケーションを Azure に発行します。
6 |
7 | [1. 発行プロファイルの作成](#発行プロファイルの作成)
8 | [2. Azure に発行](#azure-に発行)
9 | [3. App ID および App Password の確認](#app-id-および-app-password-の確認)
10 | [4. Bot Framework Emulator で動作確認](#bot-framework-emulator-で動作確認)
11 | [5. Azure 上のリソースの削除](#azure-上のリソースの削除)
12 |
13 | ---
14 |
15 | ## 発行プロファイルの作成
16 |
17 | Bot Framework Composer v2.0 では Composer の環境内から Azure への発行ができます。
18 | 発行にはまず、発行プロファイルを作成します。
19 |
20 |
21 |
22 | 1. [**Publish**] - [**Publishing**] - [**Add new**] を選択します。
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | 2. 以下の入力、選択をします。
31 |
32 |
33 |
34 | |項目名|値|
35 | |---|---|
36 | |Name|任意|
37 | |Publishing target|Publish bot to Azure|
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 | 3. [**Create new resources**] を選択して [Next] をクリックします。
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 | 4. 必要に応じて Azure にサインインします。
54 | 5. 以下の選択、入力をします。
55 |
56 |
57 |
58 | |項目名|値|
59 | |---|---|
60 | |Azure Directory|任意|
61 | |Subscription|任意|
62 | |Resource group|任意 (このハンズオンでは前のステップで作成したリソースグループでよい)|
63 | |Name|任意|
64 | |Region|今回は "米国西部"|
65 | |LUIS region|今回は "米国西部"|
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 | 6. [**Add resources**] で [**Optional**] の以下のリソースのチェックを外します。
74 |
75 |
76 |
77 | - Azure Cosmos DB
78 | - Application Insights
79 | - Azure Blob Storage
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 | 7. 確認画面で [**Create**] をクリックします。
88 | プロファイル作成が完了するまで少し時間がかかります。
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 | ---
97 |
98 | ## Azure に発行
99 |
100 | 発行プロファイルができたので、それを使って Bot アプリケーションを Azure に発行します。
101 |
102 | 1. [**Publish**] で発行する **Bot をチェック** して、[**Publish target**] で今作成したプロファイルを選択します。
103 | 続いて [**Publish selected bots**] をクリックします。
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 | 2. 管理用のコメントを任意で入力します。最後に [Okey] をクリックして発行します。
112 | 発行に成功するまで少し待ちます。
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 | > 発行に成功したら必要に応じて、作成された App Service プラン を F1 (無償) に変更します。
121 | >
122 | > Azure ポータルで [**App Service プラン**] を選択して、[**開発 / テスト**] - [**F1**] を選択します。
123 | >
124 | >
125 |
126 |
127 |
128 | 3. ハンズオンの最後の手順として、Bot Framework Emulator で動作確認する際に必要となるメッセージング エンドポイントを確認して、メモ帳などにコピーします。
129 | Azure ポータルで [**Azure ボット**] ブレードを開き、[**メッセージングエンドポイント**] をコピーします。
130 | Azure Bot の メッセージング エンドポイントは、**Bot Framework Emulator での動作確認時** に使用します。
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 | ---
139 |
140 | ## App ID および App Password の確認
141 |
142 | このあとの Bpt Framework Emulator での動作確認に必要になる App ID および App Password を確認して、メモ帳などにコピーします。
143 |
144 | 1. Bot Framework Composer に戻って、発行した Bot の App ID および App Password を確認します。
145 | [**Publish**] - [**Publishing profile**] で発行に使用した発行プロファイルの [**Edit**] をクリックします。
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 | 2. [**Import existing resources**] を選択して [Next] をクリックします。
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 | 3. 表示された発行プロファイルの [**MicrosoftAppId**] および [**MicrosoftAppPassword**] の値をメモ帳などにコピーします。
162 | コピーしたら [Cancel] で閉じます。
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 | ---
171 |
172 | ## Bot Framework Emulator で動作確認
173 |
174 | Azure に発行したので Bot Framework Emulator から接続して Bot の動作を確認してみます。
175 |
176 | 1. ngrok の設定、およびロケールの設定
177 | Bot Framework Emulator を起動して [**Settings**] を開き、以下の設定をします。
178 | 以下の設定後は、念のために Bot Framework Emulator を再起動します。
179 |
180 | ngrok はハンズオンの最初に [開発環境の構築](01_install.md) でインストール(ファイル配置)しているはずです。
181 |
182 |
183 |
184 | |項目|値|
185 | |---|---|
186 | |Path to ngrok|ngrok のパス|
187 | |Bypass ngrok for local addresses|チェック|
188 | |Run ngrok when the Emulator starts up|チェック|
189 | |Locale|ja-jp|
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 | 5. [**Welcome**] 画面の [**Open Bot**] をクリックして、以下の通り入力・選択して [**connect**] をクリックします。
198 |
199 |
200 |
201 | |項目|値|
202 | |---|---|
203 | |Endpoint URL|発行した Bot のメッセージ エンドポイント |
204 | |Microsoft App ID|"**MicrosoftAppId**" の値 |
205 | |Microsoft App password|"**MicrosoftAppPassword**" の値 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 | 6. 任意の入力をして Bot から適切な応答があることを確認します。
214 |
215 |
216 |
217 | ---
218 |
219 | ## Azure 上のリソースの削除
220 |
221 | Azure に作成したリソースはコストがかかります。
222 |
223 | 作成したアプリケーションを続けて使用するなどの場合(例えば、同僚に見せる、説明する)を除いて、作成したリソースを削除してください。
224 |
225 | 1. [Azure ポータル](https://portal.azure.com/) に接続します。
226 |
227 | 2. 検索ボックスに "**今回使用したリソースグループ名**" を入力して、リソースグループを選択します。
228 |
229 | > QnA Maker で作成したリソースについては、このハンズオンの手順通りに進めていれば無償の範囲です。
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 | 3. [**リソースグループの削除**] をクリックします。
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 | 4. リソースグループの名前を入力して [削除] をクリックします。
246 | しばらく待つと、リソースグループに含まれるすべてのリソースが削除されます。
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 | ---
255 |
256 | 以上で Bot Framework Composer を使った Q&A Bot アプリケーションの開発、および Web サービス化のすべての手順は完了です。
257 |
258 | おつかれさまでした。
259 |
260 | [前に戻る](./07_help_and_suggestion.md)
261 | [目次に戻る](../README.md)
--------------------------------------------------------------------------------
/docs/images/01/bfcomp_install_01.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/01/bfcomp_install_01.jpg
--------------------------------------------------------------------------------
/docs/images/01/bfcomp_install_02.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/01/bfcomp_install_02.jpg
--------------------------------------------------------------------------------
/docs/images/01/bfcomp_nodejs_request.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/01/bfcomp_nodejs_request.jpg
--------------------------------------------------------------------------------
/docs/images/01/bfcomp_start.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/01/bfcomp_start.jpg
--------------------------------------------------------------------------------
/docs/images/01/bfemu_install_01.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/01/bfemu_install_01.jpg
--------------------------------------------------------------------------------
/docs/images/01/bfemu_install_02.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/01/bfemu_install_02.jpg
--------------------------------------------------------------------------------
/docs/images/01/dncore_install_01.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/01/dncore_install_01.jpg
--------------------------------------------------------------------------------
/docs/images/01/dncore_install_02.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/01/dncore_install_02.jpg
--------------------------------------------------------------------------------
/docs/images/02/bfcomp_config_lang.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/02/bfcomp_config_lang.jpg
--------------------------------------------------------------------------------
/docs/images/02/bfcomp_config_lang_jajp.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/02/bfcomp_config_lang_jajp.jpg
--------------------------------------------------------------------------------
/docs/images/02/bfcomp_create_emptybot_cs.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/02/bfcomp_create_emptybot_cs.jpg
--------------------------------------------------------------------------------
/docs/images/02/bfcomp_defaultlang_jajp.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/02/bfcomp_defaultlang_jajp.jpg
--------------------------------------------------------------------------------
/docs/images/02/bfcomp_echomessage_literal.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/02/bfcomp_echomessage_literal.jpg
--------------------------------------------------------------------------------
/docs/images/02/bfcomp_edit_greeting_resp.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/02/bfcomp_edit_greeting_resp.jpg
--------------------------------------------------------------------------------
/docs/images/02/bfcomp_greeting_resp.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/02/bfcomp_greeting_resp.jpg
--------------------------------------------------------------------------------
/docs/images/02/bfcomp_input_propref.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/02/bfcomp_input_propref.jpg
--------------------------------------------------------------------------------
/docs/images/02/bfcomp_insert_propref.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/02/bfcomp_insert_propref.jpg
--------------------------------------------------------------------------------
/docs/images/02/bfcomp_localbot_rtman.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/02/bfcomp_localbot_rtman.jpg
--------------------------------------------------------------------------------
/docs/images/02/bfcomp_new_project.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/02/bfcomp_new_project.jpg
--------------------------------------------------------------------------------
/docs/images/02/bfcomp_open_webchat.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/02/bfcomp_open_webchat.jpg
--------------------------------------------------------------------------------
/docs/images/02/bfcomp_project_created.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/02/bfcomp_project_created.jpg
--------------------------------------------------------------------------------
/docs/images/02/bfcomp_project_name.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/02/bfcomp_project_name.jpg
--------------------------------------------------------------------------------
/docs/images/02/bfcomp_remove_enus.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/02/bfcomp_remove_enus.jpg
--------------------------------------------------------------------------------
/docs/images/02/bfcomp_say_something.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/02/bfcomp_say_something.jpg
--------------------------------------------------------------------------------
/docs/images/02/bfcomp_select_propref1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/02/bfcomp_select_propref1.jpg
--------------------------------------------------------------------------------
/docs/images/02/bfcomp_select_propref2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/02/bfcomp_select_propref2.jpg
--------------------------------------------------------------------------------
/docs/images/02/bfcomp_select_unknownintent.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/02/bfcomp_select_unknownintent.jpg
--------------------------------------------------------------------------------
/docs/images/02/bfcomp_startbot.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/02/bfcomp_startbot.jpg
--------------------------------------------------------------------------------
/docs/images/02/win_set_firewalls.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/02/win_set_firewalls.jpg
--------------------------------------------------------------------------------
/docs/images/03/bfcomp_add_help_begin_dialog.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/03/bfcomp_add_help_begin_dialog.jpg
--------------------------------------------------------------------------------
/docs/images/03/bfcomp_add_help_trigger.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/03/bfcomp_add_help_trigger.jpg
--------------------------------------------------------------------------------
/docs/images/03/bfcomp_add_message.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/03/bfcomp_add_message.jpg
--------------------------------------------------------------------------------
/docs/images/03/bfcomp_add_new_dialog.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/03/bfcomp_add_new_dialog.jpg
--------------------------------------------------------------------------------
/docs/images/03/bfcomp_create_help_trigger.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/03/bfcomp_create_help_trigger.jpg
--------------------------------------------------------------------------------
/docs/images/03/bfcomp_greeting_mes1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/03/bfcomp_greeting_mes1.jpg
--------------------------------------------------------------------------------
/docs/images/03/bfcomp_greeting_mes2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/03/bfcomp_greeting_mes2.jpg
--------------------------------------------------------------------------------
/docs/images/03/bfcomp_help_add_send_res.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/03/bfcomp_help_add_send_res.jpg
--------------------------------------------------------------------------------
/docs/images/03/bfcomp_help_dialog_name.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/03/bfcomp_help_dialog_name.jpg
--------------------------------------------------------------------------------
/docs/images/03/bfcomp_help_send_mes.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/03/bfcomp_help_send_mes.jpg
--------------------------------------------------------------------------------
/docs/images/03/bfcomp_input_newmessage.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/03/bfcomp_input_newmessage.jpg
--------------------------------------------------------------------------------
/docs/images/03/bfcomp_set_help_dialog_name.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/03/bfcomp_set_help_dialog_name.jpg
--------------------------------------------------------------------------------
/docs/images/03/bfcomp_set_rectype.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/03/bfcomp_set_rectype.jpg
--------------------------------------------------------------------------------
/docs/images/03/webchat_test_help.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/03/webchat_test_help.jpg
--------------------------------------------------------------------------------
/docs/images/04/bfcomp_change_condition.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/04/bfcomp_change_condition.jpg
--------------------------------------------------------------------------------
/docs/images/04/bfcomp_create_luis_done.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/04/bfcomp_create_luis_done.jpg
--------------------------------------------------------------------------------
/docs/images/04/bfcomp_create_luis_resource.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/04/bfcomp_create_luis_resource.jpg
--------------------------------------------------------------------------------
/docs/images/04/bfcomp_help_trigger_phrases.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/04/bfcomp_help_trigger_phrases.jpg
--------------------------------------------------------------------------------
/docs/images/04/bfcomp_labeled_all_entities.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/04/bfcomp_labeled_all_entities.jpg
--------------------------------------------------------------------------------
/docs/images/04/bfcomp_labeled_entity.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/04/bfcomp_labeled_entity.jpg
--------------------------------------------------------------------------------
/docs/images/04/bfcomp_labeling_entity.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/04/bfcomp_labeling_entity.jpg
--------------------------------------------------------------------------------
/docs/images/04/bfcomp_luis_add_entity_menu.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/04/bfcomp_luis_add_entity_menu.jpg
--------------------------------------------------------------------------------
/docs/images/04/bfcomp_luis_added_entities.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/04/bfcomp_luis_added_entities.jpg
--------------------------------------------------------------------------------
/docs/images/04/bfcomp_set_help_condition.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/04/bfcomp_set_help_condition.jpg
--------------------------------------------------------------------------------
/docs/images/04/bfcomp_set_luis_name.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/04/bfcomp_set_luis_name.jpg
--------------------------------------------------------------------------------
/docs/images/04/bfcomp_set_rectype.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/04/bfcomp_set_rectype.jpg
--------------------------------------------------------------------------------
/docs/images/04/bfcomp_setup_luis.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/04/bfcomp_setup_luis.jpg
--------------------------------------------------------------------------------
/docs/images/04/bfcomp_show_luis_key.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/04/bfcomp_show_luis_key.jpg
--------------------------------------------------------------------------------
/docs/images/04/bfcomp_test_luis.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/04/bfcomp_test_luis.jpg
--------------------------------------------------------------------------------
/docs/images/04/bfcomp_webchat_trace.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/04/bfcomp_webchat_trace.jpg
--------------------------------------------------------------------------------
/docs/images/05/bfcomp_add_kb.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/05/bfcomp_add_kb.jpg
--------------------------------------------------------------------------------
/docs/images/05/bfcomp_add_qna_phrase1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/05/bfcomp_add_qna_phrase1.jpg
--------------------------------------------------------------------------------
/docs/images/05/bfcomp_add_qna_phrase2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/05/bfcomp_add_qna_phrase2.jpg
--------------------------------------------------------------------------------
/docs/images/05/bfcomp_create_kb.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/05/bfcomp_create_kb.jpg
--------------------------------------------------------------------------------
/docs/images/05/bfcomp_create_qna_resource.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/05/bfcomp_create_qna_resource.jpg
--------------------------------------------------------------------------------
/docs/images/05/bfcomp_delete_kb.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/05/bfcomp_delete_kb.jpg
--------------------------------------------------------------------------------
/docs/images/05/bfcomp_delete_qapair.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/05/bfcomp_delete_qapair.jpg
--------------------------------------------------------------------------------
/docs/images/05/bfcomp_kb_created.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/05/bfcomp_kb_created.jpg
--------------------------------------------------------------------------------
/docs/images/05/bfcomp_qna_key.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/05/bfcomp_qna_key.jpg
--------------------------------------------------------------------------------
/docs/images/05/bfcomp_select_qna_subscription.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/05/bfcomp_select_qna_subscription.jpg
--------------------------------------------------------------------------------
/docs/images/05/bfcomp_set_qna_name.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/05/bfcomp_set_qna_name.jpg
--------------------------------------------------------------------------------
/docs/images/05/bfcomp_setup_qnamaker.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/05/bfcomp_setup_qnamaker.jpg
--------------------------------------------------------------------------------
/docs/images/05/surface_warrantyfaq_page.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/05/surface_warrantyfaq_page.jpg
--------------------------------------------------------------------------------
/docs/images/06/bfcomp_add_new_trigger.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/06/bfcomp_add_new_trigger.jpg
--------------------------------------------------------------------------------
/docs/images/06/bfcomp_add_qnatrigger.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/06/bfcomp_add_qnatrigger.jpg
--------------------------------------------------------------------------------
/docs/images/06/bfcomp_create_qnabot.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/06/bfcomp_create_qnabot.jpg
--------------------------------------------------------------------------------
/docs/images/06/bfcomp_qna_intent.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/06/bfcomp_qna_intent.jpg
--------------------------------------------------------------------------------
/docs/images/06/bfcomp_startbot.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/06/bfcomp_startbot.jpg
--------------------------------------------------------------------------------
/docs/images/06/webchat_test_qna.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/06/webchat_test_qna.jpg
--------------------------------------------------------------------------------
/docs/images/06/webchat_test_qna2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/06/webchat_test_qna2.jpg
--------------------------------------------------------------------------------
/docs/images/07/bfcomp_add_help_to_greeting.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/07/bfcomp_add_help_to_greeting.jpg
--------------------------------------------------------------------------------
/docs/images/07/bfcomp_add_help_to_unknown.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/07/bfcomp_add_help_to_unknown.jpg
--------------------------------------------------------------------------------
/docs/images/07/bfcomp_greeting_help_dialog.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/07/bfcomp_greeting_help_dialog.jpg
--------------------------------------------------------------------------------
/docs/images/07/bfcomp_select_suggested_actions.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/07/bfcomp_select_suggested_actions.jpg
--------------------------------------------------------------------------------
/docs/images/07/bfcomp_suggested_actions.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/07/bfcomp_suggested_actions.jpg
--------------------------------------------------------------------------------
/docs/images/07/bfcomp_test_help.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/07/bfcomp_test_help.jpg
--------------------------------------------------------------------------------
/docs/images/07/bfcomp_test_suggesntion.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/07/bfcomp_test_suggesntion.jpg
--------------------------------------------------------------------------------
/docs/images/07/bfcomp_unknown_help_dialog.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/07/bfcomp_unknown_help_dialog.jpg
--------------------------------------------------------------------------------
/docs/images/08/az_app_service_plan_to_f1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/08/az_app_service_plan_to_f1.jpg
--------------------------------------------------------------------------------
/docs/images/08/az_delete_rg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/08/az_delete_rg.jpg
--------------------------------------------------------------------------------
/docs/images/08/az_delete_rg_confirm.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/08/az_delete_rg_confirm.jpg
--------------------------------------------------------------------------------
/docs/images/08/az_get_azurebot_endpoint.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/08/az_get_azurebot_endpoint.jpg
--------------------------------------------------------------------------------
/docs/images/08/az_search_rg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/08/az_search_rg.jpg
--------------------------------------------------------------------------------
/docs/images/08/bfcomp_add_new_profile.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/08/bfcomp_add_new_profile.jpg
--------------------------------------------------------------------------------
/docs/images/08/bfcomp_appid_pw.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/08/bfcomp_appid_pw.jpg
--------------------------------------------------------------------------------
/docs/images/08/bfcomp_do_publish_bot.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/08/bfcomp_do_publish_bot.jpg
--------------------------------------------------------------------------------
/docs/images/08/bfcomp_edit_profile.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/08/bfcomp_edit_profile.jpg
--------------------------------------------------------------------------------
/docs/images/08/bfcomp_profile_add_resources.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/08/bfcomp_profile_add_resources.jpg
--------------------------------------------------------------------------------
/docs/images/08/bfcomp_profile_import.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/08/bfcomp_profile_import.jpg
--------------------------------------------------------------------------------
/docs/images/08/bfcomp_profile_name.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/08/bfcomp_profile_name.jpg
--------------------------------------------------------------------------------
/docs/images/08/bfcomp_profile_resource_name.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/08/bfcomp_profile_resource_name.jpg
--------------------------------------------------------------------------------
/docs/images/08/bfcomp_profile_review.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/08/bfcomp_profile_review.jpg
--------------------------------------------------------------------------------
/docs/images/08/bfcomp_profile_select_create_new.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/08/bfcomp_profile_select_create_new.jpg
--------------------------------------------------------------------------------
/docs/images/08/bfcomp_publish_selected_bots.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/08/bfcomp_publish_selected_bots.jpg
--------------------------------------------------------------------------------
/docs/images/08/bfemu_open_bot.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/08/bfemu_open_bot.jpg
--------------------------------------------------------------------------------
/docs/images/08/bfemu_settings_ngrok.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/08/bfemu_settings_ngrok.jpg
--------------------------------------------------------------------------------
/docs/images/08/bfemu_test_azurebot.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/08/bfemu_test_azurebot.jpg
--------------------------------------------------------------------------------
/docs/images/09/azure_create_qna.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/09/azure_create_qna.jpg
--------------------------------------------------------------------------------
/docs/images/09/azure_rg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/09/azure_rg.jpg
--------------------------------------------------------------------------------
/docs/images/09/azure_support_page.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/09/azure_support_page.jpg
--------------------------------------------------------------------------------
/docs/images/09/bfcomp_configure_qna.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/09/bfcomp_configure_qna.jpg
--------------------------------------------------------------------------------
/docs/images/09/qna_create_kb.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/09/qna_create_kb.jpg
--------------------------------------------------------------------------------
/docs/images/09/qna_create_kb_button.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/09/qna_create_kb_button.jpg
--------------------------------------------------------------------------------
/docs/images/09/qna_create_qna_service.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/09/qna_create_qna_service.jpg
--------------------------------------------------------------------------------
/docs/images/09/qna_kb_created.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/09/qna_kb_created.jpg
--------------------------------------------------------------------------------
/docs/images/09/qna_populate_kb.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/09/qna_populate_kb.jpg
--------------------------------------------------------------------------------
/docs/images/09/qna_publish.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/09/qna_publish.jpg
--------------------------------------------------------------------------------
/docs/images/09/qna_published_settings.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/09/qna_published_settings.jpg
--------------------------------------------------------------------------------
/docs/images/09/qna_save_and_train.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/09/qna_save_and_train.jpg
--------------------------------------------------------------------------------
/docs/images/09/qna_select_resource.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/09/qna_select_resource.jpg
--------------------------------------------------------------------------------
/docs/images/09/qna_signin.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/09/qna_signin.jpg
--------------------------------------------------------------------------------
/docs/images/09/qna_test.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/09/qna_test.jpg
--------------------------------------------------------------------------------
/docs/images/09/qna_test_inspect.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/09/qna_test_inspect.jpg
--------------------------------------------------------------------------------
/docs/images/bfcomp_main.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seosoft/BfCompQnaBot/7cae101d7027b080446edd6e929baa0f702775de/docs/images/bfcomp_main.jpg
--------------------------------------------------------------------------------