Lync Client:如何登录和发送消息

时间:2013-04-29 10:10:57

标签: .net console-application lync office-2013 lync-client-sdk

以下是我需要做的事情:

我需要构建一个控制台应用程序,该应用程序登录(不使用当前用户或lync会话)到Lync Server并向特定联系人(userUri)发送消息。就是这样。

但是,每次使用Microsoft.Lync.Model.LyncClient.GetClient()时,它似乎都会返回当前会话。我已经能够发送消息了,所以唯一的问题是在不使用当前用户/会话的情况下登录。

如何设置新的?

我注意到的另一个奇怪的事情:我提到我能够通过控制台应用程序使用我当前的会话发送消息(消息发送给我的同事并显示)。但是,当我从SignInConfiguration获取LyncClient.SignInConfiguration时,当我假设它应该显示我的用户名/ userAndDomain时,UserName属性为空。

以下代码:

lyncClient = Microsoft.Lync.Model.LyncClient.GetClient();               

                if (lyncClient == null)
                {
                    Console.WriteLine("Unable to obtain client interface");
                }
                if (lyncClient.InSuppressedMode == true)
                {
                    Console.WriteLine("Lync is uninitialized");
                }

                if (lyncClient.State == ClientState.SignedIn)
                {
                    Console.WriteLine("Lync is signed in");
                }
                else
                {
                    Console.WriteLine("Lync is NOT signed in");
                }

                SignInConfiguration config = lyncClient.SignInConfiguration;

                internalUrl = config.InternalServerUrl;
                externalUrl = config.ExternalServerUrl;
                signedInFromIntranet = config.SignedInFromIntranet.ToString();
                signedInAvailability = config.SignInAsAvailability.ToString();
                signedInAutoRetry = config.SignInAutoRetry.ToString();
                signedInUser = config.UserName;

                Console.WriteLine("Internal Url: " + internalUrl);
                Console.WriteLine("External Url: " + externalUrl);
                Console.WriteLine("Signed-in from Intranet: " + signedInFromIntranet);
                Console.WriteLine("Signed-in as availability: " + signedInAvailability);
                Console.WriteLine("Signed-in as auto-retry: " + signedInAutoRetry);
                Console.WriteLine("Signed-in User: " + signedInUser);

                conversation = lyncClient.ConversationManager.AddConversation();
                conversation.AddParticipant(lyncClient.ContactManager.GetContactByUri(recipientUri));

                if (((Microsoft.Lync.Model.Conversation.InstantMessageModality)conversation.Modalities[Microsoft.Lync.Model.Conversation.ModalityTypes.InstantMessage]).CanInvoke(Microsoft.Lync.Model.Conversation.ModalityAction.SendInstantMessage))
                {
                    ((Microsoft.Lync.Model.Conversation.InstantMessageModality)conversation.Modalities[Microsoft.Lync.Model.Conversation.ModalityTypes.InstantMessage]).BeginSendMessage(
                        message,
                        null,
                        null
                        );
                }

1 个答案:

答案 0 :(得分:0)

请检查以下链接,这解释了Lync 2013,但我确信2010 API也可以使用。

http://msdn.microsoft.com/en-us/library/lync/jj937241.aspx