zoukankan      html  css  js  c++  java
  • Lync二次开发

    应用程序说明

    基于Microsoft Lync强大功能之上,通过二次开发提供了个性化扩展功能,使用户可以实现Microsoft Lync客户端界面定制、Microsoft Lync功能扩展、 Microsoft Lync与第三方应用程序集成等功能,提供适应客户个性化需求的统一沟通平台。

    一、用户界面定制
    将Microsoft Lync客户端用户界面进行个性化修改,使其融入更多的企业个性元素及企业文化。 如将登陆界面原有微软字样的标题和LOGO等信息替换成企业独有的个性化界面等。

    二、IM个性化需求
    虽然Microsoft Lync提供了强大的IM(即时消息)平台,但客户还是有很多个性化需求需要通过二次开发来实现。
    Lync提供了成熟的、稳定的IM(即时消息)扩展功能:
    - 离线消息和离线文件的发送;
    - 本地聊天记录服务;
    - 群组功能;
    - 手机短信功能;
    - ……

    三、应用集成
    Lync使用户可以在Microsoft Lync客户端左侧(或其他位置)添加自定义标签页。 
    用户可以在扩展标签页中嵌入网页,或者嵌入 .net控件,也可以在扩展标签页中引用特定信息
    这样用户可以把更多企业应用集成到Microsoft Lync客户端之上, 把Microsoft Lync客户端打造成一个轻量级门户系统。

    四、更多功能
    除了提供上述主要扩展功能之外,还提供了更多个性化功能:
    - 组织机构树:
    将企业人力资源架构以树形结构清晰明了显示至客户端,并将功能操作融入其中,使繁琐的操作简洁化;
    - 消息推送:
    滚动消息公告实时滚动,以滚动方式循环显示企业内部日常公告信息,点击公告标题名即可浏览详细内容;
    重要通知弹出窗口。
    - 邮件提醒:
    可以把Microsoft Lync客户端打造成简单的邮件客户端,用户可以在Microsoft Lync客户端进行邮件发送接收等操作。

    http://msdn.microsoft.com/en-us/library/lync/hh345230(v=office.14).aspx

    先决条件

    Lync SDK下载

    VS项目中如何应用

    • 创建应用程序,引用DLL文件路径:%root%\Program Files (x86)\Microsoft Lync\SDK\Assemblies\Desktop\Microsoft.LyncModel.dll.
    • 如果创建的是Silverlight程序,引用DLL文件路径:%root%\Program Files (x86)\Microsoft Lync\SDK\Assemblies\Silverlight\.

    VS创建WPF程序

     
    1. /// <summary>  
    2. /// 登陆Lync  
    3. /// </summary>  
    4. /// <param name="UserUri">用户Uri(用户邮箱)</param>  
    5. /// <param name="Domain">用户域信息</param>  
    6. /// <param name="Password">密码</param>  
    7. public void SignIn(string UserUri, string UserNameDomain, string Password)  
    8. {  
    9.   
    10.    LyncClient.GetClient().ClientStateChanged += myClient_ClientStateChanged;  
    11.   
    12.     try  
    13.     {  
    14.   
    15.         IAsyncResult ar = LyncClient.GetClient().BeginSignIn(  
    16.             UserUri,  
    17.             UserNameDomain,  
    18.             Password,  
    19.             null,  
    20.             null);  
    21.   
    22.         LyncClient.GetClient().EndSignIn(ar);  
    23.     }  
    24.     catch (NotInitializedException)  
    25.     {  
    26.        MessageBox.Show("Lync is not initialized");  
    27.     }  
    28. }  
    29.   
    30.   
    31.   
    32. /// <summary>  
    33. /// 登陆Lync事件.   
    34. /// </summary>  
    35. /// <param name="source"></param>  
    36. /// <param name="data"></param>  
    37. void myClient_ClientStateChanged(object source, ClientStateChangedEventArgs data)  
    38. {  
    39.     if (data.NewState == ClientState.SignedIn)  
    40.     {  
    41.         MessageBox.Show("Signed in");  
    42.     }  
    43.     if (data.NewState == ClientState.SignedOut)  
    44.     {  
    45.         MessageBox.Show("Signed out");  
    46.     }  
    47.   
    48.     if (data.NewState == ClientState.ShuttingDown )  
    49.     {  
    50.         MessageBox.Show("Client is shutting down");  
    51.     }  
    52. }  

      Lync2013的登录

       

      1. Lync2013登录的几个关键函数

      a) LyncClient.BeginInitialize(InitializeCallback, AsyncState)

      i. InitializeCallback:异步回调委托函数,在此委托函数中我们要自定义lync的初始化事件。一般在此回调函数中都要包括LyncClient.EndInitialize (IAsyncResult asyncResult) 系统函数,来结束初始化。

      ii. AsyncState:lync的状态,可以为null值。

      b) LyncClient.BeginSignIn(userURI, userDomain, password, SigninCallback, sender)

      i. userURI :lync的sip协议帐号,例如“sip:xxxx@ consoto.com”

      ii. userDomain :域用户名,例如:“xxxx@ consoto.com”,一般情况下,userURI与userDomain除了前缀“sip”之外,其他的都是一致的。

      iii. password :见文思义,登录密码。

      iv. SigninCallback :异步回调委托函数,在此委托函数中我们要自定义用户登录成功后的处理事件。一般在此回调函数中都要包括LyncClient .EndSignIn (IAsyncResult asyncResult)系统函数,来处理登录后的状态。

      v. sender :传递过来的Object.

      2. 引入DLL

      在编写lync2013的登录程序时,一定要引用“Microsoft.Lync.Model.dll”,

      clip_image001

      这个dll一般在lync2013安装目录下的一个zip压缩包内,

      clip_image002

      3. 设置全局变量

      在class代码中要加入一个全局变量

      LyncClient lyncClient;

      并且在登录窗体初始化的时候也要将其创建一个实例

      lyncClient = LyncClient.GetClient();

      4. 登录流程及事件

      Lync2013登录的流程图如下:

      clip_image004

      由上图可知

      Lync2013登录的时候有几个事件:

      1) 初始化事件

      2) 登录状态改变事件

      3) 凭据获取事件

      所以在登录窗体初始化时可以将这几个事件利用委托注册一下:

      lyncClient.StateChanged += new EventHandler<ClientStateChangedEventArgs>(lyncClient_StateChanged);
          lyncClient.CredentialRequested += new EventHandler<CredentialRequestedEventArgs>(lyncClient_CredentialRequested);
          lyncClient.SignInDelayed += new EventHandler<SignInDelayedEventArgs>(lyncClient_SignInDelayed);

      lyncClient.StateChanged:登录状态改变事件句柄;

      lyncClient.CredentialRequested:登录状态改变事件句柄;

      lyncClient.SignInDelayed:当在登录及自动唤醒产生延迟时的处理事件句柄

      委托事件lyncClient_StateChanged,lyncClient_CredentialRequested,lyncClient_SignInDelayed自行编写

      一般格式为:

      void lyncClient_StateChanged(object sender, ClientStateChangedEventArgs e)
      
      {
      
      //to do something;
      
      ……
      
      }
      
      void lyncClient_CredentialRequested(object sender, CredentialRequestedEventArgs e)
      
      {
      
      e.Submit(@"consoto\user1", "wewa1", e.IsPasswordSaved);
      
      //to do something;
      
      ……
      
      }
      
      void lyncClient_SignInDelayed(object sender, SignInDelayedEventArgs e)
      
      {
      
      //to do something;
      
      ……
      
      }

      初始化事件可以在适当的时机进行,比如在点击登录按钮时

      private void button1_Click(object sender, RoutedEventArgs e)
      
      {
      
      lyncClient.BeginInitialize(InitializeCallback, null);
      
      //to do something;
      
      ……
      
      }

      参考:http://msdn.microsoft.com/en-us/library/lync/hh345263.aspx

       
       
  • 相关阅读:
    数据库-数据约束
    数据库-表2
    数据库-表
    MySQL入门
    记一次stm8l程序跑飞
    nRF24L01P的ShockBurst与Enhance ShockBurst
    电路板工艺中的NPTH和PTH
    nRF24L01P数据传输速率
    STM32F030-UART1_DMA使用提示
    Altium Designer 复制报错-奇怪的问题解决办法
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3012835.html
Copyright © 2011-2022 走看看