Программное управление виджетом
В случае если кнопка управления виджетом по умолчанию не устраивает, она может быть отключена и реализована самостоятельно.
Для этого виджет предоставляет набор методов и событий, используя которые, можно реализовать интерфейс управления виджетом любой сложности.
1. Методы
| ОПИСАНИЕ МЕТОДА | КОД |
|---|---|
После инициализации виджет находится в скрытом состоянии. Чтобы показать его пользователю, необходимо вызвать метод open(): | widget.open(); |
| Также можно открывать виджет сразу с текстом сообщения: | widget.open('Текст сообщения пользователя'); |
Текст сообщения также можно добавить с помощью метода appendText(): | widget.appendText('Текст сообщения пользователя'); |
| Скрыть виджет можно либо кликнув по кнопке закрыть в интерфейсе виджета, либо программно: | widget.close(); |
Также API предоставляет метод смены состояния toggle, который показывает или скрывает виджет: | widget.toggle(); |
Если виджет расположен в защищенной зоне и при инициализации использовались credentials, то при выходе из защищенной зоны необходимо в обязательном порядке вызвать метод logout(), чтобы закрыть текущую сессию пользователя и предотвратить неавторизованный доступ к переписке: | widget.logout(); |
| Уничтожение виджета, удаляет чат и кнопку: | widget.destroy(); |
| Управление пуш-токеном для нативных пушей через APNS (iPhone) и FCM (Android). | widget.setIPhonePushToken("my-iphone-token"); widget.setAndroidPushToken("my-android-token"); |
| Ручное обновление авторизованного клиента из CRM: | widget.refreshClient(); |
| Ответ на сообщение — подставляет указанное сообщение в поле ввода как ответ: | widget.replyMessage(message); |
| Прокрутка ленты сообщений к указанному сообщению (по идентификатору): | widget.scrollToMessage(messageId); |
| Отправка оценки обращения, например из собственного интерфейса оценки: | widget.sendRatingData(rating); |
2. События
События на которые можно подписаться используя стандартный для JavaScript интерфейс EventEmitter:
widget.on('close', function () {
console.log('Виджет закрыт');
});
widget.on('open', function () {
console.log('Виджет открыт');
});
widget.on('message', function () {
console.log('Новое сообщение');
});
С помощью события message, например, можно проиграть звук, если виджет скрыт, а пользователю пришло сообщение.
widget.on('unread', function (count) {
console.log('Количество непрочитанных сообщений', count);
});
С помощью события unread можно показывать пользователю количество непрочитанных сообщений. Событие возникает всякий раз, когда значение меняется. При первоначальном получении списка сообщений, если непрочитанных нет, то события не будет. Предполагается, что подписчик инициализирует счетчик сообщений как 0.
widget.on('file-clicked', function (url) {
console.log('Пользователь нажал на файл, подписанная ссылка:', url);
});
Событие file-clicked отправляется только в режиме виджета mobile и передает подписанную ссылку на файл, на который нажал пользователь. Ссылка действует ограниченное количество времени. Время жизни настраивается на сервере.
widget.on('longtap', function (message) {
console.log('Долгое нажатие по сообщению', message);
});
Событие longtap возникает при длительном нажатии на сообщение и передает объект сообщения (ChatMessage).
widget.on('rating', function (rating) {
console.log('Оценка клиента', rating);
});
Событие rating передает оценку, отправленную клиентом.
widget.on('error', function (error) {
console.log('Ошибка виджета', error);
});
Событие error передает объект ошибки виджета (WidgetError).
widget.on('ready', function () {
console.log('Виджет готов к работе');
});
Событие ready возникает, когда виджет загружен и готов к работе.