Aracılığıyla paylaş


Botu Direct Line'a bağlama

Bu makalede, bir botu Direct Line kanalına nasıl bağlayacağınız açıklanmaktadır. İstemci uygulamanız aracılığıyla bir botla iletişim kurmak için bu kanalı kullanın.

Dekont

Direct Line, bir istemci uygulaması ile bot arasında iletişime izin veren, HTTPS protokolü üzerinden standart bir kanaldır. Bunun yerine ağ yalıtımına ihtiyacınız varsa WebSockets üzerinden Direct Line App Service Uzantısı'nı kullanın.

Ön koşullar

  • Azure hesabı. Henüz bir hesabınız yoksa başlamadan önce ücretsiz bir hesap oluşturun.
  • Azure'da yayımlanan mevcut bir bot.

Direct Line kanalını ekleme

yapmanız gereken ilk şey, Doğrudan Hat kanalını botunuza eklemektir.

  1. Azure portalına gidin.
  2. Azure Bot kaynağınıza gidin. Bot Ayarlar altında Kanallar'ı seçin.
  3. Kullanılabilir Kanallar listesinden Doğrudan Çizgi'yi seçin.

Botunuz artık Varsayılan siteyi kullanarak Direct Line kullanacak şekilde yapılandırıldı.

Alternatif olarak, varsayılan siteyi kullanmak yerine yeni bir site ekleyebilirsiniz. Yeni bir site oluşturmak için Doğrudan Hat kanalı sayfasındaki Yeni site düğmesini seçin. Direct Line new site button in Azure portal

Gizli dizi anahtarlarını yönetme

Doğrudan Kanal eklediğinizde Bot Framework gizli anahtarlar oluşturur. İstemci uygulamanız, botla iletişim kurmak için sorun oluşturan Direct Line API isteklerinin kimliğini doğrulamak için bu anahtarları kullanır. Daha fazla bilgi için bkz. Kimlik doğrulaması.

  1. Bir sitenin Direct Line gizli dizisini düz metin olarak görüntülemek için Doğrudan Çizgi kanal sayfasına gidin.

  2. Doğrudan Çizgi sekmesini ve ardından anahtarı almak istediğiniz siteyi (örneğin, Default_Site) seçin. Azure, Siteyi yapılandır bölmesini açar.

  3. Gizli anahtarlar'ın altında ilgili anahtarın yanındaki göz simgesini seçin.

    Show Direct Line keys

  4. Anahtarı kopyalayın ve güvenli bir şekilde depolayın. İstemci uygulamanızın bir botla iletişim kurmak için karşılaştığı Direct Line API isteklerinin kimliğini doğrulamak için anahtarını kullanın.

    Dekont

    Gizli diziler istemci uygulamalarına sunulmamalı veya ekli olmamalıdır. Sonraki adıma bakın.

  5. En iyi yöntem, bir belirtecin anahtarını değiştirmek için Doğrudan Hat API'sini kullanmaktır. Ardından istemci uygulaması, tek bir konuşma kapsamında isteklerinin kimliğini doğrulamak için belirteci kullanır.

Ayarları yapılandırma

Site ayarlarınızı yapılandırmak için:

  1. Doğrudan Hat kanalı sayfasında, Siteler listesinden yapılandırmak istediğiniz siteyi seçin. Aşağıda gösterilen Siteyi yapılandır bölmesi açılır:Configure site pane

  2. İstemci uygulamanızın bir botla iletişim kurmak için kullanacağı Direct Line protokol sürümünü seçin.

    Bahşiş

    İstemci uygulamanız ve botunuz arasında yeni bir bağlantı oluşturuyorsanız Direct Line API 3.0'ı kullanın.

  3. İşiniz bittiğinde, site yapılandırmasını kaydetmek için Uygula'yı seçin. Botunuza bağlanmak istediğiniz her istemci uygulaması için yeni bir siteden başlayarak bu işlemi yineleyin.

Gelişmiş kimlik doğrulamayı yapılandırma

Kullanılabilir site yapılandırmalarından biri, bota bağlanırken güvenlik risklerini azaltmaya yardımcı olan Gelişmiş kimlik doğrulama seçenekleridir (örneğin, Web Sohbeti denetimi kullanılarak). Daha fazla bilgi için bkz . Direct Line gelişmiş kimlik doğrulaması.

Gelişmiş kimlik doğrulaması eklemek için:

  1. Gelişmiş kimlik doğrulama seçeneklerini etkinleştirin. "En az bir güvenilir kaynağınız olmalıdır" ifadesini içeren bir ileti, Güvenilen kaynak ekle bağlantısıyla görüntülenir. Gelişmiş kimlik doğrulamasını etkinleştirirseniz en az bir güvenilir kaynak belirtmeniz gerekir.

    Güvenilen kaynak, sistem tarafından kullanıcıların kimliğini doğrulamak için kullanılan bir etki alanıdır. Bu durumda, Direct Line bir belirteç oluşturmak için etki alanını kullanır.

    • Güvenilen kaynakları yapılandırma kullanıcı arabirimi sayfasının bir parçası olarak yapılandırırsanız, bu ayarlar her zaman bir belirtecin oluşturulması için tek ayar olarak kullanılır. Belirteç oluştururken veya konuşma başlatırken ek güvenilir çıkış noktaları gönderme (veya güvenilir çıkış noktalarını yok olarak ayarlama) yoksayılır (listeye eklenmez veya çapraz doğrulanmaz).
    • Gelişmiş kimlik doğrulamasını etkinleştirmediyseniz, API çağrıları kapsamında gönderdiğiniz herhangi bir kaynak URL kullanılır. Add trusted origin
  2. Güvenilen bir etki alanı URL'si ekledikten sonra Uygula'yı seçin.

Direct Line örnek botu

Bu konumdan bir .NET örneği indirebilirsiniz: Direct Line Bot Örneği.

Örnek iki proje içerir:

  • DirectLineBot. Direct Line kanalı üzerinden bağlanmak için bir bot oluşturur.
  • DirectLineClient. Bu, Direct Line kanalı aracılığıyla önceki botla konuşan bir konsol uygulamasıdır.

Doğrudan Hat API'si

  • Doğrudan Hat API'si kimlik bilgileri Azure Bot kaydından alınmalıdır ve çağıranın yalnızca oluşturulduğu bota bağlanmasına izin verir. Bot projesinde dosyayı bu değerlerle güncelleştirin appsettings.json .

    {
    "MicrosoftAppId": "",
    "MicrosoftAppPassword": ""
    }
    
  • Azure portalında, kanallar listesinde Direct Line'ı etkinleştirin ve ardından Direct Line gizli dizisini yapılandırın. Sürüm 3.0 onay kutusunun işaretli olduğundan emin olun. Konsol istemci projesinde, dosyayı Direct Line gizli anahtarı ve bot tanıtıcısı (Bot Kimliği) ile güncelleştirin App.config .

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

Kullanıcı iletileri, daha önce oluşturulan kullanılarak Direct Line client Conversations.PostActivityAsync yöntemi kullanılarak bota ConversationId gönderilir.

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