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; using System.Collections.Generic;
using System.Collections.Generic; using System.Text;
using System.Text;
 namespace CMS.LCSLib
namespace CMS.LCSLib {
{ public class RTCClass
    public class RTCClass {
    {            
 private static void  createEnableProfile(RTCCORELib.RTCClient objRTCClient, string account, string password, string uri, string addr, string domain)
        private static void  createEnableProfile(RTCCORELib.RTCClient objRTCClient, string account, string password, string uri, string addr, string domain) {
        { string s = "";
            string s = ""; s += "<provision key=\"{566E246F-9978-4434-83BF-3E47BCCFF466}\" name=\"" + domain + "\">";
            s += "<provision key=\"{566E246F-9978-4434-83BF-3E47BCCFF466}\" name=\"" + domain + "\">"; s += "<user account=\"" + account + "\" password=\"" + password + "\" uri=\"" + uri + "\" />";
            s += "<user account=\"" + account + "\" password=\"" + password + "\" uri=\"" + uri + "\" />"; s += "<sipsrv addr=\"" + addr + "\" protocol=\"tcp\" role=\"proxy\">";
            s += "<sipsrv addr=\"" + addr + "\" protocol=\"tcp\" role=\"proxy\">"; s += "<session party=\"first\" type=\"pc2pc\" />";
            s += "<session party=\"first\" type=\"pc2pc\" />"; s += "<session party=\"first\" type=\"pc2ph\" />";
            s += "<session party=\"first\" type=\"pc2ph\" />"; s += "<session party=\"first\" type=\"im\" />";
            s += "<session party=\"first\" type=\"im\" />"; s += "</sipsrv>";
            s += "</sipsrv>"; s += "<sipsrv addr=\"" + addr + "\" protocol=\"tcp\" role=\"registrar\" />";
            s += "<sipsrv addr=\"" + addr + "\" protocol=\"tcp\" role=\"registrar\" />"; s += "</provision>";
            s += "</provision>"; 
             RTCCORELib.IRTCProfile2 objProfile;//
            RTCCORELib.IRTCProfile2 objProfile;// RTCCORELib.IRTCClientProvisioning2 objProvisioning;//
            RTCCORELib.IRTCClientProvisioning2 objProvisioning;//
 try
            try {
            { objProvisioning = (RTCCORELib.IRTCClientProvisioning2)objRTCClient;
                objProvisioning = (RTCCORELib.IRTCClientProvisioning2)objRTCClient;
 objProfile = (RTCCORELib.IRTCProfile2)objProvisioning.CreateProfile(s);
                objProfile = (RTCCORELib.IRTCProfile2)objProvisioning.CreateProfile(s);
 //EnableProfile
                //EnableProfile objProvisioning.EnableProfile(objProfile, 0xF);
                objProvisioning.EnableProfile(objProfile, 0xF); //g_objProvisioning.EnableProfileEx(g_objProfile, 0x0000000F, 0x0000000F);
                //g_objProvisioning.EnableProfileEx(g_objProfile, 0x0000000F, 0x0000000F); }
            } catch (Exception ex)
            catch (Exception ex) {
            { System.Diagnostics.EventLog.WriteEntry("LCSClass", ex.ToString());
                System.Diagnostics.EventLog.WriteEntry("LCSClass", ex.ToString()); }
            } return ;
            return ;
 }
        }

 public static void SendMessage(string strDestURI)
        public static void SendMessage(string strDestURI) {
        { string account = @"tianchi\test";
            string account = @"tianchi\test"; string password = "test";
            string password = "test"; string uri = "sip:test@tianchi.local";
            string uri = "sip:test@tianchi.local"; string addr = "cms-biztalk.tianchi.local:5060";
            string addr = "cms-biztalk.tianchi.local:5060"; string domain = "tianchi.local";
            string domain = "tianchi.local"; string strMsgHeader = null;
            string strMsgHeader = null; string strMsg = "test from webservice";
            string strMsg = "test from webservice"; int lCookie = 0;
            int lCookie = 0; string strDestName = null;
            string strDestName = null; try
            try {
            { SendMessage(account, password, uri, addr, domain,
                  SendMessage(account, password, uri, addr, domain, strMsgHeader, strMsg, lCookie, strDestURI, strDestName);
                       strMsgHeader, strMsg, lCookie, strDestURI, strDestName);}
catch (Exception ex)
 {
            { System.Diagnostics.EventLog.WriteEntry("LCSClass", ex.ToString());
                System.Diagnostics.EventLog.WriteEntry("LCSClass", ex.ToString()); }
            } return;
            return; }
        }
 public static void SendMessage(string account, string password, string uri, string addr, string domain,
        public static void SendMessage(string account, string password, string uri, string addr, string domain, string strMsgHeader, string strMsg, int lCookie, string strDestURI, string strDestName)
            string strMsgHeader, string strMsg, int lCookie, string strDestURI, string strDestName) {
        { try
            try {
            { RTCCORELib.RTCClient objRTCClient;//
                RTCCORELib.RTCClient objRTCClient;//             RTCCORELib.IRTCSession objSession;
                RTCCORELib.IRTCSession objSession; //RTCCORELib.IRTCParticipant g_objParticipant;
                //RTCCORELib.IRTCParticipant g_objParticipant;
 //'RTCClient needs to be initialized before any other method can be called on it.
                //'RTCClient needs to be initialized before any other method can be called on it. objRTCClient = new RTCCORELib.RTCClient();
                objRTCClient = new RTCCORELib.RTCClient(); objRTCClient.Initialize();
                objRTCClient.Initialize();
 //createProfile & EnableProfile
                //createProfile & EnableProfile createEnableProfile(objRTCClient, account, password, uri, addr, domain);
                createEnableProfile(objRTCClient, account, password, uri, addr, domain);
 //'Create an IM session.
                //'Create an IM session. objSession = objRTCClient.CreateSession(RTCCORELib.RTC_SESSION_TYPE.RTCST_MULTIPARTY_IM, null, null, 0);
                objSession = objRTCClient.CreateSession(RTCCORELib.RTC_SESSION_TYPE.RTCST_MULTIPARTY_IM, null, null, 0);
 //'Add a participant to the IM session.
                //'Add a participant to the IM session. //g_objParticipant = g_objSession.AddParticipant(strDestURI, strDestName);
                //g_objParticipant = g_objSession.AddParticipant(strDestURI, strDestName); objSession.AddParticipant(strDestURI, strDestName);
                objSession.AddParticipant(strDestURI, strDestName);
 //'Send a message.
                //'Send a message. objSession.SendMessage(strMsgHeader, strMsg, lCookie);
                objSession.SendMessage(strMsgHeader, strMsg, lCookie); //g_objSession.SendMessage(null, strMsg, 0);
                //g_objSession.SendMessage(null, strMsg, 0); }
            } catch (Exception ex)
            catch (Exception ex) {
            { System.Diagnostics.EventLog.WriteEntry("LCSClass", ex.ToString());
                System.Diagnostics.EventLog.WriteEntry("LCSClass", ex.ToString()); }
            } }
        } }
    } }
}
3:编写WebService
 using System;
using System; using System.Web;
using System.Web; using System.Web.Services;
using System.Web.Services; using System.Web.Services.Protocols;
using System.Web.Services.Protocols;
 [WebService(Namespace = "http://tempuri.org/")]
[WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class RTCClass : System.Web.Services.WebService
public class RTCClass : System.Web.Services.WebService {
{ public RTCClass()
    public RTCClass() {
    {
 //Uncomment the following line if using designed components
        //Uncomment the following line if using designed components  //InitializeComponent();
        //InitializeComponent();  }
    }
 [WebMethod]
    [WebMethod] public void SendMessage(string account, string password, string uri, string addr, string domain,
    public void SendMessage(string account, string password, string uri, string addr, string domain, string strMsgHeader, string strMsg, int lCookie, string strDestURI, string strDestName)
            string strMsgHeader, string strMsg, int lCookie, string strDestURI, string strDestName) {
    { CMS.LCSLib.RTCClass.SendMessage( account,  password,  uri,  addr,  domain,
        CMS.LCSLib.RTCClass.SendMessage( account,  password,  uri,  addr,  domain, strMsgHeader,  strMsg,  lCookie,  strDestURI,  strDestName);
             strMsgHeader,  strMsg,  lCookie,  strDestURI,  strDestName); return ;
        return ; }
    } /// <summary>
    /// <summary> /// 发送一个测试消息给某个用户
    /// 发送一个测试消息给某个用户 /// </summary>
    /// </summary> /// <param name="strDestURI">格式:sip:cleo@tianchi.local</param>
    /// <param name="strDestURI">格式:sip:cleo@tianchi.local</param> [WebMethod]
    [WebMethod] public void SendMessageTest(string strDestURI)
    public void SendMessageTest(string strDestURI) {
    {       CMS.LCSLib.RTCClass.SendMessage( strDestURI);
        CMS.LCSLib.RTCClass.SendMessage( strDestURI); return;
        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
posted on 2005-12-29 10:23 无为而为-凡事从积极的态度做起 阅读(6817) 评论(55) 收藏 举报
 
                    
                     
                    
                 
                    
                 
 
        

 
     
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号