C# Lync应用程序运行UI抑制时GetAutomation()不工作

C# Lync应用程序运行UI抑制时GetAutomation()不工作,c#,lync,lync-client-sdk,C#,Lync,Lync Client Sdk,我们正在开发一个Lync客户端应用程序,在这个应用程序中,我们需要拨一个号码到外部号码。当我们不使用UI抑制时,下面的代码可以正常工作 LyncClient lyncClient = LyncClient.GetClient(); var automation = LyncClient.GetAutomation(); var conversationModes = AutomationModalities.Audio; var conversationSettings = new Dictio

我们正在开发一个Lync客户端应用程序,在这个应用程序中,我们需要拨一个号码到外部号码。当我们不使用UI抑制时,下面的代码可以正常工作

LyncClient lyncClient = LyncClient.GetClient();
var automation = LyncClient.GetAutomation();
var conversationModes = AutomationModalities.Audio;
var conversationSettings = new Dictionary<AutomationModalitySettings, object>();
List<string> participants = new List<string>();
var contact = lyncClient.ContactManager.GetContactByUri("tel:" + _TelephoneNumber);
participants.Add(contact.Uri);
automation.BeginStartConversation(AutomationModalities.Audio, participants, null, null, automation);
LyncClient-LyncClient=LyncClient.GetClient();
var automation=LyncClient.GetAutomation();
var conversationModes=自动模式。音频;
var conversationSettings=新字典();
列表参与者=新列表();
var contact=lyncClient.ContactManager.GetContactByUri(“电话:”+\u电话号码);
Add(contact.Uri);
automation.begintarconversation(AutomationModalities.Audio,participants,null,null,automation);

当我们在UI抑制模式LyncClient.GetAutomation()下运行应用程序时,会出现相同的代码,并引发错误“来自HRESULT的异常:0x80C8000B”。在论坛中发现GetAutomation()在UI抑制模式下无法工作。如果有人能提供示例代码,是否有其他方法实现此功能。

没错-您根本不能在UI抑制模式下使用Automation API,因为它需要一个运行的、可见的Lync实例与之交互

您可以在UI抑制中启动调用,但这需要做更多的工作。首先,使用以下方法获取Lync客户端:

var _client = LyncClient.GetClient();
然后使用ConversationManager添加新对话:

_client.ConversationManager.ConversationAdded += ConversationManager_ConversationAdded;
_client.ConversationManager.AddConversation();
以下代码显示了如何处理添加新对话时产生的事件和操作:

private void ConversationManager_ConversationAdded(object sender, ConversationManagerEventArgs e)
{
    _conversation = e.Conversation;
    _conversation.ParticipantAdded += Conversation_ParticipantAdded;

    var contact = _client.ContactManager.GetContactByUri("+441234567890");
    _conversation.AddParticipant(contact);
}

private void Conversation_ParticipantAdded(object sender, ParticipantCollectionChangedEventArgs e)
{
    if (!e.Participant.IsSelf)
    {
        _avModality = (AVModality)_conversation.Modalities[ModalityTypes.AudioVideo];

        if (_avModality.CanInvoke(ModalityAction.Connect))
        {
            _avModality.BeginConnect(AVModalityConnectCallback, _avModality);
        }
    }
}
private void AVModalityConnectCallback(IAsyncResult ar)
{
    _avModality.EndConnect(ar);
}
希望这能让你开始