我有一个想法,要求我能够通过标准信使协议发送和接收消息,如msn,icq,aim,skype等......
我目前只熟悉PHP和Python,因此可以使用我可以从所述语言访问的库。我发现phurple(http://sourceforge.net/projects/phurple/)用于php和python-purple(http://developer.pidgin.im/wiki/PythonHowTo),它们似乎不是最新的。你们建议做什么?我的目标是以远程方式编写web应用程序,如meebo.com
答案应该包括教程或示例实现和体面的文档.. pidgin.im实际上没有一个有用的教程..
另外,你也可以告诉我不同类型的实现,这样我就可以从现有的icq,aim,msn等实现中构建自己的类。如何连接到帐户(登录)然后发送一条消息的示例将是最终的帮助!
来一个人:)
答案 0 :(得分:11)
以下是连接Pidgin DBus服务器的方法。
#!/usr/bin/env python
import dbus
bus = dbus.SessionBus()
if "im.pidgin.purple.PurpleService" in bus.list_names():
purple = bus.get_object("im.pidgin.purple.PurpleService",
"/im/pidgin/purple/PurpleObject",
"im.pidgin.purple.PurpleInterface")
print "Connected to the pidgin DBus."
for conv in purple.PurpleGetIms():
purple.PurpleConvImSend(purple.PurpleConvIm(conv), "Ignore this message.")
else:
print "Could not find piding DBus service, make sure Pidgin is running."
不知道你是否看过这个,但这是官方的python DBus教程:link。
编辑:重新添加指向pidgin dev wiki的链接。它告诉你我上面发布的所有内容, 只需向下滚动页面。 http://developer.pidgin.im/wiki/PythonHowTo
答案 1 :(得分:2)
一个很好的选择是通过DBus接口:Pidgin(紫色)完全支持它,Python的DBus接口库非常稳定。
答案 2 :(得分:1)
如果你从phurple解压缩文件,你会得到一些这样的例子:
<?php
if(!extension_loaded('phurple')) {
dl('phurple.' . PHP_SHLIB_SUFFIX);
}
class CustomPhurpleClient extends PhurpleClient {
private $someVar;
protected function initInternal() {
$this->someVar = "Hello World";
}
protected function writeIM($conversation, $buddy, $message, $flags, $time) {
if(PhurpleClient::MESSAGE_RECV == $flags) {
printf( "(%s) %s %s: %s\n",
$conversation->getName() ? $conversation->getName() : $buddy->getName(),
date("H:i:s", $time),
is_object($buddy) ? $buddy->getAlias() : $buddy,
$message
);
}
}
protected function onSignedOn($connection) {
print $this->justForFun($this->someVar);
}
public function justForFun($param) {
return "just for fun, the param is: $param";
}
}
// end Class CustomPhurpleClient
// Example Code Below:
try {
$user_dir = "/tmp/phphurple-test";
if(!file_exists($user_dir) || !is_dir($user_dir)) {
mkdir($user_dir);
}
PhurpleClient::setUserDir($user_dir);
PhurpleClient::setDebug(true);
PhurpleClient::setUiId("TestUI");
$client = CustomPhurpleClient::getInstance();
$client->addAccount("msn://nick@hotmail.com:password@messenger.hotmail.com:1863");
$client->connect();
$client->runLoop();
} catch (Exception $e) {
echo "[Phurple]: " . $e->getMessage() . "\n";
die();
}
?>
答案 3 :(得分:0)
我使用WebIcqLite: ICQ messages sender作为ICQ协议。它很有效,课堂很容易理解。但是,我不知道其他协议。 Phurple库有什么问题?