* Nix рд╕рд┐рд╕реНрдЯрдо рдкрд░ PHP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ Skype API рдПрдХреНрд╕реЗрд╕ рдХрд░реЗрдВ

рдмрд╣реБрдд рд╕рдордп рдкрд╣рд▓реЗ рдореИрдВ рд╕реНрдХрд╛рдЗрдк рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЙрддреНрддрд░ рджреЗрдиреЗ рд╡рд╛рд▓реА рдорд╢реАрди рдпрд╛ рдмреЙрдЯ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЗрд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдХреНрдпрд╛ рдкрд╕рдВрдж рд╣реИред рдореБрдЭреЗ Google рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓рд╛, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдореИрдВ рдЙрдмрдВрдЯреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдХрд╛рд░реНрдп рдХрдИ рдмрд╛рд░ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛ рдЧрдпрд╛ред рдФрд░ рдЬрдм рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдХреЗрд╡рд▓ PHP рдХреЛ рдЬрд╛рдирддрд╛ рд╣реВрдВ, рдФрд░ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рд╣реИ, рддреЛ рдореЗрд░рд╛ рд╕рдкрдирд╛ рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣реЛ рдЧрдпрд╛ред

рд▓реЗрдХрд┐рди рд╣рд╛рд▓ рд╣реА рдореЗрдВ, Skype API рдкрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВрдиреЗ "рдбреА-рдмрд╕ рд╕рдВрджреЗрд╢" рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдХреНрдпреЛрдВ рдирд╣реАрдВ рджрд┐рдпрд╛ред рд╕рдм рдХреБрдЫ рдирд┐рдкрдЯрд╛ рдХрд░, рдореИрдВрдиреЗ рдЖрдЦрд┐рд░рдХрд╛рд░ рд╡рд╣реА рдХрд┐рдпрд╛ рдЬреЛ рдореИрдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЪрд╛рд╣рддрд╛ рдерд╛! рдореБрдЭреЗ PHP рдореЗрдВ Skype API рдХреА рд╕реБрд╡рд┐рдзрд╛ рдорд┐рд▓реАред рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкрдиреЗ рд▓реЗрдЦ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред



Dbus-php рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ phpize рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ php5-dev рдкреИрдХреЗрдЬ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
sudo apt-get install php5-dev 

рдЕрдм рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдЪрд▓рд╛рдХрд░ php-pear рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
 sudo apt-get install php-pear pear install PEAR 

Php рдХреЗ рд▓рд┐рдП dbus рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ, рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдкреВрд░реНрд╡-рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ (рдЖрдкрдХреЛ рдЕрд╡рд╢реНрдп рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ dbus-beta рд╕реНрдерд╛рдкрдирд╛ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧреА:
 sudo apt-get install libdbus-1-dev libxml2-dev pecl install dbus-beta 

рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдбрд╛рдЙрдирд▓реЛрдб рдХреЛ php рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
 echo -e "; configuration for php DBus module\nextension=dbus.so"| sudo tee -a /etc/php5/conf.d/dbus.ini 

рд╣рдо рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ php -i рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░реЗрдВ рдФрд░ рд╡рд╣рд╛рдВ рдЦреЛрдЬреЗрдВ:
 dbus Dbus support => enabled Version => 0.1.0 

рдорд┐рд▓ рдЧрдпрд╛? рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛! рддреБрдо рдЬрд╛ рд╕рдХрддреЗ рд╣реЛ!
рдирд╣реАрдВ рдорд┐рд▓рд╛? рдЦреИрд░, рд╕рдм рдХреБрдЫ рджреЛрд╣рд░рд╛рдПрдВ, рддреНрд░реБрдЯрд┐ рдвреВрдВрдвреЗрдВ, рд╕рд╣реА рдХрд░реЗрдВ рдФрд░ рдкрдврд╝рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВ, рд╕рдм рдХреБрдЫ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

рд╡рд╣ рд╕рдм рд╣реИ! рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд╣ рд╕рдм рдХреБрдЫ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдЪрд╛рд╣рд┐рдПред

рдЪрд▓реЛ рдиреАрдЪреЗ php рдХреЛрдб рдХреЗ рд▓рд┐рдП рд╣реА рдорд┐рд▓рддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рд╕рд░рд▓ рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реНрдХрд╛рдЗрдк рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ рдФрд░ рдПрдкреАрдЖрдИ рддрдХ рдкрд╣реБрдВрдЪ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╣рдо рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд░реЗрдВрдЧреЗ:
 $dbus = new Dbus(Dbus::BUS_SESSION, true); // Dbus $n = $dbus->createProxy('com.Skype.API', '/com/Skype', 'com.Skype.API'); //   $n -> Invoke('NAME PHP'); //  ,    $n -> Invoke('PROTOCOL 8'); //   

рд╕реНрдХрд╛рдЗрдк рдХреЛ рдирд┐рд░реНрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдирд╡реЛрдХ () рдореБрдЦреНрдп рд╡рд┐рдзрд┐ рд╣реЛрдЧреАред
рдЕрдм, рд╕реНрдХрд╛рдЗрдк рд╕реВрдЪрдирд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкрдврд╝рд╛рдиреЗ рджреЗрдВ:
 //    class phpSkype { public static function notify ($notify) { echo $notify."\n"; } } $dbus -> registerObject('/com/Skype/Client', 'com.Skype.API.Client', 'phpSkype'); //    while(1) { $s = $dbus -> waitLoop(1); } 

рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдХрд░, рдЖрдк рд╕рднреА рд╕реНрдХрд╛рдЗрдк рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреБрдЫ рдЗрд╕ рддрд░рд╣:
 CONNSTATUS ONLINE CURRENTUSERHANDLE *my_user* USERSTATUS DND CHATMESSAGE 5150665 STATUS READ CHATMESSAGE 5149961 STATUS READ CHATMESSAGE 5149993 STATUS READ CHATMESSAGE 5150025 STATUS READ CHATMESSAGE 5150057 STATUS READ CHATMESSAGE 5150697 STATUS SENDING CHAT #zaidin16/$e00fc2f75170ec9e ACTIVITY_TIMESTAMP 1345401315 CHATMESSAGE 5150697 STATUS SENT 

рд╣рдо phpSkype рд╡рд░реНрдЧ рдХреЛ рдкреВрд░рдХ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣реА рдореБрдЭреЗ рдорд┐рд▓рд╛ рд╣реИ:
 <?php $dbus = new Dbus(Dbus::BUS_SESSION, true); // Dbus $n = $dbus->createProxy('com.Skype.API', '/com/Skype', 'com.Skype.API'); //   $n -> Invoke('NAME PHP'); //  ,    $n -> Invoke('PROTOCOL 8'); //   class phpSkype { /* *           . *    ,      ,  * preg_match('/RECEIVED/', $notify) */ public static function notify ($notify) { if (preg_match('#RECEIVED|SENT#Uis', $notify)) { $message_id = explode(' ', $notify); bot::get_details($message_id[1]); //   } } } class bot { private static $last_id; public static function get_details ($message_id) { global $n; $ch = $n -> Invoke('GET CHATMESSAGE '.$message_id.' CHATNAME'); // id ,    $mess = $n -> Invoke('GET CHATMESSAGE '.$message_id.' BODY'); //   $aut = $n -> Invoke('GET CHATMESSAGE '.$message_id.' FROM_DISPNAME'); //   /* *     ,     ,   . *  :  , id    . */ $author = explode('FROM_DISPNAME ', $aut); $chat = explode('CHATNAME ', $ch); $message = explode('BODY ', $mess); echo $author[1].': '.$message[1]."\n"; //      /* *   ,        , -  *          "!". */ if ($message[1][0] == '!') { self::reply($chat[1], $message[1], $message_id); } } public function reply ($chat, $message, $id) { global $n; /* * ,   id ,    ,   ,  *        "!test"   ,     *   ,      . -       id * ,    ,   id ,    . */ self::$last_id = $message; if (self::$last_id <= $message) { switch ($message) { case '!test': $reply = 'It\'s work!'; break; case '!help': $reply = ',  '; break; default: $reply = ' !help'; break; } if ($reply != '') $n -> Invoke('CHATMESSAGE '.$chat.' '.$reply); //  } else { echo ' !'."\n"; } } } $dbus -> registerObject('/com/Skype/Client', 'com.Skype.API.Client', 'phpSkype'); //    while(1) { $s = $dbus -> waitLoop(1); } ?> 


рдЕрдм рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреБрдЫ рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗ рд╕рдХрддреА рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХрд┐рд╕реА рднреА рд╕рдВрджреЗрд╢ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдк рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рд╕рд╛рдЗрдЯ рдкрд░ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рдпрд╣ рдЖрдкрдХреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╣реЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдпрд╛ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдпрд╣ рдЖрдкрдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИред

рдЗрдирд╡реЛрдХ () рдкрджреНрдзрддрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рдЖрджреЗрд╢реЛрдВ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╕реВрдЪреА рдпрд╣рд╛рдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ ред
рдФрд░ [рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ] рд╕реНрд░реЛрдд рдХреЛрдб рдФрд░ рдПрдХ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕реНрдХреНрд░рд┐рдкреНрдЯред

рдореИрдВрдиреЗ рдЙрдмрдВрдЯреВ 12.04 рдПрд▓рдЯреАрдПрд╕ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдпрд╣ рд╕рдм рдХрд┐рдпрд╛ рд╣реИ, рдореИрдВ рдмрд╛рдХреА рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХрд╛рдо рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдХрд┐ рдХреЛрдИ рднреА рдЬрд╛рдВрдЪ рдХрд░реЗрдЧрд╛ред
рдХрд┐рд╕реА рднреА рд╡рд┐рдЪрд╛рд░ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред
рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

Source: https://habr.com/ru/post/In149850/


All Articles