Menganalisis data telemetri bot Anda
BERLAKU UNTUK: SDK v4
Menganalisis perilaku Bot
Kumpulan kueri berikut dapat digunakan untuk menganalisis perilaku bot. Anda dapat menggunakan koleksi untuk menulis kueri kustom di Azure Monitor Log Analytics dan untuk membuat dasbor pemantauan dan visualisasi Power BI .
Prasyarat
Sangat membantu untuk memiliki pemahaman dasar tentang konsep berikut:
- Kueri Kusto
- Cara menggunakan Analitik Log di portal Azure untuk menulis kueri log Azure Monitor
- Konsep dasar kueri Log di Azure Monitor
Tip
Jika Anda membuat bot menggunakan alat seperti Copilot Studio atau Composer, Anda mungkin ingin menggunakan versi Dialog Adaptif dari setiap kueri saat tersedia.
Dashboard
Dasbor Azure menawarkan cara yang bagus untuk melihat dan berbagi informasi yang dihasilkan dari kueri Anda. Anda dapat membangun dasbor kustom untuk membantu memantau aktivitas bot Anda dengan mengaitkan kueri Anda dengan petak peta yang Anda tambahkan ke dasbor Anda. Untuk informasi selengkapnya tentang dasbor dan cara mengaitkan kueri Anda dengannya, lihat Membuat dan berbagi dasbor data Analitik Log. Sisa artikel ini menunjukkan contoh beberapa kueri yang mungkin berguna untuk memantau perilaku bot Anda.
Contoh kueri Kusto
Catatan
Disarankan untuk mempivot pada dimensi yang berbeda seperti periode, saluran, dan lokal untuk semua kueri dalam artikel ini.
Jumlah pengguna per periode
Contoh ini menghasilkan bagan garis yang menunjukkan berapa banyak pengguna berbeda yang berkomunikasi dengan bot Anda per hari selama 14 hari terakhir. Periode waktu dapat dengan mudah diubah dengan menetapkan nilai yang berbeda ke queryStartDate
variabel , queryEndDate
dan interval
.
Penting
Anda hanya akan mendapatkan jumlah pengguna unik yang benar dalam kueri ini jika mereka adalah pengguna yang diautentikasi, dan hasilnya mungkin juga bergantung pada kemampuan saluran.
// 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
Tip
Operator ringkasan Kusto digunakan untuk menghasilkan tabel yang menggabungkan konten tabel input.
Fungsi Bin adalah fungsi skalar Kusto yang ketika digunakan bersama dengan summarize operator
akan mengelompokkan hasil kueri ke dalam nilai yang ditentukan. Dalam contoh di atas, ini dikelompokkan menurut hari, Kusto juga akan menerima h=jam, m=menit, s=detik, ms=milidetik, mikrodetik=mikrodetik.
Operator render memungkinkan Anda merender bagan dengan mudah, seperti bagan waktu, bagan garis di mana sumbu x adalah tanggalwaktu dan kolom numerik lainnya dapat digunakan untuk sumbu y. Ini secara otomatis menjaga sumbu x di-spasi dengan baik bahkan jika data Anda tidak memiliki setiap kali ditentukan. Jika tidak ada pernyataan render yang digunakan, pernyataan tersebut default ke table
.
Sampel hasil kueri jumlah pengguna per periode
Aktivitas per periode
Contoh ini menggambarkan cara mengukur volume aktivitas per dimensi yang diinginkan, seperti hitungan jumlah percakapan, dialog, atau pesan per hari selama 14 hari terakhir. Periode waktu dapat dengan mudah diubah dengan menetapkan nilai yang berbeda ke querystartdate
variabel , queryEndDate
dan interval
. Dimensi yang diinginkan ditentukan oleh extend
klausul dalam contoh berikut, metric
dapat diatur ke InstanceId, DialogId, atau activityId.
Tetapkan metrik ke dimensi yang ingin Anda tampilkan:
- InstanceId mengukur jumlah Percakapan
- DialogId mengukur jumlah Dialog
- ActivityId mengukur jumlah Pesan
// 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
Tip
Operator perluasan Kusto digunakan untuk membuat kolom terhitung dan menambahkannya ke kumpulan hasil.
Sampel hasil kueri aktivitas per periode
Aktivitas per pengguna per periode
Contoh ini menunjukkan cara menghitung jumlah aktivitas per pengguna per periode. Kueri ini menelusuri paling detail ke dalam kueri aktivitas per periode untuk fokus pada aktivitas per pengguna per periode. Aktivitas tersebut mencakup dialog, percakapan, atau pesan. Kueri ini mengukur interaksi pengguna dengan bot Anda, yang dapat membantu menemukan potensi masalah, seperti:
- Hari dengan banyak aktivitas oleh satu pengguna dapat berarti serangan atau pengujian
- Hari dengan sedikit interaksi dapat menunjukkan masalah kesehatan layanan
Tip
Anda dapat menghapus dengan user_Id untuk mendapatkan volume aktivitas bot umum yang dapat dipivot tepat waktu dan dialog, pesan, atau percakapan.
// 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
Sampel hasil kueri aktivitas per pengguna per periode
user_Id | timestamp | Hitung |
---|---|---|
Pengguna-8107ffd2 | 2019-09-03T00:00:00Z | 14 |
User-75f2cc8f | 2019-08-30T00:00:00Z | 13 |
User-75f2cc8d | 2019-09-03T00:00:00Z | 13 |
User-3060aada | 2019-09-03T00:00:00Z | 10 |
Penyelesaian dialog
Setelah Anda mengatur klien telemetri untuk dialog, dialog (dan anak-anaknya) akan memancarkan beberapa data telemetri default, seperti dimulai dan diselesaikan. Contoh ini dapat digunakan untuk mengukur dialog yang telah selesai relatif terhadap dialog yang dimulai . Jika jumlah dialog yang dimulai lebih besar dari jumlah yang diselesaikan, beberapa pengguna Anda tidak menyelesaikan alur dialog. Anda dapat menggunakan kueri ini untuk membantu Anda mengidentifikasi dan memecahkan masalah logika dialog potensial. Ini juga dapat digunakan untuk mengidentifikasi dialog mana yang paling sering digunakan.
Tip
Jika Anda membuat bot menggunakan alat seperti Copilot Studio atau Composer, Anda mungkin ingin menggunakan versi dialog adaptif dari setiap kueri.
Penyelesaian dialog air terjun
// % 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)
Tip
Operator gabungan Kusto digunakan untuk menggabungkan baris dua tabel untuk membentuk tabel baru dengan mencocokkan nilai kolom yang ditentukan dari setiap tabel.
Operator proyek digunakan untuk memilih bidang yang ingin Anda tampilkan di output Anda. Mirip extend operator
dengan yang menambahkan bidang baru, project operator
bisa memilih dari kumpulan bidang yang sudah ada atau menambahkan bidang baru.
Dialog adaptif dimulai dan selesai
// % Completed adaptive dialog: shows completes relative to starts. This type is the default dialog type when using Copilot Studio 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)
Contoh hasil kueri penyelesaian dialog
Ketidaklengkapan dialog
Contoh ini dapat digunakan untuk menghitung jumlah alur dialog yang dimulai tetapi tidak pernah selesai karena pembatalan atau pengabaian selama periode waktu yang ditentukan. Anda dapat menggunakannya untuk meninjau dialog yang tidak lengkap dan memeriksa apakah dialog tersebut dibatalkan secara aktif karena kebingungan pengguna atau ditinggalkan karena gangguan pengguna atau hilangnya minat.
Dialog air terjun tidak selesai
// 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
Dialog adaptif tidak selesai
// Show incomplete dialogs for adaptive dialogs; this type is the default dialog type when using Copilot Studio 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
Tip
Operator pesanan Kusto (Sama dengan sort operator
) digunakan untuk mengurutkan baris tabel input ke dalam urutan satu atau beberapa kolom. Catatan: Jika Anda ingin mengecualikan nilai null dari hasil kueri apa pun, Anda dapat memfilternya dalam pernyataan Anda where
, misalnya Anda dapat menambahkan "dan isnotnull(Timestamp)", atau untuk mengembalikan nilai null di awal atau akhir, menambahkan nulls first
atau nulls first
ke akhir pernyataan pesanan.
Contoh hasil kueri ketidaklengkapan dialog
Telusuri Paling Detail Urutan Dialog
Waterfall start/step/complete untuk dialog dalam percakapan
Contoh ini memperlihatkan urutan langkah dialog, dikelompokkan menurut percakapan (instanceId), yang dapat berguna dalam menentukan langkah mana yang menyebabkan gangguan dialog.
Jalankan kueri ini, masukkan nilai yang diinginkan DialogId
sebagai pengganti <SampleDialogId>
// 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>")
Tip
Kueri ini ditulis menggunakan fungsi yang ditentukan kueri, yang merupakan fungsi yang ditentukan pengguna yang ditentukan dan digunakan dalam cakupan kueri tunggal, dan didefinisikan melalui pernyataan let. Kueri ini ditulis tanpa menggunakan query-defined function
:
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
Contoh hasil kueri
rentang waktu | nama | StepName | InstanceId |
---|---|---|---|
2019-08-23T20:04... | WaterfallStart | nihil | ... 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 | nihil | ... 79c0f03d8701 |
2019-08-28T23:35... | WaterfallStart | nihil | ... 6ac8b3211b99 |
2019-08-28T23:35... | Air terjunStep 2 | GetPointOfInterestLocations | ... 6ac8b3211b99 |
2019-08-28T19:41... | WaterfallStart | nihil | ... 8137d76a5cbb |
2019-08-28T19:41... | Air terjunStep 2 | GetPointOfInterestLocations | ... 8137d76a5cbb |
2019-08-28T19:41... | WaterfallStart | nihil | ... 8137d76a5cbb |
1 Selesai
2 Ditinggalkan
Interpretasi: Pengguna tampaknya meninggalkan percakapan di langkah GetPointOfInterestLocations.
Catatan
Dialog air terjun menjalankan urutan (mulai, beberapa langkah, selesai). Jika urutan menunjukkan dimulai tanpa lengkap, itu berarti dialog terganggu baik karena pengguna meninggalkan atau membatalkan dialog. Dalam analisis terperinci ini, seseorang dapat melihat perilaku ini (lihat langkah-langkah yang diselesaikan versus yang ditinggalkan).
Langkah awal/langkah/selesaikan/batalkan air terjun mengagregasi total
Contoh ini menunjukkan total agregat dari jumlah total urutan dialog dimulai, jumlah total gabungan langkah air terjun, berapa banyak yang berhasil diselesaikan, berapa banyak yang dibatalkan dan perbedaan antara WaterfallStart dan total gabungan Dari WaterfallComplete plus WaterfallCancel akan memberi Anda jumlah total yang ditinggalkan.
// 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>")
Sampel hasil kueri agregat air terjun
nama | count |
---|---|
WaterfallStart | 21 |
WaterfallStep | 47 |
WaterfallComplete | 11 |
WaterfallCancel | 1 |
Interpretasi: Dari 21 pemanggilan urutan dialog, hanya 11 yang telah selesai, 9 ditinggalkan, dan satu dibatalkan oleh pengguna.
Durasi rata-rata dalam dialog
Contoh ini mengukur jumlah rata-rata waktu yang dihabiskan pengguna dalam dialog tertentu. Bot Anda mungkin mendapat manfaat dari menyederhanakan dialog yang membutuhkan waktu lama bagi pengguna untuk menyelesaikannya.
// 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")
Sampel hasil kueri durasi rata-rata
Langkah-langkah rata-rata dalam dialog
Contoh ini menunjukkan setiap "panjang" dialog yang dipanggil sebagaimana dihitung oleh rata-rata, min, maks, dan simpanng standar. Ini dapat membantu menganalisis kualitas dialog. Contohnya:
- Dialog dengan terlalu banyak langkah harus dievaluasi untuk peluang penyederhanaan.
- Dialog dengan kesenjangan lebar antara min/maks/rata-rata dapat berarti bahwa pengguna terhenti mencoba menyelesaikan tugas. Anda mungkin perlu mengevaluasi kemungkinan adanya jalur yang lebih pendek untuk menyelesaikan tugas, atau cara untuk mengurangi kompleksitas dialog.
- Dialog dengan penyimpangan standar besar menyarankan jalur kompleks atau pengalaman rusak (tinggalkan/batalkan).
- Dialog dengan beberapa langkah mungkin demikian karena tidak pernah selesai. Menganalisis tingkat penyelesaian/pengabaian dapat membantu membuat penentuan tersebut.
// 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
Sampel hasil kueri langkah rata-rata
Dialog ID | langkah rata-rata | langkah min | langkah maks | std | rata-rata singkat dengan langkah-langkah | rata-rata pendek berdasarkan persen |
---|---|---|---|---|---|---|
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% |
onboarding | 2.7 | 2 | 4 | 0.94 | 1.3 | 32.5% |
__Interpretation: Misalnya, FindArticlesDialog memiliki penyebaran luas antara min/maks dan harus diselidiki dan mungkin dirancang ulang & dioptimalkan.
Aktivitas saluran menurut metrik aktivitas
Contoh ini mengukur jumlah aktivitas yang diterima bot Anda per saluran dalam periode tertentu. Ini dilakukan dengan menghitung salah satu metrik berikut: pesan masuk, pengguna, percakapan, atau dialog. Ini dapat berguna untuk analisis kesehatan layanan atau untuk mengukur popularitas saluran.
// 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
Tip
Anda mungkin ingin mempertimbangkan untuk mencoba variasi ini:
- Jalankan kueri tanpa wadah tanda waktu:
bin(timestamp, groupByInterval)
. - Anda juga dapat menggunakan
dcount
untuk pengguna yang berbeda dancount
untuk semua aktivitas peristiwa pengguna. Ini juga berfungsi untuk pengguna berulang.
Contoh hasil kueri aktivitas demi aktivitas saluran
Interpretasi: Pengujian emulator dulunya paling populer tetapi setelah kami ditayangkan, DirectLineSpeech, adalah saluran paling populer.
Total Niat berdasarkan popularitas
Contoh ini berlaku untuk bot yang diaktifkan LUIS. Ini menunjukkan ringkasan semua niat berdasarkan popularitas, dan skor kepastian deteksi niat yang sesuai.
Catatan
Pemahaman Bahasa (LUIS) akan dihentikan pada 1 Oktober 2025. Mulai 1 April 2023, Anda tidak akan dapat membuat sumber daya LUIS baru. Versi pemahaman bahasa yang lebih baru sekarang tersedia sebagai bagian dari Bahasa Azure AI.
Pemahaman bahasa percakapan (CLU), fitur Bahasa Azure AI, adalah versi LUIS yang diperbarui. Untuk informasi selengkapnya tentang dukungan pemahaman bahasa di Bot Framework SDK, lihat Pemahaman bahasa alami.
- Dalam praktiknya, tampilan harus dipisahkan untuk setiap metrik.
- Jalur niat populer harus dioptimalkan untuk pengalaman pengguna.
- Skor rata-rata rendah menunjukkan pengenalan yang buruk & mungkin kehilangan niat pengguna aktual.
// 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")
Contoh hasil kueri niat demi popularitas
Interpretasi: Misalnya niat paling populer, konfirmasikan hanya terdeteksi dengan keyakinan rata-rata 23%.
Tip
Barchart adalah salah satu dari selusin opsi yang tersedia dengan kueri Kusto. Beberapa opsi lain termasuk: anomalichart, areachart, columnchart, linechart, scatterchart. Untuk informasi selengkapnya, lihat topik operator render.
Skema Instrumentasi Analitik Bot
Tabel berikut ini memperlihatkan bidang paling umum tempat bot Anda akan mencatat data telemetri.
Amplop Umum
Bidang analitik log umum dalam instrumentasi Application Insights.
Bidang | Keterangan | Nilai Sampel |
---|---|---|
nama | Jenis pesan | BotMessageSend, BotMessageReceived, LuisResult, WaterfallStep, WaterfallStart, SkillWebSocketProcessRequestLatency, SkillWebSocketOpenCloseLatency, WaterfallComplete, QnaMessage, WaterfallCancel, SkillWebSocketTurnLatency, AuthPromptValidatorAsyncFailure |
customDimensions | Analitik Bot SDK | activityId=<id>, activityType=message, channelId=emulator, fromId=<id>, fromName=User, locale=en-us, recipientId=<id>, recipientName=Bot, text=find a coffee shop |
rentang waktu | Waktu kejadian | 2019-09-05T18:32:45.287082Z |
instance_Id | ID Percakapan | f7b2c416-a680-4b2c-b4cc-79c0f03d8711 |
operation_Id | Id Giliran | 084b2856947e3844a5a18a8476d99aaaa |
user_Id | ID pengguna saluran unik | emulator7c259c8e-2f47... |
client_IP | Alamat ip klien | 127.0.0.1 (mungkin tidak ada karena blok privasi) |
client_City | Kota klien | Redmond (jika terdeteksi, mungkin tidak ada) |
Catatan
Azure AI QnA Maker akan dihentikan pada 31 Maret 2025. Mulai 1 Oktober 2022, Anda tidak akan dapat membuat sumber daya atau basis pengetahuan QnA Maker baru. Versi kemampuan pertanyaan dan jawaban yang lebih baru sekarang tersedia sebagai bagian dari Bahasa Azure AI.
Jawaban atas pertanyaan kustom, fitur Bahasa Azure AI, adalah versi terbaru dari layanan QnA Maker. Untuk informasi selengkapnya tentang dukungan tanya jawab di Bot Framework SDK, lihat Pemahaman bahasa alami.
Catatan
Pemahaman Bahasa (LUIS) akan dihentikan pada 1 Oktober 2025. Mulai 1 April 2023, Anda tidak akan dapat membuat sumber daya LUIS baru. Versi pemahaman bahasa yang lebih baru sekarang tersedia sebagai bagian dari Bahasa Azure AI.
Pemahaman bahasa percakapan (CLU), fitur Bahasa Azure AI, adalah versi LUIS yang diperbarui. Untuk informasi selengkapnya tentang dukungan pemahaman bahasa di Bot Framework SDK, lihat Pemahaman bahasa alami.
Dimensi Kustom
Sebagian besar data aktivitas khusus bot disimpan di bidang customDimensions .
Bidang | Keterangan | Nilai Sampel |
---|---|---|
activityId | ID Pesan | <id>: 8da6d750-d00b-11e9-80e0-c14234b3bc2a |
activityType | Jenis pesan | message, conversationUpdate, event, invoke |
channelId | Pengidentifikasi saluran | emulator, directline, msteams, webchat |
fromId | Dari Pengidentifikasi | <id> |
fromName | Nama pengguna dari klien | John Bonham, Keith Moon, Steve Smith, Steve Gadd |
lokal | Lokal asal klien | en-us, zh-cn, en-GB, de-de, zh-CN |
recipientId | Pengidentifikasi penerima | <id> |
recipientName | Nama penerima | John Bonham, Keith Moon, Steve Smith, Steve Gadd |
text | Teks dalam pesan | temukan kedai kopi |
Dimensi Kustom: LUIS
Catatan
Pemahaman Bahasa (LUIS) akan dihentikan pada 1 Oktober 2025. Mulai 1 April 2023, Anda tidak akan dapat membuat sumber daya LUIS baru. Versi pemahaman bahasa yang lebih baru sekarang tersedia sebagai bagian dari Bahasa Azure AI.
Pemahaman bahasa percakapan (CLU), fitur Bahasa Azure AI, adalah versi LUIS yang diperbarui. Untuk informasi selengkapnya tentang dukungan pemahaman bahasa di Bot Framework SDK, lihat Pemahaman bahasa alami.
Instrumentasi LUIS menyimpan datanya di bidang Dimensi Kustom berikut.
Bidang | Keterangan | Nilai Sampel |
---|---|---|
tujuan | Niat LUIS yang terdeteksi | pointOfInterestSkill |
intentScore | Skor pengenalan LUIS | 0,98 |
Entitas | Entitas yang terdeteksi LUIS | FoodOfGrocery = [["coffee"]], KEYWORD= ["coffee shop"] |
Pertanyaan | Pertanyaan yang terdeteksi LUIS | temukan kedai kopi |
sentimentLabel | Sentimen LUIS yang terdeteksi | positif |
Dimensi Kustom: QnAMaker
Catatan
Azure AI QnA Maker akan dihentikan pada 31 Maret 2025. Mulai 1 Oktober 2022, Anda tidak akan dapat membuat sumber daya atau basis pengetahuan QnA Maker baru. Versi kemampuan pertanyaan dan jawaban yang lebih baru sekarang tersedia sebagai bagian dari Bahasa Azure AI.
Jawaban atas pertanyaan kustom, fitur Bahasa Azure AI, adalah versi terbaru dari layanan QnA Maker. Untuk informasi selengkapnya tentang dukungan tanya jawab di Bot Framework SDK, lihat Pemahaman bahasa alami.
Instrumentasi QnAMaker menyimpan datanya di bidang Dimensi Kustom berikut.
Tip
Untuk mengaktifkan pengelogan informasi pribadi seperti pertanyaan dan jawaban, parameter informasi pribadi log harus diatur ke true di konstruktor kelas QnA Maker .
Bidang | Keterangan | Nilai Sampel |
---|---|---|
pertanyaan | Pertanyaan yang terdeteksi QnA | Apa yang bisa Anda lakukan? |
menjawab | Jawaban QnA | Anda memiliki pertanyaan, saya mungkin memiliki jawaban. |
articleFound | Tanya Jawab | benar |
questionId | ID pertanyaan QnA | 488 |
knowledgeBaseId | QnA KB ID | 2a4936f3-b2c8-44ff-b21f-67bc413b9727 |
matchedQuestion | Array pertanyaan yang cocok | ["Bisakah Anda menjelaskan kepada saya apa peran Anda?","Bisakah Anda memberi tahu saya sedikit tentang diri Anda?","Bisakah Anda memberi tahu saya tentang Anda?","bisakah Anda membantu saya","hmmm jadi apa yang dapat Anda lakukan?","bagaimana Anda dapat membantu saya","Bagaimana Anda dapat membantu saya?","Bagaimana Anda dapat membantu?","jadi bagaimana saya dapat menggunakan Anda dalam proyek saya?", "Bicaralah kepada saya tentang kemampuan Anda","Apa yang anda mampu?", ...] |
Lihat Juga
- Untuk tutorial tentang menulis kueri log, lihat Mulai menggunakan kueri log di Azure Monitor
- Memvisualisasikan data dari Azure Monitor
- Pelajari cara Menambahkan telemetri ke bot Anda
- Pelajari selengkapnya tentang kueri log Azure Monitor
- Daftar lengkap Peristiwa Application Insights Kerangka Kerja Bot
- Membuat dan membagikan dasbor data Analitik Log