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

📄 individualchat.java

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

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;

import jm.entity.ESM000200;
import jm.form.msn.bean.BusinessImportance;
import jm.form.msn.bean.BusinessUser;
import jm.form.msn.config.JMMRConfigConstants;
import jm.form.msn.util.Manager;
import jm.util.JMCheck;
import jm.util.JMEntity;
import jm.util.JMRandom;
import jm.util.JMVector;

/**
 * 智能聊天个人 
 * 梦界家园MSNP15
 * 
 * @author ISHome
 * @since 0.4
 * @version 0.5.0.2.1
 */
@SuppressWarnings("unchecked")
public class IndividualChat implements JMMRConfigConstants {
	private Manager manager = null;

	public IndividualChat(Manager server) {
		manager = server;
	}

	/**
	 * 智能聊天个人
	 */
	public void invoker(BusinessUser u, String[] fields) {
		JMVector<ESM000200> messageList = new JMVector<ESM000200>();
		ESM000200 talk;
		try {
			// command 客户查询信息
			// 全部Talk
			Hashtable<String, ESM000200> talkMap = (Hashtable<String, ESM000200>) manager.getTalkMap();
			// System.out.println("talkMap==="+talkMap);
			// 相似度
			HashMap<String, BusinessImportance> importanceBeanMap = new HashMap<String, BusinessImportance>();
			// 提高精确度使用
			ArrayList<ESM000200> likeTalkList = new ArrayList<ESM000200>();
			BusinessImportance importanceBean = new BusinessImportance();
			ESM000200 importanceTalk = new ESM000200();
			Map.Entry entry = null;
			BusinessImportance bean;
			String tag;
			// System.err.println("talkMap=="+talkMap);
			// 内存遍历
			for (Iterator iter = talkMap.entrySet().iterator(); iter.hasNext();) {
				entry = (Map.Entry) iter.next();
				talk = (ESM000200) entry.getValue();
				// 相似度比较
				for (int i = 0; i < fields.length; i++) {
					tag = talk.getTag();
					if (tag.indexOf(fields[i]) >= 0) {
						bean = importanceBeanMap.get(talk.getNumID());
						if (bean == null) {
							bean = new BusinessImportance();
						}
						// Importance 重要度
						int num = bean.getImportance();
						num = num + 1;
						bean.setImportance(num);// 使用
						// Tag
						tag = bean.getTag();
						if (tag == null) {
							tag = "";
						}
						tag = tag + (fields[i] + JMEntity.SPLIT);
						bean.setTag(tag);
						// save
						if (bean.getImportance() > importanceBean.getImportance()) {
							importanceBean = bean;
							importanceTalk = talk;
						}
						importanceBeanMap.put(talk.getNumID(), bean);
						likeTalkList.add(talk);
					}
				}
				// 精确程度,一次返回最多数据
				if (likeTalkList.size() > Integer.parseInt(manager.getConfigMap().get(MAX_IMPORTANCE_NUMBER))) {
					break;
				}
			}
			// 精确度不足的时候随机选择
			if (importanceBean.getImportance() == 1) {
				importanceTalk = likeTalkList.get((new JMRandom(0, likeTalkList.size() - 1)).nextIntSnippet());
			}
			// 设置返回结果
			if (JMCheck.isNull(importanceTalk.getTalkValue()) == false)
				messageList.add(importanceTalk);
		} catch (Exception e) {
			talk = new ESM000200();
			talk.setNumID("99999");
			talk.setTalkValue("系统忙,请稍后再试。");
			messageList.add(talk);
			e.printStackTrace();
		}

		// 用户对话结果保存
		u.setMessageList(messageList);
		// System.err.println("messageList=="+messageList);
		manager.getUserList().put(u.getMsnID(), u);
	}
}

⌨️ 快捷键说明

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