Openfire offline notification through PHP

白昼怎懂夜的黑 提交于 2019-11-29 02:15:14

If you want to add more parameters to the link. You need to extend the CallbackOnOffline Plugin. You will find the code here: https://github.com/igniterealtime/Openfire/blob/master/src/plugins/callbackOnOffline/src/java/com/fotsum/CallbackOnOffline.java

If you look into the java class, you will find on line 109 and 110 the "to" and "from" parameter which will be send back (callback). Just add there your parameter with value you need.

Update: After that you need to build the plugin with ANT again. See a how to build a plugin: https://www.igniterealtime.org/builds/openfire/docs/latest/documentation/plugin-dev-guide.html

I also had the same problem and I Solved it by creating a new table "TblPushNotification". A table named 'ofOffline' is used to store the offline messages so I added trigger to "ofOffline" table of the database. The trigger will extract the XML and add all attributes to the "TblPushNotification" so you may directly check that table for sending push notification.

Please find my tables' details as below

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;

For Trigger use following query.

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);

Now it will always extract the XML of ofOffline tablet to TblPushNotification and you can fire query before sending push notification.

Trigger

--
-- 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 ;

Table :

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 ;
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!