ボットを Direct Line に接続する

この記事では、ボットをDirect Line チャネルに接続する方法について説明します。 このチャネルを使用して、クライアント アプリケーションを介してボットと通信します。

注意

Direct Lineは、クライアント アプリケーションとボット間の通信を可能にする HTTPS プロトコル経由の標準チャネルです。 代わりにネットワーク分離が必要な場合は、WebSocket 経由で Direct Line App Service拡張機能を使用します。

前提条件

  • Azure アカウント。 まだお持ちでない場合は、開始する前に無料アカウントを作成してください。
  • Azure に発行された既存のボット。

Direct Line チャネルを追加する

最初に行う必要があるのは、ボットにDirect Line チャネルを追加することです。

  1. Azure ポータルにアクセスします。
  2. Azure Bot リソースに移動します。 [ ボットの設定] で、[チャネル] を選択 します
  3. [使用可能なチャネル] の一覧から [Direct Line] を選択します。

ボットは、既定のサイトを使用してDirect Lineを使用するように構成されました。

または、既定のサイトを使用する代わりに、新しいサイトを追加することもできます。 [Direct Line チャネル] ページの [新しいサイト] ボタンを選択して、新しいサイトを作成します。 Azure portalの [新しいサイト] ボタンをDirect Lineする

秘密鍵を管理する

ダイレクト チャネルを追加すると、Bot Framework によってシークレット キーが生成されます。 クライアント アプリケーションは、これらのキーを使用して、ボットと通信するために発行するDirect Line API 要求を認証します。 詳細については、認証に関するページをご覧ください。

  1. サイトのDirect Lineシークレットをプレーン テキストで表示するには、Direct Line チャネル ページに移動します。

  2. [Direct Line] タブを選択し、キーを取得するサイト (Default_Siteなど) を選択します。 Azure で [ サイトの構成] ウィンドウが 開きます。

  3. [ 秘密鍵] で、対応するキーの横にある目のアイコンを選択します。

    Direct Line キーを表示する

  4. キーをコピーして安全に保存します。 キーを使用して、クライアント アプリケーションがボットと通信するために発行するDirect Line API 要求を認証します。

    注意

    シークレットを公開したり、クライアント アプリケーションに埋め込んだりしないでください。 次の手順を参照してください。

  5. ベスト プラクティスは、Direct Line API を使用してキーをトークンと交換することです。 その後、クライアント アプリケーションはトークンを使用して、1 つの会話のスコープ内で要求を認証します。

設定の構成

サイト設定を構成するには:

  1. [Direct Line チャネル] ページで、[サイト] の一覧から構成するサイトを選択します。 [ サイトの構成] ウィンドウが 開きます。次に示します。 [サイトの構成] ウィンドウ

  2. クライアント アプリケーションがボットとの通信に使用するDirect Line プロトコル バージョンを選択します。

    ヒント

    クライアント アプリケーションとボットの間に新しい接続を作成する場合は、Direct Line API 3.0 を使用します。

  3. 完了したら、[ 適用 ] を選択してサイト構成を保存します。 ボットに接続するクライアント アプリケーションごとに、新しいサイトからこのプロセスを繰り返します。

拡張認証を構成する

使用可能なサイト構成の 1 つは拡張認証オプションです。これは、ボットに接続するときのセキュリティ リスクを軽減するのに役立ちます (たとえば、Web チャット コントロールを使用)。 詳細については、「Direct Line強化された認証」を参照してください。

拡張認証を追加するには:

  1. [ 認証オプションの拡張] を有効にします。 "信頼できる配信元が少なくとも 1 つ必要です" というメッセージが表示され、[ 信頼された配信元の追加] リンクが表示されます。 拡張認証を有効にする場合は、少なくとも 1 つの信頼された配信元を指定する必要があります。

    信頼された配信元は、システムがユーザーを認証するために使用するドメインです。 この場合、Direct Lineはドメインを使用してトークンを生成します。

    • 構成 UI ページの一部として信頼された配信元を構成する場合、これらの設定は常にトークンの生成に対する唯一のセットとして使用されます。 トークンの生成または会話の開始時に、追加の信頼された配信元を送信する (または信頼された配信元を none に設定する) と、無視されます (リストに追加されたり、クロス検証されたりすることはありません)。
    • 拡張認証を有効にしなかった場合は、API 呼び出しの一部として送信した配信元 URL が使用されます。 信頼できる配信元を追加する
  2. 信頼されたドメイン URL を追加したら、[ 適用] を選択します。

ボットの例Direct Line

.NET の例は、次の場所からダウンロードできます:ボット サンプルDirect Line

この例には、次の 2 つのプロジェクトが含まれています。

  • DirectLineBot。 Direct Line チャネル経由で接続するボットが作成されます。
  • DirectLineClient。 これは、Direct Line チャネルを介して前のボットと対話するコンソール アプリケーションです。

Direct Line API

  • Direct Line API の資格情報は Azure Bot 登録から取得する必要があり、呼び出し元は生成されたボットにのみ接続できます。 ボット プロジェクトで、これらの値を使用してファイルを更新します appsettings.json

    {
    "MicrosoftAppId": "",
    "MicrosoftAppPassword": ""
    }
    
  • Azure portalで、チャネルの一覧でDirect Lineを有効にし、Direct Line シークレットを構成します。 バージョン 3.0 のチェック ボックスがオンになっていることを確認します。 コンソール クライアント プロジェクトで、Direct Line秘密鍵とボット ハンドル (ボット ID) を使用してファイルを更新App.configします。

    <appSettings>
        <add key="DirectLineSecret" value="YourBotDirectLineSecret" />
        <add key="BotId" value="YourBotHandle" />
    </appSettings>
    

ユーザー メッセージは、前に生成された を使用して、Direct Line Client Conversations.PostActivityAsync メソッドをConversationId使用してボットに送信されます。

while (true)
{
    string input = Console.ReadLine().Trim();

    if (input.ToLower() == "exit")
    {
        break;
    }
    else
    {
        if (input.Length > 0)
        {
            Activity userMessage = new Activity
            {
                From = new ChannelAccount(fromUser),
                Text = input,
                Type = ActivityTypes.Message
            };

            await client.Conversations.PostActivityAsync(conversation.ConversationId, userMessage);
        }
    }
}