2016-01-13 80 views
0

我想拦截mod_pubsub的离线消息,如果我在ejabberd发送一个正常的消息给离线用户,我在离线odbc表中看到该消息,如果用户重新连接消息到达。ejabberd mod_pubsub离线消息

如果我发布到一个节点,而一些用户处于离线状态,我什么也看不到在离线消息表,但如果用户重新连接,因此消息的地方保存项目节点正确发送。

我能项目脱机离线消息ODBC表发送?或者我可以拦截的mod_pubsub像消息中的脱机项目,实际上对于消息从插件我可以这样做:

start(_Host, _Opt) -> 
    inets:start(), 
    ejabberd_hooks:add(offline_message_hook, _Host, ?MODULE, create_message, 50). 

stop (_Host) -> 
    ejabberd_hooks:delete(offline_message_hook, _Host, ?MODULE, create_message, 50). 

这是我mod_pubsubejabberd.yml配置:

mod_pubsub: 
    access_createnode: pubsub_createnode 
    ## reduces resource comsumption, but XEP incompliant 
    ignore_pep_from_offline: true 
    ## XEP compliant, but increases resource comsumption 
    ## ignore_pep_from_offline: false 
    last_item_cache: false 
    db_type: odbc 
    plugins: 
    - "flat" 
    - "hometree" 
    - "pep" # pep requires mod_caps 

回答

1

由于默认情况下,发布订阅消息类型是headline。按照XMPP规范,头条消息不应该存储在离线消息存储。

然而,有一个mod_pubsub选项可以更改默认的通知类型。例如,您可以mod_pubsubnotification_type选项设置为normal。普通邮件存储在离线商店中。