Я установил Openfire 3.10.2
на Ubuntu 12.04
.
Чат работает нормально и для автономного управления сообщениями я установил плагин CallbackOnOffline . Когда получатель находится в автономном режиме, вызывается URL-адрес.
Плагин загружает URL-адрес из свойства plugin.callback_on_offline.url
, добавляет параметры «to» и «from» и выполняет асинхронный запрос GET. Образец ссылки .
Я проверил, какую информацию я получаю от этого, и у меня есть «от» и «от», но мне также нужны те вместе с сообщением для push-уведомлений.
Важная часть :-
Я хочу настроить плагин CallbackOnOffline openfire, и я хочу добавить еще один параметр «message». Как я могу это сделать?
Вы найдете здесь код: https://github.com/igniterealtime/Openfire/blob/master/src/plugins/callbackOnOffline/src/java/com/fotsum/CallbackOnOffline.java
Теперь, как создать .jar-файл , который требует, чтобы установить устанавливаемый плагин в openfire?
У меня также была та же проблема, и я решил ее, создав новую таблицу «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-уведомления.
Если вы хотите добавить дополнительные параметры в ссылку. Вам необходимо расширить плагин CallbackOnOffline. Вы найдете здесь код: https://github.com/igniterealtime/Openfire/blob/master/src/plugins/callbackOnOffline/src/java/com/fotsum/CallbackOnOffline.java
Если вы посмотрите на класс java, вы найдете в строке 109 и 110 параметр «to» и «from», который будет отправлен назад (обратный вызов). Просто добавьте туда свой параметр со значением, которое вам нужно.
Обновление: после этого вам нужно снова построить плагин с ANT. Узнайте, как создать плагин: https://www.igniterealtime.org/builds/openfire/docs/latest/documentation/plugin-dev-guide.html
Вызывать
-- -- 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 ;