发送和接收(libpurple)消息协议

2024-05-28 11:16:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个想法,要求我能够通过标准的信使协议,如msn,icq,aim,skype等发送和接收消息。。。在

我目前只熟悉PHP和Python,因此会喜欢从上述语言访问的库。我找到了php的phurple(http://sourceforge.net/projects/phurple/)和python purple(http://developer.pidgin.im/wiki/PythonHowTo),它们似乎不是最新的。你们建议怎么做?我的目标是以一种遥远的方式编写一个webapplication,比如meebo.com网站在

答案应该包括一个教程或示例实现和一个像样的文档。。这个洋泾浜.im没有真正有用的教程。。在

另外,您也可以告诉我不同种类的实现,这样我就可以从现有的icq、aim、msn等实现中构建自己的类。在

一个例子,如何连接到一个帐户(登录),然后发送一个消息将是最终的帮助!在

来吧,伙计们:)


Tags: 语言http消息协议标准教程aimphp
3条回答

下面是如何连接到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."

不知道您是否看到过这个,但这里是pythondbus的官方教程:link。在

编辑:重新添加到pidgin dev wiki的链接。它教你我上面贴的所有东西, 只需再向下滚动页面。http://developer.pidgin.im/wiki/PythonHowTo

如果从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();
  }
?>

一个不错的选择是使用DBus接口:Pidgin(purple)完全支持它,而且Python的DBus接口库非常稳定。在

相关问题 更多 >