إرسال واستقبال الرسائل عبر (libpurple) رسول البروتوكولات
سؤال
خطرت لي فكرة هذا يتطلب مني أن تكون قادرة على إرسال واستقبال الرسائل عبر القياسية رسول البروتوكولات مثل msn, icq, aim, skype, الخ...
أنا حاليا على دراية فقط مع PHP و Python و بالتالي تتمتع المكتبة التي لا يمكن الوصول إليها من قال اللغات.لقد وجدت phurple (http://sourceforge.net/projects/phurple/) ل php و python-الأرجواني (http://developer.pidgin.im/wiki/PythonHowTo) الذي لا يبدو أن يكون على ما يصل إلى التاريخ.ماذا بإمكانكم أقترح أن تفعل ؟ سيكون هدفي أن أكتب webapplication في الطريقة البعيدة مثل meebo.com
الجواب ينبغي أن يشمل البرنامج التعليمي أو تنفيذ سبيل المثال لائق التوثيقات..في بجين.ايم لا يكون حقا مفيدة التعليمي..
alternativly يمكنك أيضا أخبرني أنواع مختلفة من التطبيقات ، وذلك بناء بلدي فئة من القائمة icq, aim, msn الخ التنفيذ.
مثال على كيفية الاتصال إلى حساب (تسجيل الدخول) ومن ثم إرسال رسالة واحدة سيكون في نهاية المطاف مساعدة!
هيا يا شباب :)
المحلول
هنا هو كيفية الاتصال بجين 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."
لا أعرف إذا كنت قد رأيت هذا ، ولكن هنا هو المسؤول الثعبان dbus تثبيت البرنامج التعليمي: الرابط.
تحرير: إعادة إضافة رابط بجين ديف ويكي.أنه يعلم كل ما نشر أعلاه ، مجرد التمرير من أسفل الصفحة. http://developer.pidgin.im/wiki/PythonHowTo
نصائح أخرى
وهناك رهان جيد سيكون للذهاب من خلال واجهة DBus تثبيت: بجين (البنفسجية) يدعم بالكامل ومكتبة واجهة 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();
}
?>