Compartilhar via


Analisar os dados telemétricos do seu bot

APLICA-SE A: SDK v4

Analisar 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 Log Analytics do Azure Monitor 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:

Dica

Se você criar seu bot usando ferramentas como o Copilot Studio ou o Composer, convém usar a versão da Caixa de diálogo adaptável de cada consulta, quando disponível.

Dashboards

Os Painéis do Azure oferecem uma ótima maneira de exibir e compartilhar informações geradas de suas consultas. Você pode criar painéis personalizados para ajudar a monitorar a atividade dos seus bots associando suas consultas aos blocos que você adiciona ao seu painel. Para obter informações sobre painéis e como associar suas consultas a eles, confira 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 no monitoramento do comportamento dos seus bots.

Consultas Kusto de exemplo

Observação

É recomendável dinamizar em diferentes dimensões, como período, canal e localidade para todas as consultas neste artigo.

Número de usuários por período

Este exemplo resulta em um gráfico de linha que mostra quantos usuários diferentes comunicaram-se com seu bot por dia nos últimos 14 dias. O período pode ser facilmente alterado atribuindo diferentes valores às variáveis queryStartDate, queryEndDate e interval.

Importante

Você só obterá uma contagem correta de usuários exclusivos nessa 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

Dica

O operador summarize do Kusto é usado para produzir uma tabela que agrega o conteúdo da tabela de entrada.

A função Bin é uma função escalar Kusto que, quando usada em conjunto com o summarize operator, agrupará os resultados da consulta no valor especificado. No exemplo acima, isso é agrupado por dia. O Kusto também aceitará h=horas, m=minutos, s=segundos, ms=milissegundos, microsecond=microssegundos.

O operador render permite renderizar gráficos facilmente, como o gráfico de tempo, um gráfico de linhas em que o eixo x é um datetime e qualquer outra coluna numérica pode ser usada para o eixo y. Ele manterá automaticamente o espaço do eixo x bem uniforme mesmo se seus dados não tiverem todo horário especificado. Se nenhuma instrução render for usada, o padrão será table.

Exemplo de resultados da consulta de 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, caixas de diálogo ou mensagens por dia nos últimos 14 dias. O período pode ser facilmente alterado atribuindo diferentes valores às variáveis querystartdate, 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 a 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

Dica

O operador extend do Kusto é usado para criar colunas calculadas e acrescentá-las ao conjunto de resultados.

Exemplos de resultados da consulta atividade por período

Exemplo de gráfico de atividade por período.

Atividade por usuário por período

Este exemplo demonstra como contar o número de atividades por usuário por período. Essa consulta detalha a consulta de atividade por período para se concentrar na atividade por usuário por período. As atividades incluem caixas de diálogo, conversas ou mensagens. Essa consulta mede a interação do usuário com o bot, o que pode ajudar a encontrar possíveis problemas, como:

  • Dias com muita atividade de um único usuário podem significar um ataque ou teste
  • Dias com pouca interação pode indicar problemas de integridade do serviço

Dica

Você pode remover by user_Id para obter o volume de atividade de bot geral que pode ser dinamizado em tempo e caixas de diálogo, 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

Exemplos de resultados da consulta atividade por usuário por período

user_Id timestamp Count
User-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

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 telemétricos padrão, como iniciado e concluído. Esse exemplo pode ser usado para medir as caixas de diálogo concluídas com relação às caixas de diálogo iniciadas. Se o número de caixas de diálogo iniciadas for maior que o número concluído, alguns de seus usuários não estarão concluindo o fluxo de caixas 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 diálogos são usados com mais e menos frequência.

Dica

Se você criar seu bot usando ferramentas como o Copilot Studio ou o 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)

Dica

O operador join do Kusto é usado para mesclar as linhas de duas tabelas para formar uma nova correspondendo valores das colunas especificadas de cada tabela.

O operador project é usado para selecionar os campos que você deseja exibir na saída. Semelhante ao extend operator que adiciona um novo campo, o project operator pode escolher dentre o conjunto de campos existente ou adicionar um novo campo.

Caixas de diálogo adaptáveis iniciadas e concluídas

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

Exemplos de resultados da consulta de conclusão de caixa de diálogo

Gráfico de exemplo de diálogos iniciados e diálogos concluídos.

Não conclusão da caixa de diálogo

Este exemplo pode ser usado para contar o número de fluxos de caixa de diálogo que foram iniciados, mas nunca concluídos devido ao cancelamento ou abandono durante o período especificado. Você pode usá-lo para revisar diálogos incompletos e examinar se eles foram ativamente cancelados devido à confusão do usuário ou abandonados 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

Caixas de diálogo adaptáveis não concluídas

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

Dica

O operador order do Kusto (o mesmo que sort operator) é usado para classificar as linhas da tabela de entrada em ordem por uma ou mais colunas. Nota: Se você deseja 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, adicione o nulls first ou nulls first ao final da instrução order.

Exemplos de resultados da consulta de incompletude da caixa de diálogo

Exemplo de gráfico de resumo para diálogos incompletos.

Busca detalhada de sequência da caixa de diálogo

Início/etapa/conclusão da cascata para caixa de diálogo na conversa

Este exemplo mostra a sequência de etapas de diálogo, agrupadas por conversa (instanceId), que pode ser útil para determinar quais etapas levam à interrupção do diálogo.

Para 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>")

Dica

Essa consulta foi escrita usando uma função definida por consulta, que é uma função definida pelo usuário definida e usada no escopo de uma única consulta e definida por meio de uma instrução let. Essa consulta 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
Resultados da consulta de exemplo
timestamp name StepName InstanceId
2019-08-23T20:04... WaterfallStart nulo ...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 nulo ...79c0f03d8701
2019-08-28T23:35... WaterfallStart nulo ...6ac8b3211b99
2019-08-28T23:35... WaterfallStep 2 GetPointOfInterestLocations ...6ac8b3211b99
2019-08-28T19:41... WaterfallStart nulo ...8137d76a5cbb
2019-08-28T19:41... WaterfallStep 2 GetPointOfInterestLocations ...8137d76a5cbb
2019-08-28T19:41... WaterfallStart nulo ...8137d76a5cbb

1 Concluída

2 Abandonada

Interpretação: os usuários parecem abandonar a conversa na etapa GetPointOfInterestLocations.

Observação

As caixas de diálogo de em cascata executam uma sequência (início, várias etapas, conclusão). Se uma sequência mostra o início sem conclusão, isso significa que a caixa de diálogo foi interrompida devido ao abandono do usuário ou ao cancelamento da caixa de diálogo. Nesta análise detalhada, pode-se ver esse comportamento (veja etapas concluídas versus abandonadas).

Totais de agregação das etapas início/etapa/conclusão/cancelamento em cascata

Esse exemplo mostra os totais de agregação do número total de vezes que uma sequência de caixa 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, além de que WaterfallCancel fornecerá o número total de abandonadas.

// 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>")
Exemplos de resultados da consulta de agregação em cascata
name count
WaterfallStart 21
WaterfallStep 47
WaterfallComplete 11
WaterfallCancel 1

Interpretação: Das 21 invocações da 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

Esse exemplo mede a quantidade média de tempo que os usuários passam em uma determinada caixa de diálogo. Seu bot pode se beneficiar da simplificação de caixas de diálogo que levam muito tempo para serem concluídas 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")

Exemplos de resultados de consulta de duração média

Gráfico de exemplo da duração do diálogo.

Etapas médias na caixa de diálogo

Este exemplo mostra o "comprimento" de cada caixa de diálogo invocada, calculado por média, mínimo, máximo 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 quanto a oportunidades de simplificação.
  • Caixas de diálogo com uma ampla lacuna entre mín/máx/média podem significar que os usuários ficam paralisados tentando concluir as tarefas. Talvez seja necessário avaliar a possibilidade de haver caminhos menores para concluir as tarefas ou maneiras de reduzir a complexidade da caixa de diálogo.
  • Diálogos com um grande desvio padrão sugerem caminhos complexos ou experiência quebrada (abandono/cancelamento).
  • Diálogos com poucos passos 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

Exemplos de resultados da consulta de etapas médias

ID de diálogo etapas médias etapas mín etapas máx std média curta por etapas média curta por percentual
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%
integraçã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 e otimizado.

Atividade do canal por métrica de atividade

Esse 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 caixas de diálogo. Isso pode ser útil para a análise de integridade do serviço ou para medir a popularidade dos canais.

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

Dica

Talvez convenha considerar experimentar estas variações:

  • Execute a consulta sem o bucket de carimbo de data/hora: bin(timestamp, groupByInterval).
  • Também é possível usar dcount para usuários distintos e count para todas as atividades de eventos do usuário. Isso também funciona para usuários repetidos.

Exemplos de resultados da consulta de atividade por atividade de canal

Gráfico de exemplo de uso do canal.

Interpretação: O teste do emulador costumava ser o mais popular, mas uma vez que entramos no ar, o DirectLineSpeech é o canal mais popular.

Total de intenções por popularidade

Este exemplo aplica-se a bots habilitados para LUIS. Ele mostra um resumo de todas as intenções por popularidade e a pontuação de certeza de detecção de intenção correspondente.

Observação

O reconhecimento de linguagem (LUIS) será desativado em 1º de outubro de 2025. A partir de 1º de abril de 2023, você não poderá criar recursos do LUIS. Uma versão mais recente do reconhecimento de linguagem já está disponível como parte da Linguagem de IA do Azure.

A compreensão da linguagem coloquial (CLU), um recurso da Linguagem de IA do Azure, é a versão atualizada do LUIS. Para obter mais informações sobre o suporte ao reconhecimento de linguagem no SDK do Bot Framework, confira Reconhecimento de linguagem natural.

  • Na prática, a exibiçã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 baixo reconhecimento e possível ausência de intenção do usuário real.
// 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 de intenções por popularidade

Exemplo de gráfico de popularidade de intenção.

Interpretação: por exemplo, a intenção mais popular, confirmar, é detectada apenas com 23% de confiança em média.

Dica

Gráficos de barras são um de mais de uma dezena 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 de análise de bot

As tabelas a seguir mostram os campos mais comuns nos quais seu bot registrará dados telemétricos.

Envelope Geral

Campos de análise de logs comuns na instrumentação do Application Insights.

Campo Descrição Valores de Exemplo
name Tipo de mensagem BotMessageSend, BotMessageReceived, LuisResult, WaterfallStep, WaterfallStart, SkillWebSocketProcessRequestLatency, SkillWebSocketOpenCloseLatency, WaterfallComplete, QnaMessage, WaterfallCancel, SkillWebSocketTurnLatency, AuthPromptValidatorAsyncFailure
customDimensions Análise de Bot do SDK activityId=<id>, activityType=message, channelId=emulator, fromId=<id>, fromName=User, locale=pt-br, recipientId=<id>, recipientName=Bot, text=encontre uma cafeteria
timestamp Horário do evento 2019-09-05T18:32:45.287082Z
instance_Id ID da conversa f7b2c416-a680-4b2c-b4cc-79c0f03d8711
operation_Id ID de turno 084b2856947e3844a5a18a8476d99aaa
user_Id ID de usuário exclusivo do canal emulator7c259c8e-2f47...
client_IP Endereço IP do cliente 127.0.0.1 (pode estar ausente devido ao bloqueio de privacidade)
client_City Cidade do cliente Redmond (se detectada, pode estar ausente)

Observação

O QnA Maker da IA do Azure será desativada em 31 de março de 2025. A partir de 1° de outubro de 2022, não será mais possível criar recursos ou bases de conhecimento do QnA Maker. Uma versão mais recente da funcionalidade de perguntas e respostas agora está disponível como parte da Linguagem de IA do Azure.

Respostas às perguntas personalizadas, um recurso de 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, confira reconhecimento de linguagem natural.

Observação

O reconhecimento de linguagem (LUIS) será desativado em 1º de outubro de 2025. A partir de 1º de abril de 2023, você não poderá criar recursos do LUIS. Uma versão mais recente do reconhecimento de linguagem já está disponível como parte da Linguagem de IA do Azure.

A compreensão da linguagem coloquial (CLU), um recurso da Linguagem de IA do Azure, é a versão atualizada do LUIS. Para obter mais informações sobre o suporte ao reconhecimento de linguagem no SDK do Bot Framework, confira Reconhecimento de linguagem natural.

Dimensões Personalizadas

A maioria dos dados da atividade específicos do bot é armazenada no campo customDimensions.

Campo Descrição Valores de Exemplo
activityId ID da mensagem <Identificação>: 8da6d750-d00b-11e9-80e0-c14234b3bc2a
activityType Tipo de mensagem message, conversationUpdate, event, invoke
channelId Identificador do canal emulator, directline, msteams, webchat
fromId Identificador De <id>
fromName Nome de usuário do cliente John Bonham, Keith Moon, Steve Smith, Steve Gadd
localidade Localidade de origem do cliente en-us, zh-cn, en-GB, de-de, zh-CN
recipientId Identificador do destinatário <id>
recipientName Nome do destinatário John Bonham, Keith Moon, Steve Smith, Steve Gadd
text Texto na mensagem encontre uma cafeteria

Dimensões personalizadas: LUIS

Observação

O reconhecimento de linguagem (LUIS) será desativado em 1º de outubro de 2025. A partir de 1º de abril de 2023, você não poderá criar recursos do LUIS. Uma versão mais recente do reconhecimento de linguagem já está disponível como parte da Linguagem de IA do Azure.

A compreensão da linguagem coloquial (CLU), um recurso da Linguagem de IA do Azure, é a versão atualizada do LUIS. Para obter mais informações sobre o suporte ao reconhecimento de linguagem no SDK do Bot Framework, confira Reconhecimento de linguagem natural.

A instrumentação do LUIS armazena os dados nos campos Dimensões Personalizados a seguir.

Campo Descrição Valores de Exemplo
intenção Intenção detectada pelo LUIS pointOfInterestSkill
intentScore Pontuação de reconhecimento do LUIS 0,98
Entidades Entidades detectadas pelo LUIS FoodOfGrocery = [["coffee"]], KEYWORD= ["coffee shop"]
Pergunta Pergunta detectada pelo LUIS encontre uma cafeteria
sentimentLabel Sentimento detectado pelo LUIS positivo

Dimensões personalizadas: QnAMaker

Observação

O QnA Maker da IA do Azure será desativada em 31 de março de 2025. A partir de 1° de outubro de 2022, não será mais possível criar recursos ou bases de conhecimento do QnA Maker. Uma versão mais recente da funcionalidade de perguntas e respostas agora está disponível como parte da Linguagem de IA do Azure.

Respostas às perguntas personalizadas, um recurso de 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, confira reconhecimento de linguagem natural.

a instrumentação do QnAMaker armazena os dados nos campos Dimensões Personalizadas a seguir.

Dica

Para habilitar o log de informações pessoais, como perguntas e respostas, o parâmetro de log de informações pessoais deve ser definido como true no construtor da classe QnA Maker .

Campo Descrição Valores de Exemplo
pergunta Pergunta detectada pelo QnA o que você pode fazer?
resposta Resposta do QnA Você tem perguntas, eu posso ter respostas.
articleFound QnA true
questionId ID da pergunta do QnA 488
knowledgeBaseId ID da base de dados de conhecimento do QnA 2a4936f3-b2c8-44ff-b21f-67bc413b9727
matchedQuestion Matriz de perguntas correspondidas ["Você pode me explicar qual é o seu papel?","Você pode me contar um pouco sobre você?","Você pode me falar 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?", ...]

Confira também