Qual é o meu plano?
Complemento Agentes de IA - Avançado

Nossa API de exportação de dados serve como chave para desbloquear o potencial completo do seu agente de IA, permitindo que você exporte dados de conversas e integre-os a diversas plataformas e aplicativos.

Seja você desenvolvedor, analista de negócios ou profissional de TI, nossa API fornece uma solução segura e simplificada para extrair metadados de conversas e insights valiosos, permitindo que você promova a inovação, tome decisões informadas e leve sua organização a um novo patamar.

Este artigo contém os seguintes tópicos:

  • Acesso ao ID da organização
  • Geração de um token da API
  • Sobre a API
  • Esquema de arquivos
  • Exemplo de resposta
  • Métricas populares
  • Perguntas frequentes

Acesso ao ID da organização

Somente usuários com função administrativa podem executar essa etapa

  1. Na barra lateral esquerda, clique em Gerenciamento de organizações.
    Observação: se você adquiriu Agentes de IA - Avançado antes de 7 de outubro de 2024, clique em Gerenciamento de usuário > Gerenciamento de organizações.
  2. Clique na sua organização para abrir o perfil dela.
  3. Encontre o ID da sua organização na URL do navegador:
    https://dashboard.ultimate.ai/admin/organizations/77m57af6811115b53172431s

Geração de um token da API

Somente usuários com função administrativa podem gerar um token

  1. Na barra lateral esquerda, clique em Gerenciamento de organizações.
    Observação: se você adquiriu Agentes de IA - Avançado antes de 7 de outubro de 2024, clique em Gerenciamento de usuário > Gerenciamento de organizações.
  2. Clique na sua organização para abrir o perfil dela.
  3. Clique na aba Chave da API.
  4. Clique em Gerar.
  5. Clique em Salvar.
  6. Copie a chave e guarde-a em segurança.

Screenshot 2024-02-07 at 10.29.51.png

Assim que sair da página de gerenciamento de organizações, você não terá mais acesso ao token. Caso você perca o token gerado, é possível revogá-lo clicando no botão Gerar novamente. A validade do token antigo será revogada e você poderá usar o token recém-gerado.

Sobre a API

A API de exportação de dados é atualizada uma vez por dia, à meia-noite (fuso horário UTC). Esse processo de atualização pode durar algum tempo, então faça a importação no início da manhã (fuso horário UTC) para garantir que os dados estejam disponíveis.

Para a União Europeia: POST - https://api.ultimate.ai/data-export/v3/get-signed-urls

Para os EUA: POST - https://api.us.ultimate.ai/data-export/v3/get-signed-urls

Cabeçalho

name

obrigatório

type

botId

true

string

organizationId

true

string

authorization

true

string

Corpo

name

obrigatório

type

date

true

ISO date string

Resposta

Código HTTP

resposta

200

{ "date": "string", "urls": [ "string" ] }

401

Não autorizado

500

Erro interno do servidor

Observação:

  • A URL para o arquivo expira um dia após a data da solicitação. Para receber um link válido, é preciso executar a chamada da API outra vez.
  • Você pode solicitar dados com data retroativa para até 1.º de janeiro de 2024. Para ajuda, se precisar de dados mais antigos, entre em contato com o suporte ao cliente Zendesk.

Esquema de arquivos

A API exporta um documento JSON com todas as conversas de determinado dia, seguindo esta estrutura:

  • O arquivo é uma lista de objetos JSON, em que cada objeto é uma conversa
  • A nomenclatura do arquivo segue a convenção: conversation_bot-id_date_000000000000.json
Propriedade Descrição Type
"bot_id" ID exclusivo do bot
"bot_id": {
"type": "string"
},
"bot_name" Nome do bot
"bot_name": {
"type": "string"
},
"conversation_id" ID da conversa gerada
"conversation_id": {
"type": "string"
},
"platform_conversation_id" ID específico do CRM
 "platform_conversation_id": {
"type": "string"
},
"conversation_start_time" Data e hora de quando a conversa começou, com base no fuso horário UTC
"conversation_start_time": {
"type": "string"
},
"conversation_end_time" Data e hora de quando a conversa terminou, com base no fuso horário UTC
"conversation_end_time": {
"type": "string"
},
"conversation_type" Tipo de resposta identificado na conversa. Os valores possíveis incluem Caso de uso, Conhecimento, Híbrido e Outros.
"conversation_type": {
"type": "string"
},
"language" Idioma da conversa
"language": {
"type": "string"
},
"channel" Canal da conversa. Mensagens ou e-mail
"channel": {
"type": "string"
},
"labels" Lista de todos os rótulos associados à conversa
"labels": {
"type": "array",
"items": {
"type": "string"
}
},
"segments" Lista de todos os segmentos identificados na conversa. Saiba mais sobre segmentos.
"segments": {
"type": "array",
"items": {
"type": "string"
}
},
"conversations_data"

Os parâmetros da sessão são associados às conversas. É uma lista da chave do parâmetro que tinha um valor. As chaves não definidas não estarão na lista.

Observação:

  • Mesmo que seja armazenada como uma cadeia de caracteres, “conversations_data” contém outro objeto JSON.
  • O score de BSAT é fornecido no objeto de dados das conversas.
    • Valores do score de BSAT
      • -1 = o usuário recebeu o BSAT, mas não deixou uma resposta.
      • NULL = o usuário não recebeu o BSAT.

Exemplo:

"conversations_data": {
"parameter1": true,
"parameter2": "parameter_value",
"parameter3": "1234"
},
"conversations_data": {
"type": "string"
},

"test_mode"

 

 

Uma marcação para identificar se a conversa é um teste
"test_mode": {
"type": "boolean"
},
"conversation_status" Resolução da conversa, por exemplo: bot_handled
"conversation_status": {
"type": "string"
},
"automated_resolution" O resultado da avaliação da conversa como uma resolução automatizada. Saiba mais sobre como as resoluções automatizadas são calculadas.
"automated_resolutions": {
"type": "string"
},
"automated_resolution_reasoning" O raciocínio usado para determinar por que uma conversa foi marcada como resolvida automaticamente.
"automated_resolution_reasoning": {
"type": "string"
},
"last_resolution"

É a resolução final da conversa; pode ser informada, resolvida, escalada ou indefinida

Removeremos esse recurso em 28 de fevereiro de 2026. Saiba mais sobre a próxima remoção de recursos.

"last_resolution": {
"type": "string"
},
"triggered_replies" Os detalhes relacionados a uma resposta. Inclui informações como reply_id, language, reply_name, reply_type, intent_id.
"triggered_replies": {
"type": "array",
"items": {
"type": "string"
}
},
"triggered_procedures"

Inclui informações como procedure_id, intent_id, use_case_name. 

Esta seção fica vazia para agentes de IA sem treinamento ou quando não há procedimentos iniciados por gatilho.

"triggered_procedures": {
"type": "array",
"items": {
"type": "string"
}
},
"triggered_use_cases"

Uma marcação para identificar se o caso de uso está configurado como um diálogo ou um procedimento.

"triggered_use_cases": {
"type": "array",
"items": {
"type": "string"
}
},
"has_knowledge_response_attempt" Uma marcação para identificar se é uma conversa do Conhecimento (tem pelo menos uma resposta do Conhecimento), independentemente de a resposta do Conhecimento ter sido entendida, de ter ocorrido um erro técnico, de ter sido uma conversa casual e etc. 
"has_knowledge_response_attempt": {
"type": "boolean"
},
"knowledge_notUnderstood_count" A quantidade de mensagens não entendidas na conversa do Conhecimento. Para respostas agênticas do Conhecimento, isso pode incluir perguntas de acompanhamento em que o agente de IA não associou a pergunta a uma origem de conhecimento apropriada para gerar uma resposta.
"knowledge_notUnderstood_count": {
"type": "string"
},
"knowledge_responseGenerated_count" A quantidade de mensagens geradas por resposta na conversa do Conhecimento.
"knowledge_responseGenerated_count": {
"type": "string"
},
"knowledge_errorOccurred_count" A quantidade de mensagens de erro na conversa do Conhecimento.
"knowledge_errorOccurred_count": {
"type": "string"
},
"knowledge_escalationRequired_count" A quantidade de mensagens escalationRequired na conversa do Conhecimento. Esse status é aplicável somente para respostas generativas do Conhecimento.
"knowledge_escalationRequired_count": {
"type": "string"
},
"knowledge_fallback_count" A quantidade de mensagens de fallback na conversa do Conhecimento.
"knowledge_fallback_count": {
"type": "string"
},
"knowledge_sources" Uma lista do tipo de base de conhecimento, título do artigo e URL usados ​​na conversa.
"knowledge_sources": {
"type": "array",
"items": {
"type": "string"
}
},
"bot_messages_count" A quantidade de mensagens do agente de IA
"bot_messages_count": {
"type": "string"
},
"visitor_messages_count" A quantidade de mensagens do cliente
 "visitor_messages_count": {
"type": "string"
},
"not_understood_messages_count" A quantidade de mensagens não entendidas em geral
"not_understood_messages_count": {
"type": "string"
},

Exemplo de resposta

A resposta da chamada da API é um link de URL para um arquivo em um bucket de armazenamento do Google que você pode acessar com uma solicitação GET:

{"date":"2024-05-03","urls":["https://storage.googleapis.com/production-eu-ultimateai-backend-data-export/files/your_bot_id/2024-05-0/conversation_your_bot_id_20240503_000000000000.json…"]}

O arquivo contém cada conversa como um objeto JSON seguindo este formato:

{
"bot_id": "98174e8d635471c383b9ec7b",
"bot_name": "INDUSTRY DEMO (Travel) - SunCo",
"conversation_id": "67bc4129-6609-4v67-869d-db1d0186d1d8",
"platform_conversation_id": "57459bd72555b8452378f693",
"conversation_start_time": "2024-05-03T08:10:01.211+00:00",
"conversation_end_time": "2024-05-03T08:10:25.744+00:00",
"language": "eng",
"channel": "chat",
"labels": [
"web",
"API:getBookingDetails-Success"
],
"conversations_data": {
"bsatScore" : 5,
"convoId": "552cd72556e8452378d344",
"email": null,
"location": null,
"confidence_score": 95,
"lastDetectedLanguage": "eng",
"lastDetectedSentiment": "neutral",
"usedLanguage": "eng",
"channel": "web",
"bookingNo": null,
"booking":
[{
"country": "Spain",
"url": "https://cdn.pixabay.com/photo/2015/05/05/01/10/house-753270__340.jpg",
"location": "41.3485806,1.9787689",
"city": "Barcelona",
"numOfGuests": 4,
"days": 4,
"arrivalDate": "12-12-2022"
}],
"city": "Barcelona",
"manageBooking": "possible"
},
"test_mode": false,
"conversation_status": "botHandled",
"last_resolution": "resolved"
"triggered_replies": [
{
"reply_timestamp": "2024-05-03T08:10:02.991+00:00",
"reply_id": "53628e8e55b4f2459bcb2e72",
"reply_language": "eng",
"reply_name": "Greeting",
"reply_type": "normal",
"intent_id": "64628b8e55e4f2459bcb2e68"
},
{
"reply_timestamp": "2024-05-03T08:10:03.355+00:00",
"reply_id": "64628e8e55e4f2459bcb2f4b",
"reply_language": "eng",
"reply_name": "Welcome reply",
"reply_type": "welcome"
},
{
"reply_timestamp": "2024-05-03T08:10:12.951+00:00",
"reply_id": "2475e571f88f9c35af3ff45e",
"reply_language": "eng",
"reply_name": "Office or store location and opening hours",
"reply_type": "normal",
"intent_id": "6385e571f88f9c35af3ff46e"
}
],
"triggered_intent_replies": [
{
"intent_timestamp": "2024-05-03T08:10:02.991+00:00",
"intent_id": "53628e8e55b4f2459bcb2e72",
"intent_name": "Greeting",
"not_meaningful": true
},
{
"intent_timestamp": "2024-05-03T08:10:12.951+00:00",
"intent_id": "6375b571f88f9c35af3ff44e",
"intent_name": "Find location of rental",
"not_meaningful": false
}
],
"is_llm_conversation": false,
"bot_messages_count": "7",
"customer_messages_count": "4",
"not_understood_messages_count": "0"
}

Métricas populares

Parabéns! Você exportou com êxito os dados da conversa do agente de IA. Aqui estão algumas das nossas sugestões para começar a jornada de exploração de dados dos arquivos exportados.

Métricas do agente de IA

SELECT
--Total conversations
count(distinct conversation_id) total_conversations,

--AI agent handled rate
count(distinct case when conversation_status = 'botHandled' then conversation_id end) bot_handled_conversations,
count(distinct case when conversation_status = 'botHandled' then conversation_id end)/count(distinct conversation_id) bot_handled_rate,

--Deflection rate
count(distinct case when conversation_status not in ('email', 'agent', 'customEscalation') then conversation_id end)/count(distinct conversation_id) deflection_rate,

--Escalation rate
count(distinct case when conversation_status in ('email', 'agent', 'customEscalation') then conversation_id end)/count(distinct conversation_id) escalation_rate,

--Failed escalation rate
count(distinct case when conversation_status = 'failedEscalation' then conversation_id end)/count(distinct conversation_id) failed_escalation_rate,

--Message understood rate
(sum(customer_messages_count)-sum(not_understood_messages_count
))/sum(customer_messages_count) messages_understood_rate

FROM TABLE

Primeira/última intenção de uma conversa

select 
distinct conversation_id,
triggered_use_cases[safe_offset(0)].intent_name first_intent,
array_reverse(triggered_intent_replies)[safe_offset(0)].intent_name last_intent
FROM TABLE

Perguntas frequentes

  • Os arquivos exportados são imutáveis ou mudam ao longo do tempo e precisam passar por uma nova sincronização?
    Os arquivos exportados são imutáveis, então não precisam ser reimportados, o que torna seu pipeline de BI menos propenso a erros.
  • Percebo diferenças nos números das conversas para uma data específica entre as conversas exportadas e as análises de resumo do agente de IA. Qual pode ser o motivo?
    Os dados exportados para uma data específica se referem apenas a conversas que terminaram nessa data. Essa é uma abordagem diferente das análises de resumo do agente de IA, que incluem qualquer conversa, em qualquer estado. Isso é feito por diversos motivos, entre os quais: imutabilidade do arquivo exportado e prevenção contra dados duplicados.
  • Então como posso alcançar a paridade entre os números reportados no resumo do agente de IA e nos arquivos exportados?
    Para ter uma visão completa de todas as conversas que aconteceram em determinado dia x, você pode simplesmente ingerir o arquivo gerado para o dia x e o dia x + 1. Ao ingerir arquivos dessas duas datas, você garante que terá considerado todas as conversas da data x, mesmo que elas tenham se estendido ao dia seguinte.
  • Percebo diferenças nos números das conversas para uma data específica entre as conversas exportadas e os registros de conversas. Qual pode ser o motivo?
    Lembre-se de que os dados exportados para uma data específica se referem apenas a conversas que terminaram nessa data. Essa é uma abordagem diferente dos registros de conversas, que incluem qualquer conversa, em qualquer estado, para possibilitar a depuração em tempo real.
  • Uma conversa inclui informações sobre todas as respostas iniciadas por gatilho, mesmo que essas respostas tenham acontecido em um dia anterior?
    Sim. Se uma conversa constar no arquivo, ele terá todos os dados dela, mesmo que ela tenha ocorrido em um dia anterior.
  • Meu agente virtual tem conversas como parte do mecanismo de sugestão. Elas vão aparecer na exportação?
    Sim. Embora elas sejam excluídas do painel de resumo do agente de IA, elas ainda estarão disponíveis nos dados exportados. Para excluí-las e alcançar paridade com o painel de resumo do agente de IA, filtre por "bot_messages_count > 0".

 

Powered by Zendesk