Botunuzun telemetri verilerini analiz etme

ŞUNLAR IÇIN GEÇERLIDIR: SDK v4

Bot davranışını analiz etme

Bot davranışını analiz etmek için aşağıdaki sorgu koleksiyonu kullanılabilir. Koleksiyonu kullanarak Azure İzleyici Log Analytics'te özel sorgular yazabilir, izleme ve Power BI görselleştirme panoları oluşturabilirsiniz.

Önkoşullar

Aşağıdaki kavramlar hakkında temel bilgilere sahip olmak yararlı olur:

Bahşiş

Botunuzu Power Virtual Agents veya Composer gibi araçları kullanarak oluşturuyorsanız, kullanılabilir olduğunda her sorgunun Uyarlamalı İletişim Kutusu sürümünü kullanmak istersiniz.

Panolar

Azure Panoları, sorgularınızdan oluşturulan bilgileri görüntülemek ve paylaşmak için harika bir yol sunar. Sorgularınızı panonuza eklediğiniz kutucuklarla ilişkilendirerek botlarınızın etkinliğini izlemeye yardımcı olmak için özel panolar oluşturabilirsiniz. Panolar ve sorgularınızı bunlarla ilişkilendirme hakkında daha fazla bilgi için bkz . Log Analytics verilerinin panolarını oluşturma ve paylaşma. Bu makalenin geri kalanında botlarınızın davranışını izlemede yararlı bulabileceğiniz bazı sorgu örnekleri gösterilir.

Örnek Kusto sorguları

Dekont

Bu makaledeki tüm sorgular için nokta, kanal ve yerel ayar gibi farklı boyutlarda özetlenmeleri önerilir.

Dönem başına kullanıcı sayısı

Bu örnek, son 14 gün içinde botunuzla günde kaç farklı kullanıcının iletişim kurduğunu gösteren bir çizgi grafikle sonuçlanmıştır. ve değişkenlerine queryStartDatequeryEndDateinterval farklı değerler atanarak zaman aralığı kolayca değiştirilebilir.

Önemli

Bu sorgudaki benzersiz kullanıcıların doğru sayısını yalnızca kimliği doğrulanmış kullanıcılarsa alırsınız ve sonuçlar kanal özelliklerine de bağlı olabilir.

// number of users per period
let queryStartDate = ago(14d);
let queryEndDate = now();
let groupByInterval = 1d;
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| summarize uc=dcount(user_Id) by bin(timestamp, groupByInterval)
| render timechart

Bahşiş

Kusto summarize işleci , giriş tablosunun içeriğini toplayan bir tablo oluşturmak için kullanılır.

Bin işlevi, ile summarize operator birlikte kullanıldığında sorgu sonuçlarını belirtilen değerde gruplandıracak bir Kusto skaler işlevidir. Yukarıdaki örnekte, bu güne göre gruplandırılır. Kusto ayrıca h=hours, m=minutes, s=seconds, ms=milisaniye, microsecond=microseconds değerlerini de kabul eder.

İşleme işleci, zaman çizelgesi, x ekseninin tarih saat olduğu ve y ekseni için başka herhangi bir sayısal sütunun kullanılabildiği çizgi grafik gibi grafikleri kolayca işlemenizi sağlar. Verileriniz her zaman belirtilmemiş olsa bile x eksenini otomatik olarak düzgün aralıklı tutar. İşleme deyimi kullanılmazsa, varsayılan olarak olur table.

Örnek dönem başına kullanıcı sayısı sorgu sonuçları

Sample chart of number of users per period.

Dönem başına etkinlik

Bu örnekte, son 14 günün günlük konuşma, iletişim kutusu veya ileti sayısı gibi istenen boyuta göre etkinlik hacminin nasıl ölçüldiği gösterilmektedir. ve değişkenlerine querystartdatequeryEndDateinterval farklı değerler atanarak zaman aralığı kolayca değiştirilebilir. İstenen boyut aşağıdaki örnekteki extend yan tümcesi tarafından tanımlanır; metric InstanceId, DialogId veya activityId olarak ayarlanabilir.

Görüntülemek istediğiniz boyuta ölçüm atayın:

// Measures the number of activity's (conversations, dialogs, messages) per period.
let queryStartDate = ago(14d);
let queryEndDate = now();
let groupByInterval = 1d;
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| extend InstanceId = tostring(customDimensions['InstanceId'])
| extend DialogId = tostring(customDimensions['DialogId'])
| extend ActivityId = tostring(customDimensions['activityId'])
| where DialogId != '' and  InstanceId != '' and user_Id != ''
| extend metric = InstanceId // DialogId or ActivityId
| summarize Count=dcount(metric) by  bin(timestamp, groupByInterval)
| order by Count desc nulls last
| render timechart

Bahşiş

Kusto extend işleci hesaplanmış sütunlar oluşturmak ve bunları sonuç kümesine eklemek için kullanılır.

Dönem başına örnek etkinlik sorgu sonuçları

Sample chart of activity per period.

Dönem başına kullanıcı başına etkinlik

Bu örnekte, dönem başına kullanıcı başına etkinlik sayısını sayma gösterilmektedir. Bu sorgu, dönem başına etkinlik sorgusunda detaya gidip dönem başına kullanıcı başına etkinliğe odaklanır. Etkinlikler arasında iletişim kutuları, konuşmalar veya iletiler bulunur. Bu sorgu botunuzla kullanıcı etkileşimini ölçer ve bu da aşağıdakiler gibi olası sorunların bulunmasına yardımcı olabilir:

  • Tek bir kullanıcının çok fazla etkinliği olan günler bir saldırı veya test anlamına gelebilir
  • Çok az etkileşimin olduğu günler hizmet durumu sorunlarını gösterebilir

Bahşiş

Zaman ve iletişim kutuları, iletiler veya konuşmalarda özetlenebilen genel bot etkinlik hacmini almak için user_Id ile kaldırabilirsiniz.

// number of users per period per dialogs
let queryStartDate = ago(14d);
let queryEndDate = now();
let interval = 6h;
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| extend InstanceId = tostring(customDimensions['InstanceId'])
| extend DialogId = tostring(customDimensions['DialogId'])
| extend ActivityId = tostring(customDimensions['activityId'])
| where DialogId != '' and InstanceId != '' and user_Id != ''
| extend metric = ActivityId // InstanceId // DialogId // or InstanceId for conversation count
| summarize Count=dcount(metric) by user_Id, bin(timestamp, groupByInterval)
| order by Count desc nulls last

Kullanıcı başına dönem başına örnek etkinlik sorgu sonuçları

user_Id Zaman damgası Sayı
User-8107ffd2 2019-09-03T00:00:00Z 14
Kullanıcı-75f2cc8f 2019-08-30T00:00:00Z 13
Kullanıcı-75f2cc8d 2019-09-03T00:00:00Z 13
Kullanıcı-3060aada 2019-09-03T00:00:00Z 10

İletişim kutusu tamamlama

Bir iletişim kutusu için telemetri istemcisini ayarladıktan sonra, iletişim kutusu (ve alt öğeleri) başlatılan ve tamamlanan gibi bazı varsayılan telemetri verilerini yayar. Bu örnek, tamamlanan iletişim kutularını başlatılan iletişim kutularına göre ölçmek için kullanılabilir. Başlatılan iletişim kutusu sayısı tamamlanan sayıdan büyükse, kullanıcılarınızdan bazıları iletişim kutusu akışını tamamlamaz. Olası iletişim kutusu mantığını belirlemenize ve sorunlarını gidermenize yardımcı olması için bu sorguyu kullanabilirsiniz. En sık kullanılan iletişim kutularını belirlemek için de kullanılabilir.

Bahşiş

Botunuzu Power Virtual Agents veya Composer gibi araçları kullanarak oluşturuyorsanız, her sorgunun uyarlamalı iletişim kutusu sürümünü kullanmak istersiniz.

Şelale iletişim kutusu tamamlama

// % Completed Waterfall Dialog: shows completes relative to starts
let queryStartDate = ago(14d);
let queryEndDate = now();
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| where name=="WaterfallStart"
| extend DialogId = customDimensions['DialogId']
| extend InstanceId = tostring(customDimensions['InstanceId'])
| join kind=leftouter (
    customEvents
    | where name=="WaterfallComplete"
    | extend InstanceId = tostring(customDimensions['InstanceId'])
  ) on InstanceId
| summarize started=countif(name=='WaterfallStart'), completed=countif(name1=='WaterfallComplete') by tostring(DialogId)
| where started > 100  // filter for sample
// Show starts vs. completes
| project tostring(DialogId), started, completed
| order by started desc, completed asc  nulls last
| render barchart  with (kind=unstacked, xcolumn=DialogId, ycolumns=completed, started, ysplit=axes)

Bahşiş

Kusto join işleci , her tablodan belirtilen sütunların değerlerini eşleştirerek yeni bir tablo oluşturmak üzere iki tablonun satırlarını birleştirmek için kullanılır.

Proje işleci , çıkışınızda gösterilmesini istediğiniz alanları seçmek için kullanılır. extend operator Yeni alan ekleyene benzer şekilde, project operator mevcut alan kümesinden birini seçebilir veya yeni bir alan ekleyebilirsiniz.

Başlatılıp tamamlanan uyarlamalı iletişim kutuları

// % Completed adaptive dialog: shows completes relative to starts. This type is the default dialog type when using Power Virtual Agents or Composer. 
customEvents
| where name=="AdaptiveDialogStart" or name == "AdaptiveDialogComplete"
| extend DialogId = tostring(customDimensions['DialogId'])
| summarize started=countif(name=='AdaptiveDialogStart'), completed=countif(name=='AdaptiveDialogComplete') by DialogId
| project DialogId, started, completed
| order by started desc, completed asc nulls last
| render barchart with (kind=unstacked, xcolumn=DialogId, ycolumns=completed, started, ysplit=axes)

Örnek iletişim kutusu tamamlama sorgusu sonuçları

Sample chart of dialogs started and dialogs completed.

İletişim kutusu uyumsuzluk

Bu örnek, belirtilen süre boyunca iptal veya bırakma nedeniyle başlatılan ancak hiç tamamlanmamış iletişim kutusu akışlarının sayısını saymak için kullanılabilir. Tamamlanmamış iletişim kutularını gözden geçirmek ve kullanıcı karışıklığı nedeniyle etkin olarak iptal edilip edilmediğini veya kullanıcı dikkatiniz dağılması veya ilgi kaybı nedeniyle terk edilip edilmediğini incelemek için kullanabilirsiniz.

Şelale iletişim kutuları tamamlanmadı

// Show incomplete dialogs when using waterfall dialogs.
let queryStartDate = ago(14d);
let queryEndDate = now();
customEvents 
| where timestamp > queryStartDate 
| where timestamp < queryEndDate
| where name == "WaterfallStart" 
| extend DialogId = customDimensions['DialogId']
| extend instanceId = tostring(customDimensions['InstanceId'])
| join kind=leftanti (
  customEvents
  | where name == "WaterfallComplete" 
  | extend instanceId = tostring(customDimensions['InstanceId'])
  ) on instanceId
| summarize cnt=count() by  tostring(DialogId)
| order by cnt
| render barchart

Uyarlamalı iletişim kutuları tamamlanmadı

// Show incomplete dialogs for adaptive dialogs; this type is the default dialog type when using Power Virtual Agents or Composer.
let queryStartDate = ago(14d);
let queryEndDate = now();
customEvents
| where name == "AdaptiveDialogStart"
| extend DialogId = tostring(customDimensions['DialogId'])
| join kind=rightanti (
customEvents
| where name == "AdaptiveDialogComplete"
| extend DialogId = tostring(customDimensions['DialogId'])
) on name, DialogId
| summarize cnt=count() by DialogId
| order by cnt
| render barchart

Bahşiş

Kusto order işleci (ile aynı sort operator) giriş tablosunun satırlarını bir veya daha fazla sütuna göre sıralamak için kullanılır. Not: Null değerleri herhangi bir sorgunun sonuçlarından dışlamak istiyorsanız, bunları deyiminizde where filtreleyebilir, örneğin "and isnotnull(Timestamp)" ekleyebilir veya başında veya sonunda null değerler döndürebilir, order deyiminin sonuna veya nulls first öğesini ekleyebilirsiniznulls first.

Örnek iletişim kutusu uyumsuzluk sorgusu sonuçları

Sample summary chart for incomplete dialogs.

İletişim Kutusu Dizisi Detaya Gitme

Konuşmadaki iletişim kutusu için şelale başlatma/adım/tamamlama

Bu örnekte, hangi adımların iletişim kutusunun kesintiye neden olduğunu belirlemede yararlı olabilecek, konuşmaya (instanceId) göre gruplandırılmış iletişim kutusu adımları dizisi gösterilmektedir.

Bu sorguyu çalıştırın, SampleDialogId yerine <istenen DialogId değeri girin>

// Drill down: Show waterfall start/step/complete for specific dialog
let queryStartDate = ago(14d);
let queryEndDate = now();
let DialogActivity=(dlgid:string) {
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| extend DialogId = customDimensions['DialogId']
| extend StepName = customDimensions['StepName']
| extend InstanceId = customDimensions['InstanceId']
| where DialogId == dlgid
| project timestamp, name, StepName, InstanceId
| order by tostring(InstanceId), timestamp asc
};
// For example see SampleDialogId behavior
DialogActivity("<SampleDialogId>")

Bahşiş

Bu sorgu, tek bir sorgu kapsamında tanımlanan ve kullanılan ve let deyimi aracılığıyla tanımlanan kullanıcı tanımlı bir işlev olan sorgu tanımlı bir işlev kullanılarak yazılmıştır. Bu sorgu, kullanımı query-defined functionolmadan yazılmıştır:

let queryStartDate = ago(14d);
let queryEndDate = now();
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| extend DialogId = customDimensions['DialogId']
| extend StepName = customDimensions['StepName']
| extend InstanceId = customDimensions['InstanceId']
| where DialogId == "<SampleDialogId>"
| project timestamp, name, StepName, InstanceId
| order by tostring(InstanceId), timestamp asc
Örnek sorgu sonuçları
timestamp name StepName InstanceId
2019-08-23T20:04... Şelale Başlangıcı boş ... 79c0f03d8701
2019-08-23T20:04... WaterfallStep GetPointOfInterestLocations ... 79c0f03d8701
2019-08-23T20:04... WaterfallStep ProcessPointOfInterestSelection ... 79c0f03d8701
2019-08-23T20:04... WaterfallStep GetRoutesToDestination ... 79c0f03d8701
2019-08-23T20:05... WaterfallStep ResponseToStartRoutePrompt ... 79c0f03d8701
2019-08-23T20:05... WaterfallComplete 1 boş ... 79c0f03d8701
2019-08-28T23:35... Şelale Başlangıcı boş ... 6ac8b3211b99
2019-08-28T23:35... WaterfallStep 2 GetPointOfInterestLocations ... 6ac8b3211b99
2019-08-28T19:41... Şelale Başlangıcı boş ... 8137d76a5cbb
2019-08-28T19:41... WaterfallStep 2 GetPointOfInterestLocations ... 8137d76a5cbb
2019-08-28T19:41... Şelale Başlangıcı boş ... 8137d76a5cbb

1Tamamlandı

2Terk Edildi

Yorumlama: Kullanıcılar GetPointOfInterestLocations adımında konuşmayı bırakıyor gibi görünüyor.

Dekont

Şelale iletişim kutuları bir sıra yürütür (başlangıç, birden çok adım, tamamlandı). Bir dizi tam olmayan bir başlangıç gösteriyorsa, iletişim kutusu kullanıcının iletişim kutusunu bırakması veya iptal etme nedeniyle kesildiği anlamına gelir. Bu ayrıntılı çözümlemede, bu davranışı görebilirsiniz (bkz. tamamlanan ve bırakılan adımlar).

Şelale başlangıç/adım/tamamlama/iptal adımları toplam toplamları

Bu örnekte, bir iletişim dizisinin başlatıldığı toplam toplam sayı, birleştirilmiş toplam şelale adımı sayısı, kaç adet başarıyla tamamlandığı, kaç adet iptal edildiği ve WaterfallStart ile birleştirilmiş WaterfallComplete artı WaterfallCancel arasındaki fark, bırakılan toplam sayıyı verir.

// Drill down: Aggregate view of waterfall start/step/complete/cancel steps totals for specific dialog
let queryStartDate = ago(14d);
let queryEndDate = now();
let DialogSteps=(dlgid:string) {
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| extend DialogId = customDimensions['DialogId']
| where DialogId == dlgid
| project name
| summarize count() by name
};
// For example see SampleDialogId behavior
DialogSteps("<SampleDialogId>")
Örnek şelale-toplama sorgu sonuçları
Adı count
Şelale Başlangıcı 21
WaterfallStep 47
WaterfallComplete 11
WaterfallCancel 1

Yorumlama: İletişim dizisinin 21 çağrısının yalnızca 11'i tamamlandı, 9'u bırakıldı ve biri kullanıcı tarafından iptal edildi.

İletişim kutusunda ortalama süre

Bu örnek, kullanıcıların belirli bir iletişim kutusunda harcadığı ortalama süreyi ölçer. Botunuzun tamamlanması uzun süren iletişim kutularını basitleştirmenin avantajı olabilir.

// Average dialog duration
let queryStartDate = ago(14d);
let queryEndDate = now();
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| where name=="WaterfallStart"
| extend DialogId = customDimensions['DialogId']
| extend instanceId = tostring(customDimensions['InstanceId'])
| join kind=leftouter (customEvents | where name=="WaterfallCancel" | extend instanceId = tostring(customDimensions['InstanceId'])) on instanceId
| join kind=leftouter (customEvents | where name=="WaterfallComplete" | extend instanceId = tostring(customDimensions['InstanceId'])) on instanceId
| extend duration = case(not(isnull(timestamp1)), timestamp1 - timestamp,
not(isnull(timestamp2)), timestamp2 - timestamp, 0s) // Abandoned aren't counted. Alternate: now()-timestamp
| extend seconds = round(duration / 1s)
| summarize AvgSeconds=avg(seconds) by tostring(DialogId)
| order by AvgSeconds desc nulls last
| render barchart with (title="Duration in Dialog")

Örnek ortalama süre sorgu sonuçları

Sample chart of dialog duration.

İletişim kutusundaki ortalama adımlar

Bu örnek, çağrılan her iletişim kutusunun ortalama, min, max ve standart sapmaya göre hesaplanan "uzunluğunu" gösterir. Bu, iletişim kutusu kalitesini analiz etmede yardımcı olabilir. Örneğin:

  • Basitleştirme fırsatları için çok fazla adım içeren iletişim kutuları değerlendirilmelidir.
  • Min/max/average arasında geniş bir boşluk olan iletişim kutuları, kullanıcıların görevleri tamamlamaya çalışırken durdurulabileceği anlamına gelebilir. Görevleri tamamlamak için daha kısa yollar bulunma olasılığını veya iletişim kutusu karmaşıklığını azaltmanın yollarını değerlendirmeniz gerekebilir.
  • Büyük bir standart sapması olan iletişim kutuları karmaşık yollar veya bozuk deneyim (bırakma/iptal etme) önerir.
  • Birkaç adım içeren iletişim kutuları hiç tamamlanmadıkları için böyle olabilir. Tamamlanma/bırakma oranlarının analiz edilmesi, bu belirlemenin yapılmasına yardımcı olabilir.
// min/max/std/avg steps per dialog
let queryStartDate = ago(14d);
let queryEndDate = now();
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| extend DialogId = tostring(customDimensions['DialogId'])
| extend StepName = tostring(customDimensions['StepName'])
| extend InstanceId = tostring(customDimensions['InstanceId'])
| where name == "WaterfallStart" or  name == "WaterfallStep" or  name == "WaterfallComplete"
| order by InstanceId, timestamp asc
| project timestamp, DialogId, name, InstanceId, StepName
| summarize cnt=count() by InstanceId, DialogId
| summarize avg=avg(cnt), minsteps=min(cnt),maxsteps=max(cnt), std=stdev(cnt) by DialogId
| extend avgsteps = round(avg, 1)
| extend avgshortbysteps=maxsteps-avgsteps
| extend avgshortbypercent=round((1.0 - avgsteps/maxsteps)*100.0, 1)
| project DialogId, avgsteps, minsteps, maxsteps, std, avgshortbysteps, avgshortbypercent
| order by std desc nulls last

Örnek ortalama adım sorgu sonuçları

İletişim Kutusu Kimliği ort adımları en düşük adımlar en fazla adım std adımlara göre ortalama kısa yüzde ortalama kısa
FindArticlesDialog 6.2 2 7 2.04 0.8 11.4%
CreateTicket 4.3 2 5 1.5 0.7 %14
CheckForCurrentLocation 3.9 2 5 1.41 1.1 %22
BaseAuth 3.3 2 4 1,03 0.7 17.5%
ekleme 2.7 2 4 0.94 1.3 32.5%

__Interpretation: Örneğin, FindArticlesDialog min/max arasında geniş bir yayılıma sahiptir ve araştırılması ve muhtemelen yeniden tasarlanması ve iyileştirilmiş olması gerekir.

Etkinlik ölçümüne göre kanal etkinliği

Bu örnek, botunuzun belirli bir dönemde kanal başına aldığı etkinlik miktarını ölçer. Bunu aşağıdaki ölçümlerden herhangi birini sayarak yapar: gelen iletiler, kullanıcılar, konuşmalar veya iletişim kutuları. Bu, hizmet durumu analizi veya kanalların popülerliğini ölçmek için yararlı olabilir.

// number of metric: messages, users, conversations, dialogs by channel
let queryStartDate = ago(14d);
let queryEndDate = now();
let groupByInterval = 1d;
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| extend InstanceId = tostring(customDimensions['InstanceId'])
| extend DialogId = tostring(customDimensions['DialogId'])
| extend ActivityId = tostring(customDimensions['activityId'])
| extend ChannelId = tostring(customDimensions['channelId'])
| where DialogId != '' and  InstanceId != '' and user_Id != ''
| extend metric = user_Id // InstanceId or ActivityId or user_Id
| summarize Count=count(metric) by  ChannelId, bin(timestamp, groupByInterval)
| order by Count desc nulls last
| render barchart with (title="Users", kind=stacked) // or Incoming Messages or Conversations or Users

Bahşiş

Şu çeşitlemeleri denemeyi düşünebilirsiniz:

  • Sorguyu zaman damgası demeti olmadan çalıştırın: bin(timestamp, groupByInterval).
  • Ayrıca, farklı kullanıcılar ve count tüm kullanıcı etkinliği etkinlikleri için de kullanabilirsinizdcount. Bu, yinelenen kullanıcılar için de çalışır.

Etkinliğe göre kanal etkinliği sorgu sonuçları örneği

Sample chart of channel usage.

Yorum: Öykünücü testi eskiden en popülerdi ancak canlı yayına geçtikten sonra DirectLineSpeech en popüler kanaldır.

Popülerliğe göre Toplam Amaçlar

Bu örnek LUIS özellikli botlar için geçerlidir. Popülerliğe ve ilgili amaç algılama kesinlik puanına göre tüm amaçların özetini gösterir.

Dekont

Language Understanding (LUIS) 1 Ekim 2025'te kullanımdan kaldırılacaktır. 1 Nisan 2023'e kadar yeni LUIS kaynakları oluşturamayacaksınız. Dil anlamanın daha yeni bir sürümü artık Azure AI Dili'nin bir parçası olarak kullanılabilir.

Azure AI Dili'nin bir özelliği olan konuşma dili anlama (CLU), LUIS'in güncelleştirilmiş sürümüdür. Bot Framework SDK'sında dil anlama desteği hakkında daha fazla bilgi için bkz . Doğal dil anlama.

  • Uygulamada, görünüm her ölçüm için ayrılmalıdır.
  • Popüler amaç yolları, kullanıcı deneyimi için iyileştirilmelidir.
  • Düşük ortalama puanlar düşük tanımayı ve olası eksik gerçek kullanıcı amacını gösterir.
// show total intents
let queryStartDate = ago(14d);
let queryEndDate = now();
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| where name startswith "LuisResult"
| extend intentName = tostring(customDimensions['intent'])
| extend intentScore = todouble(customDimensions['intentScore'])
| summarize ic=count(), ac=avg(intentScore)*100 by intentName
| project intentName, ic, ac
| order by ic desc nulls last
| render barchart with (kind=unstacked, xcolumn=intentName, ycolumns=ic,ac, title="Intents Popularity")

Popülerlik açısından örnek amaçlar sorgu sonuçları

Sample chart of intent popularity.

Yorumlama: Örneğin en popüler amaç, yalnızca ortalama %23 güvenilirlikle algılandığından emin olun.

Bahşiş

Barchart'lar Kusto sorgularıyla kullanılabilen bir düzineden fazla seçenekten biridir. Diğer seçeneklerden bazıları şunlardır: anomali çizelgesi, alan çizelgesi, sütun çizelgesi, çizgi çizelgesi, dağılım çizelgesi. Daha fazla bilgi için işleme işleci konusuna bakın.

Bot Analytics İzleme Şeması

Aşağıdaki tablolarda, botunuzun telemetri verilerini günlüğe kaydedeceği en yaygın alanlar gösterilmektedir.

Genel Zarf

Uygulama Analizler izlemesinde yaygın log analytics alanları.

Alan Açıklama Örnek Değerler
name İleti türü BotMessageSend, BotMessageReceived, LuisResult, WaterfallStep, WaterfallStart, SkillWebSocketProcessRequestLatency, SkillWebSocketOpenCloseLatency, WaterfallComplete, QnaMessage, WaterfallCancel, SkillWebSocketTurnLatency, AuthPromptValidatorAsyncFailure
customDimensions SDK Bot Analytics activityId=<id>, activityType=message, channelId=emulator, fromId=<id>, fromName=User, locale=en-us, recipientId=<id>, recipientName=Bot, text=find a coffee shop
timestamp Olay zamanı 2019-09-05T18:32:45.287082Z
instance_Id Konuşma kimliği f7b2c416-a680-4b2c-b4cc-79c0f03d8711
operation_Id Kimliği Aç 084b2856947e3844a5a18a8476d99a
user_Id Benzersiz kanal kullanıcı kimliği öykünücü7c259c8e-2f47...
client_IP İstemci ip adresi 127.0.0.1 (gizlilik bloğu nedeniyle eksik olabilir)
client_City İstemci şehir Redmond (algılanırsa, eksik olabilir)

Dekont

Azure Yapay Zeka Soru-Cevap Oluşturma 31 Mart 2025 tarihinde kullanımdan kaldırılacaktır. 1 Ekim 2022 tarihinden itibaren yeni QnA Maker kaynakları veya bilgi bankası makaleleri oluşturamazsınız. Soru ve yanıtlama özelliğinin daha yeni bir sürümü artık Azure AI Dili'nin bir parçası olarak kullanılabilir.

Azure AI Dili'nin bir özelliği olan özel soru yanıtlama, Soru-Cevap Oluşturma hizmetinin güncelleştirilmiş sürümüdür. Bot Framework SDK'sında soru-cevap desteği hakkında daha fazla bilgi için bkz . Doğal dil anlama.

Dekont

Language Understanding (LUIS) 1 Ekim 2025'te kullanımdan kaldırılacaktır. 1 Nisan 2023'e kadar yeni LUIS kaynakları oluşturamayacaksınız. Dil anlamanın daha yeni bir sürümü artık Azure AI Dili'nin bir parçası olarak kullanılabilir.

Azure AI Dili'nin bir özelliği olan konuşma dili anlama (CLU), LUIS'in güncelleştirilmiş sürümüdür. Bot Framework SDK'sında dil anlama desteği hakkında daha fazla bilgi için bkz . Doğal dil anlama.

Özel Boyutlar

Bota özgü etkinlik verilerinin çoğu customDimensions alanında depolanır.

Alan Açıklama Örnek Değerler
activityId İleti Kimliği <kimlik>: 8da6d750-d00b-11e9-80e0-c14234b3bc2a
activityType İleti türü message, conversationUpdate, event, invoke
channelId Kanal tanımlayıcısı emülatör, directline, msteams, webchat
fromId From Tanımlayıcısı <id>
fromName İstemciden kullanıcı adı John Bonham, Keith Moon, Steve Smith, Steve Gadd
locale İstemci başlangıç yerel ayarı en-us, zh-cn, en-GB, de-de, zh-CN
recipientId Alıcı tanımlayıcısı <id>
recipientName Alıcı adı John Bonham, Keith Moon, Steve Smith, Steve Gadd
text Mesajda metin bir kafe bulma

Özel Boyutlar: LUIS

Dekont

Language Understanding (LUIS) 1 Ekim 2025'te kullanımdan kaldırılacaktır. 1 Nisan 2023'e kadar yeni LUIS kaynakları oluşturamayacaksınız. Dil anlamanın daha yeni bir sürümü artık Azure AI Dili'nin bir parçası olarak kullanılabilir.

Azure AI Dili'nin bir özelliği olan konuşma dili anlama (CLU), LUIS'in güncelleştirilmiş sürümüdür. Bot Framework SDK'sında dil anlama desteği hakkında daha fazla bilgi için bkz . Doğal dil anlama.

LUIS izlemesi, verilerini aşağıdaki Özel Boyutlar alanlarında depolar.

Alan Açıklama Örnek Değerler
amaç LUIS algılanan amaç pointOfInterestSkill
intentScore LUIS tanıma puanı 0.98
Varlıklar LUIS algılanan varlıklar FoodOfGrocery = [["coffee"]], KEYWORD= ["coffee shop"]
Soru LUIS algılanan soru bir kafe bulma
sentimentLabel LUIS yaklaşım algılandı pozitif

Özel Boyutlar: Soru-Cevap Oluşturma

Dekont

Azure Yapay Zeka Soru-Cevap Oluşturma 31 Mart 2025 tarihinde kullanımdan kaldırılacaktır. 1 Ekim 2022 tarihinden itibaren yeni QnA Maker kaynakları veya bilgi bankası makaleleri oluşturamazsınız. Soru ve yanıtlama özelliğinin daha yeni bir sürümü artık Azure AI Dili'nin bir parçası olarak kullanılabilir.

Azure AI Dili'nin bir özelliği olan özel soru yanıtlama, Soru-Cevap Oluşturma hizmetinin güncelleştirilmiş sürümüdür. Bot Framework SDK'sında soru-cevap desteği hakkında daha fazla bilgi için bkz . Doğal dil anlama.

QnAMaker izlemesi, verilerini aşağıdaki Özel Boyutlar alanlarında depolar.

Bahşiş

Sorular ve yanıtlar gibi kişisel bilgilerin günlüğe kaydedilmesini etkinleştirmek için günlük kişisel bilgileri parametresi Soru-Cevap Oluşturma sınıfının oluşturucusunda true olarak ayarlanmalıdır.

Alan Açıklama Örnek Değerler
sorusu Soru-Cevap algılanan soru Ne yapabilirsin?
yanıt Soru-Cevap yanıtı Senin soruların var, benim de yanıtlarım var.
articleFound Soru-Cevap true
questionId Soru-Cevap soru kimliği 488
knowledgeBaseId Soru-Cevap KB Kimliği 2a4936f3-b2c8-44ff-b21f-67bc413b9727
matchedQuestion Eşleşen soru dizisi ["Bana rolünüzün ne olduğunu açıklayabilir misiniz?","Biraz kendinden bahsedebilir misin?","Bana kendinden bahsedebilir misin?","bana yardım edebilir misin","hmmm ne yapabilirsin?","bana nasıl yardımcı olabilirsin","Bana nasıl yardımcı olabilirsin?","Nasıl yardımcı olabilirsin?","Nasıl yardımcı olabilirsin?","Bu yüzden seni projelerimde nasıl kullanabilirim?", "Yeteneğin hakkında benimle konuş","Neler yapabiliyorsun?", ...]

Ayrıca bkz: