Analise os dados de telemetria do seu bot
APLICA-SE A: SDK v4
Analisando o comportamento do Bot
A coleção de consultas a seguir pode ser usada para analisar o comportamento do bot. Você pode usar a coleção para criar consultas personalizadas no Azure Monitor Log Analytics e para criar painéis de monitoramento e visualização do Power BI .
Pré-requisitos
É útil ter uma compreensão básica dos seguintes conceitos:
- Consultas Kusto
- Como usar o Log Analytics no portal do Azure para escrever consultas de log do Azure Monitor
- Os conceitos básicos de consultas de log no Azure Monitor
Gorjeta
Se você criar seu bot usando ferramentas como Copilot Studio ou Composer, convém usar a versão Adaptive Dialog de cada consulta quando disponível.
Dashboards
Os Painéis do Azure oferecem uma ótima maneira de exibir e compartilhar as informações geradas a partir de suas consultas. Você pode criar painéis personalizados para ajudar a monitorar a atividade de seus bots associando suas consultas aos blocos que você adiciona ao seu painel. Para obter mais informações sobre painéis e como associar suas consultas a eles, consulte Criar e compartilhar painéis de dados do Log Analytics. O restante deste artigo mostra exemplos de algumas das consultas que você pode achar úteis para monitorar o comportamento de seus bots.
Exemplo de consultas Kusto
Nota
É recomendável girar em diferentes dimensões, como período, canal e localidade para todas as consultas neste artigo.
Número de utilizadores por período
Este exemplo resulta em um gráfico de linhas que mostra quantos usuários distintos se comunicaram com seu bot por dia nos últimos 14 dias. O período de tempo pode ser facilmente alterado atribuindo valores diferentes às queryStartDate
variáveis , queryEndDate
e interval
.
Importante
Você só obterá uma contagem correta de usuários exclusivos nesta consulta se eles forem usuários autenticados, e os resultados também podem depender dos recursos do canal.
// 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
Gorjeta
O operador Kusto summarize é usado para produzir uma tabela que agrega o conteúdo da tabela de entrada.
A função Bin é uma função escalar de Kusto que, quando usada em conjunto com a vontade, summarize operator
agrupa os resultados da consulta no valor especificado. No exemplo acima, isso é agrupado por dia, Kusto também aceitará h=horas, m=minutos, s=segundos, ms=milissegundos, microssegundos=microssegundos.
O operador de renderização permite renderizar facilmente gráficos, como o timechart, um gráfico de linhas onde o eixo x é uma datetime e qualquer outra coluna numérica pode ser usada para o eixo y. Ele mantém automaticamente o eixo x bem espaçado, mesmo que seus dados não tenham todas as vezes especificadas. Se nenhuma instrução render for usada, o padrão será table
.
Exemplo de resultados da consulta número de usuários por período
Atividade por período
Este exemplo ilustra como medir o volume de atividade por dimensão desejada, como uma contagem do número de conversas, diálogos ou mensagens por dia nos últimos 14 dias. O período de tempo pode ser facilmente alterado atribuindo valores diferentes às querystartdate
variáveis , queryEndDate
e interval
. A dimensão desejada é definida pela extend
cláusula no exemplo a seguir, metric
pode ser definida como InstanceId, DialogId ou activityId.
Atribua métrica à dimensão que você deseja exibir:
- InstanceId mede o número de conversas
- DialogId mede o número de caixas de diálogo
- ActivityId mede o número de mensagens
// 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
Gorjeta
O operador de extensão Kusto é usado para criar colunas calculadas e anexá-las ao conjunto de resultados.
Exemplo de resultados de consulta de atividade por período
Atividade por utilizador por período
Este exemplo demonstra como contar o número de atividades por usuário por período. Esta consulta detalha a consulta de atividade por período para se concentrar na atividade por usuário por período. As atividades incluem diálogos, conversas ou mensagens. Essa consulta mede a interação do usuário com seu bot, o que pode ajudar a encontrar possíveis problemas, como:
- Dias com muita atividade por parte de um único utilizador podem significar um ataque ou teste
- Dias com pouca interação podem indicar problemas de saúde do serviço
Gorjeta
Você pode remover por user_Id para obter o volume geral de atividade do bot, que pode ser girado em tempo e diálogos, mensagens ou conversas.
// 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
Exemplo de resultados de consulta de atividade por usuário por período
user_Id | Carimbo de data/hora | Contagem |
---|---|---|
Usuário-8107ffd2 | 2019-09-03T00:00:00Z | 14 |
Usuário-75f2cc8f | 2019-08-30T00:00:00Z | 13 |
Usuário-75f2cc8d | 2019-09-03T00:00:00Z | 13 |
Usuário-3060aada | 2019-09-03T00:00:00Z | 10 |
Conclusão da caixa de diálogo
Depois de definir o cliente de telemetria para uma caixa de diálogo, a caixa de diálogo (e seus filhos) emitirá alguns dados de telemetria padrão, como iniciado e concluído. Este exemplo pode ser usado para medir as caixas de diálogo concluídas em relação às caixas de diálogo iniciadas . Se o número de caixas de diálogo iniciadas for maior do que o número concluído, alguns dos usuários não estão concluindo o fluxo de diálogo. Você pode usar essa consulta para ajudá-lo a identificar e solucionar problemas de qualquer lógica de diálogo potencial. Ele também pode ser usado para identificar quais caixas de diálogo são mais e menos frequentemente usadas.
Gorjeta
Se você criar seu bot usando ferramentas como Copilot Studio ou Composer, convém usar a versão de diálogo adaptável de cada consulta.
Conclusão da caixa de diálogo em cascata
// % 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)
Gorjeta
O operador de junção Kusto é usado para mesclar as linhas de duas tabelas para formar uma nova tabela combinando valores da(s) coluna(s) especificada(s) de cada tabela.
O operador do projeto é usado para selecionar os campos que você deseja mostrar em sua saída. Semelhante ao extend operator
que adiciona um novo campo, o project operator
pode escolher entre o conjunto existente de campos ou adicionar um novo campo.
Diálogos adaptáveis iniciados e concluídos
// % 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)
Exemplo de resultados da consulta de conclusão de caixa de diálogo
Inconclusão da caixa de diálogo
Este exemplo pode ser usado para contar o número de fluxos de diálogo iniciados, mas nunca concluídos devido a cancelamento ou abandono durante o período de tempo especificado. Você pode usá-lo para revisar caixas de diálogo incompletas e examinar se elas foram ativamente canceladas devido à confusão do usuário ou abandonadas devido à distração do usuário ou perda de interesse.
Caixas de diálogo em cascata não concluídas
// 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
Diálogos adaptáveis não concluídos
// 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
Gorjeta
O operador de ordem Kusto (igual ao sort operator
) é usado para classificar as linhas da tabela de entrada em ordem por uma ou mais colunas. Nota: Se você quiser excluir valores nulos dos resultados de qualquer consulta, você pode filtrá-los em sua where
instrução, por exemplo, você pode adicionar "and isnotnull(Timestamp)", ou para retornar valores nulos no início ou no final, adicionar o nulls first
ou nulls first
ao final da instrução order.
Exemplo de resultados de consulta de caixa de diálogo incompleta
Detalhamento da sequência de diálogo
Cascata início/passo/conclusão para diálogo na conversação
Este exemplo mostra a sequência de etapas da caixa de diálogo, agrupadas por conversação (instanceId), que pode ser útil para determinar quais etapas levam à interrupção da caixa de diálogo.
Ao executar esta consulta, insira o valor do desejado DialogId
no lugar de <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>")
Gorjeta
Essa consulta foi escrita usando uma função definida por consulta, que é uma função definida pelo usuário que é definida e usada dentro do escopo de uma única consulta e é definida por meio de uma instrução let. Esta consulta foi escrita sem o uso do 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
Exemplos de resultados da consulta
carimbo de data/hora | nome | Nome do passo | InstanceId |
---|---|---|---|
2019-08-23T20:04... | WaterfallStart | nulo | ... 79C0F03D8701 |
2019-08-23T20:04... | WaterfallStep | GetPointOfInterestLocations | ... 79C0F03D8701 |
2019-08-23T20:04... | WaterfallStep | ProcessoPontodeInteresseSeleção | ... 79C0F03D8701 |
2019-08-23T20:04... | WaterfallStep | GetRoutesToDestination | ... 79C0F03D8701 |
2019-08-23T20:05... | WaterfallStep | ResponseToStartRoutePrompt | ... 79C0F03D8701 |
2019-08-23T20:05... | CachoeiraCompleta 1 | nulo | ... 79C0F03D8701 |
2019-08-28T23:35... | WaterfallStart | nulo | ... 6ac8b3211b99 |
2019-08-28T23:35... | CachoeiraPasso 2 | GetPointOfInterestLocations | ... 6ac8b3211b99 |
2019-08-28T19:41... | WaterfallStart | nulo | ... 8137D76A5CBB |
2019-08-28T19:41... | CachoeiraPasso 2 | GetPointOfInterestLocations | ... 8137D76A5CBB |
2019-08-28T19:41... | WaterfallStart | nulo | ... 8137D76A5CBB |
1 Concluída
2 Abandonado
Interpretação: Os usuários parecem abandonar a conversa na etapa GetPointOfInterestLocations.
Nota
As caixas de diálogo em cascata executam uma sequência (iniciar, várias etapas, concluir). Se uma sequência mostrar início sem conclusão, isso significa que a caixa de diálogo foi interrompida devido ao usuário abandonar ou cancelar a caixa de diálogo. Nesta análise detalhada, pode-se ver esse comportamento (ver etapas concluídas versus abandonadas).
Cascata iniciar/etapa/concluir/cancelar etapas totais agregados
Este exemplo mostra os totais agregados do número total de vezes que uma sequência de diálogo foi iniciada, o número total combinado de etapas em cascata, quantas foram concluídas com êxito, quantas foram canceladas e a diferença entre WaterfallStart e o total combinado de WaterfallComplete mais WaterfallCancel lhe dará o número total abandonado.
// 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>")
Exemplo de resultados de consulta de agregado em cascata
Designação | count |
---|---|
WaterfallStart | 21 |
WaterfallStep | 47 |
Cachoeira Completa | 11 |
CachoeiraCancelar | 1 |
Interpretação: De 21 invocações de sequência de diálogo, apenas 11 foram concluídas, 9 foram abandonadas e uma foi cancelada pelo usuário.
Duração média na caixa de diálogo
Este exemplo mede a quantidade média de tempo que os usuários gastam em uma determinada caixa de diálogo. Seu bot pode se beneficiar da simplificação de diálogos que levam muito tempo para serem concluídos pelo usuário.
// 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")
Exemplo de resultados de consulta de duração média
Média de etapas na caixa de diálogo
Este exemplo mostra o "comprimento" de cada caixa de diálogo invocada conforme calculado por média, min, max e desvio padrão. Isso pode ajudar a analisar a qualidade da caixa de diálogo. Por exemplo:
- Diálogos com muitas etapas devem ser avaliados para oportunidades de simplificação.
- Diálogos com uma grande lacuna entre min/max/média podem significar que os usuários ficam parados tentando concluir as tarefas. Talvez seja necessário avaliar a possibilidade de haver caminhos mais curtos para concluir as tarefas ou maneiras de reduzir a complexidade do diálogo.
- Diálogos com um grande desvio padrão sugerem caminhos complexos ou experiência quebrada (abandono/cancelamento).
- Diálogos com poucas etapas podem ser assim porque nunca foram concluídos. Analisar as taxas de conclusão/abandono pode ajudar a fazer essa determinação.
// 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
Exemplo de resultados de consulta de etapas médias
ID da caixa de diálogo | passos médios | min passos | Passos máximos | std | avg curto por passos | média curta por porcentagem |
---|---|---|---|---|---|---|
FindArticlesDialog | 6.2 | 2 | 7 | 2.04 | 0.8 | 11.4% |
CriarTicket | 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% |
inclusão | 2,7 | 2 | 4 | 0.94 | 1.3 | 32.5% |
__Interpretation: Por exemplo, FindArticlesDialog tem uma ampla dispersão entre min/max e deve ser investigado e possivelmente redesenhado & otimizado.
Atividade do canal por métrica de atividade
Este exemplo mede a quantidade de atividade que seu bot recebe por canal no período determinado. Ele faz isso contando qualquer uma das seguintes métricas: mensagens recebidas, usuários, conversas ou diálogos. Isso pode ser útil para análise de integridade do serviço ou para medir a popularidade de um canal.
// 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
Gorjeta
Você pode considerar tentar estas variações:
- Execute a consulta sem o bucketing de carimbo de data/hora:
bin(timestamp, groupByInterval)
. - Você também pode usar
dcount
para usuários distintos ecount
para todas as atividades de eventos de usuários. Isso também funciona para usuários repetidos.
Exemplos de resultados de consulta canal-atividade-a-atividade
Interpretação: Os testes de emulador costumavam ser mais populares, mas uma vez que entramos no ar, DirectLineSpeech, é o canal mais popular.
Total de intenções por popularidade
Este exemplo se aplica a bots habilitados para LUIS. Ele mostra um resumo de todas as intenções por popularidade e a pontuação de certeza de deteção de intenção correspondente.
Nota
O Language Understanding (LUIS) será aposentado em 1 de outubro de 2025. A partir de 1 de abril de 2023, não será possível criar novos recursos LUIS. Uma versão mais recente do entendimento de idiomas agora está disponível como parte do Azure AI Language.
O entendimento de linguagem conversacional (CLU), um recurso do Azure AI Language, é a versão atualizada do LUIS. Para obter mais informações sobre o suporte à compreensão de linguagem no Bot Framework SDK, consulte Compreensão de linguagem natural.
- Na prática, a visualização deve ser separada para cada métrica.
- Os caminhos de intenção populares devem ser otimizados para a experiência do usuário.
- Pontuações médias baixas indicam reconhecimento ruim e possível falta de intenção real do usuário.
// 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")
Exemplos de resultados da consulta intenções por popularidade
Interpretação: Por exemplo, a intenção mais popular, confirmar é detetada apenas com 23% de confiança em média.
Gorjeta
Barcharts são uma das mais de uma dúzia de opções disponíveis com consultas Kusto. Algumas outras opções incluem: anomalychart, areachart, columnchart, linechart, scatterchart. Para obter mais informações, consulte o tópico do operador de renderização.
Esquema da instrumentação do Bot Analytics
As tabelas a seguir mostram os campos mais comuns nos quais seu bot registrará dados de telemetria.
Envelope Geral
Campos comuns de análise de log na instrumentação do Application Insights.
Campo | Descrição | Valores de amostra |
---|---|---|
nome | Tipo de mensagem | BotMessageSend, BotMessageReceived, LuisResult, WaterfallStep, WaterfallStart, SkillWebSocketProcessRequestLatency, SkillWebSocketOpenCloseLatency, WaterfallComplete, QnaMessage, WaterfallCancel, SkillWebSocketTurnLatency, AuthPromptValidatorAsyncFailure |
customDimensions | Análise de Bot SDK | activityId=<id>, activityType=message, channelId=emulator, fromId=<id>, fromName=User, locale=en-us, recipientId=<id>, recipientName=Bot, text=find a coffee shop |
carimbo de data/hora | Hora do evento | 2019-09-05T18:32:45.287082Z |
instance_Id | ID da Conversação | f7b2c416-a680-4b2c-b4cc-79c0f03d8711 |
operation_Id | Turn ID | 084b2856947e3844a5a18a8476d99aaa |
user_Id | ID de usuário exclusivo do canal | emulador7c259c8e-2f47... |
client_IP | Endereço IP do cliente | 127.0.0.1 (pode estar ausente devido a bloqueio de privacidade) |
client_City | Cidade cliente | Redmond (se detetado, pode estar ausente) |
Nota
O Azure AI QnA Maker será desativado em 31 de março de 2025. A partir de 1º de outubro de 2022, você não poderá criar novos recursos ou bases de conhecimento do QnA Maker. Uma versão mais recente do recurso de perguntas e respostas agora está disponível como parte da Linguagem de IA do Azure.
A resposta a perguntas personalizadas, um recurso da Linguagem de IA do Azure, é a versão atualizada do serviço QnA Maker. Para obter mais informações sobre o suporte a perguntas e respostas no SDK do Bot Framework, consulte Compreensão de linguagem natural.
Nota
O Language Understanding (LUIS) será aposentado em 1 de outubro de 2025. A partir de 1 de abril de 2023, não será possível criar novos recursos LUIS. Uma versão mais recente do entendimento de idiomas agora está disponível como parte do Azure AI Language.
O entendimento de linguagem conversacional (CLU), um recurso do Azure AI Language, é a versão atualizada do LUIS. Para obter mais informações sobre o suporte à compreensão de linguagem no Bot Framework SDK, consulte Compreensão de linguagem natural.
Dimensões personalizadas
A maioria dos dados de atividade específicos do bot é armazenada no campo customDimensions .
Campo | Descrição | Valores de amostra |
---|---|---|
activityId | ID da mensagem | <Identificação>: 8DA6D750-D00B-11E9-80E0-C14234B3BC2A |
activityType | Tipo de mensagem | mensagem, conversationUpdate, evento, invocar |
channelId | Identificador de canal | emulador, directline, msteams, webchat |
fromId | Do identificador | <id> |
deNome | Nome de usuário do cliente | John Bonham, Keith Moon, Steve Smith, Steve Gadd |
região | Localidade de origem do cliente | en-us, zh-cn, en-GB, de-de, zh-CN |
DestinatárioId | Identificador do destinatário | <id> |
nome_destinatário | Nome do destinatário | John Bonham, Keith Moon, Steve Smith, Steve Gadd |
texto | Texto na mensagem | Encontre um café |
Dimensões personalizadas: LUIS
Nota
O Language Understanding (LUIS) será aposentado em 1 de outubro de 2025. A partir de 1 de abril de 2023, não será possível criar novos recursos LUIS. Uma versão mais recente do entendimento de idiomas agora está disponível como parte do Azure AI Language.
O entendimento de linguagem conversacional (CLU), um recurso do Azure AI Language, é a versão atualizada do LUIS. Para obter mais informações sobre o suporte à compreensão de linguagem no Bot Framework SDK, consulte Compreensão de linguagem natural.
A instrumentação LUIS armazena seus dados nos seguintes campos Dimensões personalizadas.
Campo | Descrição | Valores de amostra |
---|---|---|
intenção | Intenção detetada pelo LUIS | pointOfInterestSkill |
intentScore | Pontuação de reconhecimento LUIS | 0.98 |
Entidades | LUIS entidades detetadas | FoodOfGrocery = [["café"]], PALAVRA-CHAVE= ["cafeteria"] |
Pergunta | LUIS detetou pergunta | Encontre um café |
sentimentLabel | LUIS detetou sentimento | positivo |
Dimensões personalizadas: QnAMaker
Nota
O Azure AI QnA Maker será desativado em 31 de março de 2025. A partir de 1º de outubro de 2022, você não poderá criar novos recursos ou bases de conhecimento do QnA Maker. Uma versão mais recente do recurso de perguntas e respostas agora está disponível como parte da Linguagem de IA do Azure.
A resposta a perguntas personalizadas, um recurso da Linguagem de IA do Azure, é a versão atualizada do serviço QnA Maker. Para obter mais informações sobre o suporte a perguntas e respostas no SDK do Bot Framework, consulte Compreensão de linguagem natural.
A instrumentação do QnAMaker armazena seus dados nos seguintes campos Dimensões personalizadas.
Gorjeta
Para habilitar o registro de informações pessoais, como perguntas e respostas, o parâmetro de informações pessoais de log deve ser definido como true no construtor da classe QnA Maker .
Campo | Descrição | Valores de amostra |
---|---|---|
question | QnA detetou pergunta | O que pode fazer? |
answer | Resposta QnA | Você tem perguntas, eu posso ter respostas. |
artigoEncontrado | QnA | verdadeiro |
questionId | ID da pergunta do QnA | 488 |
knowledgeBaseId | QnA KB ID | 2A4936F3-B2C8-44FF-B21F-67BC413B9727 |
matchedQuestion | Conjunto de perguntas correspondentes | ["Você pode me explicar qual é o seu papel?","Você pode me dizer um pouco sobre você?","Você pode me dizer sobre você?","Você poderia me ajudar","hmmm então o que você pode fazer?","Como você pode me ajudar","Como você pode me ajudar?","Como você pode ajudar?","Então, como posso usá-lo em meus projetos?" "Fale comigo sobre sua capacidade","Do que você é capaz?", ...] |
Consulte Também
- Para obter um tutorial sobre como escrever consultas de log, consulte Introdução às consultas de log no Azure Monitor
- Visualizar dados do Azure Monitor
- Saiba como Adicionar telemetria ao seu bot
- Saiba mais sobre as consultas de log do Azure Monitor
- Lista completa de eventos do Bot Framework Application Insights
- Criar e partilhar dashboards dos dados do Log Analytics