Я установил Openfire 3.10.2
на Ubuntu 12.04
,
Чат работает нормально и для автономного управления сообщениями я установил CallbackOnOffline плагин. Когда получатель находится в автономном режиме, URL-адрес вызывается.
Плагин загружает URL из plugin.callback_on_offline.url
свойство, добавляет параметры ‘to’ и ‘from’ и выполняет асинхронный запрос GET. Образец ссылки.
Я проверил, какую информацию я получаю от этого, и я получил «до» и «от», но мне также нужны они вместе с сообщением для push-уведомлений.
Важная часть :-
Я хочу настроить плагин CallbackOnOffline для openfire и хочу добавить еще один параметр «сообщение». Как я могу это сделать?
Вы найдете код здесь: https://github.com/igniterealtime/Openfire/blob/master/src/plugins/callbackOnOffline/src/java/com/fotsum/CallbackOnOffline.java
Теперь, как создать файл .jar, какие требуют сделать устанавливаемый плагин в openfire?
Если вы хотите добавить больше параметров в ссылку. Вам необходимо расширить плагин CallbackOnOffline. Вы найдете код здесь: https://github.com/igniterealtime/Openfire/blob/master/src/plugins/callbackOnOffline/src/java/com/fotsum/CallbackOnOffline.java
Если вы заглянете в класс java, вы найдете в строках 109 и 110 параметр «to» и «from», который будет отправлен назад (callback). Просто добавьте туда свой параметр со значением, которое вам нужно.
Обновить:
После этого вам нужно снова собрать плагин с ANT. Посмотрите, как создать плагин: https://www.igniterealtime.org/builds/openfire/docs/latest/documentation/plugin-dev-guide.html
У меня тоже была такая же проблема, и я решил ее, создав новую таблицу «TblPushNotification». Таблица с именем ofOffline используется для хранения автономных сообщений, поэтому я добавил триггер к таблице ofOffline в базе данных. Триггер извлечет XML и добавит все атрибуты в «TblPushNotification», чтобы вы могли напрямую проверить эту таблицу на отправку push-уведомлений.
Пожалуйста, найдите детали моих таблиц, как показано ниже
CREATE TABLE IF NOT EXISTS `TblPushNotification` (
`id` int(11) NOT NULL,
`message_id` int(11) NOT NULL,
`from_user_id` text NOT NULL,
`to_user_id` text NOT NULL,
`message` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
ALTER TABLE `TblPushNotification`
ADD PRIMARY KEY (`id`), ADD KEY `message_id` (`message_id`);
ALTER TABLE `TblPushNotification`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
Для триггера используйте следующий запрос.
CREATE TRIGGER `PushNotification` AFTER INSERT ON `ofOffline`
FOR EACH ROW BEGIN
DECLARE strMessageText VARCHAR(500) DEFAULT '';
DECLARE strSenderId VARCHAR(500) DEFAULT '';
DECLARE strReceiverId VARCHAR(500) DEFAULT '';
DECLARE intMessageId INT DEFAULT 1;
SET strMessageText = ExtractValue(NEW.stanza, 'message/body[1]');
SET strSenderId = ExtractValue(NEW.stanza, 'message/@from[1]');
SET strReceiverId = ExtractValue(NEW.stanza, 'message/@to[1]');
SET intMessageId = NEW.messageID;
INSERT INTO TblPushNotification (message_id,from_user_id,to_user_id,message) VALUES (intMessageId,strSenderId,strReceiverId,strMessageText);
Теперь он всегда будет извлекать XML ofOffline планшета в TblPushNotification, и вы можете запустить запрос перед отправкой push-уведомления.
Спусковой крючок
--
-- Triggers `ofOffline`
--
DELIMITER //
CREATE TRIGGER `PushNotification` AFTER INSERT ON `ofOffline`
FOR EACH ROW BEGIN
DECLARE strMessageText VARCHAR(500) DEFAULT '';
DECLARE strSenderId VARCHAR(500) DEFAULT '';
DECLARE strReceiverId VARCHAR(500) DEFAULT '';
DECLARE intMessageId INT DEFAULT 1;
SET strMessageText = ExtractValue(NEW.stanza, 'message/body[1]');
SET strSenderId = ExtractValue(NEW.stanza, 'message/@from[1]');
SET strReceiverId = ExtractValue(NEW.stanza, 'message/@to[1]');
SET intMessageId = NEW.messageID;
INSERT INTO push_notification (message_id,from_user_id,to_user_id,message) VALUES (intMessageId,strSenderId,strReceiverId,strMessageText);
END
//
DELIMITER ;
Таблица :
CREATE TABLE IF NOT EXISTS `push_notification` (
`id` int(11) NOT NULL,
`message_id` int(11) NOT NULL,
`from_user_id` text NOT NULL,
`to_user_id` text NOT NULL,
`message` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;