你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

将机器人连接到 Direct Line

本文介绍如何将机器人连接到 Direct Line 通道。 使用此通道通过客户端应用程序与机器人通信。

注释

Direct Line 是一个通过 HTTPS 协议的标准通道,用于允许客户端应用程序和机器人之间的通信。 如果需要网络隔离,请通过 WebSocket 使用 Direct Line 应用服务扩展

先决条件

  • 一个 Azure 帐户。 如果还没有帐户,请在开始之前创建 免费帐户
  • 已发布到 Azure 的现有机器人。

添加 Direct Line 通道

首先需要做的是将 Direct Line 渠道添加到你的机器人。

  1. 转到 Azure 门户
  2. 转到您的 Azure 机器人资源。 在 “机器人设置”下,选择 “通道”。
  3. 可用频道列表中选择 Direct Line

机器人现已配置为通过默认站点使用 Direct Line。

或者,可以添加新网站,而不是使用默认站点。 选择 Direct Line 频道页面上的“新建网站”按钮以创建新网站。 Azure 门户中的 Direct Line 新建站点按钮

管理密钥

添加直接通道时,Bot Framework 将生成密钥。 客户端应用程序使用这些密钥对与机器人通信时发出的 Direct Line API 请求进行身份验证。 有关详细信息,请参阅身份验证

  1. 若要以纯文本查看网站的 Direct Line 机密,请转到 Direct Line 通道页面。

  2. 选择 “Direct Line ”选项卡,然后选择要获取其密钥的网站,例如 Default_Site。 Azure 将打开“ 配置站点 ”窗格。

  3. “密钥”下,选择相应密钥旁边的眼睛图标。

    显示直线键

  4. 复制并安全地存储密钥。 使用密钥用于验证客户端应用程序向机器人发出的 Direct Line API 请求。

    注释

    不应在客户端应用程序中公开或嵌入机密。 请参阅下一步。

  5. 最佳做法是使用 Direct Line API 交换令牌的密钥。 然后,客户端应用程序将使用令牌对单个会话范围内的请求进行身份验证。

设置配置

若要配置网站设置,请执行以下操作:

  1. 在“Direct Line 频道”页上,从 “站点 ”列表中选择要配置的站点。 “ 配置网站 ”窗格将打开,如下所示: “配置站点”窗格

  2. 选择客户端应用程序用于与机器人通信的 Direct Line 协议版本。

    小窍门

    如果要在客户端应用程序和机器人之间创建新的连接,请使用 Direct Line API 3.0。

  3. 完成后,选择“ 应用 ”以保存站点配置。 对要连接到机器人的每个客户端应用程序重复此过程,从新站点开始。

配置增强的身份验证

可用的站点配置之一是 增强的身份验证选项,这有助于在连接到机器人时降低安全风险(例如,使用网上聊天控件)。 有关详细信息,请参阅 Direct Line 增强身份验证

若要添加增强的身份验证,请执行以下作:

  1. 启用 增强身份验证选项。 将出现一条“必须至少有一个受信任的来源”的消息,并附有添加受信任的来源链接。 如果启用增强身份验证,则必须至少指定一个受信任的源。

    受信任的源是系统用来对用户进行身份验证的域。 在这种情况下,Direct Line 使用域生成令牌。

    • 如果将受信任的源配置为配置 UI 页的一部分,这些设置将始终用作生成令牌的唯一设置。 在生成令牌或启动会话时,如果发送其他受信任的源(或将受信任的源设置为无),这些操作将被忽略(它们不会被添加到列表中或进行交叉验证)。
    • 如果未启用增强身份验证,则会使用作为 API 调用的一部分发送的任何源 URL。 添加受信任的源
  2. 添加受信任的域 URL 后,选择“ 应用”。

Direct Line 示例机器人

可以从以下位置下载 .NET 示例: Direct Line 机器人示例

该示例包含两个项目:

  • DirectLineBot。 它创建一个机器人,用于通过 Direct Line 通道进行连接。
  • DirectLineClient。 这是一个控制台应用程序,通过 Direct Line 通道与以前的机器人通信。

Direct Line API

  • 必须从 Azure 机器人注册获取 Direct Line API 的凭证,并且这些凭证将只允许调用方连接到为其生成的特定机器人。 在机器人项目中,使用这些值更新 appsettings.json 文件。

    {
    "MicrosoftAppId": "",
    "MicrosoftAppPassword": ""
    }
    
  • 在 Azure 门户中,在通道列表中启用 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 客户端 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);
        }
    }
}