⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 myrobot.cs

📁 MSN机器人开发接口
💻 CS
字号:
using System;
using System.IO;
using System.Drawing;
using System.Configuration;
using System.Runtime.Serialization;
using System.Collections.Specialized;
using System.Xml;
using System.Xml.Serialization;
using System.Text;
using System.Runtime.Serialization.Formatters.Binary;
using System.Threading;

using Incesoft.BotPlatform.SDK;
using Incesoft.BotPlatform.SDK.Interface;

namespace BotPlatformConsoleServer
{
	public class MyRobot
	{
		public string address;

		public int port;

		public string user;

		public string password;

		static void Main(string[] args)
		{
			MyRobot me = new MyRobot();
			me.address = "msnbot.incesoft.com";
			me.port = 6602;
			me.user = "spid";
			me.password = "password";
			
			IRobotServer server = RobotServerFactory.Instance.createRobotServer(me.address, me.port);
			server.addRobotHandler(new MyHandler(server));
			server.addConnectionListener(new MyListener());
			try
			{
				server.login(me.user, me.password, 300000);
			}
			catch (RobotException e)		
			{
				Console.Out.WriteLine("Failed to connect :" + e.Message);
			}
		}
	}

	class MyHandler : IRobotHandler
	{
		public MyHandler(IRobotServer server)
		{
			this.server = server;
		}
		private IRobotServer server;
		private Random rdm = new Random();

		public System.String commandList =	"*****************************************\r" + 
																	"**  BOTPLATFORM SDK DEMO COMMAND LIST  **\r" + 
																	"*****************************************\r" + 
																	" preface --- test message preface. \r" + 
																	" emo ------- test emoticon.\r" + 
																	" nudge ----- test nudge.\r" + 
																	" p4 -------- test msn activity.\r" + 
																	" typing ---- test typing info.\r" + 
																	" name ------ test change friendly name.\r" + 
																	" pm -------- test change personal msg.\r" + 
																	" dp -------- test change display picture.\r" + 
																	" bye --------- test close session.\r" + 
																	" help ------ print this command list.\r" + 
																	" ? --------- print this command list.\r" + 
																	" ent --------- print enterprise only command list.";

		public System.String commandListEnt =	"*****************************************\r" + 
																		"**  BOTPLATFORM SDK ENTERPRISE ONLY COMMAND LIST  **\r" + 
																		"**  Only use the following commands after upgraded your sp account  **\r" + 
																		"*****************************************\r" + 
																		" file ------ test file transfer.\r" + 
																		" bg -------- test background sharing.\r" + 
																		" ink ------- test send ink.\r" + 
																		" wink ------ test send wink.\r" + 
																		" voice ----- test send voiceclip.\r" + 
																		" webcam ---- test send webcam\r" + 
																		" cs <account> -------- test create session.\r" + 
																		" pu <account> ------ test push offline message.\r" + 
																		" iv <account> -------- test invite user.\r" + 
																		" ent --------- print this command list.";
 
		public virtual void  sessionOpened(IRobotSession session)
		{
			System.Console.Out.WriteLine("EVENT: sessionOpened");
			try
			{
				switch(session.OpenMode)
				{
					case SessionOpenMode.OPEN_MODE_CONV_OPEN:
						session.send(commandList);
						break;
					case SessionOpenMode.OPEN_MODE_ROBOT:
						session.send("You have an alert message: blablabla");
						break;
					default:
						break;
				}
			}
			catch (RobotException e)
			{
				util.consoleOut(e.ToString());
			}
		}
		
		
		public virtual void  sessionClosed(IRobotSession session)
		{
			System.Console.Out.WriteLine("EVENT: sessionClosed");
		}
		
		public virtual void  messageReceived(IRobotSession session, IRobotMessage message)
		{
			System.Console.Out.WriteLine("EVENT: messageReceived");
			
			try
			{
				System.String command = message.String;
				
				IRobotMessage msg = session.createMessage();
				
				if ("help".ToUpper().Equals(command.ToUpper()) || "?".ToUpper().Equals(command.ToUpper()))
				{
					session.send(commandList);
				}
				else if ("preface".ToUpper().Equals(command.ToUpper()))
				{
					msg.setSignature("preface-" + rdm.Next());
					msg.setString("test change preface");
					session.send(msg);
				}
				else if ("nudge".ToUpper().Equals(command.ToUpper()))
				{
					session.sendNudge(); 
				}
				else if ("p4".ToUpper().Equals(command.ToUpper()))
				{
					session.sendActivity("http://sp.incesoft.com", "INCE SP HOME PAGE"); 
				}
				else if ("typing".ToUpper().Equals(command.ToUpper()))
				{
					session.sendTyping(); 
				}
				else if ("name".ToUpper().Equals(command.ToUpper()))
				{
					server.DisplayName = "displayname-" + rdm.Next(); 
				}
				else if ("pm".ToUpper().Equals(command.ToUpper()))
				{
					server.PersonalMessage = "personalmessage-" + rdm.Next();
				}
				else if ("dp".ToUpper().Equals(command.ToUpper()))
				{
					server.DisplayPicture = "__default.dat"; 
				}
				else if ("emo".ToUpper().Equals(command.ToUpper()))
				{
					msg.registerEmoticon("(1)", "bear.png");
					msg.registerEmoticon("(2)", "beaver.png");
					msg.registerEmoticon("(3)", "balloon.png");
					
					msg.setString("a(1)b(2)c(3)d");
					
					session.send(msg);
				}
				else if ("emo".ToUpper().Equals(command.ToUpper())){
					session.send(commandListEnt);
				}
				else if ("cs".ToUpper().Equals(command.Substring(0, 2).ToUpper()))
				{
					server.createSession(session.Robot, command.Substring(2).Trim());
				}
				else if ("pu".ToUpper().Equals(command.Substring(0, 2).ToUpper()))
				{
					server.pushMessage(session.Robot, command.Substring(2).Trim(), "You have an offline message: blablabla");
				}
				else if ("iv".ToUpper().Equals(command.Substring(0, 2).ToUpper()))
				{
					session.inviteUser(command.Substring(2).Trim());
				}
				else if ("bye".ToUpper().Equals(command.ToUpper()))
				{
					session.close();
				}				
				else
				{
					System.String ret = "font name: " + message.FontName + "\r";
					ret = ret + "font style: " + message.FontStyle + "\r";
					ret = ret + "font color: " + message.FontColor.ToString() + "\r";
					ret = ret + "message content: " + "\r";
					ret = ret + message.String;
					
					session.send(ret);
				}
			}
			catch (RobotException e)
			{
				util.consoleOut(e.ToString());
			}			
		}
		
		public virtual void  nudgeReceived(IRobotSession session)
		{
			System.Console.Out.WriteLine("EVENT: nudgeReceived");
		}
		
		
		public virtual void  activityAccepted(IRobotSession session)
		{
			System.Console.Out.WriteLine("EVENT: activityAccepted");
		}
		
		
		public virtual void  activityRejected(IRobotSession session)
		{
			System.Console.Out.WriteLine("EVENT: activityRejected");
		}

		public virtual void userAdd(String robot, String user)
		{
			System.Console.Out.WriteLine("EVENT: userAdd");
		}
		
		public virtual void userRemove(String robot, String user)
		{
			System.Console.Out.WriteLine("EVENT: userRemove");
		}
		
		public virtual void  exceptionCaught(IRobotSession session, System.Exception cause)
		{
			System.Console.Out.WriteLine("SERVER ERROR: " + cause.Message);
		}

		public virtual void  activityClosed(IRobotSession session)
		{
			System.Console.Out.WriteLine("EVENT: activityClosed");
		}
		public virtual void  fileAccepted(IRobotSession session)
		{
			System.Console.Out.WriteLine("EVENT: fileAccepted");
		}
		
		public virtual void  fileRejected(IRobotSession session)
		{
			System.Console.Out.WriteLine("EVENT: fileRejected");
		}
		
		public virtual void  fileTransferEnded(IRobotSession session)
		{
			System.Console.Out.WriteLine("EVENT: fileTransferEnded");
		}
		
		public virtual void  backgroundAccepted(IRobotSession session)
		{
			System.Console.Out.WriteLine("EVENT: backgroundAccepted");
		}
		
		public virtual void  backgroundRejected(IRobotSession session)
		{
			System.Console.Out.WriteLine("EVENT: backgroundRejected");
		}
		
		public virtual void  backgroundTransferEnded(IRobotSession session)
		{
			System.Console.Out.WriteLine("EVENT: backgroundTransferEnded");
		}
		
		public virtual void  webcamAccepted(IRobotSession session)
		{
			System.Console.Out.WriteLine("EVENT: webcamAccepted");
		}
		
		public virtual void  webcamRejected(IRobotSession session)
		{
			System.Console.Out.WriteLine("EVENT: webcamRejected");
		}
				
		public virtual void  activityLoaded(IRobotSession session)
		{
			System.Console.Out.WriteLine("EVENT: activityLoaded");
		}

		public virtual void  activityReceived(IRobotSession session, System.String data)
		{
			System.Console.Out.WriteLine("EVENT: activityReceived:" + data);
		}

		public virtual void  userJoined(IRobotSession session, IRobotUser user)
		{
			System.Console.Out.WriteLine("EVENT: userJoined : " + user);
		}

		public virtual void  userLeft(IRobotSession session, IRobotUser user)
		{
			System.Console.Out.WriteLine("EVENT: userLeft :" + user);
		}
		
	}
	class MyListener : IRobotConnectionListener
	{
		public void serverConnected(IRobotServer server)
		{
			Console.Out.WriteLine("Server connected.");
		}

		public void serverReconnected(IRobotServer server)
		{
			Console.Out.WriteLine("Server reconnected.");
		}

		public void serverDisconnected(IRobotServer server)
		{
			Console.Out.WriteLine("Server disconnected.");
		}

		public void serverLoggedIn(IRobotServer sever)
		{
			Console.Out.WriteLine("Server logged in.");
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -