是否可以在 ejabberd 中自定义 presence <show/> 元素?

Is it possible to customise presence <show/> element in ejabberd?

RFC3921 第 2.2.2.1 节定义可选 <show/> 元素必须是以下之一:

away -- The entity or resource is temporarily away. chat -- The entity or resource is actively interested in chatting. dnd -- The entity or resource is busy (dnd = "Do Not Disturb"). xa -- The entity or resource is away for an extended period (xa = "eXtended Away").

我想自定义此可用状态列表,方法是删除 "chat" 并添加 XMPP 客户端可以从中 select 的其他状态。

在这条路上走得太远之前,我想从专家那里知道:

1) 可以在 ejabberd 中修改标准元素列表吗?如果可以,最好的方法是什么?

2) 是否可以在每个虚拟主机的基础上更改这些元素,因为每个组织都想要一组略有不同的状态(即可以看到彼此的存在)?

3) XMPP 客户端是否会接受对 ejabberd 中元素列表的任何更改,或者它们通常对标准元素进行硬编码?

4) 如果一个虚拟主机中的联系人有一个元素 selected 对另一个虚拟主机中的联系人不可用,但两个联系人已连接,会发生什么?

感谢您分享任何意见。

ejabberd 不关心那些显示值。但是,如果您随后进行更改,您的客户端将不再兼容 XMPP。

最好使用状态来传达您需要的特殊含义,并将这些状态值映射到标准 "show" 值之上。

如果您还需要使用状态,您可以随时添加自己的自定义扩展标签以传递客户所需的额外信息。