如何在“待定”状态下显示Lync对话窗口状态

本文关键字:状态 显示 对话 窗口 Lync 待定 | 更新日期: 2023-09-27 18:12:33

这看起来很基本,但是我在网上找不到如何做到这一点。

我有以下代码:

public static void StartChatWithUser(Microsoft.Lync.Model.Contact imContact, string title = null)
{
    try
    {
        var lyncClient = Microsoft.Lync.Model.LyncClient.GetClient();
        var conversation = lyncClient.ConversationManager.AddConversation();
        conversation.AddParticipant(imContact);
        if (!string.IsNullOrEmpty(title))
        {
            conversation.Properties[Microsoft.Lync.Model.Conversation.ConversationProperty.Subject] = title;
        }
        var im = conversation.Modalities[Microsoft.Lync.Model.Conversation.ModalityTypes.InstantMessage];
        if (im.CanInvoke(Microsoft.Lync.Model.Conversation.ModalityAction.Connect))
        {
            im.BeginConnect((ar) => { if (ar.IsCompleted) { ((Microsoft.Lync.Model.Conversation.InstantMessageModality)ar.AsyncState).EndConnect(ar); } }, im);
        }
    }
    catch( Exception x )
    {
        //Handle exception
    }
}

这个"有点"起作用,因为它打开联系人窗口并开始聊天-这意味着请求另一方加入聊天。

是否有一种方法可以让我在不启动与其他用户聊天的情况下打开对话窗口(我希望它与双击Lync联系人列表中的用户相同)。

在Lync Client Dev. TechNet论坛上发布了同样的问题:http://lksz.me/s8Yn8a.

提前感谢。


我的最终结果

感谢MOHAMED A. SAKAR和ckeller提供的答案,我修复了我的代码,这是我的新方法。由于人

需要下面的using子句:

using Microsoft.Lync.Model.Extensibility;

下面是新的代码:

public static void StartChatWithUser(Microsoft.Lync.Model.Contact imContact, string title = null)
{
    try
    {
        var lyncAutomation = Microsoft.Lync.Model.LyncClient.GetAutomation();
        var inviteeList = new string[] { imContact.Uri };
        var modalitySettings = new Dictionary<AutomationModalitySettings, object>();
        modalitySettings.Add(AutomationModalitySettings.SendFirstInstantMessageImmediately, false);
        if (string.IsNullOrEmpty(title))
        {
            modalitySettings.Add(AutomationModalitySettings.Subject, title);
        }
        lyncAutomation.BeginStartConversation(
            AutomationModalities.InstantMessage,
            inviteeList,
            modalitySettings,
            (ar) => { if (ar.IsCompleted) { ((Automation)ar.AsyncState).EndStartConversation(ar); }},
            lyncAutomation);
    }
    catch( Exception x )
    {
        //Handle exception
    }
}

如何在“待定”状态下显示Lync对话窗口状态

你应该首先创建AutomationModalitySettings和它们的值的Dictionary:

private Dictionary<AutomationModalitySettings, object> _modalitySettings;

之后,您应该启动这些模式:

_modalitySettings = new Dictionary<AutomationModalitySettings, object>();
_modalitySettings.Add(AutomationModalitySettings.SendFirstInstantMessageImmediately, false);

之后,您可以发起呼叫

_asyncResult = _automation.BeginStartConversation(
             _chosenMode,
             _inviteeList,
             _modalitySettings,
             null,
             null);

希望这对你有帮助