Xin chào các bạn ! Như tiêu đề bài viết hôm nay mình xin chia sẻ đoạn code C# đáp ứng được yêu cầu tuỳ biến chức năng hỗ trợ trực tuyến bằng nick Yahoo và Skype. Với đoạn code này, tuỳ vào mục đích sử dụng, yêu cầu thiết kế (thường phần hỗ trợ trực tuyến trên website sẽ phải phù hợp với thiết kế tổng thể của website điều mà các icon mặc định của Yahoo, Skype không đáp ứng được) bạn có thể phát triển lại theo ý của riêng mình.

A. Giải pháp:

1. Request services (check Yahoo, Skype) của máy chủ Yahoo và Skype trả về trạng thái Online/ Offline với nick đầu vào.

StatusSupport(string yahooID)

2. Dựa trên trạng thái trả về tự động xuất mã HTML (template) hiển thị theo ý muốn.

WriteSupport(string yahooID, string pathImageOnline, string pathImageOffline, string alt)

B. Code demo. Đoạn mã mình chia sẻ chỉ mang tính tham khảo, các tham số trong các hàm đáp ứng nhu cầu mình sử dụng, mọi người chỉ xem để tham khảo nhé.

Lưu ý khá quan trọng là: đối với nick Skype để kiểm tra được trạng thái Online/ Offline thì thuộc tính 'Show my status on the web' phải được check nhé ! Mở chương trình Skype lên vào Tools -> Options -> Privacy Settings -> check chọn mục 'Allow my Online status to be show on the web'

Rồi sau đó có thể tiếp tục công việc code được rồi ^^.

Đầu tiên ta sẽ xây dựng các lớp và các phương thức như sau:

public class Support
        {
            /// <summary>
            /// Hàm generate HTML hỗ trợ trực tuyến bằng yahoo;
            /// </summary>
            public class Yahoo
            {
                /// <summary>
                /// Trả về trạng thái của nick Yahoo;
                /// </summary>
                /// <param name="yahooID">Nick yahoo</param>
                /// <returns>Chuỗi trả về ONLINE hoặc OFFLINE</returns>
                private static string StatusSupport(string yahooID)
                {
                    string strStatus = "OFFLINE";
                    try
                    {
                        StringBuilder sb = new StringBuilder();
                        byte[] buf = new byte[8192];
                        string url = "http://opi.yahoo.com/online?u=" + yahooID + "&m=t";
                        HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
                        HttpWebResponse response = (HttpWebResponse) request.GetResponse();
                        Stream resStream = response.GetResponseStream();
                        string tempString = null;
                        int count = 0;
                        do
                        {
                            count = resStream.Read(buf, 0, buf.Length);
                            if (count != 0)
                            {
                                tempString = Encoding.ASCII.GetString(buf, 0, count);
                                sb.Append(tempString);
                            }
                        } while (count > 0);
                        if (sb.ToString().IndexOf("NOT ONLINE") == -1)
                        {
                            strStatus = "ONLINE";
                        }
                    }
                    catch (Exception)
                    {
                    }
                    return strStatus;
                }
                /// <summary>
                /// Tự động sinh thẻ img cho tài khoản Yahoo
                /// </summary>
                /// <param name="yahooID">Nick Yahoo</param>
                /// <param name="pathImageOnline">Ảnh nếu trạng thái ONLINE</param>
                /// <param name="pathImageOffline">Ảnh nếu trạng thái OFFLINE</param>
                /// <param name="alt">Thuộc tính alt cho thẻ img</param>
                /// <returns></returns>
                public static string WriteSupport(string yahooID, string pathImageOnline, string pathImageOffline,
                                                  string alt)
                {
                    string strTemp = "";
                    strTemp += "<a href='ymsgr:sendim?" + yahooID + "'>";
                    if (StatusSupport(yahooID) == "ONLINE")
                    {
                        strTemp += "<img title='" + alt + "' src='" + pathImageOnline + "' border='0' />";
                    }
                    else
                    {
                        strTemp += "<img title='" + alt + "' src='" + pathImageOffline + "' border='0' />";
                    }
                    strTemp += "</a>";
                    return strTemp;
                }
       }
       public class Skype
       {
            public static string AddScriptSkype()
            {
                    return
                        "<script type='text/javascript' src='http://www.skypeassets.com/i/scom/js/skype-uri.js'></script>";
            }
            public static string WriteSupport(string nick, string textTitle, string imageOnline, string imageOffline, string imageSize, bool flgChatOrCall = true, bool flgCheckStatus=true)
            {
                string tmp = "";
                string tmpChatOrCall = "chat";
                //Online;
                if(flgChatOrCall!=true)
                {
                    tmpChatOrCall = "call";
                }
                if (flgCheckStatus == true)
                {
                    if (Convert.ToInt16(StatusSupport(nick))==2 )
                    {
                        tmp += "<a href='skype:" + nick + "?" + tmpChatOrCall + "' rel='nofollow'><img style='width:" +
                               imageSize + "px;height:auto;' src='" + imageOnline + "' alt='" + textTitle + "' title='" +
                               textTitle + "'/></a>";
                    }
                    else //Offline;
                    {
                        tmp += "<a href='skype:" + nick + "?" + tmpChatOrCall + "' rel='nofollow'><img style='width:" +
                               imageSize + "px;height:auto;' src='" + imageOffline + "'  alt='" + textTitle +
                               "' title='" + textTitle + "'/></a>";
                    }
                }
                else//Mặc định ảnh online;
                {
                    tmp += "<a href='skype:" + nick + "?" + tmpChatOrCall + "' rel='nofollow'><img style='width:" +
                               imageSize + "px;height:auto;' src='" + imageOnline + "'  alt='" + textTitle +
                               "' title='" + textTitle + "'/></a>";
                }
                return tmp;
            }
            private static string StatusSupport(string SkypeID)
            {
                StringBuilder sb = new StringBuilder();
                byte[] buf = new byte[8192];
                string url = "http://mystatus.skype.com/" + SkypeID + ".num";
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream resStream = response.GetResponseStream();
                string tempString = null;
                int count = 0;
                do
                {
                    count = resStream.Read(buf, 0, buf.Length);
                    if (count != 0)
                    {
                        tempString = Encoding.ASCII.GetString(buf, 0, count);
                        sb.Append(tempString);
                    }
                } while (count > 0);
                return sb.ToString();
            }
        }
}

C. Cách sử dụng:

Để sử dụng ta chỉ cần gọi hàm WriteSupport và đưa vào các tham số cần thiết để hiển thị.

Support.Yahoo.WriteSupport("sanddesert88","Đường dẫn ảnh nếu Online", "Đường dẫn ảnh nếu Offline","40", "Cù Kim Ngọc");

Mong những chia sẻ này hữu ích cho công việc lập trình của các bạn như nó đã làm với chính công việc của tôi vậy !

FMMSPolygon.com

You may also like

No Comment

Comments are closed.