(libpurple) 메신저 프로토콜을 통해 메시지 보내기 및 수신
문제
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의 문제점은 무엇입니까?