Com o Customer Experience Insights, é possível importar conversas do Agent Assist para análise. Este documento orienta você pelo processo de cálculo de várias métricas de conversa importantes nos dados importados do Assistente do agente.
Pré-requisitos
Use o Agent Assist para gerar dados de conversa usando os recursos de resposta inteligente ou resumo.
Ative a integração do ambiente de execução do Dialogflow no Customer Experience Insights.
Exporte seus dados do CX Insights para o BigQuery.
Taxa de disparo
A taxa de acionamento descreve com que frequência um tipo de anotação aparece em uma conversa.
Taxa de acionadores no nível da frase
Uma taxa de acionamento no nível da frase se aplica a anotações que podem aparecer pelo menos uma vez por frase.
| Nome da anotação | Tipo de anotação | Critérios |
|---|---|---|
| Sugestão de artigo | 'ARTICLE_SUGGESTION' |
Pelo menos uma solicitação SuggestArticles é enviada para cada mensagem na conversa. |
| Assistente de perguntas frequentes | 'FAQ' |
Pelo menos uma solicitação SuggestFaqAnswers ou AnalyzeContent é enviada para cada mensagem na conversa. |
| Resposta inteligente | 'SMART_REPLY' |
Pelo menos uma solicitação SuggestSmartReplies ou AnalyzeContent é enviada para cada mensagem na conversa. |

WITH calculation AS ( SELECT COUNTIF( ( SELECT COUNT(*) FROM UNNEST (sen.annotations) AS annotation WHERE annotation.type = 'ANNOTATION_TYPE' ) > 0 ) AS numSentencesAtLeastOneAnnotation, COUNT(*) AS numSentencesTotal FROM BIGQUERY_TABLE, UNNEST (sentences) AS sen ) SELECT numSentencesAtLeastOneAnnotation, numSentencesTotal, numSentencesAtLeastOneAnnotation / numSentencesTotal AS triggerRate FROM calculation;
Taxa de acionamento no nível da conversa
Uma taxa de ativação no nível da conversa se aplica a anotações que podem aparecer no máximo uma vez por conversa.
| Nome da anotação | Tipo de anotação | Critérios |
|---|
| Assistente de conhecimento generativo (GKA) | 'KNOWLEDGE_SEARCH' | Pelo menos uma solicitação SearchKnowledge é enviada para cada mensagem na conversa. |
| Assistência de Knowledge Assist proativo | 'KNOWLEDGE_SEARCH' | Pelo menos uma solicitação de SearchKnowledge ou AnalyzeContent é enviada para cada mensagem na conversa. |
| Resumo | 'CONVERSATION_SUMMARIZATION' | Pelo menos uma solicitação de SuggestConversationSummary é enviada para cada conversa. |

WITH calculation AS ( SELECT COUNTIF( ( SELECT COUNT(*) FROM UNNEST (sentences) AS sen, UNNEST (sen.annotations) AS annotation WHERE annotation.type = 'ANNOTATION_TYPE' ) > 0 ) AS numConversationsAtLeastOneAnnotation, COUNT(*) AS numConversationsTotal FROM BIGQUERY_TABLE ) SELECT numConversationsAtLeastOneAnnotation, numConversationsTotal, numConversationsAtLeastOneAnnotation / numConversationsTotal AS triggerRate FROM calculation;
Taxa de cliques
A taxa de cliques descreve com que frequência os atendentes clicam nas anotações sugeridas.
Taxa de cliques no nível da frase
Uma taxa de cliques no nível da frase se aplica a anotações que os agentes de call center podem clicar várias vezes por frase.
| Nome da anotação | Tipo de anotação | Critérios |
|---|---|---|
| Sugestão de artigo | 'ARTICLE_SUGGESTION' |
Pelo menos uma solicitação SuggestArticles é enviada para cada mensagem na conversa. |
| Assistente de perguntas frequentes | 'FAQ' |
Pelo menos uma solicitação SuggestFaqAnswers ou AnalyzeContent é enviada para cada mensagem na conversa. |
| Resposta inteligente | 'SMART_REPLY' |
Pelo menos uma solicitação SuggestSmartReplies ou AnalyzeContent é enviada para cada mensagem na conversa. |

WITH calculation AS ( SELECT COUNTIF( ( SELECT COUNT(*) FROM UNNEST (sen.annotations) AS annotation WHERE annotation.type = 'ANNOTATION_TYPE' AND annotation.displayed = TRUE AND annotation.clicked = TRUE ) > 0 ) AS numSentencesAtLeastOneClickedAndDisplayedAnnotation, COUNTIF( ( SELECT COUNT(*) FROM UNNEST (sen.annotations) AS annotation WHERE annotation.type = 'ANNOTATION_TYPE' AND annotation.displayed = TRUE ) > 0 ) AS numSentencesAtLeastOneDisplayedAnnotation, FROM BIGQUERY_TABLE, UNNEST (sentences) AS sen ) SELECT numSentencesAtLeastOneClickedAndDisplayedAnnotation, numSentencesAtLeastOneDisplayedAnnotation, numSentencesAtLeastOneClickedAndDisplayedAnnotation / numSentencesAtLeastOneDisplayedAnnotation AS clickThroughRate FROM calculation;
Taxa de cliques no nível da conversa
Uma taxa de cliques no nível da conversa se aplica a anotações em que os agentes de atendimento podem clicar várias vezes por conversa. Os agentes de call center precisam enviar proativamente uma solicitação que crie uma anotação no nível da conversa.
| Nome da anotação | Tipo de anotação | Critérios |
|---|---|---|
| Assistente de conhecimento generativo (GKA) | 'KNOWLEDGE_SEARCH' |
Pelo menos uma solicitação SearchKnowledge é enviada para cada mensagem na conversa. |
| Assistência de conhecimento generativo proativa | 'KNOWLEDGE_SEARCH' |
Pelo menos uma solicitação SearchKnowledge ou AnalyzeContent é enviada para cada mensagem na conversa. |
Métricas específicas de recursos
Esta seção lista as métricas específicas de cada recurso.
Assistência de conhecimento generativo
O assistente de conhecimento generativo (GKA) responde às perguntas de um agente com base nas informações dos documentos que você fornece. Se o agente não encontrar uma resposta, o GKA vai sugerir uma pergunta semelhante e fornecer a resposta. Esse recurso gera as seguintes métricas de pesquisa do Google:
| Nome da métrica | Definição | Cálculo |
|---|---|---|
| Contagem de resultados | Número total de respostas fornecidas a um único agente em todas as conversas. | |
| Proporção de origem da consulta do agente | Proporção de perguntas do agente em relação ao número total de perguntas. | Calcule o número de perguntas do agente dividido pelo número total de perguntas. |
| Proporção de origem da consulta sugerida | Proporção de perguntas sugeridas em relação ao número total de perguntas. | Calcule o número de perguntas sugeridas dividido pelo número total de perguntas. |
| Proporção de cliques em URI | Proporção de respostas em que pelo menos um URI foi clicado em relação ao número total de respostas. | Calcule o número de respostas em que um agente clicou no URI dividido pelo número total de respostas. |
| Proporção de feedback positivo | Proporção de feedback positivo sobre respostas em relação ao número total de respostas. | Calcule o número de respostas que receberam feedback positivo dividido pelo número total de respostas. |
| Proporção de feedback negativo | Proporção de feedback negativo sobre respostas em relação ao número total de respostas. | Calcule o número de respostas que receberam feedback negativo dividido pelo número total de respostas. |
Assistência de conhecimento generativo proativa
A assistência de conhecimento generativa proativa sugere perguntas com base no contexto da conversa atual e fornece respostas com base nas informações dos documentos que você envia. A assistência de conhecimento generativo proativa não exige interação do agente. Esse recurso gera as seguintes métricas de assistência de conhecimento:
| Nome da métrica | Definição | Cálculo |
|---|---|---|
| Contagem de resultados | Número total de sugestões fornecidas a um único agente para todas as conversas. | |
| Proporção de cliques em URI | Proporção de sugestões em que pelo menos um URI foi clicado em relação ao número total de sugestões fornecidas. | Calcule o número de sugestões em que um agente clicou no URI dividido pelo número total de sugestões fornecidas. |
| Proporção de feedback positivo | Proporção de feedback positivo sobre sugestões em relação ao número total de sugestões. | Calcule o número de sugestões que receberam feedback positivo dividido pelo número total de sugestões. |
| Proporção de feedback negativo | Proporção de feedback negativo sobre sugestões em relação ao número total de sugestões. | Calcule o número de sugestões que receberam feedback negativo dividido pelo número total de sugestões. |
Resposta inteligente
Esta seção lista métricas específicas da resposta inteligente.
Taxa de cliques efetiva (CTR efetiva)
A taxa de cliques efetiva reflete com mais precisão a frequência com que os agentes de atendimento clicam nas anotações de resposta inteligente do que a métrica comum de taxa de cliques. A consulta a seguir busca a resposta de cada agente e as anotações de resposta inteligente feitas apenas para a resposta desse agente e clicadas por ele. Em seguida, ele conta o número de ocorrências em que o agente elaborou a resposta usando sugestões de resposta inteligente e divide esse número pela contagem total de respostas do agente.

WITH calculation AS ( SELECT sen.sentence AS agentResponse, ( # Get a list of effective smart replies that map to each agent response. SELECT ARRAY_AGG(JSON_QUERY(PARSE_JSON(JSON_VALUE(annotation.annotationRecord)), "$.reply")) FROM UNNEST (sentences) AS sen2, UNNEST (sen2.annotations) AS annotation WHERE annotation.type='SMART_REPLY' AND annotation.clicked=TRUE AND annotation.annotationRecord IS NOT NULL AND annotation.createTimeNanos >= ( # Get the timestamp of the agent response that immediately precedes # the current agent response. The timestamp of the effective smart # reply must be greater than this timestamp. SELECT MAX(sen3.createTimeNanos) FROM UNNEST(sentences) AS sen3 WHERE sen3.participantRole = 'HUMAN_AGENT' AND sen3.createTimeNanos < sen.createTimeNanos ) AND annotation.createTimeNanos <= sen.createTimeNanos ) AS effectiveSmartRepliesPerAgentResponse FROM BIGQUERY_TABLE, UNNEST (sentences) AS sen WHERE sen.participantRole = 'HUMAN_AGENT' ) SELECT COUNTIF(ARRAY_LENGTH(effectiveSmartRepliesPerAgentResponse) > 0) / COUNT(agentResponse) AS effectiveCTR FROM calculation;
Editar taxa
Os agentes podem usar as respostas sugeridas de resposta inteligente na íntegra ou editá-las antes de enviar aos clientes. Calcular a taxa de edição das respostas inteligentes pode mostrar com que frequência as respostas sugeridas são editadas. A consulta a seguir busca cada resposta inteligente sugerida e a resposta do agente que segue imediatamente essa resposta inteligente. Em seguida, ele conta o número de ocorrências em que a resposta do agente não contém a resposta inteligente correspondente e divide esse número pela contagem total de respostas inteligentes.

WITH calculation AS ( SELECT JSON_VALUE(PARSE_JSON(JSON_VALUE(annotation.annotationRecord), wide_number_mode=>'round'), "$.reply") AS smartReply, ( # Get the agent response that immediately follows the smart reply. SELECT sen2.sentence FROM UNNEST (sentences) AS sen2 WHERE sen2.createTimeNanos = ( SELECT MIN(sen3.createTimeNanos) FROM UNNEST (sentences) AS sen3 WHERE sen3.createTimeNanos > sen.createTimeNanos AND sen3.participantRole = 'HUMAN_AGENT' ) ) AS agentResponseThatFollows, FROM BIGQUERY_TABLE, UNNEST (sentences) AS sen, UNNEST (sen.annotations) AS annotation WHERE annotation.type='SMART_REPLY' AND annotation.clicked=TRUE AND annotation.annotationRecord IS NOT NULL ) SELECT COUNTIF(REGEXP_CONTAINS(agentResponseThatFollows, smartReply)) / COUNT(smartReply) AS editRate FROM calculation;
Resumo
Esta seção lista métricas específicas para resumo.
- O tipo
GENERATOR_SUGGESTION_RESULTvai conter todos os resultados do gerador, incluindo resumos. - O tipo
CONVERSATION_SUMMARIZATION_SUGGESTIONvai conter resumos legados.
Resumo do gerador
Exemplo de consulta para acessar o resumo do gerador e as edições do agente no resumo como JSON:
SELECT IF (JSON_VALUE(annotation.annotationRecord) != '', JSON_QUERY(PARSE_JSON(JSON_VALUE(annotation.annotationRecord)), "$.generatorSuggestion.summarySuggestion"), NULL) AS generator_summary, IF (JSON_VALUE(annotation.detailedFeedback) != '', JSON_QUERY(PARSE_JSON(JSON_VALUE(annotation.detailedFeedback)), "$.summarizationFeedback.summaryText"), NULL) AS feedback, FROM BIGQUERY_TABLE AS c, UNNEST(c.sentences) AS sentences, UNNEST(sentences.annotations) AS annotation WHERE annotation.type = 'GENERATOR_SUGGESTION_RESULT' AND JSON_QUERY(PARSE_JSON(JSON_VALUE(annotation.annotationRecord)), "$.generatorSuggestion.summarySuggestion") IS NOT NULL LIMIT 10 ;
Distância de edição
A distância de edição do resumo é uma medida de quanto os resumos editados pelo agente diferem dos resumos sugeridos. Essa métrica está relacionada à quantidade de tempo que o agente passou editando os resumos sugeridos.
Consulte os resumos e os revisados (se houver).
Como os agentes de atendimento podem enviar revisões de resumo sem definir o booleano
clickedcomotrue, as sumarizações de consultas, independente do statusclicked. Se o resumo do agente for nulo, isso significa que ele não revisou o resumo sugerido ou que o resumo revisado não foi enviado para o Assistente do agente usando a rota de feedback preferida.Compare os resumos sugeridos com os revisados pelos agentes usando seus algoritmos de distância de edição preferidos para calcular a distância de edição de resumo. Por exemplo, a distância de Levenshtein com penalidade igual para inserção, exclusão e substituição.

SELECT JSON_VALUE(PARSE_JSON(JSON_VALUE(annotation.annotationRecord)), "$.text") AS suggestedSummary, IF (JSON_VALUE(annotation.detailedFeedback) != '', JSON_QUERY(PARSE_JSON(JSON_VALUE(annotation.detailedFeedback)), "$.summarizationFeedback.summaryText"), NULL) AS feedback, FROM BIGQUERY_TABLE, UNNEST (sentences) AS sen, UNNEST (sen.annotations) as annotation WHERE type='CONVERSATION_SUMMARIZATION_SUGGESTION';
Editar taxa
Para calcular a taxa de edição para o resumo, divida a distância de edição pelo comprimento da string do resumo editado. Essa métrica reflete o quanto do resumo foi editado pelo agente. Essa taxa não tem um limite máximo, mas quando o valor é igual ou maior que um, significa que os resumos gerados são ruins e o recurso provavelmente precisa ser desativado.
Editar porcentagem
A porcentagem de edições é uma medida do percentual do número total de resumos sugeridos que foram editados por agentes em vez de serem usados exatamente como foram gerados. Esse valor é calculado como o número de resumos editados pelo agente dividido pelo número de resumos sugeridos. Essa métrica é um bom indicador da qualidade do modelo quando o valor está próximo de 0. Mas quando ele está perto de 1, isso não significa necessariamente que a qualidade do modelo é ruim, já que a edição pode ser pequena e ainda ser considerada como uma edição do resumo sugerido.

WITH summaryAndEdits AS ( SELECT JSON_VALUE(PARSE_JSON(JSON_VALUE(annotation.annotationRecord)), "$.text") AS suggestedSummary, IF (JSON_VALUE(annotation.detailedFeedback) != '', JSON_QUERY(PARSE_JSON(JSON_VALUE(annotation.detailedFeedback)), "$.summarizationFeedback.summaryText"), NULL) AS editedSummary, FROM BIGQUERY_TABLE, UNNEST (sentences) AS sen, UNNEST (sen.annotations) AS annotation WHERE type='CONVERSATION_SUMMARIZATION_SUGGESTION' ) SELECT countif (suggestedSummary IS NOT NULL) AS totalSummaries, countif (editedSummary IS NOT NULL) AS editedSummaries, countif (editedSummary IS NOT NULL) / countif (suggestedSummary IS NOT NULL) AS editRate FROM summaryAndEdits;