1.1.1 • Published 6 years ago

mango-dct v1.1.1

Weekly downloads
1
License
MIT
Repository
github
Last release
6 years ago

npm version Build status branch:master coverage

Библиотека для API динамического коллтрекинга от MANGO OFFICE

API динамического коллтрекинга от Манго Офис

Установка

npm install mango-dct

Требования

NodeJS версии 8 или более

Токен

Токен можно задать через переменную process.env.TOKEN

Или передать первый аргумент в конструктор new MangoDct('your-token-here', 'your-widget-id');

ID виджета

ID виджета можно задать через переменную process.env.WID

Или передать второй аргумент в конструктор new MangoDct('your-token-here', 'your-widget-id');

Пример использования

const MangoDct = require('mango-dct');
const dct = new MangoDct();

async function main() {
    const parameters = {
        lastDays: 31,
        utmSource: 'yandex.ru',
        utmMedium: 'cpc',
        utmCampaign: 'skidka50'
    };

    const calls = await dct.calls(parameters);
    console.log('выгруженные звонки', calls);
}
main();

Все примеры

класс MangoDct

Создание нового экземпляра

new MangoDct('your-token-here', 'your-widget-id');
АргументТипОписание
tokenstringтокен
widstringидентификатор виджета

метод calls

Данный метод возвращает список звонков на все подменные номера (включая номера статических каналов) за определенный промежуток времени. Список отсортирован по убыванию.

MangoDct.calls(options); // => Promise<any[]>
АргументТипОписание
optionsobjectОбъект содержит фильтры выгрузки

Период выгрузки можно задать несколькими способами:

// за последний 31 день
MangoDct.calls({ lastDays: '31' });

или

// с 01 июня 2016 по 30 июня 2016
MangoDct.calls({ dateStart: '2017-06-01T00:00', dateEnd: '2017-06-30T00:00Z' });

или

// за вчера
MangoDct.calls({ yesterday: true })

или

// за сегодня
MangoDct.calls({ today: true })

Возможные фильтры:

НазваниеОбязательностьТипОписаниеЗначение по умолчанию
dateStartrequiredstringдата и время в формате ISO 8601
dateEndrequiredstringдата и время формате ISO 8601
callTypeoptionalnumberТип звонка: 0 - динамические и статические, 1 - динамические, 2 - статические, 3 - дефолтные0
isNewoptionalnumberФлаг нового звонка: 0 - все звонки, 1 - только новые0
isQualityoptionalnumberФлаг качественного звонка: 0 - все звонки, 1 - только качественные0
utmSourceoptionalstringИсточник
utmMediumoptionalstringКанал
utmCampaignoptionalstringКампания
utmContentoptionalstringСодержание
utmTermoptionalstringКлючевое слово

По-умолчанию для выгрузки используется формат json. Для записи звонков в csv файл небходимо задать свойство options.csv :

MangoDct.calls({ today: true, csv: 'C:/mango-dct/downloads/calls.csv' });

метод createWebhook

Создает вебхук для прослушивания событий

MangoDct.createWebhook(url); // => Webhooks
АргументТипОписание
urlstringurl адрес вебхука

Пример использования:

const MangoDct = require('mango-dct');
const app = require('express')();
const dct = new MangoDct();

// создание  вебхуков
const webhook1 = dct.createWebhook('/mango-dct/webhook1');
const webhook2 = dct.createWebhook('/mango-dct/webhook2');
const webhook3 = dct.createWebhook('/mango-dct/webhook3');

// прослушивание вебхуков
webhook1.on('data', e => console.log('on webhook1', e));
webhook2.on('data', e => console.log('on webhook2', e));
webhook3.on('data', e => console.log('on webhook3', e));

// прослушивание событий от всех вебхуков
dct.allHooks.on('data', e => console.log('on any webhook', e));

// регистрация обработчиков
app.use(webhook1.handler);
app.use(webhook2.handler);
app.use(webhook3.handler);

app.use((req, res) => res.status(404).send({ error: 'not found' }));
app.listen(8080);

Класс Webhooks наследуется от EventEmmitter

свойство allHooks

Слушает события от всех созданных вебхуков

MangoDct.allHooks;  // => EventEmmitter<any>

Пример:

dct.allHooks.on('data', e => console.log('on any webhook', e));

метод transform

Настраивает параметры для преобразования получаемых данных. Преобразование будет использоваться для метода calls и вебхуков.

MangoDct.transform(options);  // => void
АргументТипОписание
optionsobjectобъект с параметрами

Пример использования:

dct.transform({ callStatus: true });

Возможные преобразования:

АргументТипОписание
callStatusbooleanдобавляет свойство callTextStatus - текстовое значение статуса завершения звонка (callStatus). Например, при наличии свойства callStatus: 1110 будет добавлено свойство callTextStatus: 'Вызов завершен вызывающим абонентом'

класс Webhooks

Класс для создания обработчика вебхука

const webhook = new Webhooks(pathname, dct);
АргументТипОписание
pathnamestringадрес для прослушивания вебхука
dctMangoDctэкземпляр класса MangoDct

свойство handler

Создает и возвращает функцию-обработчик для express

webhook.handler // => Function

метод hear

Слушает события вебхука по заданному фильтру

webhook.hear(filter, handler);
АргументТипОписание
filterobjectобъект с параметрами для фильтра событий
handlerfunctionколбэк функция

Пример использования:

webhook.hear({ callType: 1 }, e => console.log('on callType 1', e));
webhook.hear({ device: /tablet|desktop/i }, e => console.log('on  tablet or desktop device', e));
webhook.hear({ callerNumber: /^7495/  }, e => console.log('on 7495 mask phone number', e));
webhook.hear({ duration: /^[1-9]\d+/, utmMedium: 'cpc'  }, e => console.log('on duration >= 10 seconds and  utmMedium=cpc ', e));

Отладка

Для логирования запросов calls необходимо задать переменную process.env.DEBUG=mango-dct:calls

Пример лога:

mango-dct:calls <- GET https://widgets-api.mango-office.ru/v1/calltracking/224/calls?utmSource=yandex.ru&utmMedium=cpc&utmCampaign=skidka50&dateStart=2017-12-08T19:44Z&dateEnd=2018-01-08T19:44Z +0ms

Для логирования вебхуков необходимо задать переменную process.env.DEBUG=mango-dct:webhooks

Пример лога:

mango-dct:webhooks -> GET /mango-dct/webhook3?utm_source=yandex +15s

Для логирования запросов calls и вебхуков необходимо задать переменную process.env.DEBUG=mango-dct:*

1.1.1

6 years ago

1.1.0

6 years ago

1.0.9

6 years ago

1.0.8

6 years ago

1.0.7

6 years ago

1.0.6

6 years ago

1.0.5

6 years ago

1.0.4

6 years ago

1.0.3

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago