Lync 2010 SDK: как получить URI голосовой почты пользователя?

Я пишу простое приложение на C#, которое отвечает на вызов Lync и, в зависимости от значения базы данных, перенаправляет его на другой номер телефона. Это работает отлично. Однако иногда я хочу переадресовать звонок на голосовую почту пользователя. Я не могу понять, как получить URI для ящика голосовой почты:(

Предполагая, что я в обработчике для события ConversationAdded. Я пробовал это:

Conversation conv = args.Conversation;
string voicemailURI = String.Format("{0};opaque=app:voicemail",conv.SelfParticipant.Contact.Uri);
// the contact returned here, however, does not contain the opaque=app:voicemail
Contact forwardContact = lync.ContactManager.GetContactByUri(voicemailURI);

Также:

Conversation conv = args.Conversation;
// following throws ArgumentException: Value does not fall within the expected range
Phone voicemail = lync.Self.GetPhone(ContactEndpointType.VoiceMail);
string voicemailURI = voicemail.Endpoint.Uri
Contact forwardContact = lync.ContactManager.GetContactByUri(voicemailURI);

Голосовая почта UC настроена и работает иначе. Я не уверен, что именно это термин, но он обрабатывается Exchange, и сообщения появляются в моем почтовом ящике. Если я просто позволю телефону зазвонить, он в конечном итоге окажется в голосовой почте, но мое приложение знает, что оно должно сразу же отправиться туда, поэтому я хотел бы переслать его немедленно.

1 ответ

Я думаю, я не совсем уверен, почему вы заботитесь о том, чтобы получить контакт? Ваш первый пример даст вам URI, чтобы перейти непосредственно к голосовой почте. В этот момент вы можете просто сделать это:

        var automation = LyncClient.GetAutomation();
        var conversationModes = AutomationModalities.Audio;
        var conversationSettings = new Dictionary<AutomationModalitySettings, object>();
        List<string> participants = new List<string>();
        Conversation conv = args.Conversation;            
        string voicemailURI = String.Format("{0};opaque=app:voicemail",conv.SelfParticipant.Contact.Uri);
        participants.Add(voicemailUri);
        automation.BeginStartConversation(AutomationModalities.Audio, participants, null, StartConversationCallback, automation);
Другие вопросы по тегам