Bagikan melalui


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:

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 queryStartDatevariabel , 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

Contoh bagan 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 querystartdatevariabel , 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:

// 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

Contoh bagan 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

Contoh bagan dialog dimulai dan dialog selesai.

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

Contoh bagan ringkasan untuk dialog yang tidak lengkap.

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

Contoh bagan durasi dialog.

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 dan count untuk semua aktivitas peristiwa pengguna. Ini juga berfungsi untuk pengguna berulang.

Contoh hasil kueri aktivitas demi aktivitas saluran

Contoh bagan penggunaan 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

Contoh bagan popularitas niat.

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