2014-11-06 5 views
0

У меня есть приложение, которое полагается на выделенный клиент Lync, сидящий на сервере для управления специальными номерами MeetNow.Продолжайте разговор Lync MeetNow из Client SDK

Lync автоматически закрывает разговор после 15 минут бездействия. Я нашел a blog describing a way to surreptitiously keep the conversation alive, отправив сообщение «отменить передачу», но это решение использует UCMA, и я имею только доступный SDK 2013 Lync.
Как это делается там (в основном):

var contentType = new System.Net.Mime.ContentType("text/x-msmsgsinvite"); 
var s = @"Application-Name: File Transfer\r\nInvitation-Command: CANCEL\r\nInvitation-Cookie: 12345\r\n"); 
byte[] htmlBytes = Encoding.UTF8.GetBytes(s); 
Flow.BeginSendInstantMessage(contentType, htmlBytes, EndSendInstantMessage, Flow); 

Но, опять же, это использование UCMA. Lync Client SDK не работает точно так же.
Мне нужно использовать Modality of Conversation для отправки сообщения, и я не могу установить тип контента text/x-msmsgsinvite, потому что он использует InstantMessageContentType, Enum, где доступны только доступные типы контента: Invalid, PlainText, Html, RichText, Gif, Ink, Unknown.

попытки я сделал с помощью SDK 2013 Клиент:

(первый, я убедиться, что Modality.State подключен - он есть).

  • Я попытался отправив пустое сообщение - Полученное исключение говорят, что Value does not fall within the expected range. Возможно, я ошибаюсь, но я понял, что пустая строка не создает сообщение.

  • Я попытался отправить только случайное сообщение с типом контента, установленным в Invalid - получено исключение с сообщением Unknown InstantMessageContentType. Type is Invalid. (Не фактически ожидал этот преуспеть)

  • Я попытался послав сообщение с типом контента установлен в Html, где сообщение содержало <div> с style="display: none;" - это удается поддерживать разговор живым, но, Конечно, это показывает пустое сообщение от Applicative пользователя

Я бы очень хотел, чтобы избежать отправок фактического сообщения, которое отображает в комнате MeetNow (даже если все это свидетельствует имя аппликативного пользователя).

Любые идеи?

ответ

1

&tldr;: Установите AutoTerminateOnIdle свойство true. Это приведет к прекращению разговора!


Полное раскрытие:
Кажется, ответ скрывается где-то совсем другое.
Я нашел интересную информацию в Google Книгах в книге под названием "Professional Unified Communications Development with Microsoft Lync Server 2010" By George Durzi, Michael Greenlee.

По вопросу о собственности Conversation «s AutoTerminateOnIdle говорится:

[...] Установка значения AutoTerminateOnIdle свойства разговора на false, когда в режиме подавления пользовательского интерфейса обеспечивается, что приложение может получить доступ к разговору и его свойствам после аудио Видео модальность больше не активна. Это позволяет приложению повторно использовать аудио- или видеоканалы модальности, поскольку разговор i не находится в состоянии прекращения. Если в разговоре есть как мода InstantMessage, так и аудио-видео, он будет только прекратить, когда оба модальности станут неактивными. Значение AutoTerminateOnIdle на true гарантирует, что базовый разговор никогда не переходит в состояние прекращения действия, позволяя приложению подключиться к любой модальности при необходимости. [...]

Это только меня или это та часть, выделены жирным ТОЧНОЕ OPPISITE, ЧТО можно было бы ожидать от имени ИМУЩЕСТВА?!?! Факс: true, never Введите условия платежа! WTF?

В любом случае, я протестировал его - оставил комнату, просто сидел там, например, полчаса ничего не делал. Клиент даже зашел в статус «прочь» => разговор остался открытым. Ура!

+0

Не могли бы вы уточнить? Настройка AutoTerminateOnIdle на * true * будет поддерживать разговор живым, а не тайм-аутом? Документация Lync SDK - это горячий мусор, но это особенно запутанно. – EricRRichards

+0

@ EricRRichards. Верно! Установка AutoTerminateOnIdle, полностью неинтуитивно и в обратном направлении, будет поддерживать общение MeetNow! –

0

Добавьте это в свой РазговорAdded событие, как предложено в приведенном выше ответе.

  e.Conversation.BeginSetProperty(ConversationProperty.AutoTerminateOnIdle, true, null, null); 

Это всегда будет поддерживать вашу беседу даже после 1 часа бездействия.

Click to view Google Book Reference

Смежные вопросы