是否仍然可以获得Skype的用户在线状态?

时间:2014-02-23 13:19:55

标签: api skype

正如标题所说,在API服务(大)更改后,是否仍然可以在Skype上检查用户的状态(在线,离线,忙......)?开发人员部分现在似乎非常有限:http://developer.skype.com/

2 个答案:

答案 0 :(得分:9)

更新2014-12-19:

重要的是要知道:只有当用户启用了“我的互联网状态”或“Mein Status darf imNetzveröffentlichtwerden”(德语)时,检查Skype状态才有效。 否则状态总是“离线”

答案 1 :(得分:6)

是的。

可以使用一些网址来检测在线状态。

  

这会给出一个带有状态名称的文本(例如,离开或在线)

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

  

这为您提供了数字Skype状态代码(请参阅下面的列表)

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

  

这给出了一个xml输出,包括数字状态代码和状态文本   用不同的语言

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

  

最后,您的网址会显示不同的状态图标图片:

     

将“smallicon”或“smallclassic”替换为您喜欢的图像。   (可能的值:气球,bigclassic,smallclassic,smallicon,   mediaicon,dropdown-white,dropdown-trans)

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

在PHP中最好的方法是使用我的函数:

  /**
   * @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;
  }

用法:

$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";
}

可能的状态消息(英文)

  • http错误:获取api数据时出错,例如互联网问题
  • 连接未知:未选择或没有可用数据。离线:
  • 用户离线在线:用户在线离线:
  • 用户离开不可用:用户不可用
  • 干扰:用户是请勿打扰(DND)
  • 不可见:用户不可见或显示为脱机
  • Skype Me:用户在Skype Me中 模式

可能的数字状态代码:

  • 案例0 =未知
  • 案例1 =离线
  • 案例2 =在线
  • 案例3 =离开
  • 案例4 =不可用
  • 案例5 =请勿打扰
  • 案例6 =隐形
  • 案例7 = Skype Me

我从以下线程中了解这些信息: https://stackoverflow.com/a/16320950/2377961 https://stackoverflow.com/a/6426418/2377961