この記事では、 ボットを Direct Line チャネルに接続する方法について説明します。 このチャネルを使用して、クライアント アプリケーション経由でボットと通信します。
注
Direct Line は、クライアント アプリケーションとボット間の通信を可能にする HTTPS プロトコル経由の標準チャネルです。 代わりにネットワーク分離が必要な場合は、WebSocket 経由で Direct Line App Service 拡張機能を使用します。
[前提条件]
- Azure アカウント。 まだお持ちでない場合は、開始する前に 無料アカウント を作成してください。
- 既存のボットが Azure に発行されている。
Direct Line チャネルを追加する
最初に行う必要があるのは、Direct Line チャネルをボットに追加することです。
- Azure ポータルにアクセスします。
- Azure Bot リソースに移動します。 [ ボットの設定] で、[チャネル] を選択 します。
- 使用可能なチャネルの一覧から [Direct Line] を選択します。
既定の サイトを使用して Direct Line を使用するようにボットが構成されました。
または、既定のサイトを使用する代わりに、新しいサイトを追加することもできます。
[Direct Line チャネル] ページの [新しいサイト] ボタンを選択して、新しいサイトを作成します。
秘密鍵の管理
ダイレクト チャネルを追加すると、Bot Framework によって秘密鍵が生成されます。 クライアント アプリケーションは、これらのキーを使用して、ボットと通信するために発行する Direct Line API 要求を認証します。 詳細については、認証を参照してください。
サイトの Direct Line シークレットをプレーン テキストで表示するには、[ Direct Line チャネル] ページに移動します。
[ Direct Line ] タブを選択し、キーを取得するサイト (Default_Siteなど) を選択 します。 Azure で [ サイトの構成] ウィンドウが 開きます。
[ 秘密鍵] で、対応するキーの横にある目のアイコンを選択します。
キーをコピーして安全に保存します。 このキーを使用して、クライアント アプリケーションがボットと通信するために発行する Direct Line API 要求を 認証 します。
注
シークレットを公開したり、クライアント アプリケーションに埋め込んだりしないでください。 次の手順を参照してください。
ベスト プラクティスは、Direct Line API を使用して キーをトークンと交換することです。 その後、クライアント アプリケーションはトークンを使用して、1 つの会話のスコープ内で要求を認証します。
設定を変更する
サイト設定を構成するには:
[Direct Line チャネル] ページで、[サイト] リストから構成する サイト を選択します。 [ サイトの構成] ウィンドウが 開き、次のように表示されます。
クライアント アプリケーションがボットとの通信に使用する Direct Line プロトコルのバージョンを選択します。
ヒント
クライアント アプリケーションとボットの間に新しい接続を作成する場合は、Direct Line API 3.0 を使用します。
完了したら、[ 適用 ] を選択してサイト構成を保存します。 ボットに接続するクライアント アプリケーションごとに、新しいサイトからこのプロセスを繰り返します。
拡張認証を構成する
使用可能なサイト構成の 1 つに 拡張認証オプションがあります。これは、ボットに接続するときのセキュリティ リスクを軽減するのに役立ちます (たとえば、Web チャット コントロールを使用)。 詳細については、「Direct Line 拡張認証」を参照してください。
拡張認証を追加するには:
[ 認証オプションの拡張] を有効にします。 "信頼できる配信元が少なくとも 1 つ必要です" というメッセージが、[ 信頼された配信元の追加] リンクと共に表示されます。 拡張認証を有効にする場合は、少なくとも 1 つの信頼された配信元を指定する必要があります。
信頼された配信元は、システムがユーザーを認証するために使用するドメインです。 この場合、Direct Line はドメインを使用してトークンを生成します。
- 構成 UI ページの一部として信頼された配信元を構成する場合、これらの設定は常にトークンの生成に対する唯一のセットとして使用されます。 トークンの生成または会話の開始時に追加の信頼された配信元を送信する (または信頼できる配信元を none に設定する) と、無視されます (リストに追加されたり、クロス検証されたりすることはありません)。
- 拡張認証を有効にしなかった場合は、API 呼び出しの一部として送信した配信元 URL が使用されます。
信頼されたドメイン URL を追加した後、[ 適用] を選択します。
Direct Line サンプル ボット
.NET の例は、 Direct Line Bot サンプルからダウンロードできます。
この例には、次の 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>
ユーザー メッセージは、前に生成されたConversations.PostActivityAsyncを使用して、Direct Line Client 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);
}
}
}