Is it still possible to get Skype's user onlin

2020-06-01 08:31发布

问题:

As the title says, is it still possible to check a user's status (online, offline, busy...) on Skype after the (big) change in its API service? Developers section seems very very limited now: http://developer.skype.com/

回答1:

Yes there is.

There are some urls wich can be used to detect the online status.

This gives a text with the statusname (e.g. away or online)

http://mystatus.skype.com/SKYPENAME.txt

This gives you a numeric skype statuscode (see list below)

http://mystatus.skype.com/SKYPENAME.num

This gives an xml output including numeric statuscode and statustext in diffent languages

http://mystatus.skype.com/SKYPENAME.xml

At last you have urls which show diffent status icon images:

Replace "smallicon" or "smallclassic" with the image you like. (Possible values: balloon, bigclassic, smallclassic, smallicon, mediumicon, dropdown-white, dropdown-trans)

http://mystatus.skype.com/smallicon/SKYPENAME http://mystatus.skype.com/smallclassic/SKYPENAME http://mystatus.skype.com/SKYPENAME

In PHP The best way is to use my function:

  /**
   * @version: 1.0 (2014-05-13
   *
   * @param: String $username             Skype Username
   * @param: [String $lang]               Languagecode (possible values 2014-05-13: "en", "fr", "de","ja", "zh-cn", "zh-tw", "pt", "pt-br", "it", "es", "pl" , "pl"
   * @param: [String $img_time]           Typ im Status Image wich you like to show (Possible values: 2014-05-13: balloon, bigclassic, smallclassic, smallicon, mediumicon, dropdown-white, dropdown-trans)
   *
   * @return array                        "num" = Skype Statuscode, "text" = Statustext (Away" ect.), "img_url" url to Statuscode Image
   */
  function getSkypeStatus($username, $lang = "de", $img_type = "mediumicon")
  {
    $url = "http://mystatus.skype.com/".$username.".xml";
    $data = @file_get_contents($url);

    $status = array();
    if($data === false)
    {
      $status = array("num" =>0,
                      "text"=>"http error"
                );
      if(isset($http_response_header)) $status["error_info"] = $http_response_header;
    }
    else
    {
      $pattern = '/xml:lang="NUM">(.*)</';
      preg_match($pattern,$data, $match);

      $status["num"] = $match[1];

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

      $status["text"]    = $match[1];
      $status["img_url"] = "http://mystatus.skype.com/".$img_type."/".$username;
    }
    return $status;
  }

Usage:

$status = getSkypeStatus("YourSkypeName"); // Minimal
$status = getSkypeStatus("YourSkypeName","de");  // with defined language for Statustext
$status = getSkypeStatus("YourSkypeName","de", "mediumicon"); // with specified image 

// to display status Icon:

echo '<img src="'.$status["img_url"].'" alt="'.$status["text"].'" title="'.$status["text"].'">';


// or if you like to do you own code for different status

switch($status["num"])
{
  case 7:
  case 2: echo "You are online"; break;
  default: echo "you are offline or in away state";
}

Possible Status messages (in english) are

  • http error: Error to get the api data e.g. problems with internet
  • connection Unknown: Not opted in or no data available. Offline:
  • The user is Offline Online: The user is Online Away:
  • The user is Away Not Available: The user is Not Available Do Not
  • Disturb: The user is Do Not Disturb (DND)
  • Invisible: The user is Invisible or appears Offline
  • Skype Me: The user is in Skype Me mode

Possible numeric Statuscodes:

  • case 0 = Unknown
  • case 1 = Offline
  • case 2 = Online
  • case 3 = Away
  • case 4 = Not Available
  • case 5 = Do Not Disturb
  • case 6 = Invisible
  • case 7 = Skype Me

I god these informations from following threads: https://stackoverflow.com/a/16320950/2377961 https://stackoverflow.com/a/6426418/2377961



回答2:

UPDATE 2014-12-19:

It is important to know: checking a skype status works ONLY if the user has enabled "my status in internet" or "Mein Status darf im Netz veröffentlicht werden" (in german). Otherwise the status is alway "offline"



回答3:

Feature is not supported since May 2015

The checkbox disappeared from Skype Options.

Source: https://support.skype.com/en/faq/FA605/how-do-i-set-up-the-skype-button-to-show-my-status-on-the-web-in-skype-for-windows-desktop



标签: api skype