Отправка и получение сообщений по протоколам (libpurple)

StackOverflow https://stackoverflow.com/questions/1620793

  •  06-07-2019
  •  | 
  •  

Вопрос

У меня была идея, которая потребовала бы от меня возможности отправлять и получать сообщения через стандартные протоколы обмена сообщениями, такие как 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. Он учит вас всему, что я написал выше, просто прокрутите дальше вниз по странице. http://developer.pidgin.im/wiki/PythonHowTo

Другие советы

Хорошей идеей будет пройти через интерфейс DBus: Pidgin (фиолетовый) полностью поддерживает его, а библиотека интерфейса DBus для Python достаточно стабильна.

Если вы распакуете файл из 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?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top