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.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, null, null, 0);
//'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.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
posted on 2005-12-29 10:23 无为而为-凡事从积极的态度做起 阅读(6785) 评论(55) 编辑 收藏 举报