XMPPHP
XMPPHP 是一个 Jabber/XMPP 的 PHP 类。使用它能够制作 Gtalk 机器人。它有如下功能:
- 能够连接到任何 XMPP 1.0 服务器,(Google Talk,LJ Talk,jabber.org 等等)
- 支持 TLS 加密
- 几种 XML 处理实现和支持样式
- 持久连接
下面是一个发送信息的例子。
<?php
include("xmpp.php");
$conn = new XMPP('talk.google.com', 5222, 'username', 'password', 'xmpphp', 'gmail.com', $printlog=False, $loglevel=LOGGING_INFO);
$conn->connect();
$conn->processUntil('session_start');
$conn->message('someguy@someserver.net', 'This is a test message!');
$conn->disconnect();
?>
下面是一个命令行机器人代码:
<?php
include("xmpp.php");
$conn = new XMPP('talk.google.com', 5222, 'user', 'password', 'xmpphp', 'gmail.com', $printlog=True, $loglevel=LOGGING_INFO);
$conn->connect();
while(!$conn->disconnected) {
$payloads = $conn->processUntil(array('message', 'presence', 'end_stream', 'session_start'));
foreach($payloads as $event) {
$pl = $event[1];
switch($event[0]) {
case 'message':
print "--------------------------------------\n";
print "Message from: {$pl['from']}\n";
if($pl['subject']) print "Subject: {$pl['subject']}\n";
print $pl['body'] . "\n";
print "--------------------------------------\n";
$conn->message($pl['from'], $body="Thanks for sending me \"{$pl['body']}\".", $type=$pl['type']);
if($pl['body'] == 'quit') $conn->disconnect();
if($pl['body'] == 'break') $conn->send("</end>");
break;
case 'presence':
print "Presence: {$pl['from']} [{$pl['show']}] {$pl['status']}\n";
break;
case 'session_start':
$conn->presence($status="Cheese!");
break;
}
}
}
?>
我利用这个创建了一个 gtalk 机器人。然后通过和它交互来发布文章到 WordPress 博客。但是基于 PHP 的机器人总是非常不稳定。所以只能自己玩玩了。 🙂 有兴趣可以到这里看看:http://blog.wpjam.com/mjj/