【问题标题】:Send and receive messages via (libpurple) messenger protocols通过(libpurple)信使协议发送和接收消息
【发布时间】:2009-10-25 12:36:26
【问题描述】:

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

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

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

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

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

来吧伙计们:)

【问题讨论】:

    标签: php python libpurple


    【解决方案1】:

    这里是如何连接到 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

    【讨论】:

    • 这是我很长时间以来看到的最糟糕的文档之一..为什么没有如何连接的示例?!
    • 也许一些关于如何发送消息的示例也很好?
    • 关于如何连接到帐户以及如何发送消息的示例将是我能找到的最好的文档,但这是实际查看代码的一个很好的步骤:)
    【解决方案2】:

    最好通过 DBus 接口:Pidgin(紫色)完全支持它,并且 Python 的 DBus 接口库非常稳定。

    【讨论】:

    • @thomaschaaf:很遗憾没有。对不起。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      我将WebIcqLite: ICQ messages sender 用于 ICQ 协议。它有效,而且课程很容易理解。不过,我不知道其他协议。 Phurple 库出了什么问题?

      【讨论】:

        猜你喜欢
        • 2014-07-15
        • 1970-01-01
        • 2017-05-16
        • 1970-01-01
        • 2020-11-19
        • 2022-10-14
        • 2015-02-03
        • 1970-01-01
        • 2021-09-06
        相关资源
        最近更新 更多