curl --request GET \
--url https://data-api.morada.ai/v1/analytics/conversations/{granularity} \
--header 'Authorization: Bearer <token>'import requests
url = "https://data-api.morada.ai/v1/analytics/conversations/{granularity}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://data-api.morada.ai/v1/analytics/conversations/{granularity}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://data-api.morada.ai/v1/analytics/conversations/{granularity}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://data-api.morada.ai/v1/analytics/conversations/{granularity}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://data-api.morada.ai/v1/analytics/conversations/{granularity}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://data-api.morada.ai/v1/analytics/conversations/{granularity}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"granularity": "<string>",
"tz": "<string>",
"from": "<string>",
"to": "<string>",
"as_of": "<string>",
"stale": true,
"group_by": [
"<string>"
],
"data": [
{
"period": "<string>",
"conversations_started": 123,
"conversations_answered": 123,
"conversations_no_response": 123,
"appointments": 123
}
],
"count": 123
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Analytics de conversas
Agregações aditivas (dia/semana/mês × dimensão) das conversas do seu workspace, no formato pronto para BI.
curl --request GET \
--url https://data-api.morada.ai/v1/analytics/conversations/{granularity} \
--header 'Authorization: Bearer <token>'import requests
url = "https://data-api.morada.ai/v1/analytics/conversations/{granularity}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://data-api.morada.ai/v1/analytics/conversations/{granularity}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://data-api.morada.ai/v1/analytics/conversations/{granularity}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://data-api.morada.ai/v1/analytics/conversations/{granularity}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://data-api.morada.ai/v1/analytics/conversations/{granularity}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://data-api.morada.ai/v1/analytics/conversations/{granularity}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"granularity": "<string>",
"tz": "<string>",
"from": "<string>",
"to": "<string>",
"as_of": "<string>",
"stale": true,
"group_by": [
"<string>"
],
"data": [
{
"period": "<string>",
"conversations_started": 123,
"conversations_answered": 123,
"conversations_no_response": 123,
"appointments": 123
}
],
"count": 123
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}conversations_started, conversations_answered, conversations_no_response, appointments, transferred. Para as taxas (resposta, agendamento), divida você mesmo o numerador pelo denominador.
agent_type para ampliar. Os dados têm até ~6h de defasagem — veja as_of / stale na resposta e o header X-Data-As-Of.Authorizations
Workspace API key no formato mk_..., gerada na plataforma em Integrações → Configurar API.
Path Parameters
Tamanho do balde. Um de: day, week (segunda-feira ISO), month.
day, week, month Query Parameters
Data ISO (limite inferior, inclusivo). Padrão: 30 dias atrás.
Data ISO (limite superior, exclusivo). Padrão: agora.
Timezone IANA para o agrupamento por dia. Padrão: America/Sao_Paulo.
Lista separada por vírgulas das dimensões permitidas: agent_type, agent_id, source.
Filtro / sobrescrita de escopo: lista separada por vírgulas dos tipos de agente a incluir (os mesmos valores que aparecem na dimensão agent_type dos resultados). Sobrescreve o recorte padrão.
Filtro: lista separada por vírgulas de ids de agente.
Filtro: lista separada por vírgulas de origens.
Response
Linhas agregadas de componentes aditivos.
Granularidade aplicada (day, week ou month).
Timezone IANA usado no agrupamento.
Limite inferior efetivo da janela.
Limite superior efetivo da janela.
Momento (ISO 8601) da última execução de ETL bem-sucedida deste metricset; null quando desconhecido.
true quando os dados estão defasados (mais que ~2× a cadência de 6h) ou o frescor é desconhecido.
Dimensões aplicadas no agrupamento.
Uma linha por balde × combinação de dimensões. Cada dimensão de group_by aparece como uma chave adicional na linha.
Show child attributes
Show child attributes
Número de linhas em data.
Was this page helpful?