Какова цель MachineState / EndpointState? - PullRequest
0 голосов
/ 05 сентября 2018

В настоящее время я пишу приложение Trusted UCMA 5.0, которое изменит присутствие других пользователей.

При публикации присутствия для UserEndpoint вы можете публиковать несколько разных типов присутствия, например ::
UserState: Доступно, Занято, Не в сети, ...
PhoneState: пользователь в данный момент находится на вызове или конференции
и некоторые другие, включая EndpointState / MachineState.

Таким образом, я могу установить User Busy с помощью следующего кода:

// ... init collaboration platform (trusted application) and create the UserEndpoint 
var presenceCategs = new PresenceCategory[]
{
    PresenceState.UserBusy,
    new Note("Will be back in 10 minutes"),
    PresenceState.EndpointAway
};

_userEndpoint.LocalOwnerPresence.BeginPublishPresence(presenceCategs, PublishPresenceCompleted, true);

// ...     
private void PublishPresenceCompleted(IAsyncResult ar)
{
    _userEndpoint.LocalOwnerPresence.EndPublishPresence(ar);
    Console.WriteLine("Publish Presence Complete");
}

Код работает, но проблема в том, что я не уверен, когда / как правильно использовать EndpointState.
Единственная документация, которую я нашел о EndpointState / MachineState, мне больше не помогает:

EndpointState

Доступность владельца конечной точки из этой конкретной конечной точки.

https://msdn.microsoft.com/en-us/library/dn466019(v=office.16).aspx

На данный момент я не мог наблюдать какого-либо другого или странного поведения при изменении или исключении EndpointState (например, PresenceState.EndpointAway когда UserOnline)

Итак, мои основные вопросы:

  • Какова цель EndpointState, для чего это будет информация будет использоваться в S4B?

  • Как правильно установить EndpointState? Действительно ли необходимо включать состояние компьютера при обновлении UserState или это будет нормально?

        var presenceCategs = new PresenceCategory[]
             {
                    PresenceState.UserBusy,
             };
        _userEndpoint.LocalOwnerPresence.BeginPublishPresence(presenceCategs, PublishPresenceCompleted, true);
    
  • Какие «правила» / соглашения применяются при изменении EndpointState?

1 Ответ

0 голосов
/ 07 сентября 2018

Я считаю, что присутствие - это очень запутанная тема в SfB. Насколько я понимаю, каждая конечная точка SIP может иметь СОБСТВЕННОЕ состояние присутствия.

Таким образом, существует несколько уровней состояния присутствия на «пользователя». У каждой зарегистрированной конечной точки SIP есть свое собственное «Состояние» присутствия, у карточки контакта для пользователя есть свое собственное состояние присутствия, у каждого календарного события есть свое собственное состояние присутствия. Существует также «совокупное» состояние присутствия, которое, как я полагаю, является суммой всех состояний присутствия, которые кто-либо еще видит в любой момент времени.

Учитывая, что на указанной вами странице написано:

EndpointState Доступность владельца конечной точки из этого конкретная конечная точка.

Означает, что вы устанавливаете текущее присутствие конечной точки SIP (в вашем случае UserEndpoint) ТОЛЬКО в состояние занятости. Таким образом, «состояние» пользователя занято до тех пор, пока ваша UserEndpoint активна, а также любая другая конечная точка SIP, вошедшая в систему, поскольку этот пользователь не изменит состояние.

UserState Предпочтение доступности владельца конечной точки.

Таким образом, если вы устанавливаете пользовательское состояние, оно не устанавливает состояние только для вашей конечной точки SIP, но заставит любую другую зарегистрированную конечную точку пользователя также перейти в это состояние. Таким образом, состояние присутствия будет длиться до тех пор, пока оно будет изменено вами или другим экземпляром, зарегистрированным в экземпляре пользователя.

Какой вы используете, зависит от того, что вы пытаетесь сделать.

Опция UserState хороша, если вы хотите установить пользовательское состояние, чем позволить экземпляру UserEndpoint умереть. Таким образом, он может жить только на время установки присутствия пользователя.

EndpointState можно использовать, когда вы некоторое время удерживаете UserEndpoint, и вы не можете считать, что общее присутствие пользователей является "занятым", если только вы не являетесь единственным экземпляром присутствия, живым для обслуживания вызовов пользователей. Таким образом, вы просто рекламируете свое «присутствие» на своих конечных точках, а не присутствие пользователей в целом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...