C#開發飛信機器人

來源:互聯網
上載者:User

今天要公司要給移動分公司開發一款飛信機器人,來提高飛信使用者活躍,自己去分析協議太麻煩了,前幾個月就有朋友在研究飛信協議,我相信網上也應該有現成的吧,google一下,果然找到自己想要的資料了.

利用飛信的協議可以線上收發訊息,或是向手機發送訊息。由此,可以自己來完成一個IM工具。

[圖片]

本文即是對飛信SDK的使用方法,及如何開發作一個說明。

FetionSDK下載:http://sites.google.com/site/allwealthshare/software/FetionSDK.dll.rar?attredirects=0

貼一下核心代碼:

private FetionSDK sdk = new FetionSDK();//執行個體化飛信sdk

sdk.SDK_ReceiveMessage += new FetionSDK.SDK_ReceiveMessageEventHandler(sdk_SDK_ReceiveMessage);//訊息接收事件
sdk.SDK_UserSatusChange += new FetionSDK.SDK_UserSatusChangedEventHandler(Sdk_SDK_UserSatusChange);//使用者狀態事件
sdk.SDK_Error += new FetionSDK.SDK_ErrorEventHandler(Sdk_SDK_Error);//sdk錯誤事件

/// <summary>
/// 登陸飛信
/// </summary>
private bool FetionLogin(string userName,string pwd)
{
        sdk.AccountManager.FillUserIdAndPassword(userName, pwd, false);//第三個參數為是否自動登陸
         bool isOk=sdk.AccountManager.Login();//登陸            
         return isOk;
}

/// <summary>
/// 發送訊息
/// </summary>
private bool SendFetionMsg(string userName, string msg)
{           
    bool isOk = false;
    try
    {
        int state = sdk.ContactControl.SendIM.SendIM(userName, msg);        
    }
    catch { isOk = false; }
    return isOk;
}

/// <summary>
/// 發送手機訊息
/// </summary>
private bool SendFetionMobileMsg(string userName, string msg)
{
    bool isOk = false;
    try
    {
        int state = sdk.ContactControl.SendSMS.SendSMS(userName, msg);
    }
    catch { isOk = false; }
    return isOk;
}
 

/// <summary>
/// 載入好友名單
/// </summary>
/// <param name="psSdk">飛信sdk對象</param>
/// <returns>返回飛信好友資訊集合</returns>
private List<FetionFriend> GetFetionFriendList(FetionSDK psSdk)
{
    List<FetionFriend> fetionFriends = new List<FetionFriend>();
    try
    {
        List<Imps.Client.Core.Contact> list = psSdk.ContactControl.getAllContactList();
        for (int i = 0; i < list.Count; i++)
        {
            try
            {
                FetionFriend fetionFriend = new FetionFriend();//自訂飛信使用者實體資訊類
                fetionFriend.UserId = int.Parse(list[i].Uri.Id);
                fetionFriend.Nickname = list[i].DisplayName;
                fetionFriend.Mobile = list[i].PersonalInfo.MobileNo;
                fetionFriends.Add(fetionFriend);
            }
            catch { }                   
        }
    }
    catch { fetionFriends = new List<FetionFriend>(); }
    return fetionFriends;
}
 

/// <summary>
/// 飛信sdk出現錯誤
/// </summary>
private void Sdk_SDK_Error(object sender, NullStudio.Fetion_SDK.Event.SDK_ErrorEventArgs fe)
{
    this.txtBox.Text += "錯誤:"+fe.Message.Message+"\r\n";
}

/// <summary>
/// 當前飛訊號狀態
/// </summary>
private void Sdk_SDK_UserSatusChange(object sender, Imps.Client.Core.UserSatusChangedEventArgs e)
{
    switch (e.NewStatus.ToString())
    {
        case "Disconnected"://斷開了網路
            FetionLogin(userName, userPwd);//重新登陸
            break;
        case "Initialized"://已初始化
           
            break;
        case "Loginning"://登陸中

            break;
        case "Logon"://已登陸
             sdk.AccountManager.CurrentUser.Presence.AsyncChangeMainPresence(Imps.Common.MainPresence.Online, Imps.Common.MainPresence.Online.ToString());//設定PC線上
            break;
        case "Logoff"://離開網路

            break;
        case "Logouting"://登出中

            break;
        case "None"://無狀態

            break;
        case "OfflineLogon"://離線

            break;
        case "StandBy"://待機

            break;
        case "WaitReconnect"://等待

            break;
    }           
    this.txtBox.Text += "狀態"+e.NewStatus.ToString() + "\r\n";
}

/// <summary>
/// 接收到的訊息
/// </summary>
private void sdk_SDK_ReceiveMessage(object sender, NullStudio.Fetion_SDK.Event.SDK_ReceiveMessageEventArgs fe)
{
    this.txtBox.Text += "" + string.Format(fe.Message, fe.Contact.PersonalInfo.Nickname +"("+ fe.Contact.Uri.Sid.ToString()+")") + "\r\n";
}
 

有幾點需要注意的就是:

1、登陸後顯示簡訊線上狀態?

       需要用sdk.AccountManager.CurrentUser.Presence.AsyncChangeMainPresence(Imps.Common.MainPresence.Online, Imps.Common.MainPresence.Online.ToString());啟用一次,顯示PC線上,更改使用者狀態。

2、為什麼會經常掉線?

      解決辦法:間隔一段時間更改一次使用者狀態,讓伺服器知道我還線上呢。

 

/Files/angells/FetionSDK.rar

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.