Este artigo mostra como desenvolver um script para exibir o status do Messenger, do Skype ou GTalk de modo personalizado, sem precisar copiar e colar os códigos (e as figuras toscas) exibidas por estes serviços e comunicação. Ao final haverão sugestões de uso e de melhorias nas funcionalidades.
<?php /* Este script PHP exibe o status do Skype: On-line ou Off-line
Nota: A variável ambiente allow_url_fopen do PHP deve estar no modo ativado "ON" para que permita o download da figura PNG
*/
/* ***** Passo 1 - Download da figura PNG de status do Skype *****
adaptado de www.php.net/fopen
*/
// Coloque na variável $file_source a URL correspondente ao seu login:
$file_source = "http://mystatus.skype.com/balloon/guiguigoiano";
// Coloque na variável $file_target o caminho absoluto do arquivo PNG que é criado pelo serviço de comunicação, no caso o Skype:
$file_target = "/tmp/skype_status.png";
$rh = fopen($file_source, 'rb');
$wh = fopen($file_target, 'wb');
if ($rh===false || $wh===false) { //echo "error reading or opening file"; //return true;
}
while (!feof($rh)) {
if (fwrite($wh, fread($rh, 1024)) === FALSE) { //echo 'Download error: Cannot write to file ('.$file_target.')'; //return true;
}
}
fclose($rh);
fclose($wh); // No error //return false; //echo "imagem salva e tudo ok!";
/* ***** Passo 2 - A biblioteca GD lê o pixel e retorna a cor *****
No nosso caso, o pixel selecionado é o x=55 e y=15, que dá uma cor verde para On-line e cor cinza para offline.
adaptado de www.php.net/imagecolorat
*/
$im = @imagecreatefrompng ($file_target); /* Attempt to open */
if (!$im) { /* See if it failed */
echo "erro no na captura da imagem";
}
$rgb = imagecolorat($im, 55, 15);
if ($rgb == 59) {
echo "Usuário Skype On-line"; // Método retorna TRUE
} else {
echo "Usuário Skype Off-line"; // Método retorna False
}
/*
Pronto, agora o script PHP retorna se você está online ou offline automaticamente. Assim você pode escrever ou não no site o seu status.
Sugestão 1: Para sites com muitos acessos, utilize um "cache" de modo que a consulta ao servidor do Skype só ocorra a cada 30 segundos após a criação do arquivo temporário.
Sugestão 2: Faça deste código um método de um objeto PHP.
Sugestão 3: Se o admin do seu serviço de hospedagem não deixar o Apache escrever na pasta /tmp do servidor, então crie uma pasta na sua conta de hospedagem com permissão de escrita.
*/
?>
[1] Comentário enviado por marciolara em 23/03/2011 - 09:56h
Tenho um site e gostaria de inserir os códigos HTML do msn, skype e o talk. O sistema do site é Joomla , e o suporte não está conseguindo. Tem alguma coisa a ver com o sistema Joomla? Uso em meu blog e funciona normalmente. Obrigado.
Márcio O. Lara
Águas Vermelhas-MG
[3] Comentário enviado por diegokorvo em 17/10/2012 - 15:16h
corrigi um problema que estava tendo com muitos clientes utilizando este código e fazendo uma pequena modificação.
O status do Msn poderia ficar ausente, ou ocupado também. Então mudei a configuração para a cor de um pixel da imagem Offline
[4] Comentário enviado por guiguix em 17/10/2012 - 16:14h
Obrigado douglasjam e diegokorvo, vocês melhoraram o script. Lembro aos visitantes e amantes do PHP que:
1) O GTALK desativou este serviço. Por isso, se você deseja um help desk simplificado, utilize o phpFreeChat (http://www.phpfreechat.net), um projeto gratuito e muito fácil de integrar;
2) Em PHPCLASSES (http://www.phpclasses.org) tem classes prontinhas para visualizar o status do Skype e MSN.