Get Advisor Conversations
curl --request POST \
--url https://api.jelou.ai/v1/metrics/conversations/attended/external \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"startAt": "2023-11-07T05:31:56Z",
"endAt": "2023-11-07T05:31:56Z",
"getJson": true
}
'import requests
url = "https://api.jelou.ai/v1/metrics/conversations/attended/external"
payload = {
"startAt": "2023-11-07T05:31:56Z",
"endAt": "2023-11-07T05:31:56Z",
"getJson": True
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({startAt: '2023-11-07T05:31:56Z', endAt: '2023-11-07T05:31:56Z', getJson: true})
};
fetch('https://api.jelou.ai/v1/metrics/conversations/attended/external', 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://api.jelou.ai/v1/metrics/conversations/attended/external",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'startAt' => '2023-11-07T05:31:56Z',
'endAt' => '2023-11-07T05:31:56Z',
'getJson' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.jelou.ai/v1/metrics/conversations/attended/external"
payload := strings.NewReader("{\n \"startAt\": \"2023-11-07T05:31:56Z\",\n \"endAt\": \"2023-11-07T05:31:56Z\",\n \"getJson\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.jelou.ai/v1/metrics/conversations/attended/external")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"startAt\": \"2023-11-07T05:31:56Z\",\n \"endAt\": \"2023-11-07T05:31:56Z\",\n \"getJson\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.jelou.ai/v1/metrics/conversations/attended/external")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"startAt\": \"2023-11-07T05:31:56Z\",\n \"endAt\": \"2023-11-07T05:31:56Z\",\n \"getJson\": true\n}"
response = http.request(request)
puts response.read_body{
"message": [
"<string>"
],
"status": "<string>",
"results": [
{
"_id": "<string>",
"operator": {
"names": "<string>"
},
"user": {
"id": "<string>"
},
"bot": {
"name": "<string>"
},
"company": {
"id": "<string>"
},
"assignationMethod": {
"teamName": "<string>"
},
"endedReason": "<string>",
"startAt": "<string>",
"endAt": "<string>",
"origin": "<string>",
"timeRepliedOperator": 123,
"conversationDuration": 123
}
],
"pagination": {
"limit": 123,
"page": 123,
"total": 123,
"offset": 123,
"totalPages": 123
},
"links": [
{}
]
}{
"message": "<string>",
"statusMessage": "<string>",
"status": 123,
"error": {
"code": "<string>",
"key": "<string>",
"description": "<string>",
"developerMessages": {},
"clientMessages": {}
},
"validationError": {}
}{
"message": "<string>",
"statusMessage": "<string>",
"status": 123,
"error": {
"code": "<string>",
"key": "<string>",
"description": "<string>",
"developerMessages": {},
"clientMessages": {}
},
"validationError": {}
}Conversações
Conversas de agentes
Consulte conversas atendidas por agentes humanos
POST
/
v1
/
metrics
/
conversations
/
attended
/
external
Get Advisor Conversations
curl --request POST \
--url https://api.jelou.ai/v1/metrics/conversations/attended/external \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"startAt": "2023-11-07T05:31:56Z",
"endAt": "2023-11-07T05:31:56Z",
"getJson": true
}
'import requests
url = "https://api.jelou.ai/v1/metrics/conversations/attended/external"
payload = {
"startAt": "2023-11-07T05:31:56Z",
"endAt": "2023-11-07T05:31:56Z",
"getJson": True
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({startAt: '2023-11-07T05:31:56Z', endAt: '2023-11-07T05:31:56Z', getJson: true})
};
fetch('https://api.jelou.ai/v1/metrics/conversations/attended/external', 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://api.jelou.ai/v1/metrics/conversations/attended/external",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'startAt' => '2023-11-07T05:31:56Z',
'endAt' => '2023-11-07T05:31:56Z',
'getJson' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.jelou.ai/v1/metrics/conversations/attended/external"
payload := strings.NewReader("{\n \"startAt\": \"2023-11-07T05:31:56Z\",\n \"endAt\": \"2023-11-07T05:31:56Z\",\n \"getJson\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.jelou.ai/v1/metrics/conversations/attended/external")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"startAt\": \"2023-11-07T05:31:56Z\",\n \"endAt\": \"2023-11-07T05:31:56Z\",\n \"getJson\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.jelou.ai/v1/metrics/conversations/attended/external")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"startAt\": \"2023-11-07T05:31:56Z\",\n \"endAt\": \"2023-11-07T05:31:56Z\",\n \"getJson\": true\n}"
response = http.request(request)
puts response.read_body{
"message": [
"<string>"
],
"status": "<string>",
"results": [
{
"_id": "<string>",
"operator": {
"names": "<string>"
},
"user": {
"id": "<string>"
},
"bot": {
"name": "<string>"
},
"company": {
"id": "<string>"
},
"assignationMethod": {
"teamName": "<string>"
},
"endedReason": "<string>",
"startAt": "<string>",
"endAt": "<string>",
"origin": "<string>",
"timeRepliedOperator": 123,
"conversationDuration": 123
}
],
"pagination": {
"limit": 123,
"page": 123,
"total": 123,
"offset": 123,
"totalPages": 123
},
"links": [
{}
]
}{
"message": "<string>",
"statusMessage": "<string>",
"status": 123,
"error": {
"code": "<string>",
"key": "<string>",
"description": "<string>",
"developerMessages": {},
"clientMessages": {}
},
"validationError": {}
}{
"message": "<string>",
"statusMessage": "<string>",
"status": 123,
"error": {
"code": "<string>",
"key": "<string>",
"description": "<string>",
"developerMessages": {},
"clientMessages": {}
},
"validationError": {}
}Recupere conversas atendidas por um agente humano para analisar tempos de resposta, estados de encerramento e atribuições. Você recebe metadados sobre operadores, usuários e canais envolvidos dentro de um intervalo de datas definido.
Endpoint
POST https://api.jelou.ai/v1/metrics/conversations/attended/external
Autenticação
| Campo | Localização | Tipo | Obrigatório | Descrição |
|---|---|---|---|---|
| Authorization | Header | string | Sim | Credenciais no formato clientId:clientSecret. |
Parâmetros de Query
| Campo | Localização | Tipo | Obrigatório | Valor padrão | Descrição |
|---|---|---|---|---|---|
| limit | Query | integer | Não | 10 | Número máximo de conversas por página. |
| page | Query | integer | Não | 1 | Número da página para paginação. |
Corpo da Requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| startAt | string | Sim | Data de início do intervalo no formato ISO 8601. Exemplo: 2025-01-01T00:00:00-05:00 |
| endAt | string | Sim | Data de término do intervalo no formato ISO 8601. Exemplo: 2025-01-01T23:59:59-05:00 |
| getJson | boolean | Sim | Deve ser true para receber a resposta em formato JSON. |
Use janelas de tempo delimitadas para otimizar a consulta e evitar intervalos muito amplos se você gerencia altos volumes de conversas.
Exemplos de Requisição
- cURL
- JavaScript
curl -X POST 'https://api.jelou.ai/v1/metrics/conversations/attended/external?limit=10' \
-H 'Authorization: <clientId>:<clientSecret>' \
-H 'Content-Type: application/json;charset=UTF-8' \
-d '{
"startAt": "2025-01-01T00:00:00-05:00",
"endAt": "2025-01-01T23:59:59-05:00",
"getJson": true
}'
const axios = require('axios');
axios({
method: 'POST',
url: 'https://api.jelou.ai/v1/metrics/conversations/attended/external',
params: { limit: 10 },
headers: {
'Content-Type': 'application/json;charset=UTF-8',
'Authorization': '<clientId>:<clientSecret>'
},
data: {
startAt: '2025-01-01T00:00:00-05:00',
endAt: '2025-01-01T23:59:59-05:00',
getJson: true
}
});
Respostas
200 - Resposta bem-sucedida
200 - Resposta bem-sucedida
{
"message": ["Retrieving conversations succeeded"],
"status": "success",
"results": [
{
"_id": "CONVERSATION_ID",
"operator": {
"names": "OPERATOR_NAME"
},
"user": {
"id": "ID"
},
"bot": {
"name": "BOT_NAME"
},
"company": {
"id": "COMPANY_ID"
},
"assignationMethod": {
"teamName": "TEAM_NAME"
},
"state": "expired",
"endedReason": "expired",
"startAt": "2023-06-08 15:52:41",
"endAt": "2023-06-08 23:07:56",
"origin": "ticket",
"timeRepliedOperator": 795880,
"conversationDuration": 26115953
}
],
"pagination": {
"limit": 1,
"total": 61,
"offset": 0,
"totalPages": 61
},
"links": [
{
"number": 1,
"url": "/v1/metrics/conversations/attended/external?limit=1&page=1"
},
{
"number": 2,
"url": "/v1/metrics/conversations/attended/external?limit=1&page=2"
}
]
}
401 - Não Autorizado
401 - Não Autorizado
{
"message": "Authentication failed"
}
422 - Entidade não processável
422 - Entidade não processável
{
"message": ["The values entered are not correct."],
"statusMessage": "failed",
"status": 0,
"error": {
"code": "E0422",
"key": "VALIDATOR_ERROR"
}
}
429 - Muitas Requisições
429 - Muitas Requisições
{
"message": "Rate limit exceeded"
}
500 - Erro Interno do Servidor
500 - Erro Interno do Servidor
{
"message": ["We are having trouble processing your request. Please try again later."],
"statusMessage": "failed",
"status": 0
}
Detalhes da Resposta
Objeto results
| Campo | Tipo | Descrição |
|---|---|---|
| _id | string | Identificador único da conversa. |
| operator | object | Informações sobre o operador que atendeu a conversa (names). |
| user | object | Informações do usuário (id). |
| bot | object | Informações do canal associado (name). |
| company | object | Informações da empresa (id). |
| assignationMethod | object | Método de atribuição e equipe (teamName). |
| state | string | Estado da conversa: active, closed, resolved, expired. |
| endedReason | string | Motivo pelo qual a conversa terminou. |
| startAt | string | Data e hora de início da conversa. |
| endAt | string | Data e hora de término da conversa. |
| origin | string | Origem da conversa (ex.: ticket). |
| timeRepliedOperator | number | Tempo de resposta do operador em milissegundos. |
| conversationDuration | number | Duração total da conversa em milissegundos. |
Objeto pagination
| Campo | Tipo | Descrição |
|---|---|---|
| limit | integer | Conversas retornadas por página. |
| total | integer | Total de conversas que correspondem aos filtros. |
| offset | integer | Conversas ignoradas de acordo com a página solicitada. |
| totalPages | integer | Número total de páginas disponíveis. |
Objeto links
| Campo | Tipo | Descrição |
|---|---|---|
| number | integer | Número da página. |
| url | string | URL relativa para acessar essa página. |
Métricas de desempenho
Use os campos
timeRepliedOperator e conversationDuration para analisar a eficiência da sua equipe de suporte:- timeRepliedOperator: Mede o tempo que um agente leva para dar a primeira resposta (em milissegundos).
- conversationDuration: Mede a duração total desde o início até o encerramento da conversa (em milissegundos).
Autorizações
Basic authentication using Base64 encoded clientId:clientSecret
Corpo
application/json
Esta página foi útil?
⌘I