MSN机器人梦工厂(3)

来源:互联网 发布:网络兼容模式怎么设置 编辑:程序博客网 时间:2024/05/02 03:11
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>

废话少说。接上回。

由上回的一个应声虫机器人的例子,我们初步了解到jMSN开发包的基本用法,我先画一个它的工作原理图给大家:

一流信息监控拦截系统(IMB System)







中客科技信息有限公司信息监控系统提醒您:很抱歉,由于您提交的内容中或访问的内容中含有系统不允许的关键词或者您的IP受到了访问限制,本次操作无效,系统已记录您的IP及您提交的所有数据。请注意,不要提交任何违反国家规定的内容!本次拦截的相关信息为:监听器慢长的过程,它要与服务器通讯,要等待服务器返回回应信息。而处理器在后台做这些事情,做完后,它会通过你注册在MSNMessenger类中的MSNListener监听器通知你。

所以不要试者一连串的执行MSNMessenger中提供某些方法(主要是指前面提到的那些类似方法),你应该在自己的监听器中等待事件完成后的通知你后再执行相应命令。

MSNListener是一个接口,提供了多达28种事件通知方法。包括登入完成,好友上线或离线,开始会话或结束会话,收到新消息,  有谁添加自己为好友等事件。

这次的说教就到这。最后我们来改进一下上次的应声虫程序,让它可以在某人上线后主动发一个消息给他打招呼(不然谁知道你是个应声虫:D)。

代码别的地方都一样,只是在YesmanRobotAdapter新实现了两个方法:

    /**     * 好友上线时开始与其对话。     */    public void userOnline(MSNFriend friend)    {        try        {            System.out.println("开始邀请"+friend.getLoginName()+"会话");            MSN.doCall(friend.getLoginName());

        } catch (IOException e)        {            // TODO 处理异常            e.printStackTrace();        }     }

    /**     * 会话开始。     */ public void switchboardSessionStarted( SwitchboardSession ss ) {        try        {

            if ( ss==null ) return;                        String toFriend = ss.getMSNFriend().getLoginName();

            if ( MSN.findSwitchboardSession(toFriend)!=null )            {                MimeMessage msg = new MimeMessage("你好,这是MSN应声虫机器人自动与你通话。欢迎提问");                msg.setKind(MimeMessage.KIND_MESSAGE);                boolean success = MSN.sendMessage(toFriend, msg);                if ( success )                    System.out.println("打完招呼.");            }

                    } catch (IOException ex)        {            // TODO 处理异常            ex.printStackTrace();        }     }

在这里,首先在用户上线的事件通知userOnline里调用了doCall方法。doCall方法是开始与友人的通讯。这时候还不能马上向其发消息,要等到会议开始之后,所以又实现了一个switchboardSessionStarted。当会话开始后,我们的机器人就可以在你上线的时候主动发出问题了。

 

<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 高二了还不学怎么办 小朋友不喜欢上幼儿园怎么办 一岁半的宝宝不听话怎么办 老公是个窝囊废怎么办 幼儿园老师不喜欢家长怎么办 老师讨厌学生了怎么办 一个舍友很讨厌怎么办 家长对老师不满怎么办 教师被家长辱骂怎么办 如果老师喜欢自己怎么办 孩子不思进取逃避学习怎么办 老师拿孩子泄愤怎么办 老师对小孩不好怎么办 孩子被老师骂怎么办 孩子幼儿园被打怎么办 两个家长吵架老师怎么办 家长和老师矛盾怎么办 孩子特别害怕老师怎么办? 老师排挤孤立孩子怎么办 很害怕一件事怎么办 高中老师误会我怎么办 家长讹老师老师怎么办 小孩子老说头疼怎么办 孩子总是否定自己怎么办 孩子总是否定别人怎么办 老师屏蔽家长该怎么办 初二学生学疲劳怎么办 孩子不愿补英语怎么办 培训班孩子不学怎么办 小孩不想去学校怎么办 讨厌父母的性格怎么办 老师揪孩子耳朵怎么办 老师整天骂孩子怎么办 教师被学生骂怎么办 幼儿园学生骂老师怎么办 学生骂老师外号怎么办 小孩上课很多嘴怎么办 学生老玩手机怎么办 和校长有了矛盾怎么办 家长打了我怎么办 小朋友不想去幼儿园怎么办