Skip to content
This repository has been archived by the owner on Jun 10, 2020. It is now read-only.
/ CalltouchAPI Public archive

Простой класс для работы с API сервиса Calltouch на языке Python

Notifications You must be signed in to change notification settings

hexeh/CalltouchAPI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 

Repository files navigation

CalltouchAPI

Простой класс для работы с API сервиса Calltouch на языке Python


Документация по API Calltouch


Использование

Инициализация

Для начала работы с API Calltouch необходимо получить ключ доступа и идентификатор сайта (подробнее).

""" Инициализация класса """
config = {
		'calltouch': [
		{'name': 'Сайт №1', 'siteId': 1, 'token': 'aa'},
		{'name': 'Сайт №2', 'siteId': 2, 'token': 'bb'},
		{'name': 'Сайт №3', 'siteId': 3, 'token': 'cc'}
		]
	}

# Конфигурацию можно брать и из файла
# config_file = open('configs/calltouch.json')
# config = json.load(config_file)
# config_file.close()

for i in config['calltouch']:
	ct = CalltouchApi(i['siteId'], i['token'])

Получение статистики по звонкам

API допускает получать статистику по звонкам 2 способами:

В случае использования этого варианта имеется возможность уточнять степень детализации статистики:

  • Суммарное количество звонков за выбранный период
from calltouch_definition import CalltouchApi

ct = CalltouchApi(config)
stats = ct.captureStats('11/07/2017', '11/07/2017')
"""Помимо такого использования, можно явно указать степень разбиения статистики.
Например:
stats = ct.captureStats('11/07/2017', '11/07/2017', 'callsTotal')
"""
print(stats)
  • Суммарное количество звонков за выбранный период в разбивке по дням
import pprint
from calltouch_definition import CalltouchApi

pp = pprint.PrettyPrinter(indent = 4)
ct = CalltouchApi(config)
stats = ct.captureStats('11/07/2017', '11/07/2017', 'callsByDate')

print(stats)
  • Суммарное количество звонков из поисковых систем в разбивке по дням
import pprint
from calltouch_definition import CalltouchApi

pp = pprint.PrettyPrinter(indent = 4)
ct = CalltouchApi(config)
stats = ct.captureStats('11/07/2017', '11/07/2017', 'callsByDateSeoOnly')

print(stats)
  • Суммарное количество звонков из поисковых систем в разбивке по ключевым фразам
import pprint
from calltouch_definition import CalltouchApi

pp = pprint.PrettyPrinter(indent = 4)
ct = CalltouchApi(config)
stats = ct.captureStats('11/07/2017', '11/07/2017', 'callsByKeywords')

print(stats)

Входные параметры метода captureStats:

  • Дата начала сбора статистики (в формате dd/mm/yyyy)
  • Дата окончания сбора статистики (в формате dd/mm/yyyy)
  • Разбиение (необязательный параметр, в случае задания возможные значения: callsTotal, callsByDate, callsByDateSeoOnly, callsByKeywords)

Возвращаемое значение отличается в зависимости от выбранного типа разбиения:

  • При выборе статистики без разбивки возвращается целое число
  • При выборе статистики с разбивкой по дням (вне зависимости от того, выбираются все звонки или только из поисковых систем) возвращается список словарей с ключами date и calls
  • Пот выборе статистики с разбивкой по ключевым словам возвращается список словарей с ключами keyword и calls

При использовании этого варианта имеется возможность указать ряд параметров, в текущей реализации предусмотрена только их часть:

  • Модель атрибуции (последнее (0) или последнее непрямое (1) взаимодействие)
  • Возвращать только целевые звонки
  • Возвращать только уникальные звонки
  • Возвращать только уникально-целевые звонки
  • Возвращать только обратные звонки

Кроме того, метод позволяет получать статистику только за один день.

import pprint
from calltouch_definition import CalltouchApi

pp = pprint.PrettyPrinter(indent = 4)
ct = CalltouchApi(config)
stats = ct.captureCalls('11/07/2017')

print(stats)

Входные параметры метода captureCalls:

  • Дата сбора статистики (в формате dd/mm/yyyy)
  • Модель атрибуции (1 или 0)
  • Только целевые звонки (True, False)
  • Только уникальные звонки (True, False)
  • Только уникально-целевые звонки (True, False)
  • Только обратные звонки (True, False)
  • Возвращаемые данные в сыром или агрегированном по кампаниям виде (True, False)
  • Загрузка статистики за один день или период с указанной даты по вчерашний день (True, False)

Возвращаемое значение представляет собой список словарей следующего вида (в случае агрегированных данных):

{
  "date": "Дата из входных параметров",
  "source": "Источник трафика, с которого поступили звонки",
  "name": "Значение из utm_campaign для звонков",
  "ordinaryCalls": "Общее количество звонков для такой комбинации источника/кампании",
  "uniqCalls": "Количество уникальных звонков для такой комбинации источника/кампании",
  "targetCalls": "Количество целевых звонков для такой комбинации источника/кампании",
  "uniqTargetCalls": "Количество уникально-целевых звонков для такой комбинации источника/кампании"
}

Возможность скачивания записей звонков в формате mp3 реализована при помощи метода captureRecords

import pprint
from calltouch_definition import CalltouchApi

pp = pprint.PrettyPrinter(indent = 4)
ct = CalltouchApi('PasteYourSiteIdHere', 'PasteYourTokenHere')
stats = ct.captureCalls('11/07/2017', '1', 'false', 'false', 'false', 'false')
totalCallIDs = [i['callIDs'] for i in result]
totalCallIDs = [y for x in totalCallIDs for y in x]

saveResults = [ct.captureRecords('PasteYourNodeAddressHere', i) for i in totalCallIDs]
pp.pprint(saveResults)

Входные параметры метода captureRecords:

  • Адрес API-сервера для выбранного ранее сайта (определить можно при помощи формы в руководстве)
  • Идентификатор звонка в системе Calltouch

Возвращаемое значение представляет собой словарь следующего вида:

 {
   "status": "True|False",
   "message": "Сообщение о результате выполнения"
 }

В сообщение о результате выполнения записывает либо название файла, если сохранение завершено успешно, либо код ошибки от API-сервиса.

Зависимости

  • Python3+
  • Модули:
    • urllib
    • json
    • requests
    • BytesIO

About

Простой класс для работы с API сервиса Calltouch на языке Python

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages