iT邦幫忙

DAY 8
5

我的學習之路系列 第 8

實作一個簡單的MSN機器人-5

又到了每日技術分享的時間,承續上一篇的內容,今天我們將會實作離線訊息發送和聯絡人上、下線通知的功能,而這一篇的分享文也是實作MSN機器人這個主題的最後一篇文章,雖然MSNPSharp這個API套件內還有許多其它的功能函式,但是我想對於MSN機器人來說,這些功能應該已經非常足夠了。
1.承續先前的Class,加入名為SendOfflieMsg的新函式,程式碼如下:

    Public Sub SendOfflineMsg(ByVal account As String, ByVal msg As String)
        Dim contact As Contact = msgr.ContactList.GetContact(account)
        Dim txtMsg As New TextMessage(msg)

        If contact Is Nothing Then
            Exit Sub
        Else
            msgr.OIMService.SendOIMMessage(contact, txtMsg)
        End If

        'msgr.OIMService.SendOIMMessage(account, msg)
    End Sub

透過OIMService的SendOIMMessage函式就可以發送離線的訊息,雖然SendOIMMessage有另一個多載的函式,但是在我實際測試的時候,利用網頁呼叫另一個多載的版本會引起非同步的呼叫,但是一般預設在網頁的設定是不執行非同步的作業的,所以我將它註解之後改為另一個版本,也就是和前兩篇所使用的方式雷同。
註:OIM應該是Offline Internet Message的縮寫。

2.聯絡人上、下線通知事件,我們必須訂閱相關的事件通知,所以在建構函式中加入下列的程式碼:

        AddHandler msgr.Nameserver.ContactOnline, AddressOf ContactOnline
        AddHandler msgr.Nameserver.ContactOffline, AddressOf ContactOffline

3.加入相對應的事件函式,程式碼如下:

    Private Sub ContactOnline(ByVal sender As Object, ByVal e As ContactEventArgs)
        '透過e.Contact取得上線的聯絡人
        '在這裡加入聯絡人上線時所要採取的動作,例:更改資料庫中的上線狀態。
    End Sub

    Private Sub ContactOffline(ByVal sender As Object, ByVal e As ContactEventArgs)
        '透過e.Contact取得離線的聯絡人
        '在這裡加入聯絡人離線時所要採取的動作,例:更改資料庫中的離線狀態。
    End Sub

以上就是今天的實作分享內容,其實整個MSN機器人的實作透過使用MSNPSharp這個現成SDK裡的API來達成我們想要的功能真的出乎意料的簡單,相關的通訊協定等事項都由MSNPSharp幫我們完成了,所以我們真正要做的就是發揮我們的想像力來實作出想要的功能。

如果覺得這個系列的主題不錯的話,別忘了按個「推」支持一下喔!

實作簡單的MSN機器人系列文章:
實作一個簡單的MSN機器人
實作一個簡單的MSN機器人-2
實作一個簡單的MSN機器人-3
實作一個簡單的MSN機器人-4
實作一個簡單的MSN機器人-5


上一篇
實作一個簡單的MSN機器人-4
下一篇
Silverlight與Facebook Developer Toolkit的使用心得
系列文
我的學習之路14

尚未有邦友留言

立即登入留言