Наверх
Подписаться

Подключение клиентских форм к обратному звонку Calltouch

Содержание

 

 

Вступление

Если по каким либо причинам вас не устраивает внешний вид стандартной формы обратного звонка Calltouch, например, она не сочетается с дизайном сайта, то вы можете использовать свою собственную форму обратного звонка, подключение которой производится через Callback Javascript API. С его помощью можно автоматизировать сбор заявок со всех форм на сайте, которые содержат номер телефона, и обрабатывать их как обратные звонки.
Автоматическая обработка заявок дает возможность оперативной и своевременной связи, что очень важно для качества обслуживания.

В некоторых отраслях доля заявок с сайта варьируется в пределах от 20% до 45% от общего количества обращений. Наш сервис позволяет обрабатывать такие обращения максимально оперативно и снимает с вас лишнюю работу по налаживанию процессов ручного контроля за заявками. При этом вы получаете информацию из заявки, ее источник, можете прослушать запись разговора, поставить тэги, добавить комментарии, и все это в рамках одного интерфейса личного кабинета Calltouch. С новым функционалом Callback Javascript API вы можете:

  • Обрабатывать заявки с разного типа форм по индивидуальным настройкам - задавать свой график работы колл-центра и номер переадресации под каждый тип
  • Передавать текстовую информацию из полей заявки в личный кабинет и использовать ее при анализе статистики
  • Задавать условия по страницам или параметрам разметки источника трафика, при которых заявка будет обрабатываться, как обратный звонок.

 

 

Подключение

Для подключения необходимо:

  1. Установить скрипт Calltouch на сайт (скрипт можно скопировать из справочного центра или получить через службу поддержки info@calltouch.net)
  2. Пополнить баланс минут и активировать услугу обратного звонка
  3. Создать специальный тип виджета "Форма на сайте":
    ______________2018-12-05___13.10.16.png
  4. Задать настройки графика работы колл-центра, номер телефона для переадресации, сценарий дозвона и т.д. 
  5. Можно создавать условия, при которых формы будут или не будут обрабатываться как обратные звонки. Например, если создано условие на включение опции только для платного трафика, то при отправке формы со всех остальных каналов прозвона по такой заявке не будет.
  6. Задать ключ, который будет связкой между виджетом и формой, заявки с которой вы хотите обрабатывать, как обратные звонки
  7. Включить виджет

Ключ может быть любым набором букв и символов. Рекомендуем в поле ключа использовать название формы, которую вы привязываете к виджету:

______________2018-12-05___13.08.54.png

Далее представлена техническая информация - как получать в коде данные по виджетам и создавать заявки.

 

 

Примеры обработки

Получение настроек виджета и отображение формы

Скопировать скрипт
window.ctw.getRouteKeyData('my_form_1', function(success, data){
    console.log(success, data);
    if (success) {
        if (data.widgetFound) {
            if (data.widgetData.callCenterWorkingMode == 'working_hours') {
                console.log('колл-центр работает, отображение виджета');
            } else {
                if (data.widgetData.collectNonWorkingRequests) {
                    console.log('колл-центр не работает, но можем отобразить форму нерабочего времени');
                } else {
                    console.log('колл-центр не работает, заявки в нерабочее время не собираем');
                }
            }
        } else {
            console.log('не найден включенный виджет по routeKey, либо услуга обратного звонка не активна');
        }
    } else {
        console.log('во время обработки прозошла ошибка');
        console.log(data)
    }
 });

Создание заявки

Скопировать скрипт
window.ctw.createRequest(
    'my_form_1',
    '7xxxxxxxxxx',
    [
        {"name": "Name", "value": "Ivan"},
        {"name": "Last name", "value": "Petrov"}
    ],
    function(success, data){
        console.log(success, data)
        if (success) {
            console.log('Создана заявка на колбек, идентификатор: ' + data.callbackRequestId)
        } else {
            switch(data.type) {
                case "request_throttle_timeout":
                case "request_throttle_count":
                    console.log('Достигнут лимит создания заявок, попробуйте позже');
                    break;
                case "request_phone_blacklisted":
                    console.log('номер телефона находится в черном списке');
                    break;
                case "validation_error":
                    console.log('были переданы некорректные данные');
                    break;
                default:
                    console.log('Во время выполнения запроса произошла ошибка: ' + data.type);
            }
        }
    }
)

 

 

Функции

Получение данных виджета - window.ctw.getRouteKeyData

Описание функции получения данных виджета:

/**
 * Получение данных виджета
 *
 * Идентификатор формы (длина от 1 до 255)
 * @param {string} routeKey
 *
 * Функция обратного вызова для обработки результата запроса
 * @param {routeKeyDataRequestCallback} requestCallback
 */
function getRouteKeyData(routeKey, requestCallback) {},

Описание функции обратного вызова:

/**
 * Функция обратного вызова для обработки результата запроса получения данных виджета
 *
 * @callback routeKeyDataRequestCallback
 *
 * В случае успеха true иначе false
 * @param {bool} success
 * 
 * Данные успешного ответа или ошибки
 * @param {RouteKeyDataSuccessResponse|ErrorResponse} responseData
 */

Данные в случае успешного выполнения запроса получения данных виджета:

/**
 * Данные успешного выполнения запроса получения данных виджета
 *
 * @typedef {Object} RouteKeyDataSuccessResponse
 *
 * Флаг указывает найден ли виджет
 * @property {bool} widgetFound
 * 
 * Данные виджета, если widgetFound=false, то значение будет null иначе Object
 * @property {Object|null}  widgetData
 * 
 * Текущие режим работы колл-центра, возможные значения:
 * working_hours(рабочее время), non_working_hours(нерабочее время)
 * @property {string} widgetData.callCenterWorkingMode
 * 
 * Флаг указывает собирать ли заявки в нерабочее время
 * @property {bool} widgetData.collectNonWorkingRequests
 */

Примеры данных

1. В случае когда по идентификатору формы не найдено включенного виджета или услуга обратного звонка не включена:

{
    "widgetFound":false
    "widgetData":null
}

2. Виджет найден:

{
    "widgetFound":true
    "widgetData": {
        "callCenterWorkingMode": "working_hours",
        "collectRequests": true
    }
}

Формат данных в случае ошибки

/**
 * Данные в случае ошибки выполнения запроса
 *
 * @typedef {Object} ErrorResponse
 *
 * @property {string} type Тип ошибки
 * @property {string} message Текст ошибки
 * @property {Object} details Детали ошибки
 */

Возможные ошибки

Тип Описание
unknown_error Различные ошибки на клиенте (таймаут ответа сервера, сброс соединения, некорректный json в ответе, ошибочный код ответа сервера)
server_error Ошибка сервера

 

Создание заявки на обратный звонок - window.ctw.createRequest

Описание функции создание заявки на обратный звонок:

/**
 * Создание заявки на обратный звонок
 *
 * Идентификатор формы (длина от 1 до 255)
 * @param {string} routeKey
 * 
 * Номер телефона с кодом страны и города, без плюса (11 символов)
 * @param {string} phone
 * 
 * Дополнительные поля (не более 5 полей) или пустой массив, если нет дополнительных полей
 * @param {Object[]} fields[]
 * 
 * Название поля (длина от 1 до 15)
 * @param {string} fields[].name
 * 
 * Значение поля (длина от 1 до 35)
 * @param {string} fields[].value
 * 
 * Функция обратного вызова для обработки результата запроса
 * @param {createRequestRequestCallback} requestCallback
 */
function createRequest(routeKey, phone, fields, requestCallback) {}

Описание функции обратного вызова:

/**
 * Функция обратного вызова для обработки результата запроса создания заявки на обратный звонок
 *
 * @callback createRequestRequestCallback
 *
 * В случае успеха true иначе false
 * @param {bool} success
 *
 * Данные успешного ответа или ошибки
 * @param {createRequestSuccessResponse|ErrorResponse} responseData
 */

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

/**
 * Данные успешного выполнения запроса создание заявки на обратный звонок
 *
 * @typedef {Object} createRequestSuccessResponse
 *
 * @property {number} callbackRequestId Идентификатор заявки на обратный звонок
 */

Формат данных в случае ошибки

/**
 * Данные в случае ошибки выполнения запроса
 *
 * @typedef {Object} ErrorResponse
 *
 * @property {string} type Тип ошибки
 * @property {string} message Текст ошибки
 * @property {Object} details Детали ошибки
 */

Возможные ошибки

Тип Описание
unknown_error Различные ошибки на клиенте (таймаут ответа сервера, сброс соединения, некорректный json в ответе, ошибочный код ответа сервера)
server_error Ошибка сервера
validation_error

Ошибка при проверке корректности полей

Поле Тип Описание
fields object[] Список полей с ошибками
fields[].name string Название поля
fields[].errors object[] Список ошибок
fields[].errors[].message string Тест ошибки
request_throttle_timeout Превышен лимит на отправку заявок от данного пользователя
request_throttle_count Превышено кол-во запросов за период времени
request_phone_blacklisted Телефон в черном списке
request_widget_not_found Виджет для идентификатора формы не найден


Примеры данных

1. В случае успешного создания заявки

{
    "callbackRequestId ":231113
}

 

Была ли эта статья полезной?
Пользователи, считающие этот материал полезным: 1 из 2
Еще есть вопросы? Отправить запрос

0 Комментарии

Войдите в службу, чтобы оставить комментарий.