通过PHP进行Openfire离线通知

时间:2015-09-28 11:45:06

标签: php openfire

我在Openfire 3.10.2安装了Ubuntu 12.04

聊天工作正常,对于离线消息管理我安装了CallbackOnOffline插件。当收件人离线时,会调用一个URL。

该插件从plugin.callback_on_offline.url属性加载网址,添加'到'和'来自'参数并执行异步GET请求。 Sample Link

我检查了从中获得的信息,我得到了一个"到#34;和"来自",但我还需要这些以及推送通知的消息。

重要部分: -

我想自定义openfire的CallbackOnOffline插件,我想再添加一个参数" message"。我怎么能这样做?

您可以在此处找到代码:https://github.com/igniterealtime/Openfire/blob/master/src/plugins/callbackOnOffline/src/java/com/fotsum/CallbackOnOffline.java

现在,如何创建.jar文件,这需要在openfire中制作可安装的插件?

3 个答案:

答案 0 :(得分:4)

如果要向链接添加更多参数。您需要扩展CallbackOnOffline插件。您可以在此处找到代码:https://github.com/igniterealtime/Openfire/blob/master/src/plugins/callbackOnOffline/src/java/com/fotsum/CallbackOnOffline.java

如果你看一下java课程,你会在第109和110行找到"到" "来自"将被发回的参数(回调)。只需添加您需要的参数即可。

更新: 之后,您需要再次使用ANT构建插件。了解如何构建插件:https://www.igniterealtime.org/builds/openfire/docs/latest/documentation/plugin-dev-guide.html

答案 1 :(得分:3)

我也有同样的问题,我通过创建一个新的表“TblPushNotification”来解决它。名为'ofOffline'的表用于存储脱机消息,因此我将触发器添加到数据库的“ofOffline”表中。触发器将提取XML并将所有属性添加到“TblPushNotification”,以便您可以直接检查该表以发送推送通知。

请查看我的表格详情如下

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

现在它将始终将ofOffline平板电脑的XML提取为TblPushNotification,您可以在发送推送通知之前触发查询。

答案 2 :(得分:1)

  

触发

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