Ваш код выглядит нормально.Единственное, что я бы сказал, это то, что он возвращает список состояния присутствия для всех конечных точек, зарегистрированных для адреса sip.Обычно вы хотите использовать агрегированное присутствие, которое представляет собой общее присутствие, используемое и отображаемое всеми приложениями Skype.
Таким образом, вы обычно используете:
- присутствие.AggregatedPresenceState.Availability - это базовая доступность
- присутствие .AggregatedPresenceState.Activity.ActivityToken - это хорошо известное подсостояние базовой доступности, такое как "in-a-meeting","on-the-phone" и т. д.
- sence.AggregatedPresenceState.Activity.CustomTokens - это список строк локали с пользовательскими состояниями присутствия, которые обычно определяются пользовательской настройкой XML присутствия вSkype для пользователя.
Там также много другой информации, включая всю другую информацию, которую пользователь может установить, например, местоположение ( EndpointLocation ) и примечание ()PersonalNote ).
Также используется параметр queryResultHandler (в вашем примере вы передаете null, что нормально).Это вызывается, когда результат присутствия становится доступным.Это полезно, когда вы задаете запросу список sip-адресов из более чем одного.UserCallback вызывается, когда приходят все результаты присутствия (т. Е. Вся операция завершена), что может занять некоторое время, и при любых сбоях произойдет сбой всего вызова при вызове EndPresenceQuery.QueryResultHandler будет вызываться несколько раз при получении каждого успешного результата присутствия, поэтому вы получите свои результаты быстрее и увидите все успешные результаты, даже если некоторые из них могут завершиться с ошибкой и вызвать выброс EndPresenceQuery.
Кроме того, что выМожно также подписаться на конечную точку для изменений присутствия, если вы хотите быть в курсе того, когда конечная точка изменяет присутствие.Вы должны быть осторожны с подпиской, поскольку существуют ограничения на количество конечных точек, которые могут подписаться на них.Здесь вы попадаете в типы подписки Polling и Subscribeed.В зависимости от типа приложения, которое вы пишете, зависит от того, какой тип подписки вам нужен.Обычно вы хотите подписаться только на конечные точки, которые вы отображаете / используете в реальном времени.