Изменить состояние присутствия человека с помощью API vLine
Как я могу изменить статус человека (setPresenceState) после того, как пользователь принимает вызов? Мне нужно установить состояние "занят" для человека.
Я думаю, что могу установить присутствие на занятое, когда срабатывает событие "enterState:active", но как именно это сделать?
3 ответа
В нашей документации мы говорим, что мы автоматически устанавливаем состояние присутствия "занято", когда по вызову, но просматривая наш код, похоже, что в данный момент мы этого не делаем. Я исправлю это, но пока приведу пример того, как вы можете сделать это самостоятельно (на случай, если вы захотите иметь другое поведение).
Общая идея состоит в том, чтобы установить состояние присутствия на занят, когда vline.MediaSession
входит в active
государство. В этом примере client
предполагается, что вошел в vline.Client
а также session
предполагается, что vline.Session
вернулся после входа в систему.
client.on('add:mediaSession', function(event) {
var mediaSession = event.target;
mediaSession.on('enterState:active', function() {
session.setPresence('busy');
}, this);
mediaSession.on('enterState:closed', function() {
session.setPresence('online');
}, this);
}, this);
Все будет работать нормально, и когда вы отправляете видеозвонок, никто не может отправить другой видеозвонок
PresenceStates "занято" не работает, все, что вы хотите сделать.. Я использую PresenceStates "do_not_disturb" вместо и сбрасываю состояние "do_not_disturb", даже если сеанс мультимедиа "отключен" или прерван клиентом или человек.
Ты понял?
добавьте этот код вместо:
// ------------------------------------------------ ----------------
client.on('add:mediaSession', function(event) {
var mediaSession = event.target;
mediaSession.on('enterState:active', function() {
session.setPresence('do_not_disturb');
}, this);
mediaSession.on('enterState:closed', function() {
session.setPresence('online');
}, this);
mediaSession.on('enterState:outgoing', function() {
session.setPresence('do_not_disturb');
}, this);
mediaSession.on('enterState:incoming', function() {
session.setPresence('do_not_disturb');
}, this);
mediaSession.on('enterState:disconnected', function() {
session.setPresence('online');
}, this);
}, this);
// ------------------------------------------------ ----------------
Чтобы сбросить состояние do_not_disturb, какое событие произойдет, и даже если клиент или человек прервали сеанс, просто добавьте этот код после:
// извлекаем объект person, связанный с username: session.getPerson (userId).done (function (person) {
session.setPresence('online');
(Предполагается, что vline.MediaSession находится в активном состоянии. Сеанс считается vline.Session, возвращаемым после входа в систему.)