Подключение бота к Direct Line

В этой статье описывается, как подключить бота к каналу Direct Line . Используйте этот канал для взаимодействия с ботом через клиентское приложение.

Примечание.

Direct Line — это стандартный канал через протокол HTTPS, позволяющий осуществлять обмен данными между клиентским приложением и ботом. Если вместо этого требуется сетевая изоляция, используйте расширение Direct Line Служба приложений через WebSockets.

Необходимые компоненты

  • Учетная запись Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начать работу.
  • Существующий бот, опубликованный в Azure.

Добавление канала Direct Line

Первое, что необходимо сделать, — добавить канал Direct Line в бот.

  1. Переход на портал Azure.
  2. Перейдите к ресурсу Azure Bot. В разделе "Бот Параметры" выберите каналы.
  3. Выберите Прямую линию из списка доступных каналов.

Теперь бот настроен на использование Direct Line с помощью сайта по умолчанию.

Кроме того, можно добавить новый сайт вместо использования сайта по умолчанию. Нажмите кнопку "Создать сайт" на странице канала Direct Line, чтобы создать новый сайт. Direct Line new site button in Azure portal

Управление секретными ключами

При добавлении Direct Channel Bot Framework создает секретные ключи. Клиентское приложение использует эти ключи для проверки подлинности запросов API Direct Line, связанных с ботом. Дополнительные сведения см. в разделе Authenticate to the Speech API (Аутентификация в API речи).

  1. Чтобы просмотреть секрет Direct Line сайта в виде обычного текста, перейдите на страницу канала Direct Line .

  2. Выберите вкладку Direct Line , а затем сайт, для которого требуется получить ключ, например Default_Site. Azure откроет панель "Настройка сайта ".

  3. В разделе "Секретные ключи" щелкните значок глаза рядом с соответствующим ключом.

    Show Direct Line keys

  4. Копирование и безопасное хранение ключа. Используйте ключ для проверки подлинности ЗАПРОСОВ API Direct Line, которые возникают у клиентского приложения для взаимодействия с ботом.

    Примечание.

    Секреты не должны быть предоставлены или внедрены в клиентские приложения. См. следующий шаг.

  5. Рекомендуется использовать API Direct Line для обмена ключом для маркера. Затем клиентское приложение будет использовать маркер для проверки подлинности своих запросов в область одной беседы.

Настройка параметров

Чтобы настроить параметры сайта, выполните следующие действия.

  1. На странице канала Direct Line выберите сайт, который нужно настроить в списке сайтов . Откроется панель "Настройка сайта ", показанная ниже: Configure site pane

  2. Выберите версию протокола Direct Line, которую будет использовать клиентское приложение для взаимодействия с ботом.

    Совет

    Если вы создаете новое подключение между клиентским приложением и ботом, используйте API Direct Line 3.0.

  3. По завершении нажмите кнопку "Применить ", чтобы сохранить конфигурацию сайта. Повторите этот процесс, начиная с нового сайта, для каждого клиентского приложения, которое требуется подключить к боту.

Настройка расширенной проверки подлинности

Одним из доступных конфигураций сайта является расширенный вариант проверки подлинности, который помогает снизить риски безопасности при подключении к боту (например, с помощью элемента управления Веб-чат). Дополнительные сведения см. в разделе "Расширенная проверка подлинности Direct Line".

Чтобы добавить расширенную проверку подлинности, выполните приведенные далее действия.

  1. Включите варианты проверки подлинности. Сообщение с сообщением "Необходимо иметь по крайней мере один доверенный источник". Появится ссылка "Добавить доверенный источник ". Если включить расширенную проверку подлинности, необходимо указать по крайней мере один доверенный источник.

    Доверенный источник — это домен, используемый системой для проверки подлинности пользователей. В этом случае Direct Line использует домен для создания маркера.

    • Если вы настраиваете доверенные источники в рамках страницы пользовательского интерфейса конфигурации, эти параметры всегда будут использоваться в качестве единственного набора для создания маркера. Отправка дополнительных доверенных источников (или настройка доверенных источников ни одному) при создании маркера или запуске беседы будет игнорироваться (они не добавляются в список или перекрестно проверены).
    • Если вы не включите расширенную проверку подлинности, будет использоваться любой URL-адрес источника, отправляемый в рамках вызовов API. Add trusted origin
  2. После добавления URL-адреса доверенного домена нажмите кнопку "Применить".

Пример бота Direct Line

Пример .NET можно скачать из этого расположения: пример Direct Line Bot.

Пример содержит два проекта:

  • DirectLineBot. Он создает бот для подключения через канал Direct Line.
  • DirectLineClient. Это консольное приложение, которое взаимодействует с предыдущим ботом через канал Direct Line.

Direct Line API

  • Учетные данные для API Direct Line должны быть получены из регистрации Azure Bot и разрешают только вызывающему объекту подключаться к боту, для которого они были созданы. В проекте бота appsettings.json обновите файл с этими значениями.

    {
    "MicrosoftAppId": "",
    "MicrosoftAppPassword": ""
    }
    
  • В портал Azure включите Direct Line в списке каналов и настройте секрет Direct Line. Убедитесь, что проверка box для версии 3.0 проверка. В проекте клиента консоли обновите App.config файл с помощью ключа секрета Direct Line и дескриптора бота (идентификатор бота).

    <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);
        }
    }
}