zoukankan      html  css  js  c++  java
  • LCS使用RTC API 发送IM消息的WebService 无为而为

    微软LCS 2005 With SP1 发布也有一段时间了。

    1。准备工作:安装RTC Client API
            http://msdn.microsoft.com/downloads/list/clientapi.asp


    Microsoft Windows Real-Time Communications Client API SDK v1.3
    The Microsoft Windows Real-Time Communications Software Development Kit 1.3 provides information, samples, and tools regarding the additional features of the Real-Time Communications 1.3 API. Additional features include: enhanced multiple points of presence support, support for Microsoft Office Live Communications Server 2005, additional client security options, and marshalling support.

     

    Microsoft Real-time Communications Client Software Development Kit (SDK) v1.2
    The Microsoft Real-time Communications Client SDK provides documentation, sample code and other tools that allow developers to build real-time communication applications, or integrate real-time communication functionality into existing applications.
    Note: To execute samples or applications upon any development or test machine, install the SDK and then run RTCAPISETUP.EXE to install the Microsoft Real-time Communications Client API binaries. This executable can be found within the "Installation" sub-directory.

     


    重要:请安装同时1.2和1.3 ,安装完下载后的MSI包之后,而且要运行
        :\Program Files\RTC Client API v1.2 SDK\INSTALLATION\RtcApiSetup.exe
        :\Program Files\RTC Client API v1.3 SDK\INSTALLATION\RtcApiSetup.exe
        :\Program Files\RTC Client API v1.3 SDK\INSTALLATION\RtcSxSPolicies.msi
       以上3个全部要安装,不是说安装1.3就不需要安装1.2了,而且要按照这个顺序,否则可能不能成功。
    最好重新启动电脑吧,(把WebService发布到服务器时候记得也要在服务器上面安装哦)

    2:编写Lib

    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace CMS.LCSLib
    {
        
    public class RTCClass
        
    {            

            
    private static void  createEnableProfile(RTCCORELib.RTCClient objRTCClient, string account, string password, string uri, string addr, string domain)
            
    {
                
    string s = "";
                s 
    += "<provision key=\"{566E246F-9978-4434-83BF-3E47BCCFF466}\" name=\"" + domain + "\">";
                s 
    += "<user account=\"" + account + "\" password=\"" + password + "\" uri=\"" + uri + "\" />";
                s 
    += "<sipsrv addr=\"" + addr + "\" protocol=\"tcp\" role=\"proxy\">";
                s 
    += "<session party=\"first\" type=\"pc2pc\" />";
                s 
    += "<session party=\"first\" type=\"pc2ph\" />";
                s 
    += "<session party=\"first\" type=\"im\" />";
                s 
    += "</sipsrv>";
                s 
    += "<sipsrv addr=\"" + addr + "\" protocol=\"tcp\" role=\"registrar\" />";
                s 
    += "</provision>";
                
                RTCCORELib.IRTCProfile2 objProfile;
    //
                RTCCORELib.IRTCClientProvisioning2 objProvisioning;//

                
    try
                
    {
                    objProvisioning 
    = (RTCCORELib.IRTCClientProvisioning2)objRTCClient;

                    objProfile 
    = (RTCCORELib.IRTCProfile2)objProvisioning.CreateProfile(s);

                    
    //EnableProfile
                    objProvisioning.EnableProfile(objProfile, 0xF);
                    
    //g_objProvisioning.EnableProfileEx(g_objProfile, 0x0000000F, 0x0000000F);
                }

                
    catch (Exception ex)
                
    {
                    System.Diagnostics.EventLog.WriteEntry(
    "LCSClass", ex.ToString());
                }

                
    return ;

            }


            public static void SendMessage(string strDestURI)
            
    {
                
    string account = @"tianchi\test";
                
    string password = "test";
                
    string uri = "sip:test@tianchi.local";
                
    string addr = "cms-biztalk.tianchi.local:5060";
                
    string domain = "tianchi.local";
                
    string strMsgHeader = null;
                
    string strMsg = "test from webservice";
                
    int lCookie = 0;
                
    string strDestName = null;

                try
                
    {

                      SendMessage(account, password, uri, addr, domain,
                           strMsgHeader, strMsg, lCookie, strDestURI, strDestName);
    }
                      catch (Exception ex)
                
    {
                    System.Diagnostics.EventLog.WriteEntry(
    "LCSClass", ex.ToString());
                }


                
    return;
            }


            
    public static void SendMessage(string account, string password, string uri, string addr, string domain,
                
    string strMsgHeader, string strMsg, int lCookie, string strDestURI, string strDestName)
            
    {
                
    try
                
    {
                    RTCCORELib.RTCClient objRTCClient;
    //            
                    RTCCORELib.IRTCSession objSession;
                    
    //RTCCORELib.IRTCParticipant g_objParticipant;

                    
    //'RTCClient needs to be initialized before any other method can be called on it.
                    objRTCClient = new RTCCORELib.RTCClient();
                    objRTCClient.Initialize();

                    
    //createProfile & EnableProfile
                    createEnableProfile(objRTCClient, account, password, uri, addr, domain);

                    
    //'Create an IM session.
                    objSession = objRTCClient.CreateSession(RTCCORELib.RTC_SESSION_TYPE.RTCST_MULTIPARTY_IM, nullnull0);

                    
    //'Add a participant to the IM session.
                    
    //g_objParticipant = g_objSession.AddParticipant(strDestURI, strDestName);
                    objSession.AddParticipant(strDestURI, strDestName);

                    
    //'Send a message.
                    objSession.SendMessage(strMsgHeader, strMsg, lCookie);
                    
    //g_objSession.SendMessage(null, strMsg, 0);
                }

                
    catch (Exception ex)
                
    {
                    System.Diagnostics.EventLog.WriteEntry(
    "LCSClass", ex.ToString());
                }

            }

        }

    }


    3:编写WebService
    using System;
    using System.Web;
    using System.Web.Services;
    using System.Web.Services.Protocols;

    [WebService(Namespace 
    = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo 
    = WsiProfiles.BasicProfile1_1)]
    public class RTCClass : System.Web.Services.WebService
    {
        
    public RTCClass()
        
    {

            
    //Uncomment the following line if using designed components 
            
    //InitializeComponent(); 
        }


        [WebMethod]
        
    public void SendMessage(string account, string password, string uri, string addr, string domain,
                
    string strMsgHeader, string strMsg, int lCookie, string strDestURI, string strDestName)
        
    {
            CMS.LCSLib.RTCClass.SendMessage( account,  password,  uri,  addr,  domain,
                 strMsgHeader,  strMsg,  lCookie,  strDestURI,  strDestName);
            
    return ;
        }

        /// <summary>
        
    /// 发送一个测试消息给某个用户
        
    /// </summary>
        
    /// <param name="strDestURI">格式:sip:cleo@tianchi.local</param>

        [WebMethod]
        
    public void SendMessageTest(string strDestURI)
        
    {      
            CMS.LCSLib.RTCClass.SendMessage( strDestURI);
            
    return;
        }

        
    }


    关于RTCCORELib.dll 引用问题
    ++++++++++++++++++++++++++++++++++++++++
    在项目里面引用DLL的时候,
    路径可能是:C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Networking.RtcDll_6595b64144ccf1df_5.2.2.1_x-ww_d6bd8b93\RTCCORELib.dll
    你在\WINDOWS\WinSxS\x86_Microsoft.Windows.Networking.RtcDll_XXXXX之类的目录里面找就可以,
    你也可以搜索RTCCORELib.dll

    注意在SDK安装的时候,要关闭其它程序,尤其是Messager之类的,否则可能会造成找不到RTCCORELib.dll
  • 相关阅读:
    解决Ubuntu下pycharm无法输入中文的问题
    爬取www.mmjpg.com网站图片,你懂得哦!
    批量查询ip地址归属地
    Opencv源码编译
    使用阿里云安装python模块
    Ansible运维自动化
    Mha-Atlas-MySQL高可用
    SVN
    Tomcat
    DHCP
  • 原文地址:https://www.cnblogs.com/cleo/p/Lcs_WebService.html
Copyright © 2011-2022 走看看