...
Это может быть необходимо для подключения функционала панели оператора в свой интерфейс (например, окно оператора в едином окне CRM)
Интеграция
Для работы, используем данную библиотеку https://www.npmjs.com/package/centrifuge
Создаем экземпляр класса Centrifuge, передаем ему URL сервера и создаем подключение:
const centrifuge = new Centrifuge(
`${protocol}://${window.location.host}/centrifugo/connection/websocket`,
{
data: {
application: 'notifications',
settings: { token: 'your_auth_token_here' },
},
},
)
Обрабатываем connection, и publication события, в самом publication получаем и реагируем на события
centrifuge.on('connected', () => {
// some logic when connected
})
centrifuge.on('publication', (publication) => {
const payload = publication.data
...
Основные шаги интеграции
Чтобы использовать панель оператора, нужно
1. Авторизоваться используя эндпоинт /auth/login. Детали в доке доке https://iam.dev.twin24.ai/docs/index.html
2. Подключиться к прослушиванию событий из центрифуги - передвавая передавая токен авторизации
3. Передавать во всех запросах токен авторизации полученный при атворизации
Основные методы
Часто используемые эндпоинты оператора:
/users/me - получить ифнормацию о текущем оператора
/timestamp - получить время сервера(полезно для таймеров, отсчетов, и понимания разницы)
/users/me/activate - сменить статус текущего оператора - на возможность приема входящих сессий
/users/me/pause - поставить оператора на паузу(прекратить получать входящие сессии)
/sessions/${sessionId}/operators/${userId} - перевести сессию на конкретного пользователя
/sessions/${sessionId}/names/${name} - переименовать сессию
/sessions - получить список сессий(всех сессий, даже завершенных)
/sessions/${id}/messages - получить список сообщений по id сессии
/clients/${id}/messages - получить список сообщений по id клиенту
/sessions/${sessionId}/operators/messages - отправить сообщение в сессию
/sessions/${sessionId}/operators/messages/${messageId} - put:редактировать сообщение
/sessions/${sessionId}/operators/messages/${messageId} - delete:удалить сообщение
/sessions/${sessionId}/operators/${userId} - перевести сессию на другого оператора
/sessions/${sessionId}/groupoperators/${userId} - перевести сессию на группу операторов
/users - получить список операторов
/groups - получить список групп операторов
/sessions/${sessionId} - delete: завершить сессию
/clients/${clientId}/ban - заблокировать клиента
/clients/${clientId}/unban - разблокировать клиента
Полная дока по всем доступным эндпоинтам здесь https://chats-api.dev.twin24.ai/docs/
Live события
Для работы, используем centrifuge
Создаем экземпляр класса Centrifuge, передаем ему URL сервера и создаем подключение:
const centrifuge = new Centrifuge(
`${protocol}://${window.location.host}/centrifugo/connection/websocket`,
{
data: {
application: 'notifications',
settings: { token: 'your_auth_token_here' },
},
},
)
Обрабатываем connection, и publication события, в самом publication получаем и реагируем на события
centrifuge.on('connected', () => {
// some logic when connected
})
centrifuge.on('publication', (publication) => {
const payload = publication.data
switch (payload.event) {
case 'chatMessageRead':
// handle chatMessageRead event
break
default:
console.warn('Unknown event type:', payload.event)
}
})
Список событий, которые приходят в центрифугу оператору:
chatSessionStarted - Оператору пришла новая сессия чата(при этом не факт что оператору, может быть просто в помощь)
operatorNotFound - Сессия не нашла оператора и упала в помощь
chatSessionAdded - Сессия пришла оператору
chatMessageCreated - Оператору пришло новое сообщение в чате
chatMessageEdited - Кто-то из операторов изменил сообщение в чате
chatMessageRead - Оператору пришло сообщение о том, что клиент прочитал сообщение в чате
chatSessionDeleted - Есть кейсы, когда сессия после отправки определенного сообщения уходит на бота - и тогда пропадает у оператора
chatSessionSwitchedFromBotToOperator - Сессия была переключена с бота на оператора
sessionClosedByClient - Клиент закрыл сессию
operatorBlocked - Оператора забанили на платформе - требуеться выкинуть оператора из кабинета
chatUserExists - Кто-то зашел в текущего оператора. текущий сеанс оператора нужно закрыть
typing - пользователь печатает сообщение в чате
operatorLoggedOut - сделать оператора оффлайн
clientOnline - клиент стал онлайн
clientOffline - клиент стал оффлайн
...