[PHP tech.] PHP MSN Bot 筆記

首先,需要用到的類別可以在這裡找到:

phpmsnclass V1.9

我的作業系統是 FreeBSD,PHP 版本是 5,Apache 是 2.x。安裝的方式很簡單,就如同他的 readme 說的一樣。不過,他預設將檔案放在 /var/spool/msnbot 底下,如果你要換地方放的話,可能要自己修改一下 msnbot.php 這支檔案,否則跑起來可能會有點問題。另外,他所寫的 msnbot.sh 在 BSD 底下好像有點問題,不過我是自己做了一支簡單的 shell-script 來去啟動,所以沒差。
有一個要注意的地方是,它的 PHP Extensions 最好有安裝下列:

  • curl
  • pcre
  • pcntl
  • mhash(支援 MSNP15)
  • mcrypt(支援 MSNP15)
  • bcmath(支援 MSNP15)

在我的測試中,我發現支援 MSNP15 會比較穩定一點,所以如果有需要的話,那些 Extensions 還是裝起來,讓它單純的跑在 MSNP15 底下會比較穩定(預設是自動決定要跑 MSNP9 或是 MSNP15)。當然,這些 PHP 全部都要在命令提示視窗下執行,所以 Apache 記得要裝 CLI 的模組,這個服務需要用到 1863 port 別忘記打開(如果你防火牆有擋住的話)。另外,MSN 的認證需要用到 443 port 也別忘記開(一般都會開吧)。

下載回來都設定好之後,我們需要一組 MSN 的帳號來做登入動作。通常,我們不是申請 [email protected] 不然就是 [email protected],這樣感覺挺不蘇胡的(啥?)。所以,我們可以透過 MSN Live 的 .net Passport regisration 來註冊一個帳號。這個帳號是用來通過 .net passport 的認證的,我們申請完之後,可以改掉它。

首先,先填好申請資料。

確認 email 地址,就把左邊的 email 地址再打一次就好。

用剛申請好的 passport email 與密碼登入,選擇"Credentials"。

選擇修改 email address。

填寫你要改的 email address,其他資料一併填妥。

送出後它會將你登出,之後你就可以用你 修改過的 email address原本的密碼 登入。這樣,你已經準備好 MSNBot 的帳號了,接著下來先測試一下。你下載的檔案中,有一個檔案叫做 sample.php,打開並編輯。

#!/usr/bin/php -Cq

<?php

error_reporting(E_ALL);
include_once('msn.class.php');

// force to use MSNP9, without debug information
// $msn = new MSN('MSNP9');

// force to use MSNP9, with debug information
// $msn = new MSN('MSNP9', true);

// force to use MSNP15, without debug information
// $msn = new MSN('MSNP15');

// force to use MSNP15, with debug information
// $msn = new MSN('MSNP15', true);

// auto detect MSN protocol, without debug information
// $msn = new MSN;

// auto detect MSN protocol, with debug information
// 我們這裡先不強制使用 MSNP15,先做測試

$msn = new MSN('', true);

if (!$msn->connect('填入你剛剛修改好的 email 帳號', '填入你的密碼')) {
  echo "Error for connect to MSN network\n";
  echo "$msn->error\n";
  exit;
}

$msn->sendMessage('Now: '.strftime('%D %T')."\nTesting\nSecond Line\n\n\n\nand Empty Line",
         array( '填入你自己的 MSN 帳號' )
        );

echo "Done!\n";

exit;

檔案修改好之後存檔,接著直接測試。

php ./sample.php

如果執行有錯誤,請到 log/ 底下去查看 debug.log

在 MSN 收到的畫面如下:

這個類別所產生出來的機器人,基本上你跟它說什麼,它會還給你一模一樣的訊息。關於這一點,可能就得自己去修改了,至於跟資料庫串接的部分,壓縮檔中有很簡易的範例可以參考。當然,我個人覺得是直接修改掉 msnbot.php 這支檔案,來做到符合自己需求的機器人會比較快一點。不過大抵上,這已經算可用度頗高的工具了,剩下的部分除了程式上,就只缺創意了。

Hina Chen
偏執與強迫症的患者,算不上是無可救藥,只是我已經遇上我的良醫了。
Taipei