문제

MSN, ICQ, AIM, Skype 등과 같은 표준 메신저 프로토콜을 통해 메시지를 보내고받을 수 있어야하는 아이디어가있었습니다.

나는 현재 PHP와 Python에만 익숙하므로 해당 언어에서 액세스 할 수있는 라이브러리를 즐길 수 있습니다. 나는 Phurple을 발견했다.http://sourceforge.net/projects/phurple/) PHP 및 Python-Purple의 경우 (http://developer.pidgin.im/wiki/pythonhowto) 최신 상태가 아닌 것 같습니다. 너희들은 무엇을 제안 하시겠습니까? 내 목표는 meebo.com과 같은 먼 방식으로 웹 응용 프로그램을 작성하는 것입니다.

답에는 자습서 또는 예제 구현 및 괜찮은 문서가 포함되어야합니다. Pidgin.im은 실제로 유용한 튜토리얼이 없습니다 ..

또는 기존 ICQ, AIM, MSN 등 구현에서 내 자신의 클래스를 구축 할 수 있도록 다양한 종류의 구현을 말해 줄 수 있습니다.

계정에 연결하는 방법 (로그인)과 하나의 메시지를 보내는 방법의 예는 궁극적 인 도움이됩니다!

한 사람이 오세요 :)

도움이 되었습니까?

해결책

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 튜토리얼이 있습니다. 링크.

편집하다: Pidgin Dev Wiki에 대한 링크를 다시집니다. 위에 게시 한 모든 것을 가르쳐주고 페이지를 더 아래로 스크롤하면됩니다. http://developer.pidgin.im/wiki/pythonhowto

다른 팁

좋은 내기는 DBUS 인터페이스를 통과하는 것입니다. Pidgin (Purple)은 그것을 완전히 지원하고 Python 용 DBUS 인터페이스 라이브러리는 매우 안정적입니다.

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

나는 사용한다 webicqlite : ICQ 메시지 발신자 ICQ 프로토콜의 경우. 작동하고 수업은 이해하기 쉽습니다. 그래도 다른 프로토콜에 대해 잘 모르겠습니다. Phurple Library의 문제점은 무엇입니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top