2013-04-29 29 views
0

我想知道是否有方法来检查这些即时通讯软件的在线状态(指示器):GTalk,MSN(Skype ),Facetime(或消息)。即时通讯工具GTalk,MSN(Skype),Facetime(或消息)的在线状态检查/指示灯

如果我能够获得用户的在线状态,看看他/她是否在线,离开,忙碌,空闲等等,对于这些即时通讯工具中的任何一个:AIM,GTalk,ICQ,MSN和YAHOO都会很棒。 (如果有另一个IM服务提供这种详细信息,请让我知道)。谢谢。

我可以通过卷曲到(big.oscar.aol.com for AIM,web.icq.com for icq和opi.yahoo.com for YAHOO)来获取AIM,ICQ和YAHOO的在线状态并解析响应。

注: GTalk曾经有徽章,并且不再可用。这是我正在寻找的一个好例子:http://motyar.blogspot.com/2010/04/gtalk-status-checker-with-php.html

+2

看看他们各自的API(例如,[FB的](https://developers.facebook.com/docs/chat/) )。他们中的大多数将实施XMPP协议,所以应该有一致的方法来检查跨服务的在线状态。 – Matt 2013-04-29 13:21:11

+0

https://github.com/ialphan/IMStatus – ialphan 2015-07-22 20:19:10

回答

1

这将因服务而异。我最近做了这个,发现a blog post关于如何做到这一点Skype,但不知道为别人。

代码属于annar2r,我没有做任何的吧:

<?php 

function get_skype_status($username, $image = false, $icon = false){ 
    //creating url 
    //if you need small icon 
    if($image && $icon) 
    { 
    /*************************************** 
     Possible types of images: 

     * balloon   - Balloon style 
     * bigclassic  - Big Classic Style 
     * smallclassic  - Small Classic Style 
     * smallicon  - Small Icon (transparent background) 
     * mediumicon  - Medium Icon 
     * dropdown-white - Dropdown White Background 
     * dropdown-trans - Dropdown Transparent Background 
     ****************************************/ 
     return "http://mystatus.skype.com/smallicon/".$username; 
    } 
    //if you need image 
    else if($image) 
    { 
     return "http://mystatus.skype.com/".$username; 
    } 
    //or just text 
    else 
    { 
    /*************************************** 
     Possible status values: 
     NUM  TEXT    DESCRIPTION 
     * 0  UNKNOWN    Not opted in or no data available. 
     * 1  OFFLINE     The user is Offline 
     * 2  ONLINE     The user is Online 
     * 3  AWAY     The user is Away 
     * 4  NOT AVAILABLE  The user is Not Available 
     * 5  DO NOT DISTURB The user is Do Not Disturb (DND) 
     * 6  INVISIBLE    The user is Invisible or appears Offline 
     * 7  SKYPE ME    The user is in Skype Me mode 
     ****************************************/ 
     $url = "http://mystatus.skype.com/".$username.".xml"; 
     //getting contents 
     $curl = curl_init(); 
     curl_setopt($curl, CURLOPT_URL, $url); 
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
     $data = curl_exec($curl); 
     curl_close($curl); 

     $pattern = '/xml:lang="en">(.*)</'; 
     preg_match($pattern,$data, $match); 

     return $match[1]; 
    } 
} 

//getting skype status icon 
$ico = get_skype_status("ar2rsawseen", true, true); 
echo "<p>Skype icon:</p>"; 
echo "<p><img src='".$ico."'/></p>"; 

//getting skype status image 
$image = get_skype_status("ar2rsawseen", true); 
echo "<p>Skype image:</p>"; 
echo "<p><img src='".$image."'/></p>"; 

//getting skype status text 
$status = get_skype_status("ar2rsawseen"); 
echo "<p>Skype status:</p>"; 
echo "<p>".$status."</p>"; 

?> 
+0

我不知道为什么安德鲁关闭了这个线程,但这个工程。谢谢。 – ialphan 2013-05-03 18:47:21

+0

可能是因为您在一个线程中询问了如此多的API。 – 2013-05-03 21:23:03