用PHP快速自製Plurk機器人
Mon, 06 Jul 2009 11:08:33 +0800Plurk沒有提供api,但是有提供使用IM來收發訊息的功能,透過簡單的語法,就可以透過IM做出plurk機器人。
我自己是使用Google Talk來收發Plurk,Google Talk使用從XMPP標準延伸出來的協定,所以要利用XMPP來使用Google Talk不必花太多功夫。稍微找了一下,就在google code上面找到一個雖然還在開發中,但是已經可以使用的專案,叫做XMPPHP。
要讓他可以跑,還需要打開PHP的openssl模組,因為Google Talk會用到TLS以及SASL。另外,就算功能正常使用,我還是碰到許多無法fclose資源的訊息...沒辦法,還在開發中的東西吧...
接下來,只要修改一下他的範例(sendmessage_example.php):
<?php // activate full error reporting //error_reporting(E_ALL & E_STRICT); include 'XMPPHP/XMPP.php'; #Use XMPPHP_Log::LEVEL_VERBOSE to get more logging for error reports #If this doesn't work, are you running 64-bit PHP with < 5.2.6? $conn = new XMPPHP_XMPP('talk.google.com', 5222, 'google帳號', 'google密碼', 'xmpphp', 'gmail.com', $printlog=false, $loglevel=XMPPHP_Log::LEVEL_INFO); try { $conn->connect(); $conn->processUntil('session_start'); $conn->presence(); $conn->message('bot@plurk.com', '說 機器人測試。'); $conn->disconnect(); } catch(XMPPHP_Exception $e) { die($e->getMessage()); }
執行後馬上就可以送出一個訊息到Plurk了。另外,要送出中文訊息的話,檔案編碼必須是UTF-8,所以使用編輯器的時候得要設定好。
至於訊息的語法,對熟悉的人來說,應該沒問題吧???
XMPPHP還在開發中,很多功能也許還不是很穩定,有問題的話可以上去計畫網頁上的issue list上看看,也許是還沒有解決的bug。
另外,稍微了解一下XMPP也許對於使用會有幫助,標準文件是RFC 3920。他使用到的XML Entities其實沒幾個,上手應該很快,而且XMPPHP也會幫忙處理掉這一塊,讓它在完整收到一個entity後執行你要處理的程式,這些在XMPPHP網站上其他的範例程式裡面就可以找到。