JavaScript API. Описание методов

JavaScript API - это методы программного интерфейса, предназначенные для динамического взаимодействия клиента с кодом приложения. Ниже мы рассмотрим все методы JS API, реализованные на данный момент, с примерами кода. Если Вам интересно узнать о типичных случаях использования JS API, читайте эту статью.

Загрузка скрипта mango.js

Прежде чем использовать API коллтрекинга, необходимо загрузить JS-скрипт. Это осуществляется асинхронным образом с помощью следующего кода. Код лучше вставлять в конце страницы внутри тега <script> перед закрывающим тегом </body>:

<span style="color:#808030; ">(</span><span style="color:#800000; font-weight:bold; ">function</span><span style="color:#808030; ">(</span>w<span style="color:#808030; ">,</span> d<span style="color:#808030; ">,</span> u<span style="color:#808030; ">,</span> i<span style="color:#808030; ">,</span> o<span style="color:#808030; ">,</span> s<span style="color:#808030; ">,</span> p<span style="color:#808030; ">)</span> <span style="color:#800080; ">{</span>
           <span style="color:#800000; font-weight:bold; ">if</span> <span style="color:#808030; ">(</span>d<span style="color:#808030; ">.</span>getElementById<span style="color:#808030; ">(</span>i<span style="color:#808030; ">)</span><span style="color:#808030; ">)</span> <span style="color:#800080; ">{</span> <span style="color:#800000; font-weight:bold; ">return</span><span style="color:#800080; ">;</span> <span style="color:#800080; ">}</span> w<span style="color:#808030; ">[</span><span style="color:#800000; ">'</span><span style="color:#0000e6; ">MangoObject</span><span style="color:#800000; ">'</span><span style="color:#808030; ">]</span> <span style="color:#808030; ">=</span> o<span style="color:#800080; ">;</span>
           w<span style="color:#808030; ">[</span>o<span style="color:#808030; ">]</span> <span style="color:#808030; ">=</span> w<span style="color:#808030; ">[</span>o<span style="color:#808030; ">]</span> <span style="color:#808030; ">||</span> <span style="color:#800000; font-weight:bold; ">function</span><span style="color:#808030; ">(</span><span style="color:#808030; ">)</span> <span style="color:#800080; ">{</span> <span style="color:#808030; ">(</span>w<span style="color:#808030; ">[</span>o<span style="color:#808030; ">]</span><span style="color:#808030; ">.</span>q <span style="color:#808030; ">=</span> w<span style="color:#808030; ">[</span>o<span style="color:#808030; ">]</span><span style="color:#808030; ">.</span>q <span style="color:#808030; ">||</span> <span style="color:#808030; ">[</span><span style="color:#808030; ">]</span><span style="color:#808030; ">)</span><span style="color:#808030; ">.</span>push<span style="color:#808030; ">(</span><span style="color:#797997; ">arguments</span><span style="color:#808030; ">)</span> <span style="color:#800080; ">}</span><span style="color:#800080; ">;</span>
           w<span style="color:#808030; ">[</span>o<span style="color:#808030; ">]</span><span style="color:#808030; ">.</span>u <span style="color:#808030; ">=</span> u<span style="color:#800080; ">;</span> w<span style="color:#808030; ">[</span>o<span style="color:#808030; ">]</span><span style="color:#808030; ">.</span>t <span style="color:#808030; ">=</span> <span style="color:#008c00; ">1</span> <span style="color:#808030; ">*</span> <span style="color:#800000; font-weight:bold; ">new</span> <span style="color:#797997; ">Date</span><span style="color:#808030; ">(</span><span style="color:#808030; ">)</span><span style="color:#800080; ">;</span>
           s <span style="color:#808030; ">=</span> d<span style="color:#808030; ">.</span>createElement<span style="color:#808030; ">(</span><span style="color:#800000; ">'</span><span style="color:#0000e6; ">script</span><span style="color:#800000; ">'</span><span style="color:#808030; ">)</span><span style="color:#800080; ">;</span> s<span style="color:#808030; ">.</span>async <span style="color:#808030; ">=</span> <span style="color:#008c00; ">1</span><span style="color:#800080; ">;</span> s<span style="color:#808030; ">.</span>id <span style="color:#808030; ">=</span> i<span style="color:#800080; ">;</span> s<span style="color:#808030; ">.</span>src <span style="color:#808030; ">=</span> u<span style="color:#800080; ">;</span>
           p <span style="color:#808030; ">=</span> d<span style="color:#808030; ">.</span>getElementsByTagName<span style="color:#808030; ">(</span><span style="color:#800000; ">'</span><span style="color:#0000e6; ">script</span><span style="color:#800000; ">'</span><span style="color:#808030; ">)</span><span style="color:#808030; ">[</span><span style="color:#008c00; ">0</span><span style="color:#808030; ">]</span><span style="color:#800080; ">;</span> p<span style="color:#808030; ">.</span>parentNode<span style="color:#808030; ">.</span>insertBefore<span style="color:#808030; ">(</span>s<span style="color:#808030; ">,</span> p<span style="color:#808030; ">)</span><span style="color:#800080; ">;</span>
        <span style="color:#800080; ">}</span><span style="color:#808030; ">(</span>window<span style="color:#808030; ">,</span> document<span style="color:#808030; ">,</span> <span style="color:#800000; ">'</span><span style="color:#0000e6; ">//widgets.mango-office.ru/widgets/mango.js</span><span style="color:#800000; ">'</span><span style="color:#808030; ">,</span> <span style="color:#800000; ">'</span><span style="color:#0000e6; ">mango-js</span><span style="color:#800000; ">'</span><span style="color:#808030; ">,</span> <span style="color:#800000; ">'</span><span style="color:#0000e6; ">mgo</span><span style="color:#800000; ">'</span><span style="color:#808030; ">)</span><span style="color:#808030; ">)</span><span style="color:#800080; ">;</span>
        

Последний параметр в последней строке задаёт название для основного объекта API. Название можно поменять, если оно конфликтует с другими объектами на сайте.

Основной объект mgo

После выполнения представленного кода становится доступным объект-функция mgo, который является центральной точной для обращения к API.

Название виджета: calltracking. Объект параметров состоит из следующих полей:

Название Тип Опциональность Описание По умолчанию
id number required Идентификатор виджета. Где узнать id-номер виджета, Вы можете узнать в этой статье.
elements array<object> optional Массив элементов на странице для подстановки номера. []
> selector string optional Селектор элемента, например '#elem' или '.cls'. (Один из параметров обязателен.)
> numberText string optional Номер телефона для изменения на сайте в формате 79990001122. (Один из параметров обязателен.)
region string optional Код Iso региона (например для Москвы 'MOW'), показ номеров из определенного региона.
onReady function(object) optional Коллбэк, вызываемый в момент получения номера.
formatNumber function(string) optional Функция для специфического форматирования номера, может возвращать HTML.
visitEvents boolean optional Определяет нужно ли отправлять в Google Analytics события о выделении номеров (dynamic visit и т.п.). false
customParam string optional Дополнительный параметр, который передаётся в выгрузку звонков и в вебхуки (ограничение по длине 100 символов)
domain string optional Параметр, означающий на какой домен назначать куки. Регулирует работу коллтрекинга на кроссдоменных сайтах

Как использовать объект-функцию?

Использовать его можно тремя способами.

Объявить виджет. Возможные варианты

При помощи mgo Вы можете объявить некоторый виджет. Обобщенный пример

mgo({
calltracking: { /* widget params */ }
});

Примеры:
1.1 Простой виджет

mgo({
calltracking: {
id: 12345,
elements: [{selector: '#some-element'}],
}
});

1.2 Подстановка номера в два элемента mgo({
calltracking: {
id: 12345,
elements: [
{selector: '#some-element'},
{selector: '.some-other-element'}
],
}
});

1.3 Ручное форматирование номера mgo({
calltracking: {
id: 12345,
elements: [{selector: '#some-element'}],
formatNumber: function(number) {
// '74951112233' => '7<span>495</span>111-22-33'
return number.substr(0, 1) + '<span>' + number.substr(1, 3) + '</span>' + number.substr(4, 3) + '-' + number.substr(7, 2) + '-' + number.substr(9, 2);
},
}
});

1.4 Ручная обработка номераУстановка атрибута tel:.
mgo({
calltracking: {
id: 12345,
elements: [{selector: '#mango-calltracking'}],
onReady: function(event) {
$('#mango-calltracking').attr('href', 'tel:' + event.number);
},
}
}) ;

При этом html код номера должен быть таким:
<a id="mango-calltracking" href="tel:79990001122">8 (999) 000-11-22</a>

1.5 Добавление кастомного параметра mgo({
calltracking: {
id: 12345,
elements: [{selector: '#some-element'}],
customParam: 'my_user_id=123,my_project_id=456'
}
});

1.6 Добавление региона показа номера mgo({
calltracking: {
id: 12345,
elements: [{selector: '#some-element'}],
region: 'MOW'
}
});

1.7 Изменение текстового номера на сайте mgo({
calltracking: {
id: 12345,
elements: [{numberText: '79990001122'}]
}
});

1.8 Кроссдоменное использование виджета коллтрекинга
mgo({
calltracking: {
id: 12345,
elements: [{selector: '#some-element'}],
domain: 'romasha.ru'
}
});

Будет одинаково работать на всех поддоменах вида romasha.ru, msk.romasha.ru, spb.romasha.ru и т.п.

2. Вызов методов API:
mgo(function(mgo) {
mgo.someMethod();
});

Методы JS API

Вы можете использовать следующие методы JS API:

  1. getNumber() - выделяет номер ДКТ по запросу. Выделенные номера принадлежат региону по умолчанию, заданному в настройках коллтрекинга.
    function getNumber(options, callback)

Параметры метода:

Название Тип данных Опциональность Описание
options IOptions | string optional Параметры или идентификатор запроса (должен быть постоянным хотя бы в рамках сессии)
callback function optional Функция обратного вызова, в которую передается результат выделения номера

Параметры объекта передаваемого в callback:

Название Тип Описание
number string номер, выделенный для пользователя, в формате DID
type number тип номера: 1 - динамический, 2 - статический, 3 - по умолчанию
hash string хеш номера, если не был указан, то пустая строка

Пример использования объекта IOptions: {
hash?: string; // идентификатор запроса
redirectNumber?: string; // номер на который будет переведён звонок
regionCode?: string; // код региона в ISO формате, например для Татарстана 'TA'
}

Параметры объекта передаваемого в options:

Название Тип Описание
hash string Идентификатор запроса
redirectNumber string Номер на который будет переведён звонок
regionCode string Код региона в ISO формате, например для Татарстана 'TA'

Пример вызова метода mgo.getNumber('test', function(e) {
console.log(e);
});

mgo.getNumber({
hash: 'test',
redirectNumber: '79876543210'
}, function(e) {
console.log(e);
});

Пример ответа

  1. getNumberByRegion() - выделяет номер ДКТ по запросу для конкретного региона. Для выделения номера для определенного региона, в настройках виджета должна быть включена услуга Mультирегиональность.
    function getNumberByRegion(regionCode, hash, callback)

Параметры метода:

Название Тип данных Опциональность Описание
regionCode string optional Код региона в ISO формате (например, для Татарстана 'TA')
hash string optional Идентификатор запроса (должен быть постоянным хотя бы в рамках сессии)
callback function optional Функция обратного вызова, в которую передается результат выделения номера

Пример вызова метода mgo.getNumberByRegion('TA', 'test', function(e) { console.log(e); });

Пример ответа

  1. getExistsNumbers() - метод возвращает список номеров, закрепленных за посетителем сайта (сессией) function getExistsNumbers(callback)

Параметры метода:

Название Тип данных Опциональность Описание
callback function optional Функция обратного вызова, в которую передается результат выделения номера

Пример вызова метода mgo.getExistsNumbers(function(e) { console.log(e); });

Пример ответа [{number: '79158888888'}, {hash: 'test', number: '79158888887'}]

  1. postForm() - передача данных из формы на сайте в отчёты коллтрекинга. Этот метод рекомендуется вызывать при отправке формы в событии onsubmit. function postForm(form)

Параметры метода: в качестве параметра принимает объект формы со следующими полями

Название Тип данных Опциональность Описание
name string optional Имя пользователя
number string optional Номер телефона пользователя (в формате 79451112233)
email string optional Электронный адрес пользователя
customParam string optional Произвольный параметр, который будет передаваться в выгрузку заявок

Пример вызова метода mgo.postForm({name: 'Иван', email: 'ivan@mail.ru'});

Пример формы с полями `

````