Чат
ViewController
Для работы консультанта необходимо зарегистрировать ViewController с именем consultant
.
Важно: ViewController регистрируется один раз для всех форм онлайн-консультанта
CreateWidget
Чтобы создать виджет чата, необходимо вызвать метод Comagic.UI.createWidget()
со следующими параметрами:
-
widgetName
= 'consultant_chat'
Пример
Comagic.UI.registerViewController('consultant', function (settings, tpls) {
...
var chat = Comagic.UI.createWidget('consultant_chat', {
settings: settings,
template: tpls['chat'],
...
});
...
chat.render();
});
Методы
startChat()
Инициация чата со стороны посетителя. В этот момент постетитель перейдет в статус "Ожидание".
chat.on('show', function(){
chat.startChat();
});
При открытии формы срабатывает событие show и вызывается метод startChat().
closeChat()
Завершение чата по инициативе посетителя. Посетитель перейдет в статус "На сайте".
chat.on('beforehide', function(){
chat.closeChat();
});
Перед скрытием формы вызывается метод closeChat().
isChatAvailable()
Проверяет, есть ли в текущем чате оператор со статусом "в сети" в данный момент.
Возвращает true
или false
.
sendChatByMail(mail: string)
Отправляет историю переписки на e-mail.
sendChatMessage(message: string)
Отправка сообщения от посетителя сайта.
setOperatorRating(mark: number)
Метод сохраняет оценку mark
, которую посетитель поставил оператору текущего чата.
hasHistory()
Проверяет наличие истории сообщений. Возвращает true
или false
.
if (chat.hasHistory() {
var history = chat.getHistory();
}
Проверяем наличие истории сообщений. Если она есть, то запрашиваем ее.
getHistory()
Запрос истории сообщений. Не более 20 сообщений за один запрос. Возвращает массив сообщений или false
, если сообщений нет.
if (chat.hasHistory() {
var history = chat.getHistory();
}
getOperatorVcard()
Метод возвращает объект, содержащий информацию об операторе текущего чата. Объект содержит поля:
- name - имя оператора
- position - должность оператора
- avatar - ссылка на фотографию оператора
getVisitorCard()
Метод возвращает объект, содержащий информацию о посетителе. Объект может содержать следующие поля:
- name - имя посетителя
- email - массив, содержащий до пяти e-mail адресов, указанных ранее клиентом
- phone - массив, содержащий до пяти телефонных номеров, указанных ранее клиентом
setVisitorCard(vcard)
Метод сохраняет информацию о посетителе. Объект vcard
может содержать следующие поля:
- name - имя посетителя
- email - e-mail посетителя
- phone - телефон посетителя
inviteAccept()
Приглашение в чат принято.
inviteReject()
Приглашение в чат отклонено.
sendFile(input)
Отправка файла в чате.
isReadyForFileTransfer()
Метод, который вернет true
в случае, если в данный момент можно отправить файл.
getRequiredInfo()
Метод возвращает массив имен полей карточки посетителя, которые нужно запросить при следующем показе формы анкетных данных.
getState()
Метод возвращает текущее состояние посетителя.
Возможные значения:
- available - посетитель на сайте, не взаимодействует с виджетами.
- invite - посетитель получил приглашение в чат.
- chat - посетитель общается с оператором чата.
- lead - отображается форма лидогенератора.
chatTyping(text: string)
Метод отправляет text
в РМО как сообщение, набираемое посетителем.
События
operatorjoined
Событие возникает при подключении оператора к чату.
Свойства события operatorjoined:
Объект, содержащий поля:
- name - имя оператора.
- position - должность оператора.
- avatar - ссылка на фотографию оператора.
operatorleave
Событие возникает при отключении оператора от чата.
Свойства события operatorleave
Поля аналогичные событию operatorjoined
, содержащие значение null.
sendmessage
Событие возникает при получении сообщения чата. Это может быть сообщение от оператора чата, системное сообщение или сообщение от посетителя чата, отправленное им на другой странице сайта.
Свойства события sendmessage:
Объект, содержащий поля:
- text - текст сообщения.
- date - время отправки сообщения в формате Unixtime.
- source - отправитель сообщения. Возможные значения:
Оператор
,Посетитель
,Система
. - from - имя оператора, если сообщение отправлено оператором. В остальных случаях значение
from
равноsource
. - chat_id - id чата, которому принадлежит сообщение.
- message_id - уникальный id сообщения.
- uid - временный id, используемый для синхронизации отправленных и полученных сообщений.
showchatretentionaction
Событие возникает при необходимости показать в чате кнопку альтернативного способа связи.
Cвойства события showchatretentionaction: Объект, содержащий поле:
- alternate_communication_way - мнемоника альтернативного способа связи.
Возможные значения мнемоники:
- offline_message - форма заявки.
- sitephone - форма звонка.
- chat - форма выбора группы.
chatavailabilitychange
Событие возникает в двух ситуациях:
- Не осталось ни одного оператора РМО в статусе 'online', в этом случае в событии приходит значение
false
. - Появился хотя бы один оператор в статусе 'online', в этом случае приходит значение
true
.
invite
Событие возникает, когда оператор приглашает посетителя в чат, либо когда срабатывает функция автоприглашения. Свойства события invite:
- invite_message - сообщение, которое нужно отобразить в момент приглашения.
startchat
Событие возникает в ответ на команду chat.startChat()
closechat
Событие возникает в ответ на команду chat.closeChat()
inviteaccept
Событие возникает в ответ на команду chat.inviteAccept()
invitereject
Событие возникает в ответ на команду chat.inviteReject()
setrating
Событие возникает в ответ на команду chat.setOperatorRating()
sendchatbymail
Событие возникает в ответ на команду chat.sendChatByMail()
ratingchange
Событие возникает при смене оценки оператора.
Свойства события ratingchange:
Число, соответствующее оценке оператора в текущем чате, либо null
, если оценка отсуствтует.
statechange
Событие возникает при смене состояния посетителя сайта. Свойства события statechange мнемоника, соответствующая новому состоянию посетителя. Возможные значения:
- available - посетитель на сайте, не взаимодействует с виджетами.
- invite - посетитель получил приглашение в чат.
- chat - посетитель общается с оператором чата.
- lead - отображается форма лидогенератора.
chattyping
Событие возникает, когда оператор набирает сообщение.