Можно ли получить онлайн-статус пользователя Skype?

Как гласит название, можно ли по-прежнему проверить статус пользователя (онлайн, офлайн, занят...) в Skype после (большого) изменения в его API-сервисе? Теперь раздел разработчиков выглядит очень ограниченным: http://developer.skype.com/

Ответ 1

Да, есть.

Есть некоторые URL-адреса, которые могут быть использованы для обнаружения онлайн-статуса.

Это дает текст со статусом (например, в режиме "выезд" или "онлайн" )

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

Это дает вам числовой код состояния skype (см. список ниже)

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

Это дает выход xml, включая числовой код состояния и statustext на разных языках

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

Наконец, у вас есть URL-адреса, которые отображают изображения значков состояния:

Замените "smallicon" или "smallclassic" на понравившееся изображение. (Возможные значения: воздушный шар, многоклассовый, малоклассический, малый, mediumicon, 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, например. проблемы с Интернетом
  • connection Неизвестно: недоступно или нет данных. Offline:
  • Пользователь не в сети Online: Пользователь в сети:
  • Пользователь недоступен Недоступен: пользователь недоступен Не
  • Тревога: пользователь не беспокоит (DND)
  • Невидимый: пользователь невидим или появляется офлайн
  • Skype Me: пользователь находится в Skype Me Режим

Возможные числовые коды состояния:

  • case 0 = Неизвестно
  • case 1 = Offline
  • case 2 = Online
  • case 3 = Away
  • case 4 = Недоступно
  • случай 5 = Не беспокоить
  • случай 6 = Невидимый
  • case 7 = Skype Me

Я богу эту информацию из следующих тем: fooobar.com/questions/448928/... fooobar.com/questions/448929/...

Ответ 2

ОБНОВЛЕНИЕ 2014-12-19:

Важно знать: проверка статуса skype работает ТОЛЬКО, если пользователь включил "мой статус в Интернете" или "Дайфский статус в Netz veröffentlicht werden" (на немецком языке). В противном случае статус всегда "офлайн"