Salvar registros de chamadas em uma fonte de dados externa
Neste tutorial, vamos explicar como salvar seus registros de chamadas em uma fonte de dados externa para que você possa entender melhor seus dados. Existem vários locais onde os registros de chamadas podem ser salvos (Google Sheets, Excel e assim por diante). Para este exemplo, vamos salvar nossos registros de chamadas em uma lista JSON, que pode ser usada como fonte de dados para o Tableau.
Pré-requisitos
Antes de começar, você precisará ter um Account de desenvolvedor da Vonage. Se você não tiver um Account de desenvolvedor da Vonage, use este guia para configurar e criar sua conta.
Depois de criar um Account, você precisará seguir estas etapas, utilizando estes guias:
Para este exemplo, você precisará se inscrever no Reports API.
Autenticação
Depois de criar uma aplicação e se inscrever na Reports API, você precisará agora fazer login usando suas credenciais do Vonage Business Communications. Confira o Guia para fazer uma solicitação de API para mais detalhes.
A seguir, vamos criar uma função que solicite o /token API para gerar um token de acesso.
def get_token():
url = "https://api.vonage.com/token"
payload = 'grant_type=password&username={}&password={}&client_id={}&client_secret={}'.format(USERNAME, PASSWORD, CLIENT_ID, SECRET)
headers = {
'Content-Type': 'application/x-www-form-urlencoded'
}
response = requests.request("POST", url, headers=headers, data = payload)
return response.json()
Para executar essa função, você precisará passar os seguintes parâmetros:
USERNAME- Nome de usuário do Vonage Business Communications. Certifique-se de acrescentar@vbc.prodao nome de usuário.firstname.lastname@vbc.prod.PASSWORD- Senha do Vonage Business Communications.CLIENT_ID- O ID de cliente do seu aplicativo Vonage Developer.SECRET- A senha para sua inscrição no Programa de Desenvolvedores da Vonage.
Após executar essa função, você deverá ver a seguinte resposta:
{
"access_token": "abc123-xxxxx-xxxxx",
"expires_in": 9999,
"refresh_token": "def456-xxxx-xxxx",
"scope": "default",
"token_type": "Bearer"
}
API de registros de chamadas
O próximo passo é obter a lista de chamadas por meio da API de registros de chamadas. Podemos usar essa função para retornar uma lista de chamadas por data de início e data de término. Se houver mais resultados do que o número de itens solicitados pelo parâmetro `page_size`, essa função também recuperará essas outras páginas.
results = []
def get_reports(token, account_id, start_date, end_date, order="asc", page_size=10, page=1):
url = "https://api.vonage.com/t/vbc.prod/reports/v1/accounts/{}/call-logs?start:gte={}&start:lte={}&page_size={}&page={}&order={}".format(account_id, start_date, end_date, page_size, page, order)
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {}'.format(token),
}
response = requests.request("GET", url, headers=headers).json()
if "_embedded" in response:
results.extend(response["_embedded"]["call_logs"])
if page < response["total_page"]:
page = page + 1
get_reports(token, account_id, start_date, end_date, page_size=page_size, page=page)
return results
Em seguida, precisaremos definir uma data inicial e uma data final para passar à função. A data inicial será 1 dia antes, e a data final será 1 minuto antes da meia-noite do dia atual.
import datetime
from datetime import timedelta
today = datetime.datetime.now()
today_str = today.strftime('%Y-%m-%d 00:00:00')
yesterday = today - timedelta(days = 1)
yesterday_str = yesterday.strftime('%Y-%m-%d 23:59:59')
access_token = get_token()["access_token"]
reports = get_reports(access_token,account_id={YOUR_ACCOUNT_ID}, start_date=today_str, end_date=yesterday_str)
Em seguida, chamamos a get_reports() função para retornar uma lista de chamadas realizadas entre essas duas datas. Em seguida, precisaremos criar um arquivo JSON que contenha uma lista desses registros.
import json
def write_json(data, filename='data.json'):
with open(filename,'w') as f:
return json.dump(data, f)
def read_json(filename='data.json'):
try:
with open(filename) as json_file:
return json.load(json_file)
except IOError:
return []
data = read_json()
data.extend(reports)
write_json(data)
Aqui, criamos duas funções para ler e gravar em um arquivo JSON. Em seguida, lemos nosso arquivo JSON. Se o arquivo não existir, retornamos uma lista vazia ([]). Em seguida, precisamos adicionar nossos registros de chamadas ao arquivo JSON usando o extend() função. Por fim, precisamos carregar essa lista de volta no arquivo JSON. A cada dia em que executarmos essa função, acrescentaremos os registros de chamadas mais recentes ao arquivo JSON.
Tarefa CRON
A etapa final é executar nosso roteiro todos os dias por meio de uma tarefa CRON. Dessa forma, não precisaremos executar essas funções manualmente. O CRON é uma forma de executar scripts periodicamente em horários, datas ou intervalos fixos.
Você pode criar uma tarefa CRON localmente executando primeiro crontab -e em um sistema baseado em OSX/Linux.
Para um computador com Windows:
- Faça login com um account com privilégios, por exemplo, Administrador
- Vá para Iniciar > Painel de Controle > Sistema e Segurança > Ferramentas Administrativas > Agendador de Tarefas
- No painel à direita, clique em “Criar tarefa básica”
Nossa tarefa CRON ficará assim:
Isso será executado todos os dias à meia-noite. Para criar sua própria tarefa CRON, confira https://crontab-generator.org/.
Importar para o Tableau
Neste exemplo, usaremos o Tableau para criar um painel a partir dos dados do nosso registro de chamadas. Ele ficará mais ou menos assim:

Primeiro, no Tableau, clique em Connect To Data e abaixo de To a file, clique em JSON file
Em seguida, localize o arquivo JSON que contém os registros de chamadas. Opcionalmente, você pode selecionar algumas colunas. Depois, acesse Sheet 1 para visualizar seus dados.
Em seguida, acesse Sheet 1 e no Folders seção, clique com o botão direito do mouse no End parâmetro e definir Change Data Type para Date.

Em seguida, arraste o End parâmetro na seção “Colunas”. Em seguida, clique com o botão direito do mouse no End parâmetro e altere para Day.
Em seguida, arraste o Count parâmetro sob o Measured Names seção para a seção de linhas. Você deverá ver, então, um gráfico de linhas com o número de chamadas por dia.
Como nossa tarefa CRON é executada diariamente, nosso painel do Tableau será atualizado automaticamente com os novos registros de chamadas. Não se esqueça de salvar o arquivo JSON no mesmo local em que você adicionou originalmente a fonte de dados para o Tableau
Conclusão
Neste exemplo, vimos como criar uma função que retorna uma lista de registros de chamadas para um determinado dia. Ao enviar esses dados para um painel como o Tableau, sua equipe poderá analisar o tráfego de chamadas. Nosso painel mostra apenas o número de chamadas por dia, mas você pode personalizá-lo para exibir o número de chamadas recebidas e realizadas, o custo médio por dia, a duração média das chamadas e muito mais.