サイト上のICQ、Jabber、Skype、およびMRAのステータスを任意の形式で表示します









さまざまなメッセージングサービスの連絡先の現在のネットワークステータスの表示をサイトに追加する必要がある場合があります。 ほとんどの場合、これは名刺サイトで見つけるか、オンラインサポートオペレーターの空き状況を表示するために使用できます。 これには公式または非公式のサービスを使用できます。これは、原則として、より多くのデザインオプション、さまざまなテーマの写真を提供します。 しかし、元のサイトがあり、デフォルトの画像がそのスタイルに合わない場合はどうでしょうか? 既存の自転車より優れているとは思われない独自の自転車を発明するか、既製のソリューションからアイデアを借りて、ニーズに合わせて調整する必要があります。 2番目の方法に進みます。



まず、タスクを定義します。

-可能であれば、公式のステータス決定サービスを使用します

-彼らの不在の場合には、部外者に頼ることができます

-メソッドは、余剰のないできるだけシンプルなものにする必要があります(後でいつでも拡張できます)

-リクエスト時にページのレンダリングがハングしないように、バッファを作成します



ICQ、Jabber、Skype、およびMRAの例に関する4つの主な方法を検討してください。 残りは同様の方法で行うことができます。



検証はphpを使用して行われます。 ファイル「status.php」を作成し、5分ごとにスケジューラに追加します。 ステータスは別のファイルに保存されます。



私の場合、各プロトコルには「icq.s」などの独自のファイルがあります。 なぜなら ステータステキストだけでなく、写真も保存し、htmlコードの一部を2行で記述しました。 サイトのページの後半で段落を切り裂かないように、ページの特定の場所に目的の部分を挿入するだけにしました。



<? include('icq.s'); ?>
      
      





任意の大規模で複雑なデザインを記録することが可能になります。







ICQステータス



公式のステータスチェックサービスを使用します。 また、欠点もあり、奇妙に動作します。 たとえば、連絡先のステータスが「非表示」の場合にのみ、ステータス「退席中」を与えます。 オフライン以外の場合、連絡先は常に「オンライン」と表示されます。 したがって、クライアントでステータスを「退席中」に設定しても、「オンライン」として表示されます。 しかし、これは拒否する理由ではありません。タスクで述べたように、公式サービスを使用します。



クライアントのサイトでステータスの表示を許可することを忘れないでください。 ステータスを判断するには多くの方法がありますが、確認には同じアドレスを使用します。



 http://status.icq.com/online.gif?icq=__UIN
      
      





現在のICQステータスに応じて、指定されたイメージのアドレスは次の値を取ります。



 http://status.icq.com/0/online0.gif - Away http://status.icq.com/0/online1.gif - Online    http://status.icq.com/0/online2.gif - Offline
      
      





画像名の番号に応じて、ステータスが決定されます。 サーバーの応答から「Location」ヘッダーを取得し、そこからこの番号を取得します。 そして、スイッチの助けを借りて、ステータスとして与えられるものを設定します。 設計は次のとおりです。



 try { $a = @get_headers('http://status.icq.com/online.gif?icq=__UIN'); foreach($a as $Header) { if (is_int(strpos($Header, 'Location'))) { $Status = substr($Header, -5, 1); } } switch ($Status){ case '0': $icqstatus = '<img src="icq-away.png" alt=""/>'; break; case '1': $icqstatus = '<img src="icq-online.png" alt=""/>'; break; case '2': $icqstatus = '<img src="icq-offline.png" alt=""/>'; break; default: $icqstatus = '<img src="icq-offline.png" alt=""/>'; break; } } catch (Exception $e){}
      
      





変数「icqstatus」には、現在のステータスが格納されます。 サービスが機能しない場合、ステータスは「オフライン」です。 次に、このステータスをファイルバッファに書き込みます。



 $f=fopen('/home/mysite/icq.s','w'); fwrite($f,$icqstatus); fclose($f);
      
      





サーバー上のファイルへのフルパスを指定する必要があることに注意してください。

上記で書いたように、ページの適切な場所にステータスを表示するには、次を挿入します。



 <? include('icq.s'); ?>
      
      







UPD:ICQサイトの変更

現在、3つのオプションの代わりに、「オンライン」または「オフライン」のみが残っています。 コードを次のように変更します。



作業オプションを表示
現在のICQステータスに応じて、指定されたイメージのアドレスは次の値を取ります。



 http://status.icq.com/0/online1.gif - Online
      
      





他のすべての値はオフラインを意味します。 だから私たちは書く:



 try { $a = @get_headers('http://status.icq.com/online.gif?icq=__UIN'); foreach($a as $Header) { if (is_int(strpos($Header, 'Location'))) { $Status = substr($Header, -5, 1); } } switch ($Status){ case '1': $icqstatus = '<img src="icq-online.png" alt=""/>'; break; default: $icqstatus = '<img src="icq-offline.png" alt=""/>'; break; } } catch (Exception $e){}
      
      





残りはいつも通りです。







Skypeステータス



公式のSkypeステータスチェックサービスがあります。 ICQとは異なり、ステータステキストの形式で回答を得ることができます。 これには次のリンクを使用します。



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





クライアントのサイトでステータスの表示を許可することを忘れないでください。 Skypeの現在のステータスに応じて、次の値を取得します。



 Online Away Do Not Disturb Offline
      
      





私たちに残っているのは、追加のジェスチャーなしでテキストファイルの内容を取得する方法だけです。これは既にコーシャであり、余分なものは含まれていません。



 try { $a = @file_get_contents("http://mystatus.skype.com/_.txt"); switch($a) { case 'Online': $skypestatus = '<img src="skype-online.png" alt=""/>'; break; case 'Away': case 'Do Not Disturb': $skypestatus = '<img src="skype-away.png" alt=""/>'; break; case 'Offline': $skypestatus = '<img src="skype-offline.png" alt=""/>'; break; default: $skypestatus = '<img src="skype-offline.png" alt=""/>'; break; } } catch (Exception $e){}
      
      





そして、伝統に従って、受信したステータスを「skypestatus」変数からファイルに書き込みます。



 $f=fopen('/home/mysite/skype.s','w'); fwrite($f,$skypestatus); fclose($f);
      
      





サイトの適切な場所に印刷します。



 <? include('skype.s'); ?>
      
      









Jabberステータス



これは、サードパーティのサービスを使用せずに実行できない場合です。 Jabberのネットワークステータスを決定する標準的な方法はありません。 しかし、親切な人がいます。 真実はもっと複雑です。



最初はこのサービスhttp://web-apps.ru/jabber-presence/を使用しましたが、長い間完璧に機能していました。 しかし、最近1週間オフラインになり、代替手段を探す必要がありました。その1つはhttp://presence.jabberfr.org/でした。 使用します。



フランスのサービスのページに移動して、JIDを書き、下の[あなたのステータス(テキスト)]を選択します。 生成されたアドレスが少し下に表示され、ステータスが決定されます。



 http://presence.jabberfr.org/____JID/text-en.txt
      
      





次に、presence.jabberfr.orgサービスを名簿に追加する必要があります。 連絡先リストに表示され、あなたと同じステータスになります。 上記で生成されたリンクを使用してステータス表示を有効にするには、引用符なしのテキスト「visible」を含むメッセージをボットに送信します。



Jabberの現在のステータスに応じて、次の値があります。



 Available Away Not available Do not disturb Free for chat Offline
      
      





ステータスが「非表示」の場合、非表示になる前に最後に使用されたステータスが表示されます。

弊社のウェブサイトで受信ステータスの表示を実現しています。 また、Skypeの場合と同様に、テキストファイルのみを取得します。 ステータスに加えて、何も含まれていません。



 try { $a = @file_get_contents('http://presence.jabberfr.org/____JID/text-en.txt'); switch ($a){ case 'Available': case 'Free for chat': $jabberstatus = '<img src="jabber-online.png" alt=""/>'; break; case 'Away': case 'Not available': case 'Do not disturb': $jabberstatus = '<img src="jabber-away.png" alt=""/>'; break; case 'Offline': $jabberstatus = '<img src="jabber-offline.png" alt=""/>'; break; default: $jabberstatus = '<img src="jabber-offline.png" alt=""/>'; break; } } catch (Exception $e){}
      
      





jabberstatus変数には、現在のステータスが含まれています。 jabber.sファイルに書き込みましょう:



 $f=fopen('/home/mysite/jabber.s','w'); fwrite($f,$jabberstatus); fclose($f);
      
      





サイトの適切な場所に、ステータスを表示します。



 <? include('jabber.s'); ?>
      
      







UPD:代替

なぜなら 今、フランスのサービスは落ちました、私は代替案、すなわち http://web-apps.ru/jabber-presence/ 国内の友人。 それらの1つが動作します。



作業オプションを表示
http://web-apps.ru/jabber-presence/ページにアクセスして、説明を読みます。 怠け者のために、私はすべてを段階的に書きます。



web-apps-presence@jabber.ruを名簿に追加します。 追加すると、簡単なヘルプ付きのメッセージが表示されます。 「html-string」項目の内容を覚えておく必要があります。1つ目はjabberアドレス、2つ目はそのmd5ハッシュです。 この例では、2番目のオプションのみが使用されます。



 http://web-apps.ru/jabber-presence/html/xid/____JID
      
      





次に、ボットのメッセージに1番のみを含むメッセージを書き込みます。ステータス表示がオンになっているという答えが返されます。

次に、表示されるステータスのタイプを設定します。テキストのみが必要です。 これを行うには、PMでボットに次のメッセージを送信します。



 set html=%{status}
      
      





Jabberの現在のステータスに応じて、次の値があります。



 available away xa dnd chat
      
      





ステータスが「非表示」の場合、非表示になる前に最後に使用されたステータスが表示されます。 他のすべてのケースはオフラインと見なされます。

弊社のウェブサイトで受信ステータスの表示を実現しています。



 try { $a = @file_get_contents('http://web-apps.ru/jabber-presence/html/xid/____JID'); switch ($a){ case 'available': case 'chat': $jabberstatus = '<img src="jabber-online.png" alt=""/>'; break; case 'away': case 'xa': case 'dnd': $jabberstatus = '<img src="jabber-away.png" alt=""/>'; break; default: $jabberstatus = '<img src="jabber-offline.png" alt=""/>'; break; } } catch (Exception $e){}
      
      





残りはいつも通りです。







MRAステータス



これはMail.ruエージェントです。 ここでも、公式のMail.ruエージェントステータスチェックサービスを使用します。 ICQと同様に、ステータステキストなしで画像のみを表示する機会が与えられます。



 http://status.mail.ru/?_
      
      





なぜなら すべての画像には1つのアドレスがあり、すべて同じサイズであるため、他の何かを考え出す必要があります。 あなたは彼らの体重を知ることができますが、これは最良の方法ではありません。 ナイトの動きを作ってみましょう。つまり、画像のmd5ハッシュを決定するだけです。 また、3種類のステータスを取得します。



 0318014f28082ac7f2806171029266ef - Online, Free for chat, Do not disturb 89d1bfcdbf238e7faa6aeb278c27b676 - Away a46f044e175e9b1b28c8d9a9f66f4495 - Offline, Invisible
      
      





おなじみの構造でハッシュを定義した後、ステータスを設定します。



 try { $a = @md5(file_get_contents("http://status.mail.ru/?_")); switch($a) { case '0318014f28082ac7f2806171029266ef': $mrastatus = '<img src="mra-online.png" alt=""/>'; break; case '89d1bfcdbf238e7faa6aeb278c27b676': $mrastatus = '<img src="mra-away.png" alt=""/>'; break; case 'a46f044e175e9b1b28c8d9a9f66f4495': $mrastatus = '<img src="mra-offline.png" alt=""/>'; break; default: $mrastatus = '<img src="mra-offline.png" alt=""/>'; break; } } catch (Exception $e){}
      
      





受信したMRAステータスをファイルに書き込みます:



 $f=fopen('/home/mysite/mra.s','w'); fwrite($f,$mrastatus); fclose($f);
      
      





そして、適切な場所にステータスを表示します:



 <? include('mra.s'); ?>
      
      







これがどのように機能するかは、 http://damaks.me/で確認できます 。 たくさんの仕事がありますが、私は個人的にこの行動を見ることができるように、もっと長くオンラインに留まるようにします。





その他のプロトコル



同様に、他のプロトコルの現在のネットワークステータスを確認できます。 公式サービスがある場合はそれを使用し、ない場合は代替サービスを使用します。 以下に4つの異なる方法を示します。少なくとも1つは他のプロトコルに適しています。



Vkontakteステータス
ステータスを取得します(数値IDまたはエイリアスを使用できます)。



 try { $ch = curl_init('https://api.vkontakte.ru/method/getProfiles?uids=__ID&fields=online'); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $result=curl_exec($ch); curl_close($ch); $a = substr($result, -4, 1); switch ($a){ case '1': $vkstatus = '<img src="vk-online.png" alt=""/>'; break; case '0': $vkstatus = '<img src="vk-offline.png" alt=""/>'; break; default: $vkstatus = '<img src="vk-offline.png" alt=""/>'; break; } } catch (Exception $e){}
      
      





ファイルに書き込みます:



 $f=fopen('/home/mysite/vk.s','w'); fwrite($f,$vkstatus); fclose($f);
      
      





そして、出力する必要がある場所:



 <? include('vk.s'); ?>
      
      









PS



さまざまなリソースのステータスを表示するさまざまな方法を見つけましたが、正確に思い出せません。 さらに、同じ説明が何度も見られます。 ソースがわかっている場合は、投稿に追加します。 コメントや提案があれば、喜んで聞きます。



All Articles