用PHP快速自製Plurk機器人

 Mon, 06 Jul 2009 11:08:33 +0800

Plurk沒有提供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網站上其他的範例程式裡面就可以找到。