ejabberd mod_pubsub 离线消息
ejabberd mod_pubsub offline message
我想拦截 mod_pubsub
的离线消息,如果我在 ejabberd 中向离线用户发送一条普通消息,我会在离线 odbc table 中看到该消息,如果用户重新连接消息到达.
如果我发布到一个节点,并且一些用户离线,我在离线消息中看不到任何内容 table,但是如果用户重新连接,则项目节点被正确发送,因此消息保存在某个地方。
我可以将项目离线发送到离线消息 odbc table 吗?或者我可以拦截 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).
这是我的 ejabberd.yml
mod_pubsub
配置:
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
默认情况下,pubsub 消息类型为 headline
。根据 XMPP 规范,标题消息不应存储在离线消息存储中。
但是,有一个 mod_pubsub
选项可以更改默认通知类型。例如,您可以将 mod_pubsub
notification_type
选项设置为 normal
。普通消息存储在离线存储中。
我想拦截 mod_pubsub
的离线消息,如果我在 ejabberd 中向离线用户发送一条普通消息,我会在离线 odbc table 中看到该消息,如果用户重新连接消息到达.
如果我发布到一个节点,并且一些用户离线,我在离线消息中看不到任何内容 table,但是如果用户重新连接,则项目节点被正确发送,因此消息保存在某个地方。
我可以将项目离线发送到离线消息 odbc table 吗?或者我可以拦截 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).
这是我的 ejabberd.yml
mod_pubsub
配置:
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
默认情况下,pubsub 消息类型为 headline
。根据 XMPP 规范,标题消息不应存储在离线消息存储中。
但是,有一个 mod_pubsub
选项可以更改默认通知类型。例如,您可以将 mod_pubsub
notification_type
选项设置为 normal
。普通消息存储在离线存储中。