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