Интеграция CRM
Руководство по добавлению профиля персоны из внешней системы (напр. CRM) в LiveTex.
Получение профиля персоны из системы клиента LiveTex
Возможны следующие сценарии получения профиля персоны со стороны клиента LiveTex:
- Атрибуты персоны формируются на серверной стороне клиента LiveTex и отдаются в HTML/JS.
- Веб приложение клиента (JS) запрашивает профиль персоны у своего API.
Добавление профиля персоны в LiveTex
Для передачи атрибутов персоны в LiveTex необходимо:
- Подписаться на событие Widget
CONVERSATION_STARTED
. - Вызвать метод
setAttributes
в обработчикеonConversationStarted
.
function onConversationStarted(_) {
const personId = '550e8400-e29b-41d4-a716-446655440000'
const attributes = [
{name: 'Имя', value: 'Arnold Shawrskopff'},
{name: 'Телефон', value: '+7 999 999 99 99'}
]
const hash = 'c37ac50bdd35a6e8835f057a04dad50822d126497b769a07ef80efc83b8715a8'
const onSuccess = (_) => console.info('success')
const onFailure = (e) => console.error(`failure: ${e.message}`)
LiveTex.setAttributes(personId, attributes, hash, onSuccess, onFailure)
}
const descriptor = LiveTex.addEventListener(
LiveTex.Event.CONVERSATION_STARTED,
onConversationStarted
)
Для добавления атрибутов персоны клиент LiveTex должен передать следующие параметры:
- id персоны в системе клиента
- набор атрибутов вида ключ-значение
- хеш строка посчитанная на сервера клиента
Хеш строка
Атрибуты персоны должны быть подписаны секретным ключём на стороне сервера клиента LiveTex.
Пример реализации алгоритма на JavaScript:
const crypto = require('crypto')
/**
* @param {!Array.<{name: string, value: string}>} attributes
* @param {!string} secret
* @returns {string}
*/
function hash(attributes, secret) {
const data = attributes
.map(_ => _.name + _.value)
.sort()
.join('')
.concat(secret)
return crypto.createHash('sha256').update(data).digest('hex')
}
Атрибуты без подписи или с невалидной подписью не будут приняты подсистемой LiveTex.
Секретный ключ
Секретный ключ (UUID строка) для подписи атрибутов можно получить в личном кабинете клиента LiveTex.