We are developing an Lync client application, in this we need to dial a number to outside number the below code works fine when we are not using UI Suppression

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);

The same code while we are running the application in UI Suppression mode LyncClient.GetAutomation() throwing an error "Exception from HRESULT: 0x80C8000B". In forums found that GetAutomation() will not work in UISuppression mode. Is there any alternative way to achieve this functionality if so could anyone provide us sample code.

有帮助吗?

解决方案

That's right - you can't use the Automation API in UI suppression mode at all, as it needs a running, visible instance of Lync to interact with.

You can start calls in UI supression, but it's a lot more work. First, get hold of the Lync client using:

var _client = LyncClient.GetClient();

Then add a new conversation using the ConversationManager:

_client.ConversationManager.ConversationAdded += ConversationManager_ConversationAdded;
_client.ConversationManager.AddConversation();

The following code shows how to handle the events and operations that stem from adding the new conversation:

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);
}

Hopefully that should get you started.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top