Меню:


Поддержку сервиса Jabber в настоящее время осуществляют несколько пакетов для Emacs — ejab, который уже не развивается (замороженная версия доступна с http://ejab.sourceforge.net), smyrno, который также почти не развивается, но обладает достаточным набором возможностей (он доступен с http://www.nongnu.org/smyrno/) и jabber.el, который активно развивается и представляет достаточно полную и расширяемую поддержку протокола Jabber. Поскольку jabber.el динамично развивается, то я сосредоточусь исключительно на данном пакете.

Получение и установка

Пакет требует для своей работы GNU Emacs 21 и Gnus 5.10.x (из него нужно только пара файлов — sha1-el.el и hex-util.el, так что вы можете их установить не устанавливая весь Gnus), или XEmacs с поддержкой Mule, а также установленными пакетами gnus, net-utils и mule-ucs. Кроме этого, если установлен пакет FLIM, то jabber.el может использовать его для поддержки SASL.

Установка пакета достаточно проста — надо просто скачать его дистрибутив с http://emacs-jabber.sourceforge.net, развернуть его и настроить загрузку в стартовом скрипте Emacs'а, например следующими командами:

;; если вы установили jabber.el в нестандартное место
(add-to-list 'load-path "path_to_jabber.el_dir")
(require 'jabber)

После загрузки пакета, необходимо задать имя пользователя и сервера, что делается с помощью функции jabber-customize. С помощью этой функции можно также зарегистрировать нового пользователя, если перед ее выполнением команды задать префикс.

Основные действия

После настройки, jabber.el готов к работе, необходимо только подключиться к выбранному серверу Jabber.

Подключение, отключение и состояние

Подключение к серверу выполняется одной командой — jabber-connect, после подключения с помощью команды jabber-send-presence можно отправить на сервер уведомление о присутствии. Эта команда дает возможность вам указать статус присутствия, если вы оставили статус пустым, то будет установлено значение по умолчанию равное Online.

Для отключения от сервера Jabber, просто выполните команду jabber-disconnect (C-x C-j C-d), и ваше подключение будет закрыто.

Замечание для новых версий Новые версии jabber.el поддерживают сразу несколько учетных записей jabber. Список учетных записей также настраивается с помощью стандартных средств, но вы можете пометить некоторые из них, как неактивные. Настройку учетных записей можно производить и с помощью кода на Emacs Lisp. Список учетных записей хранится в переменной jabber-account-list. Например, вот такой код определяет две учетных записи, одна из которых не является активной:

(setq jabber-account-list
 '(("XXXXXXXX@gmail.com/emacs"
   (:network-server . "talk.google.com")
   (:connection-type . ssl))
  ("XXXX@jabber.ru/emacs"
   (:password . "YYYYYY")
   (:network-server . "jabber.ru")
   (:disabled . t))))

Введение этого функционала немного изменило поведение команд подключения и отключения. Для подключения всех активных учетных записей может использоваться функция jabber-connect-all (она привязана к сочетанию (C-x C-j C-c), а jabber-connect производит подключение только к одной из учетных записей (в том числе и неактивной). Для отключения одной записи используется функция jabber-disconnect-one, тогда как jabber-disconnect (C-x C-j C-d) производит отключение от всех серверов.

jabber.el позволяет вам изменять состояние вашей доступности. Это можно сделать как явно, с помощью команды jabber-send-presence, так и программно, с помощью этой же функции. Кроме этого, вы можете запрограммировать сервер Jabber на уведомление вас, об изменении статуса нужного вам человека. Это выполняется с помощью команды jabber-send-subscription-request.

Переговоры (chatting)

После подключения, пользователю становится доступен буфер roster'а, находясь в котором он может выполняться различные действия. Одно из таких действий — переговоры (или chatting). Для начала переговоров, нужно лишь выбрать персону с кем вы будете переговариваться и набрать C-c C-c, и будет создан буфер с именем *-jabber-chat-:-ИМЯПЕРСОНЫ-*, в котором вы и сможете вести переговоры.

Групповые чаты

Для подключения к групповому чату пользователь может использовать команду jabber-groupchat-join, или использовать сочетание клавиш C-c C-m находясь в буфере roster'а. После подключения к чату, будет создан буфер с именем *-jabber-groupchat-:-ИМЯЧАТА-*, что позволяет одновременно участвовать в нескольких обсуждениях. Работа с буфером осуществляется точно так же, как и при обычных переговорах. Для выхода из группового чата просто наберите jabber-groupchat-leave.

Кроме этого, если вы являетесь владельцем данного чата, пакет позволяет произвести его настройку, используя команду jabber-groupchat-get-config.

Работа с буфером roster

Буфер roster'а называется *-jabber-*, и содержит в себе список контактов вашего roster'а. С использованием данного буфера проводятся все операции, которые требуют указания Jabber ID, такие как переговоры, групповые и многопользовательские чаты, получение информации roster'а и работа с сервисами.

Работа с сервисами jabber

jabber.el позволяет пользователю получить доступ к большинству возможностей предоставляемых Jabber. Сюда входят — просмотр списка сервисов, поиск в каталогах, регистрация для использования сервисов, а также поддержка набора специализированных команд (ad-hoc).

Для использования каких-либо сервисов, вам сначала нужно их найти. Это может выполняться двумя способами — поиском (discovering) и просмотром (browsing). Первый способ является предпочтительным, поскольку использует новые протоколы. Для поиска сервисов могут использоваться две команды — jabber-get-disco-items и jabber-get-disco-info, которые выдают информацию либо о конкретном сервисе, либо о сервисах, относящихся к выбранному сервису. Эти же команды доступны через меню, которое вызывается сочетанием клавиш C-c C-i из буфера roster'а.

Поиск по сервисам выполняется с помощью команды jabber-get-search, или выбором пункта меню, отображаемого с помощью сочетания клавиш C-c C-s. После выполнения запроса, вам будет показана форма поиска, которую необходимо заполнить для его выполнения.

Регистрация производится аналогично проведению поиска, только используется команда jabber-get-register. С помощью данного сервиса, вы можете например, сменить свой пароль, или зарегистрироваться для использования конкретного сервиса. Как и в случае с поиском, при регистрации, модуль отобразит форму регистрации, которую вам необходимо будет заполнить.

Для работы со специализированными командами, пользователь сначала должен получить их список, поддерживаемых сервером. Это выполняется с помощью команды jabber-ahc-get-list. Для выполнения специализированной команды, используется команда jabber-ahc-execute-command. Специализированные команды могут использоваться, например, для того, чтобы удаленно изменить состояние вашего клиента, или другие вещи.

Настройка и расширение возможностей

Настройка клиента

Настройка клиента выполняется с помощью команды jabber-customize или, что тоже самое, с помощью команды M-x customize-group jabber. Переходя по разделам группы, вы можете настроить как основные параметры, такие как имя, сервер, так и другие, например уведомления о событиях, параметры начертаний (faces) и различные хуки.

Этот процесс является интуитивно-понятным, и поэтому я не буду заострять на нем внимание. Список переменных, которые используются для настройки с помощью этих команд, приведен в руководстве для jabber.el.

Расширение возможностей пакета

jabber.el позволяет пользователю расширять возможности пакета, предоставляя возможности по приему и отправке новых типов запросов и ответов, осуществлять доступ к данным соединения и многое другое.

XML, который используется для общения с сервером jabber, представляется в виде списков, которые создаются модулем xml.el — каждый тег представляется в виде списка, первым элементом которого является символ представляющий тег, за тем следует список из списков атрибутов, и затем идут вложенные тэги и содержимое.

Текущее состояние roster'а представляется списком с именем *jabber-roster*. В данном списке можно найти подробную информацию о группах, состоянии соединения и прочих параметрах.

Подробное описание процесса расширения возможностей пакета приведено в разделе "Hacking and extending" справочной страницы jabber.el

Last change: 05.03.2013 16:54

blog comments powered by Disqus