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

📄 msnserver.java.svn-base

📁 MSN客服自动化机器人
💻 SVN-BASE
字号:
package jm.form.msn;

import jm.form.msn.config.JMMRConfigConstants;
import jm.form.msn.util.Logger;
import jm.form.msn.util.Manager;
import net.sf.jml.MsnContact;
import net.sf.jml.MsnMessenger;
import net.sf.jml.MsnProtocol;
import net.sf.jml.MsnSwitchboard;
import net.sf.jml.MsnUserStatus;
import net.sf.jml.event.MsnAdapter;
import net.sf.jml.event.MsnContactListAdapter;
import net.sf.jml.impl.MsnContactImpl;
import net.sf.jml.impl.MsnMessengerFactory;
import net.sf.jml.message.MsnControlMessage;
import net.sf.jml.message.MsnDatacastMessage;
import net.sf.jml.message.MsnInstantMessage;
import net.sf.jml.message.MsnSystemMessage;
import net.sf.jml.message.MsnUnknownMessage;

/**
 * MSN服务程序
 * 梦界家园MSNP12
 * @author ISHome
 * @since 0.1
 * @version 0.5.0.2.1
 */
public class MSNServer implements JMMRConfigConstants{

	private String email;

	private String password;

	private MsnMessenger messenger;
	private Manager manager;
	private Logger logger;
	public MSNServer(Manager manager) {
		this.manager = manager;
		this.email = this.manager.getConfigMap().get(CONFIG_USERNAME);
		this.password = this.manager.getConfigMap().get(CONFIG_PASSWORD);

		this.logger = manager.getLogger();
	}
	
	private MSNServer(String email, String password) {
		this.email = email;
		this.password = password;
	}

	public void start() {
		messenger = MsnMessengerFactory.createMsnMessenger(email, password);
		messenger.setSupportedProtocol(new MsnProtocol[] { MsnProtocol.MSNP12 });
		messenger.getOwner().setInitStatus(MsnUserStatus.ONLINE);
		messenger.setLogIncoming(true);
		messenger.setLogOutgoing(true);
		messenger.addListener(new MSNListener());
		messenger.login();
		messenger.addContactListListener(new MsnContactListAdapter() {
			public void contactStatusChanged(MsnMessenger msn, MsnContact con) {
				manager.getLogger().debug(con.getDisplayName());
				manager.getLogger().debug(con.getPersonalMessage());
				manager.getLogger().debug(((MsnContactImpl) con).getCurrentMedia());
			}

			public void contactListInitCompleted(MsnMessenger messenger) {
				listContacts();
			}

		});

//		try {
//			Thread.sleep(10000);
//		} catch (InterruptedException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
//		messenger.logout();
//		messenger.login();

		//		messenger.getOwner().setDisplayName("Blah");
		//		messenger.getOwner().getDisplayName();
	}
	public void stop(){
		messenger.logout();
	}

	private void listContacts() {
		MsnContact[] cons = messenger.getContactList().getContacts();
		for (MsnContact con : cons) {
			manager.getLogger().debug(con.getDisplayName());
			manager.getLogger().debug(con.getEmail());
			manager.getLogger().debug(con.getStatus());
			manager.getLogger().debug(con.getPersonalMessage());
		}
	}

	public static void main(String[] args) throws Exception {
		//new MSNServer("ishometest@live.cn", "123456789").start();
		new MSNServer("is_home_test@hotmail.com", "123456789").start();
	}

	/////////////////////////////////////////////////////////////////
	/**
	 * MSN事件监听
	 * 梦界家园MSNP15
	 * @author ISHome
	 * @since 0.5
	 * @version 0.5.0.2.1
	 */
	public class MSNListener extends MsnAdapter {
		public void exceptionCaught(MsnMessenger messenger, Throwable throwable) {
			logger.error(messenger + throwable.toString(), throwable);
		}

		/**
		 * 登录
		 * @param messenger
		 */
		public void loginCompleted(MsnMessenger messenger) {
			logger.info(messenger + " login complete ");			
			manager.getMainForm().setServerStaters(SERVER_STATE_RUN);
		}

		/**
		 * 退出
		 * @param messenger
		 */
		public void logout(MsnMessenger messenger) {
			logger.info(messenger + " logout");
			manager.getMainForm().setServerStaters(SERVER_STATE_STOP);
		}

		/**
		 * 在线信息
		 */
		public void instantMessageReceived(MsnSwitchboard switchboard, MsnInstantMessage message, MsnContact friend) {
			logger.info(switchboard + " recv instant message " + message);
			switchboard.sendMessage(message, false);
		}

		/**
		 * 系统信息
		 */
		public void systemMessageReceived(MsnMessenger messenger, MsnSystemMessage message) {
			logger.info(messenger + " recv system message " + message);
		}

		/**
		 * 控制信息
		 */
		public void controlMessageReceived(MsnSwitchboard switchboard, MsnControlMessage message, MsnContact contact) {
			logger.info(switchboard + " recv control message from " + contact.getEmail());
			switchboard.sendMessage(message, false);
		}

		/**
		 * 离线消息
		 */
		public void datacastMessageReceived(MsnSwitchboard switchboard, MsnDatacastMessage message, MsnContact friend) {
			logger.info(switchboard + " recv datacast message " + message);
			switchboard.sendMessage(message, false);
		}

		/**
		 * 未知处理
		 */
		public void unknownMessageReceived(MsnSwitchboard switchboard, MsnUnknownMessage message, MsnContact friend) {
			logger.info(switchboard + " recv unknown message " + message);
		}

		/**
		 * 下载好友结束
		 */
		public void contactListInitCompleted(MsnMessenger messenger) {
			logger.info(messenger + " contact list init completeted");
		}

		/**
		 * 同步好友
		 */
		public void contactListSyncCompleted(MsnMessenger messenger) {
			logger.info(messenger + " contact list sync completed");
		}

		/**
		 * 好友状态
		 */
		public void contactStatusChanged(MsnMessenger messenger, MsnContact friend) {
			logger.info(messenger + " friend " + friend.getEmail() + " status changed from " + friend.getOldStatus() + " to " + friend.getStatus());
		}

		/**
		 * 登录用户状态
		 */
		public void ownerStatusChanged(MsnMessenger messenger) {
			logger.info(messenger + " status changed from " + messenger.getOwner().getOldStatus() + " to " + messenger.getOwner().getStatus());
		}

		/**
		 * 被人添加时候的处理
		 */
		public void contactAddedMe(MsnMessenger messenger, MsnContact friend) {
			messenger.addFriend(friend.getEmail(), friend.getFriendlyName());
			messenger.removeFriend(friend.getEmail(), true);
			logger.info(friend.getEmail() + " add " + messenger);
		}

		/**
		 * 被他人删除时候的处理
		 */
		public void contactRemovedMe(MsnMessenger messenger, MsnContact friend) {
			messenger.removeFriend(friend.getEmail(), true);
			logger.info(friend.getEmail() + " remove " + messenger);
		}

		/**
		 * 对话窗口关闭时候的处理
		 */
		public void switchboardClosed(MsnSwitchboard switchboard) {
			logger.info(switchboard + " closed");
		}

		/**
		 * 对话窗口打开时候的处理
		 */
		public void switchboardStarted(MsnSwitchboard switchboard) {
			logger.info(switchboard + " started");
		}

		/**
		 * 对话窗口中邀请他人时候的处理
		 */
		public void contactJoinSwitchboard(MsnSwitchboard switchboard, MsnContact friend) {
			logger.info(friend.getEmail() + " join " + switchboard);
		}

		/**
		 * 对话窗口中他人离开时候的处理
		 */
		public void contactLeaveSwitchboard(MsnSwitchboard switchboard, MsnContact friend) {
			logger.info(friend.getEmail() + " leave " + switchboard);
		}
	}
}

⌨️ 快捷键说明

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