MSN機器人的發展、應用與實作 資管三 B97705016 葉小僑 資管三 B97705020 李燕秋 資管三 B97705057 洪培瑄
簡介 msn的特性 即時、免費、使用者多 近年許多企業紛紛創造msn機器人提供線上服務,成為網路市場新趨勢
MSN機器人分類 綜合型 功能型 聊天型 宣傳型
優點 即時性 不用限制客服時間,與顧客的互動及服務有即時性 節省人力 節省客服人員所需的人力 吸引顧客 MSN的便利性 有趣的機器人有吸引力
問題 對企業形象的影響 資訊安全方面的隱憂 可能會造成顧客有覺得服務很機械、公式化、冰冷等負面觀感。 駭客可能會利用MSN機器人滲透企業內部網路並竊取資料
背後概念介紹
.NET Framework 一種採用系統虛擬機執行的編程平臺,以通用語言執行庫為基礎,支援多種語言的開發。 有多種版本(1.0、1.1、2.0、3.0、3.5、4.0 ),其中.NET Framework 3.5包含一個支援C#和VB.Net中心的語言特性的編譯器,以及對語言整合查詢的支援。 利用C#實作機器人
DotMSN 提供MSN Messenger服務的共享且獨立的library 架構為C#,但也支援其他程式語式,只需在dll file裡加入相關的reference 為獨立系統,不用安裝MSN也可以使用
DotMSN-功能 製作MSN bots 連接MSN的服務並更新個人資訊 偵測hotmail的狀況(是否有新信)
MSNPSharp DotMSN提供的MSN機器人開發套件 MSNPsharp三大namespace MSNPSharp:基本的data classes, façade classes, event argument classes, exception class MSNPSharp.Core:‘backend’ classes that are used by DotMSN MSNPSharp.DataTransfer: P2P and MSNSLP classes
P2P & MSNSLP Peer-to-peer (對等網際網路技術) 無中心伺服器 MSNSLP的架構為P2P
RSS RSS(Really Simple Syndication),簡易資訊聚合,是一種消息來源格式規範 發佈經常更新資料的網站,例如部落格文章、新聞、音訊或視訊的網路摘要 能夠讓網摘自動地發佈資料,同時也使讀者能更夠定期更新他們喜歡的網站或是聚合不同網站的網摘。
RSS使用 閱讀 訂閱 利用RSS實作機器人 RSS閱讀器 feed reader或aggregator等網頁 用滑鼠點取瀏覽器上指向訂閱程序的RSS小圖示之URI來訂閱網摘 利用RSS實作機器人
各種有趣的機器人實例
有問必達 功能型 有問必達
有問必達 功能型+聊天型 全台第一隻智慧型msn機器人 一開始阿達機器人只是為了查股票而建置 現有的功能包羅萬象,問天氣、查股票、聊天、笑話、小遊戲
簡介
有問必達 msn機器人寵物功能 透過逐句訓練,教會自己的msn機器寵物如何去回應問答
簡介
翻譯機器人 功能型 微軟MSN翻譯機器人
翻譯機器人 由微軟所推出的MSN翻譯機器人,打入想翻譯的字詞或句子,機器人就會自動幫你翻譯出來,不過他翻譯的不是很好……
火炮機器人 功能型 火炮機器人
火炮機器人 提供各類股市訊息,個股排行、基金獲利排行、大陸、香港行情及台灣證期行情,大盤狀態等,滿足股迷需求
威秀寶寶機器人 功能型 威秀寶寶機器人
威秀寶寶機器人 威秀影城的威秀寶寶機器人,可以查詢新片、場次及優惠活動。除外還可透過即時活動公告通知、投票、線上問卷。
王者密探 宣傳型機器人 王者密探
王者密探 遊戲橘子旗下的線上遊戲《王者世界》的msn機器人「王者密探」,能查詢最新討論、人物、點數及最新訊息,讓所有玩家可以隨時隨地了解遊戲訊息。
挖ㄟ媽祖 宣傳型機器人 挖ㄟ媽祖
挖ㄟ媽祖 遊戲媽祖Online的「挖ㄟ媽祖」能找餐廳、查飯店、寫日記,還可即時與媽祖互動求籤、占卜、心理測驗、祈願樹、媽祖報頭路….等功能。
OPEN小將 聊天型機器人 OPEN小將
OPEN小將 可以透過此機器人查詢天氣、星座運勢、統一發票中獎號碼等,也可以與OPEN小將對話聊天。
機器人 功能與特色 類型 Open小將 聊天、7-11或統一企業優惠活動、對發票、氣象、星座、玩遊戲等 功能型 + 宣傳型 + 聊天型 阿達 股市、星座、字典、笑話等,以及縮網址、查公車路線及郵遞區號等功能 功能型 + 聊天型 威秀寶寶 電影查詢、新片通知等 功能型 微軟MSN翻譯機器人 多國語言翻譯 挖ㄟ媽祖 占卜求籤、心理測驗、地圖查詢、找餐廳飯店等 火炮 查詢大盤、個股訊息、解盤、新聞查詢、待辦事項、線上客服、聊天等 王者密探 遊戲資訊、遊戲寶物及點數、人物討論 功能型 + 宣傳型
機器人實作 使用 C# 與 msnp-sharp 函式庫
What’s msnp-sharp? 非官方的MSN通訊協定函式庫 使用語言:c# 支援功能 http://code.google.com/p/msnp-sharp/ 使用語言:c# 支援功能 Message:文字、離線、群組訊息etc. Address Book:與“好友”相關的功能 Roaming Profile:與MSN儲存伺服器溝通 Nameserver(NS) & Switchboard(SB):機器人!!!
Msnp-sharp的範例 DotMSN Windows Live Messenger 的替代品 從範例中學習
機器人製造流程 創造一個Messenger物件 取得溝通憑證 登入MSN messenger的服務 接收訊息 傳送訊息
Step1. 創造出一個Messenger Messenger messenger = new Messenger(); 使用msnp-sharp提供的介面與網路溝通 略過底層訊息傳輸、協定操作的實作 Messenger messenger = new Messenger();
Step2. 取得與MSN溝通的憑證 messenger.Credentials = new Credentials(account, password, MsnProtocol.MSNP18); messenger.Connect(); MSN 現行的通訊協定
Step3.登入MSN messenger的服務並上線 messenger.NameserverProcessor.ConnectionEstablished += new EventHandler <EventArgs> (NameserverProcessor_ConnectionEstablished); messenger.Nameserver.SignedIn += new EventHandler <EventArgs>(Nameserver_SignedIn); private void Nameserver_SignedIn(object sender, EventArgs e) { messenger.Owner.Status = PresenceStatus.Online; }
Step4. 接收訊息 private List<RobotConversation> _convs = new List<RobotConversation>(0); public List<RobotConversation> RobotConvlist{ get{ return _convs; } messenger.ConversationCreated += new EventHandler <ConversationCreatedEventArgs> (messenger_ConversationCreated); _convs.Add(new RobotConversation(e.Conversation, this));
RobotCoversation class RobotConversation{ private Conversation _conversation = null; private RobotMain _robotmain = null; public RobotConversation(Conversation conv, RobotMain robotmain) { _conversation = conv; _conversation.Switchboard.TextMessageReceived += new EventHandler<TextMessageEventArgs>(Switchboard_TextMessageReceived); _robotmain = robotmain; } }
Step.5 回傳訊息 必須在RobotCoverstion內加入以下函式 e.Message.Text是送出去的訊息 private void Switchboard_TextMessageReceived(object sender, TextMessageEventArgs e) { e.Message.Text = 機器人說的話; _conversation.Switchboard.SendTextMessage(e.Message); }
自動加好友 messenger.Nameserver.ContactService.ReverseAdded += new EventHandler<ContactEventArgs>(Nameserver_ReverseAdded); void Nameserver_ReverseAdded(object sender, ContactEventArgs e) { Contact contact = e.Contact; if (messenger.Nameserver.Owner.NotifyPrivacy == NotifyPrivacy.PromptOnAdd) { Console.WriteLine("==>ReverseAdded contact mail2:" + e.Contact.Mail); if (contact.OnPendingList ||(contact.OnReverseList && !contact.OnAllowedList && !contact.OnBlockedList && !contact.OnPendingList)){ contact.OnAllowedList = true; messenger.Nameserver.ContactService.AddNewContact(contact.Mail); System.Threading.Thread.Sleep(200); }
訊息處理細節 正規表示式 public static IEnumerable matches(String pPattern, String pText, int pGroupId) { Regex r = new Regex(pPattern, RegexOptions.IgnoreCase | RegexOptions.Compiled); for (Match m = r.Match(pText); m.Success; m = m.NextMatch()) yield return m.Groups[pGroupId].Value; } // Switchboard_TextMessageReceived foreach (String s in matches(特定關鍵字, e.Message.Text, 0)) { e.Message.Text = 特定回應;
今天天氣好好──RSS RSS.NET RSS原始碼格式 <?xml version="1.0" encoding="ISO-8859-1" ?> <rss version="2.0"> <channel> <title> </title> <link> </link> <description> <item><title><link><description></description></link></title></item> </description> </channel> </rss>
今天天氣如何我知道 標籤判讀取得RSS內容 string url = RSS網址; RssFeed feed = RssFeed.Read(url); RssChannel channel = (RssChannel)feed.Channels[0]; string cutstr = channel.Items[0].Title.ToString(); //要讀的是哪個標籤的內容
I’m IM Robot 帳號:my_dearest_robot@hotmail.com 快加我好友! 你有什麼作業考試我都知道喔 我會占卜還會看天象,簡直跟孔明一樣強!!! 無聊時我會陪你玩遊戲 有問題可以問我喔,只是我有點沒耐心… 小心點,我跟你的老師們很熟喔XDD
未來 即時對話窗口 線上遊戲的機器人可以幫玩家練功 機器人可以向別的機器人撈資料 收費的機器人
Thnank you for your listening Bye~ The end