Partilhar via


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:

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 queryStartDatevariá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

Gráfico de amostra do 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 querystartdatevariá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:

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

Gráfico de amostra 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

Exemplo de gráfico de caixas de diálogo iniciadas e caixas de diálogo concluídas.

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

Exemplo de gráfico de resumo para caixas de diálogo incompletas.

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

Exemplo de gráfico de duração da caixa de diálogo.

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 e count 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

Exemplo de gráfico de uso do canal.

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

Gráfico de exemplo de popularidade de intenção.

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