インテントの解決に Dispatch (非推奨) を使用するUse Dispatch (deprecated) for intent resolution

適用対象: SDK v4APPLIES TO: SDK v4

ボットで複数の LUIS モデルと QnA Maker ナレッジ ベース (ナレッジ ベース) を使用している場合は、ディスパッチ ツールを使用して、ユーザー入力に最も一致する LUIS モデルまたは QnA Maker ナレッジ ベースを特定できます。If a bot uses multiple LUIS models and QnA Maker knowledge bases (knowledge bases), you can use the Dispatch tool to determine which LUIS model or QnA Maker knowledge base best matches the user input. ディスパッチ ツールでは、これを行うために、ユーザー入力を正しいモデルにルーティングする 1 つの LUIS アプリが作成されます。The dispatch tool does this by creating a single LUIS app to route user input to the correct model. CLI コマンドを含むディスパッチの詳細については、「Dispatch README 」を参照してくださいFor more information about Dispatch, including the CLI commands, refer to the Dispatch README.

重要

ディスパッチは非推奨となるパス上に置き換え 、Orchestrator に置き換えられる予定ですDispatch is on the path to be deprecated and replaced with Orchestrator. Orchestrator を使用 するためにボット を移行する方法の詳細については、このドキュメントを参照してください。Please refer to this documentation for more information on migrating your bot to use Orchestrator.

前提条件Prerequisites

このサンプルについてAbout this sample

このサンプルは、LUIS とアプリの定義済みのセットに基QnA Makerされています。This sample is based on a predefined set of LUIS and QnA Maker apps.

コード サンプル ロジック フロー cs

ユーザー入力を受け取るたびに、OnMessageActivityAsync が呼び出されます。OnMessageActivityAsync is called for each user input received. このモジュールでは、最上位スコアのユーザーの意図を検索し、その結果を DispatchToTopIntentAsync に渡します。This module finds the top scoring user intent and passes that result on to DispatchToTopIntentAsync. さらに、DispatchToTopIntentAsync は適切なアプリ ハンドラーを呼び出します。DispatchToTopIntentAsync, in turn, calls the appropriate app handler.

  • ProcessSampleQnAAsync - ボットの FAQ の質問。ProcessSampleQnAAsync - for bot faq questions.
  • ProcessWeatherAsync -天気クエリ。ProcessWeatherAsync - for weather queries.
  • ProcessHomeAutomationAsync -家庭用照明コマンド。ProcessHomeAutomationAsync - for home lighting commands.

ハンドラーによって LUIS または QnA Maker サービスが呼び出され、生成された結果がユーザーに返されます。The handler calls the LUIS or QnA Maker service and returns the generated result back to the user.

LUIS アプリと QnA ナレッジ ベースを作成するCreate LUIS apps and QnA knowledge base

ディスパッチ モデルを作成するには、ご自身の LUIS アプリと QnA ナレッジ ベースを作成し、発行しておく必要があります。Before you can create the dispatch model, you'll need to have your LUIS apps and QnA knowledge bases created and published. この記事では、\CognitiveModels フォルダーの "ディスパッチによる NLP" サンプルに含まれる次のモデルを公開します。In this article, we'll publish the following models that are included with the NLP With Dispatch sample in the \CognitiveModels folder:

名前Name 説明Description
HomeAutomationHomeAutomation 関連付けられているエンティティ データによってホーム オートメーションの意図を認識する LUIS アプリ。A LUIS app that recognizes a home automation intent with associated entity data.
WeatherWeather 場所データによって天気関連の意図を認識する LUIS アプリ。A LUIS app that recognizes weather-related intents with location data.
QnA MakerQnAMaker ボットに関するシンプルな質問への回答を提供する QnA Maker ナレッジ ベース。A QnA Maker knowledge base that provides answers to simple questions about the bot.

LUIS アプリの作成Create the LUIS apps

  1. サンプルの Cognitive Models ディレクトリ にあるホーム オートメーション JSON ファイル から LUIS アプリを作成します。Create a LUIS app from the home automation JSON file in the cognitive models directory of the sample.
    1. アプリをトレーニングして、実稼働環境に発行します。Train and publish the app to the production environment.
    2. アプリケーション ID、表示名、オーサリング キー、および場所を記録します。Record the application ID, display name, authoring key, and location.
  2. 気象 JSON ファイルに対してこれらの 手順を繰り 返します。Repeat these steps for the weather JSON file.

詳細については 、「LUIS ポータルで LUIS アプリを作成する」および「ボットに自然言語の理解を追加する」の「LUIS アプリに接続するための値を取得する 」と 、アプリをトレーニングして実稼働環境に発行する方法に関する LUIS ドキュメントを参照してください。 For more information, see how to Create a LUIS app in the LUIS portal and Obtain values to connect to your LUIS app in Add natural language understanding to your bot and the LUIS documentation on how to train and publish an app to the production environment.

ナレッジ ベースQnA Maker作成するCreate the QnA Maker knowledge base

QnA Maker ナレッジ ベースを設定する最初の手順は、Azure で QnA Maker サービスを設定することです。The first step to setting up a QnA Maker knowledge base is to set up a QnA Maker service in Azure. これを行うには、qnamaker サービスの設定に関する記事の詳細 な手順に従 ってください。To do that, follow the step-by-step instructions found the set up qnamaker service article.

Azure で QnA Maker サービスを作成したら、QnA Maker サービス用に提供される Cognitive Services の "キー 1" を記録しておく必要があります。Once your QnA Maker Service has been created in Azure, you need to record the Cognitive Services Key 1 provided for your QnA Maker service. これは、ディスパッチ アプリケーション <azure-qna-service-key1> にアプリを追加QnA Makerとして使用されます。This will be used as <azure-qna-service-key1> when adding the QnA Maker app to your dispatch application.

QnA Maker で使用される 2 つの異なる種類のキーの詳細については、こちらを参照してください。Learn more about the two different types of keys used with QnA Maker.

以降の手順では、このキーが提供されます。The following steps provide you with this key:

コグニティブ サービスを選択する

  1. ご利用の Azure portal 内で、QnA Maker cognitive service を選択します。From within your Azure portal, select your QnA Maker cognitive service.

    コグニティブ サービス キーを選択する

  2. 左側のメニューで、 [Resource Management] セクションの下にあるキー アイコンを選択します。Select the Keys icon found under the Resource Management section on the left-hand menu.

    コグニティブ サービス キー 1 を選択する

  3. "キー 1" の値をクリップボードにコピーして、ローカルに保存します。Copy the value of Key 1 to your clipboard and save this locally. これは後で、ディスパッチ アプリケーションにアプリを追加するときに (-k) <azure-qna-service-key1> QnA Makerに使用されます。this will later be used for the (-k) key value <azure-qna-service-key1> when adding the QnA Maker app to your dispatch application.

  4. 次に QnAMaker Web ポータルにサインインします。Now sign in to the QnAMaker web portal.

  5. 手順 2 では、次のように選択します。At step 2, select the following:

    • Azure AD アカウント。Your Azure AD account.
    • Azure サブスクリプション名。Your Azure subscription name.
    • QnA Maker サービス用に作成した名前The name you created for your QnA Maker service. (最初の段階でこのプル ダウン リストに Azure QnA サービスが表示されない場合は、ページを更新してみてください)。(If your Azure QnA service does not initially appear in this pull down list, try refreshing the page.)

    QnA の作成手順 2

  6. 手順 3 では、QnA Maker ナレッジベースの名前を指定します。At step 3, provide a name for your QnA Maker knowledge base. この例では、名前 'sample-qna' を使用します。For this example use the name 'sample-qna'.

    QnA の作成手順 3

  7. 手順 4 では、 [+ Add File] オプションを選択し、ご自身のサンプル コードの CognitiveModel フォルダーに移動して、"QnAMaker.tsv" ファイルを選択します。At step 4, select the option + Add File, navigate to the CognitiveModel folder of your sample code, and select the file 'QnAMaker.tsv'. ナレッジ ベースには Chit-chat の性格を追加する選択がもう 1 つありますが、この例にはこのオプションが含まれていません。There is an additional selection to add a Chit-chat personality to your knowledge base but our example does not include this option.

    QnA の作成手順 4

  8. 手順 5 では、 [Create your knowledge base](ナレッジ ベースの作成) を選択します。At step 5, select Create your knowledge base.

  9. アップロードしたファイルからナレッジ ベースが作成されたら、 [Save and train](保存してトレーニング) を選択し、完了したら、 [PUBLISH](公開) タブを選択してアプリを公開します。Once the knowledge base is created from your uploaded file, select Save and train and when finished, select the PUBLISH Tab and publish your app.

  10. QnA Maker アプリが公開されたら、 [SETTINGS](設定) タブを選択し、[Deployment details](デプロイの詳細) まで下にスクロールします。Once your QnA Maker app is published, select the SETTINGS Tab, and scroll down to 'Deployment details'. Postman サンプル HTTP 要求の次の値を書き留めます。Record the following values from the Postman Sample HTTP request.

    POST /knowledge bases/<knowledge-base-id>/generateAnswer
    Host: <your-hostname>  // NOTE - this is a URL.
    Authorization: EndpointKey <qna-maker-resource-key>
    

    ホスト名の完全な URL 文字列は、"https://.azure.net/qnamaker" のようになります。The full URL string for your hostname will look like "https://.azure.net/qnamaker". これらの値は、お使いの appsettings.json ファイルまたは .env ファイルで後で使用されます。These values will later be used within your appsettings.json or .env file.

ディスパッチ アプリには既存のアプリへの読み取りアクセスが必要Dispatch app needs read access to existing apps

LUIS アプリおよび QnA Maker アプリにディスパッチする新しい親 LUIS アプリを作成するために、ディスパッチ ツールには既存の LUIS アプリと QnA Maker アプリを読み取るための作成アクセスが必要です。The dispatch tool needs authoring access to read the existing LUIS and QnA Maker apps in order to create a new parent LUIS app that dispatches to the LUIS and QnA Maker apps. このアクセスには、アプリ ID と作成キーが提供されます。This access is provided with the app IDs and authoring keys.

サービス作成キーService authoring keys

作成キー は、モデルの作成と編集にのみ使用されます。The authoring key is only used for creating and editing the models. 2 つの LUIS アプリのそれぞれ、および QnA Maker アプリに対して ID とキーが必要です。You need an ID and key for each of the two LUIS apps and the QnA Maker app.

  • LUIS の場合for LUIS
    • アプリ ID は、アプリごとに LUIS ポータルにあり、アプリケーション設定 > > 設定を管理します。The App ID is found in the LUIS portal for each app, Manage > Settings > Application Settings
    • 作成キー は LUIS ポータルの右上隅で、独自のユーザー、[設定] の順に選択します。The Authoring Key is found in the LUIS portal, top-right corner, select your own User, then Settings.
  • Qna Maker の場合for Qna Maker
    • アプリ ID は、アプリを発行した後、[設定] ページの QnA Maker ポータル にあります。The App ID is found in the QnA Maker portal on the Settings page after you publish the app. これは、knowledgebase の後にくる POST コマンドの最初の部分にある ID です。This is the ID found in first part of the POST command after the knowledgebase. アプリ ID を検査する場所の例として、POST /knowledgebases/<APP-ID>/generateAnswer が挙げられます。An example of where to find the app ID is POST /knowledgebases/<APP-ID>/generateAnswer.
    • Authoring Key は、キー の下にある QnA Maker リソースの Azure portal にあります。The Authoring Key is found in the Azure portal, for the QnA Maker resource, under the Keys. 複数のキーのうち、必要なのは 1 つだけです。You only need one of the keys.

作成キーは、発行されたアプリケーションから予測スコアまたは信頼スコアを取得するためには使用されません。The authoring key is not used to get a prediction score or confidence score from the published application. この操作にはエンドポイント キーが必要です。You need the endpoint keys for this action. エンドポイント キー は、このチュートリアルで後ほど取り上げて使用します。The endpoint keys are found and used later in this tutorial.

QnA Maker で使用される 2 つの異なる種類のキーの詳細については、こちらを参照してください。Learn more about the two different types of keys used with QnA Maker.

ディスパッチ モデルを作成するCreate the dispatch model

ディスパッチ ツールの CLI インターフェイスにより、適切な LUIS アプリまたは QnA Maker アプリにディスパッチするためのモデルが作成されます。The CLI interface for the dispatch tool creates the model for dispatching to the correct LUIS or QnA Maker app.

  1. コマンド プロンプトまたはターミナル ウィンドウを開き、ディレクトリを CognitiveModels ディレクトリに変更しますOpen a command prompt or terminal window, and change directories to the CognitiveModels directory

  2. 最新バージョンの npm とディスパッチ ツールがインストールされていることを確認します。Make sure you have the current version of npm and the Dispatch tool.

    npm i -g npm
    npm i -g botdispatch
    
  3. dispatch init を使用して初期化し、ご自身のディスパッチ モデル用に .dispatch ファイルを作成します。Use dispatch init to initialize create a .dispatch file for your dispatch model. これは、あなたが見てわかるファイル名を使用して作成します。Create this using a filename you will recognize.

    dispatch init -n <filename-to-create> --luisAuthoringKey "<your-luis-authoring-key>" --luisAuthoringRegion <your-region>
    
  4. dispatch add を使用して、ご自身の LUIS アプリと QnA Maker ナレッジ ベースを .dispatch ファイルに追加します。Use dispatch add to add your LUIS apps and QnA Maker knowledge bases to the .dispatch file.

    dispatch add -t luis -i "<app-id-for-weather-app>" -n "<name-of-weather-app>" -v <app-version-number> -k "<your-luis-authoring-key>" --intentName l_Weather
    dispatch add -t luis -i "<app-id-for-home-automation-app>" -n "<name-of-home-automation-app>" -v <app-version-number> -k "<your-luis-authoring-key>" --intentName l_HomeAutomation
    dispatch add -t qna -i "<knowledge-base-id>" -n "<knowledge-base-name>" -k "<azure-qna-service-key1>" --intentName q_sample-qna
    
  5. dispatch create を使用して、.dispatch ファイルからディスパッチ モデルを生成します。Use dispatch create to generate a dispatch model from the .dispatch file.

    dispatch create
    
  6. 先ほど作成したディスパッチ LUIS アプリを公開します。Publish the dispatch LUIS app, just created.

ディスパッチ LUIS アプリを使用するUse the dispatch LUIS app

生成された LUIS アプリによって、子アプリおよびナレッジ ベースごとに意図が定義されます。発話に適合する意図がない場合は、none が定義されます。The generated LUIS app defines intents for each of the child apps and the knowledge base, as well as a none intent for when the utterance doesn't have a good fit.

  • l_HomeAutomation
  • l_Weather
  • None
  • q_sample-qna

ボットを適切に動作させるには、これらのサービスが正しい名前で公開されている必要があります。These services need to be published under the correct names for the bot to run properly. 公開されたサービスにボットがアクセスできるようにするには、アクセス対象サービスに関する情報がそのボットに必要です。The bot needs information about the published services, so that it can access those services.

サービス エンドポイント キーService endpoint keys

このボットには、3 つの LUIS アプリ (ディスパッチ、天気、およびホーム オートメーション) 用のクエリ予測エンドポイントと、単一の QnA Maker ナレッジ ベースが必要です。The bot needs the query prediction endpoints for the three LUIS apps (dispatch, weather, and home automation) and the single QnA Maker knowledge base. LUIS および QnA Maker ポータルでエンドポイントキーを検索します。Find the endpoint keys in the LUIS and QnA Maker portals:

  • LUIS ポータルで各 LUIS アプリの [Manage] セクションで、 [Keys and Endpoint settings](キーとエンドポイントの設定) を選択して、各アプリに関連付けられているキーを見つけます。In the LUIS portal, for each LUIS app, in the Manage section, select Keys and Endpoint settings to find the keys associated with each app. このチュートリアルを行う場合、エンドポイント キーは <your-luis-authoring-key> と同じキーです。If you are following this tutorial, the endpoint key is the same key as the <your-luis-authoring-key>. 作成キーでは、1000 回のエンドポイント ヒットが許可され、その後有効期限が切れます。The authoring key allows for 1000 endpoint hits then expires.
  • QnA Maker ポータルのナレッジ ベースの [Manage] 設定で、Authorization ヘッダー用の [Postman](Postman) 設定に表示されているキー値を、テキスト EndpointKey なしで使用します。In the QnA Maker portal, for the knowledge base, in the Manage settings, use the key value shows in the Postman settings for the Authorization header, without the text of EndpointKey.

これらの値は、サンプルの構成ファイルで使用されます。 appsettings.json (C#)、 env (JavaScript)、または config.py (Python) です。These values are used in the sample's configuration file: appsettings.json (C#), .env (JavaScript), or config.py (Python).

パッケージのインストールInstalling packages

このアプリを初めて実行する前に、いくつかの NuGet パッケージがインストールされていることを確認します。Prior to running this app for the first time ensure that several NuGet packages are installed:

  • Microsoft.Bot.BuilderMicrosoft.Bot.Builder
  • Microsoft.Bot.Builder.AI.LuisMicrosoft.Bot.Builder.AI.Luis
  • Microsoft.Bot.Builder.AI.QnAMicrosoft.Bot.Builder.AI.QnA

お使いの appsettings.json ファイルを手動で更新するManually update your appsettings.json file

すべてのサービス アプリが作成されたら、それぞれの情報を "appsettings.json" ファイルに追加する必要があります。Once all of your service apps are created, the information for each needs to be added into your 'appsettings.json' file. 初期 C# サンプル コードには、空の appsettings.json ファイルが含まれています。The initial C# Sample code contains an empty appsettings.json file:

appsettings.jsonappsettings.json


"LuisHomeAutomationAppId": "",
"LuisWeatherAppId": "",
"LuisAPIKey": "",
"LuisAPIHostName": "",

"AllowedHosts": "*",

"Orchestrator": {
  "ModelFolder": ".\\model",

次に示すエンティティごとに、前の手順で記録した値を追加します。For each of the entities shown below, add the values you recorded earlier in these instructions:

appsettings.jsonappsettings.json

"MicrosoftAppId": "",
"MicrosoftAppPassword": "",

"QnAKnowledgebaseId": "<knowledge-base-id>",
"QnAEndpointKey": "<qna-maker-resource-key>",
"QnAEndpointHostName": "<your-hostname>",

"LuisAppId": "<app-id-for-dispatch-app>",
"LuisAPIKey": "<your-luis-endpoint-key>",
"LuisAPIHostName": "<your-dispatch-app-region>",

すべての変更が完了したら、このファイルを保存します。When all changes are complete, save this file.

ボットからサービスに接続するConnect to the services from your bot

Dispatch、LUIS、および QnA Maker サービスに接続するために、ボットは設定ファイルから情報をプルします。To connect to the Dispatch, LUIS, and QnA Maker services, your bot pulls information from the settings file.

BotServices.cs では、ご自身のディスパッチ ボットと Dispatch サービスおよび SampleQnA サービスとの接続に、構成ファイル appsettings.json に含まれている情報が使用されます。In BotServices.cs, the information contained within configuration file appsettings.json is used to connect your dispatch bot to the Dispatch and SampleQnA services. コンストラクターでは、ご自身で指定した値が、これらのサービスへの接続に使用されます。The constructors use the values you provided to connect to these services.

BotServices.csBotServices.cs

{
    public class BotServices : IBotServices
    {
        public BotServices(IConfiguration configuration, OrchestratorRecognizer dispatcher)
        {
            // Read the setting for cognitive services (LUIS, QnA) from the appsettings.json
            // If includeApiResults is set to true, the full response from the LUIS api (LuisResult)
            // will be made available in the properties collection of the RecognizerResult
            LuisHomeAutomationRecognizer = CreateLuisRecognizer(configuration, "LuisHomeAutomationAppId");
            LuisWeatherRecognizer = CreateLuisRecognizer(configuration, "LuisWeatherAppId");

            Dispatch = dispatcher;

            SampleQnA = new QnAMaker(new QnAMakerEndpoint
            {
                KnowledgeBaseId = configuration["QnAKnowledgebaseId"],
                EndpointKey = configuration["QnAEndpointKey"],
                Host = configuration["QnAEndpointHostName"]
            });
        }

        public OrchestratorRecognizer Dispatch { get; private set; }
        
        public QnAMaker SampleQnA { get; private set; }
        
        public LuisRecognizer LuisHomeAutomationRecognizer { get; private set; }

        public LuisRecognizer LuisWeatherRecognizer { get; private set; }

        private LuisRecognizer CreateLuisRecognizer(IConfiguration configuration, string appIdKey)
        {
            var luisApplication = new LuisApplication(
                configuration[appIdKey],
                configuration["LuisAPIKey"],
                configuration["LuisAPIHostName"]);

            // Set the recognizer options depending on which endpoint version you want to use.
            // More details can be found in https://docs.microsoft.com/en-gb/azure/cognitive-services/luis/luis-migration-api-v3

注意

既定では、includeApiResults パラメーターは false に設定されています。つまり、レコグナイザーはエンティティ/意図に関する基本情報のみを返します。By default the includeApiResults parameter is set to false, meaning the recognizer will only return basic information about entities / intents. LUIS からの完全な応答 (このチュートリアルで後ほど使用する ConnectedServiceResult など) が必要な場合は、このパラメーターを true に設定します。If you require the full response from LUIS (such as the ConnectedServiceResult used later in this tutorial), then set this parameter to true. これにより、LUIS サービスからの完全な応答が、RecognizerResult の Properties コレクションに追加されます。This will then add the full response from the LUIS service into the Properties collection on the RecognizerResult.

ボットからのサービスを呼び出すCall the services from your bot

ボット ロジックでは、ユーザーからの入力ごとに、結合されたディスパッチ モデルに対してユーザー入力が確認され、返された最上位の意図が検索されます。その後、その情報を使用して、その入力に適したサービスが呼び出されます。For each input from your user, the bot logic checks user input against the combined Dispatch model, finds the top returned intent, and uses that information to call the appropriate service for the input.

DispatchBot.cs ファイルでは、OnMessageActivityAsync メソッドが呼び出されるたびに、受信ユーザー メッセージをディスパッチ モデルに対して確認します。In the DispatchBot.cs file whenever the OnMessageActivityAsync method is called, we check the incoming user message against the Dispatch model. その後、ディスパッチ モデルの topIntentrecognizerResult を適切なメソッドに渡して、サービスを呼び出し、結果を返します。We then pass the Dispatch Model's topIntent and recognizerResult on to the correct method to call the service and return the result.

bots\DispatchBot.csbots\DispatchBot.cs


protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
    var dc = new DialogContext(new DialogSet(), turnContext, new DialogState());
    // Top intent tell us which cognitive service to use.
    var allScores = await _botServices.Dispatch.RecognizeAsync(dc, (Activity)turnContext.Activity, cancellationToken);
    var topIntent = allScores.Intents.First().Key;
    
    // Next, we call the dispatcher with the top intent.
    await DispatchToTopIntentAsync(turnContext, topIntent, cancellationToken);
}

認識結果を操作するWork with the recognition results

モデルによって結果が生成されるとき、どのサービスが発話を最も適切に処理できるかが示されます。When the model produces a result, it indicates which service can most appropriately process the utterance. このボットのコードでは、要求を対応するサービスにルーティングし、呼び出されたサービスからの応答を要約します。The code in this bot routes the request to the corresponding service, and then summarizes the response from the called service. Dispatch から返された "意図" によっては、このコードでは、返された意図を使用して、適切な LUIS モデルまたは QnA サービスへのルーティングが行われます。Depending on the intent returned from Dispatch, this code uses the returned intent to route to the correct LUIS model or QnA service.

bots\DispatchBot.csbots\DispatchBot.cs

private async Task DispatchToTopIntentAsync(ITurnContext<IMessageActivity> turnContext, string intent, CancellationToken cancellationToken)
{
    switch (intent)
    {
        case "HomeAutomation":
            await ProcessHomeAutomationAsync(turnContext, cancellationToken);
            break;
        case "Weather":
            await ProcessWeatherAsync(turnContext, cancellationToken);
            break;
        case "QnAMaker":
            await ProcessSampleQnAAsync(turnContext, cancellationToken);
            break;
        default:
            _logger.LogInformation($"Dispatch unrecognized intent: {intent}.");
            await turnContext.SendActivityAsync(MessageFactory.Text($"Dispatch unrecognized intent: {intent}."), cancellationToken);
            break;
    }
}

ProcessHomeAutomationAsync または ProcessWeatherAsync のいずれかのメソッドが呼び出されると、luisResult.ConnectedServiceResult 内のディスパッチ モデルから結果が渡されます。If method ProcessHomeAutomationAsync or ProcessWeatherAsync are invoked, they are passed the results from the dispatch model within luisResult.ConnectedServiceResult. その後、指定されたメソッドによって、ユーザー フィードバックが提供されます。このフィードバックには、ディスパッチ モデルの最上位の意図と、検出された意図およびエンティティの一覧がランク付けされて示されています。The specified method then provides user feedback showing the dispatch model top intent, plus a ranked listing of all intents and entities that were detected.

q_sample-qna メソッドが呼び出されると、turnContext 内に含まれるユーザー入力が、ナレッジ ベースからの応答の生成と、ユーザーへの結果の表示に使用されます。If method q_sample-qna is invoked, it uses the user input contained within the turnContext to generate an answer from the knowledge base and display that result to the user.

注意

これが運用環境のアプリケーションの場合は、ここで、選択した LUIS メソッドが、指定されたサービスに接続されたうえで、そのメソッドによってユーザー入力が渡され、返された LUIS の意図とエンティティ データが処理されます。If this were a production application, this is where the selected LUIS methods would connect to their specified service, pass in the user input, and process the returned LUIS intent and entity data.

ボットをテストするTest your bot

  1. ご自身の開発環境を使用して、サンプル コードを開始します。Using your development environment, start the sample code. ご自身のアプリによって開かれたブラウザー ウィンドウのアドレス バーに表示されている次の localhost アドレスをメモしてください: "https://localhost:<Port_Number>"Note the localhost address shown in the address bar of the browser window opened by your App: "https://localhost:<Port_Number>".

  2. 新しいBot Framework Emulatorを開き、 を選択します Create a new bot configurationOpen Bot Framework Emulator, then select Create a new bot configuration. ファイル .bot を使用すると、エミュレーターの Inspector を使用して、LUIS から返された JSON を確認し、QnA Maker。A .bot file enables you to use the Inspector in the Emulator to see the JSON returned from LUIS and QnA Maker.

  3. [New bot configuration](新しいボット構成) ダイアログ ボックスで、ご自身のボット名とエンドポイント URL (http://localhost:3978/api/messages など) を入力します。In the New bot configuration dialog box, enter your bot name, and your endpoint URL, such as http://localhost:3978/api/messages. ご自身のボット サンプル コード プロジェクトのルートにファイルを保存します。Save the file at the root of your bot sample code project.

  4. ボット ファイルを開き、ご自身の LUIS アプリおよび QnA Maker アプリのセクションを追加します。Open the bot file and add sections for your LUIS and QnA Maker apps. このサンプル ファイルを設定用のテンプレートとして使用します。Use this example file as a template for settings. 変更を保存します。Save the changes.

  5. [My Bots] リストでボット名を選択して、実行中のボットにアクセスします。Select the bot name in the My Bots list to access your running bot. 参考のために、ご自身のボット用に作成されたサービスに含まれる質問とコマンドの一部を次に示します。For your reference, here are some of the questions and commands that are covered by the services built for your bot:

    • QnA MakerQnA Maker
      • hi, good morninghi, good morning
      • what are you, what do you dowhat are you, what do you do
    • LUIS (ホーム オートメーション)LUIS (home automation)
      • turn on bedroom light
      • turn off bedroom light
      • make some coffee
    • LUIS (天気)LUIS (weather)
      • whats the weather in redmond washington
      • what's the forecast for london
      • show me the forecast for nebraska

QnA Maker へのユーザー発話のためのディスパッチDispatch for user utterance to QnA Maker

  1. ボット エミュレーターで、テキストを入力し hi 、発話を送信します。In the bot Emulator, enter the text hi and submit the utterance. ボットから、このクエリがディスパッチ LUIS アプリに送信されると、さらなる処理のためにどの子アプリがこの発話を取得する必要があるかを示す応答がボットに届きます。The bot submits this query to the dispatch LUIS app and gets back a response indicating which child app should get this utterance for further processing.

  2. ログの行 LUIS Trace を選択すると、ボット Emulator で LUIS 応答を確認できます。By selecting the LUIS Trace line in the log, you can see the LUIS response in the bot Emulator . ディスパッチ LUIS アプリからの LUIS 結果がインスペクターに表示されます。The LUIS result from the dispatch LUIS app displays in the Inspector.

    {
      "luisResponse": {
        "entities": [],
        "intents": [
          {
            "intent": "q_sample-qna",
            "score": 0.9489713
          },
          {
            "intent": "l_HomeAutomation",
            "score": 0.0612499453
          },
          {
            "intent": "None",
            "score": 0.008567564
          },
          {
            "intent": "l_Weather",
            "score": 0.0025761195
          }
        ],
        "query": "Hi",
        "topScoringIntent": {
          "intent": "q_sample-qna",
          "score": 0.9489713
        }
      }
    }
    

    発話 hi は、ディスパッチ LUIS アプリの q_sample-qna 意図の一部であり、topScoringIntent として選択されているため、ボットでは同じ発話を使用して今回は QnA Maker アプリに 2 番目の要求が行われます。Because the utterance, hi, is part of the dispatch LUIS app's q_sample-qna intent, and is selected as the topScoringIntent, the bot will make a second request, this time to the QnA Maker app, with the same utterance.

  3. ボット エミュレーター QnAMaker Trace ログの行を選択します。Select the QnAMaker Trace line in the bot Emulator log. インスペクターに QnA Maker の結果が表示されます。The QnA Maker result displays in the Inspector.

{
    "questions": [
        "hi",
        "greetings",
        "good morning",
        "good evening"
    ],
    "answer": "Hello!",
    "score": 1,
    "id": 96,
    "source": "QnAMaker.tsv",
    "metadata": [],
    "context": {
        "isContextOnly": false,
        "prompts": []
    }
}

ディスパッチによる誤っている最上位の意図の解決Resolving incorrect top intent from Dispatch

ボットが起動したら、ディスパッチされたアプリ間での類似の発話または重複する発話を削除することで、ボットのパフォーマンスを向上することができます。Once your bot is running, it is possible to improve the bot's performance by removing similar or overlapping utterances between the dispatched apps.

Dispatch コマンドライン ツールを使用して、ディスパッチ モデルをテストおよび評価することができます。You can use the Dispatch command-line tool to test and evaluate your dispatch model.

LUIS モデルを更新するか、新しく作成するTo update or create a new LUIS model

このサンプルは、事前構成済みの LUIS モデルが基になっています。This sample is based on a preconfigured LUIS model. このモデルの更新、または新しい LUIS モデルの作成に役立つ追加情報については、「LUIS の反復的なアプリ設計 」を参照してくださいAdditional information to help you update this model, or create a new LUIS model, can be found in the article Iterative app design for LUIS.

基になるモデル (QnA または LUIS) を更新した後、dispatch refresh を実行して Dispatch LUIS アプリを更新します。After updating the underlying models (QnA or LUIS) run dispatch refresh to update your Dispatch LUIS app. dispatch refresh は基本的に dispatch create と同じコマンドですが、新しい LUIS アプリ ID は作成されません。dispatch refresh is basically the same command as dispatch create except no new LUIS app ID is created.

LUIS で直接追加された発話は、dispatch refresh の実行時に保持されないことに注意してください。Note that utterances that were added directly in LUIS will not be retained when running dispatch refresh. これらの追加の発話を Dispatch アプリで保持するには、テキスト ファイルでそれらの発話を (1 行に 1 発話ずつ) 追加し、次のコマンドを実行してファイルを Dispatch に追加します。To keep those extra utterances in the Dispatch app add those utterances in a text file (one utterance per line), and then add the file to Dispatch by running the command:

dispatch add -t file -f <file path> --intentName <target intent name, ie l_General>

追加の発話を含むファイルが Dispatch に追加されると、更新してもそれらの発話は残ります。Once the file with extra utterances is added to Dispatch the utterances will stay with every refresh.

リソースを削除するTo delete resources

このサンプルでは、次の手順を使用して削除できるアプリケーションとリソースが多数作成されますが、"他のアプリやサービス" が依存しているリソースは削除しないでください。This sample creates a number of applications and resources that you can delete using the steps listed below, but you should not delete resources that any other apps or services rely on.

LUIS リソースを削除するには:To delete LUIS resources:

  1. luis.ai ポータルにサインインします。Sign in to the luis.ai portal.
  2. [My Apps] ページに移動します。Go to the My Apps page.
  3. このサンプルによって作成されたアプリを選択します。Select the apps created by this sample.
    • Home Automation
    • Weather
    • NLP-With-Dispatch-BotDispatch
  4. [Delete] をクリックし、 [OK] をクリックして確認します。Click Delete, and click Ok to confirm.

QnA Maker リソースを削除するには:To delete QnA Maker resources:

  1. qnamaker.ai ポータルにサインインします。Sign in to the qnamaker.ai portal.
  2. [My knowledge bases](マイ ナレッジ ベース) ページに移動します。Go to the My knowledge bases page.
  3. Sample QnA ナレッジ ベースの削除ボタンをクリックし、 [Delete] をクリックして確認します。Click the delete button for the Sample QnA knowledge base, and click Delete to confirm.

ベスト プラクティスBest practice

このサンプルで使用されているサービスを向上させるには、LUIS および QnA Maker 向けのベスト プラクティスを参照してください。To improve services used in this sample, refer to best practice for LUIS, and QnA Maker.