Speichern von Anrufprotokollen in einer externen Datenquelle

In diesem Lernprogramm wird erläutert, wie Sie Ihre Anrufprotokolle in einer externen Datenquelle speichern können, um ein besseres Verständnis für Ihre Daten zu erhalten. Es gibt viele Orte, an denen Anrufprotokolle gespeichert werden können (Google Sheets, Excel usw.). In diesem Beispiel werden wir unsere Anrufprotokolle in einer JSON-Liste speichern, die als Datenquelle für Tableau verwendet werden kann.

Voraussetzungen

Bevor Sie loslegen können, benötigen Sie einen Vonage Developer Account. Wenn Sie noch keinen Vonage Developer Account haben, verwenden Sie bitte diesen Leitfaden um Ihren Account einzurichten und zu erstellen.

Nachdem Sie einen Account eingerichtet haben, müssen Sie die folgenden Schritte anhand dieser Anleitungen durchführen:

Für dieses Beispiel müssen Sie sich bei der Reports API.

Authentifizierung

Nachdem Sie eine Anwendung erstellt und die Reports API abonniert haben, müssen Sie sich nun mit Ihren Vonage Business Communications Anmeldedaten anmelden. Sehen Sie sich die Anleitung zur Erstellung einer API-Anfrage für weitere Einzelheiten.

Als nächstes erstellen wir eine Funktion, die die /token API, um ein Zugriffs-Token zu generieren.

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()

Um diese Funktion auszuführen, müssen Sie die folgenden Angaben machen:

  • USERNAME - Vonage Business Communications-Benutzername. Stellen Sie sicher, dass Sie Folgendes anhängen @vbc.prod zum Benutzernamen. firstname.lastname@vbc.prod.
  • PASSWORD - Passwort für Vonage Business Communications.
  • CLIENT_ID - Die Client-ID Ihrer Vonage Developer-Anwendung.
  • SECRET - Das Geheimnis Ihrer Vonage Developer-Anwendung.

Nachdem Sie diese Funktion ausgeführt haben, sollten Sie die folgende Antwort erhalten:

{
  "access_token": "abc123-xxxxx-xxxxx",
  "expires_in": 9999,
  "refresh_token": "def456-xxxx-xxxx",
  "scope": "default",
  "token_type": "Bearer"
}

Anrufprotokolle API

Der nächste Schritt besteht darin, die Liste der Anrufe aus der API für Anrufprotokolle abzurufen. Mit dieser Funktion können wir eine Liste von Aufrufen mit einem Start- und einem Enddatum zurückgeben. Wenn es mehr Ergebnisse gibt als die Anzahl der Elemente, die wir mit dem Parameter page_size angefordert haben, ruft diese Funktion auch diese anderen Seiten ab.

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

Als Nächstes müssen wir ein Start- und ein Enddatum erstellen, die wir an die Funktion übergeben. Das Startdatum liegt 1 Tag in der Vergangenheit und das Enddatum liegt 1 Minute vor Mitternacht des aktuellen Tages.

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)

Wir rufen dann die get_reports() Funktion eine Liste von Aufrufen zwischen diesen 2 Daten zurückgeben. Als Nächstes müssen wir dann eine JSON-Datei erstellen, die eine Liste dieser Protokolle enthält.

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)

Hier erstellen wir 2 Funktionen zum Lesen und Schreiben in eine JSON-Datei. Wir lesen dann unsere JSON-Datei. Wenn die Datei nicht existiert, geben wir eine leere Liste zurück([]). Als nächstes müssen wir unsere Anrufprotokolle in die JSON-Datei einfügen, indem wir die extend() Funktion. Schließlich müssen wir diese Liste wieder in die JSON-Datei laden. Für jeden Tag, an dem wir diese Funktion ausführen, fügen wir die neuesten Anrufprotokolle in der JSON-Datei an.

CRON-Auftrag

Der letzte Schritt ist die Ausführung unserer Skript jeden Tag mit einem CRON-Job. Auf diese Weise müssen wir diese Funktionen nicht manuell ausführen. Mit einem CRON-Job können Sie Skripte in regelmäßigen Abständen zu bestimmten Zeiten, Daten oder Intervallen ausführen lassen. Sie können einen CRON-Job lokal erstellen, indem Sie zunächst crontab -e auf einem OSX/Linux-basierten System.

Für einen Windows-Rechner:

  • Melden Sie sich mit einem privilegierten Account an, z. B. Administrator
  • Gehen Sie zu Start > Systemsteuerung > System und Sicherheit > Verwaltung > Taskplaner
  • Klicken Sie im rechten Fenster auf Basisaufgabe erstellen

Unser CRON-Auftrag wird folgendermaßen aussehen:

* 0 * * * get_call_logs.py >/dev/null 2>&1

Dieser wird jeden Tag um Mitternacht ausgeführt. Um Ihren eigenen CRON-Job zu erstellen, lesen Sie bitte https://crontab-generator.org/.

In Tableau importieren

In diesem Beispiel werden wir Tableau verwenden, um ein Dashboard aus unseren Anrufprotokolldaten zu erstellen. Es wird in etwa so aussehen:

Klicken Sie zunächst in Tableau auf Connect To Data und unter To a file, klicken JSON file Suchen Sie dann die JSON-Datei, die die Anrufprotokolle enthält. Sie können optional ein paar Spalten auswählen. Navigieren Sie dann zu Sheet 1 um Ihre Daten einzusehen.

Gehen Sie dann zu Sheet 1 und in der Folders Abschnitt, klicken Sie mit der rechten Maustaste auf den End Parameter und setzen Change Data Type zu Date.

Ziehen Sie dann die End in den Abschnitt Spalten. Klicken Sie anschließend mit der rechten Maustaste auf den End und ändern in Day. Ziehen Sie dann die Count unter dem Parameter Measured Names in den Zeilenbereich. Sie sollten dann ein Zeilendiagramm für die Anzahl der Anrufe pro Tag sehen.

Da unser CRON-Job täglich ausgeführt wird, aktualisiert sich unser Tableau-Dashboard mit den neuen Anrufprotokollen. Vergessen Sie nicht, das JSON an demselben Ort zu speichern, an dem Sie ursprünglich die Datenquelle für Tableau hinzugefügt haben

Schlussfolgerung

In diesem Beispiel haben wir gesehen, wie man eine Funktion erstellt, die eine Liste von Anrufprotokollen für einen bestimmten Tag liefert. Wenn Sie diese Daten in ein Dashboard wie Tableu übertragen, kann Ihr Team den Anrufverkehr analysieren. Unser Dashboard zeigt nur die Anzahl der Anrufe pro Tag an, aber Sie können es so anpassen, dass die Anzahl der ein- und ausgehenden Anrufe, die durchschnittlichen Kosten pro Tag, die durchschnittliche Dauer der Anrufe und vieles mehr angezeigt werden.