Search code examples
phpjavascriptmessengerinstant

Instant Messenger Online status check/indicator for GTalk, MSN (Skype), Facetime (or Messages)


I was wondering if there is a way to check online status (indicator) for any of these instant messengers: GTalk, MSN (Skype), Facetime (or Messages).

It would be great if I can get the user's online status to see if s/he is online, away, busy, idle, etc. for any of these instant messengers: AIM, GTalk, ICQ, MSN and YAHOO. (If there is another IM service that provides this kind of detailed information, please let me know). Thanks.

I am able to get online status for AIM, ICQ and YAHOO by curling to (big.oscar.aol.com for AIM, web.icq.com for icq and opi.yahoo.com for YAHOO) and parse the response.

Note: GTalk used to have badges and it's no longer available. This is a good example of what I'm looking for: http://motyar.blogspot.com/2010/04/gtalk-status-checker-with-php.html


Solution

  • This will differ from service to service. I did this recently and found a blog post about how to do this for Skype, but don't know for the others.

    Code belongs to annar2r, I didn't make any of it:

    <?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>";
    
    ?>