ボットを Direct Line に接続する
この記事では、ボットを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。
この例には、次の 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);
}
}
}