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