4

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

我目前只熟悉 PHP 和 Python,因此我会喜欢可以从所述语言访问的库。我发现 phurple ( http://sourceforge.net/projects/phurple/ ) 用于 php 和 python-purple ( http://developer.pidgin.im/wiki/PythonHowTo ) 似乎不是最新的. 你们会建议做什么?我的目标是像 meebo.com 那样以遥远的方式编写一个 web 应用程序

答案应该包括一个教程或示例实现和一个体面的文档.. pidgin.im 并没有真正有用的教程..

或者,您也可以只告诉我不同​​类型的实现,这样我就可以从现有的 icq、aim、msn 等实现中构建自己的类。

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

来一个家伙:)

4

4 回答 4

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 开发 wiki 的链接。它会教您我在上面发布的所有内容,只需向下滚动页面即可。http://developer.pidgin.im/wiki/PythonHowTo

于 2009-10-30T20:35:44.453 回答
2

一个不错的选择是通过 DBus 接口:Pidgin(紫色)完全支持它,并且 Python 的 DBus 接口库非常稳定。

于 2009-10-25T12:52:09.833 回答
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();
  }
?>
于 2009-11-04T07:15:58.230 回答
0

我使用WebIcqLite: ICQ 协议的 ICQ 消息发送者。它有效,而且课程很容易理解。不过,我不知道其他协议。Phurple 库有什么问题?

于 2009-11-03T22:55:14.797 回答