Uzantı için .NET botu yapılandırma
1 Eylül 2023'te ağ yalıtımı için Azure Hizmet Etiketi yönteminin kullanılması önemle tavsiye edilir. DL-ASE kullanımı yüksek oranda belirli senaryolarla sınırlı olmalıdır. Bu çözümü bir üretim ortamında uygulamadan önce, rehberlik için destek ekibinize danışmanızı öneririz.
ŞUNLAR IÇIN GEÇERLIDIR: SDK v4
Bu makalede, adlandırılmış kanallar ile çalışmak üzere bir .NET botunun nasıl güncelleştirildiği ve botunuzu dağıttiğiniz Azure Uygulaması Hizmeti kaynağında Direct Line App Service uzantısının nasıl etkinleştirileceği açıklanır.
Ön koşullar
- Azure hesabı. Henüz bir hesabınız yoksa başlamadan önce ücretsiz bir hesap oluşturun.
- Azure'da dağıtılan bir .NET botu.
- .NET, 4.14.1 veya üzeri için Bot Framework SDK'sı.
Direct Line App Service uzantısını etkinleştirme
Bu bölümde, botunuzun Direct Line kanal yapılandırmasından App Service uzantı anahtarını kullanarak Direct Line App Service uzantısının nasıl etkinleştirileceği açıklanmaktadır.
Bot kodunu güncelleştirme
Dekont
Microsoft.Bot.Builder.StreamingExtensions NuGet önizleme paketleri kullanım dışı bırakıldı. v4.8'den başlayarak SDK bir Microsoft.Bot.Builder.Streaming
ad alanı içerir. Bir bot daha önce önizleme paketlerini kullandıysa, aşağıdaki adımları izlemeden önce bunların kaldırılması gerekir.
- Visual Studio'da bot projenizi açın.
- Uygulamanızın adlandırılmış kanalları kullanmasına izin verin:
Startup.cs dosyasını açın.
Microsoft.Bot.Builder.Integration.AspNet.Core NuGet paketine bir başvuru ekleyin.
using Microsoft.Bot.Builder.Integration.AspNet.Core;
yönteminde
Configure
yöntemineUseNamedPipes
bir çağrı ekleyin.public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseDefaultFiles() .UseStaticFiles() .UseWebSockets() // Allow the bot to use named pipes. .UseNamedPipes(System.Environment.GetEnvironmentVariable("APPSETTING_WEBSITE_SITE_NAME") + ".directline") .UseRouting() .UseAuthorization() .UseEndpoints(endpoints => { endpoints.MapControllers(); }); // app.UseHttpsRedirection(); }
Startup.cs dosyasını kaydedin.
- Güncelleştirilmiş botunuzu Azure'a dağıtın.
Bot Direct Line App Service uzantısını etkinleştirme
Azure portalında Azure Bot kaynağınıza gidin.
- Ayarlar altında, botunuzun iletileri kabul eden kanalları yapılandırmak için Kanallar'ı seçin.
- Henüz etkinleştirilmemişse, kanalı etkinleştirmek için Kullanılabilir kanallar listesinden Doğrudan Çizgi kanalını seçin.
- Doğrudan Çizgi'yi etkinleştirdikten sonra Kanallar sayfasından yeniden seçin.
- App Service uzantısı sekmesini seçin.
- App Service Uzantı Anahtarları'nın altında ilgili anahtarın yanındaki göz simgesini seçin.
Giriş sayfasına gidin ve sayfanın üst kısmındaki Uygulama Hizmetleri'ni seçin. Alternatif olarak, portal menüsünü görüntüleyin ve ardından App Services menü öğesini seçin. Azure, App Services sayfasını görüntüler.
Arama kutusuna Azure Bot kaynak adınızı girin. Kaynağınız listelenir.
Simgenin veya menü öğesinin üzerine geldiğinizde, son görüntülenen kaynaklarınızın listesini aldığınıza dikkat edin. Azure Bot kaynağınız büyük olasılıkla listelenir.
Kaynak bağlantınızı seçin.
Ayarlar bölümünde Yapılandırma menü öğesini seçin.
Sağ panele aşağıdaki ayarları ekleyin:
Ad Değer DirectLineExtensionKey Daha önce kopyaladığınız App Service uzantı anahtarının değeri. DIRECTLINE_EXTENSION_VERSION latest Botunuz genel portal üzerinden Azure'a erişmediğiniz bağımsız veya başka bir şekilde kısıtlanmış azure bulutunda barındırıldıysa aşağıdaki ayarı da eklemeniz gerekir:
Ad Değer DirectLineExtensionABSEndpoint Botunuzun barındırılıyor olduğu Azure buluta özgü uç nokta. Örneğin USGov bulutu için uç nokta şeklindedir https://directline.botframework.azure.us/v3/extension
.Yapılandırma bölümünde Genel ayarlar bölümünü seçin ve Web yuvalarını açın.
Ayarları kaydetmek için Kaydet’i seçin. Bu işlem Azure Uygulaması Hizmetini yeniden başlatır.
Direct Line uzantısının ve botunun yapılandırıldığını onaylayın
Tarayıcınızda https://<your_app_service>.azurewebsites.net/.bot
adresine gidin. Her şey doğruysa, sayfa aşağıdaki JSON içeriğini döndürür:
{"v":"123","k":true,"ib":true,"ob":true,"initialized":true}
- v , Direct Line App Service uzantısının derleme sürümünü gösterir.
- k , uzantının yapılandırmasından bir uzantı anahtarını okuyup okuyamadığını gösterir.
- initialized, uzantının Azure AI Bot Hizmeti'dan bot meta verilerini indirip indiremeyeceğini gösterir.
- ib , uzantının bota gelen bağlantı kurup kuramadığını gösterir.
- ob , uzantının bottan giden bağlantı kurup kuramadığını gösterir.
Sorun giderme
.bot uç noktası tarafından görüntülenen ib ve ob değerleri false ise, bot ve Direct Line App Service uzantısı birbirine bağlanamaz.
- Adlandırılmış kanalların bota eklendiğini kullanmak için kodu bir kez daha denetleyin.
- Botu başlatıp çalıştırabildiğinden emin olun. Yararlı araçlar WebChat'te Test etme, ek bir kanal bağlama, uzaktan hata ayıklama veya günlüğe kaydetmedir.
- Tüm işlemlerin temiz bir şekilde başlatılmasını sağlamak için botun içinde barındırılır Azure Uygulaması Hizmeti'nin tamamını yeniden başlatın.
.bot uç noktasının başlatılan değeri false ise, Direct Line App Service uzantısı yukarıdaki botun Uygulama Ayarlar eklenen App Service uzantısı anahtarını doğrulayamaz.
- Değerin doğru girildiğini onaylayın.
- Botunuzun Doğrudan Hattı Yapılandır sayfasında gösterilen alternatif uzantı anahtarına geçin.
Botun işlem dışı barındırma modelini kullanmasını sağlama; aksi takdirde, HTTP Hatası 500.34 - ANCM Karma Barındırma hatası alırsınız (ANCM, ASP.NET Çekirdek Modülü anlamına gelir). Bot şablonu varsayılan olarak barındırma modelini kullandığından
InProcess
bu hata oluşur. İşlem dışı barındırmayı yapılandırmak için bkz . İşlem dışı barındırma modeli. Daha fazla bilgi için bkz . aspNetCore öğesinin öznitelikleri ve web.config ile yapılandırma.Direct Line App Service uzantısıyla OAuth kullanmayı denerseniz ve "hedef kitle talebinden bot AppId alınamıyor" hatasıyla karşılaşırsanız, üzerinde
BotFrameworkHttpAdapter
olarakAudienceClaim
ayarlayınClaimsIdentity
. Bunu yapmak için bağdaştırıcıyı alt sınıfa alabilirsiniz. Örnek:public class AdapterWithStaticClaimsIdentity : BotFrameworkHttpAdapter { public AdapterWithStaticClaimsIdentity(IConfiguration configuration, ILogger<BotFrameworkHttpAdapter> logger, ConversationState conversationState = null) : base(configuration, logger) { // Manually create the ClaimsIdentity and create a Claim with a valid AudienceClaim and the AppID for a bot using the Direct Line App Service extension. var appId = configuration.GetSection(MicrosoftAppCredentials.MicrosoftAppIdKey)?.Value; ClaimsIdentity = new ClaimsIdentity(new List<Claim>{ new Claim(AuthenticationConstants.AudienceClaim, appId) }); } }