问题标签 [ejabberd-api]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
195 浏览

ejabberd - 如何从 ejabberd 中的 xammp 服务器中删除消息

我是 ejabberd 的新手,

在我们的应用程序中需要删除聊天消息功能。所以我们心中的一个问题

ejabberd 可以使用 restApi.. 或其他方式从 xammp 服务器删除消息吗?

什么是最好的方法。

谢谢,

0 投票
1 回答
216 浏览

xmpp - ejabberd BOSH 搜索一无所获

我们正在尝试从 Openfire 切换到 ejabberd XMPP 服务器。我在本地 Windows 10 工作站上安装了带有默认选项的 ejabberd。我设置

我使用 ejabberd ReST API 注册了几个用户。我还为这些用户设置了一些vcard值(我的理解是 vcard 条目是 ejabberd 搜索工作所必需的,对吗?)使用 Postman,我可以确认用户“testfouoles”有 vcard:

除了FN之外,还设置了EMAILNICKNAMENICK电子名片。vcards 似乎区分大小写,所以我设置了小写字母和大写字母变体,因为我不确定搜索使用了哪些变体。我还为N FAMILYN GIVEN设置了 vcard2值。

对于 Openfire,我们使用带有自定义搜索插件的 CandyJs。现在我们继续将它与 ejabberd 一起使用。 出于测试目的,我设置

这样,具有空输入字段的搜索操作会返回所有将一些信息添加到其 vCard 的用户(根据ejabberd 文档)。

我们的 CandyJS 搜索插件向 ejabberd BOSH 监听器发出以下 POST 请求:

并且 ejabberd 使用唯一注册用户(除了请求用户)的 vcard 数据进行响应:

到目前为止一切正常。现在,如果我提交具有非空搜索条件的搜索请求,无论 allow_return_all: true 还是 false,搜索都找不到任何内容:

在这里,我尝试搜索“UnclassifiedFouoLes”,这是 N FAMILY 的正确值。我试图搜索正确的电子邮件、昵称等 - 没有任何效果。ejabberd 返回一个空结果。

那么,为什么 ejabberd 不通过正确提供的 (?) 匹配 vcard 值的搜索词找到用户?我究竟做错了什么?

我被困住了。我在Jabber Search上找不到任何其他 ejabberd 文档。我不明白标准 vcard 字段名称如何对应于标准 Jabber 搜索字段名称(或者可能是数据表单字段名称?)。

相同的 CandyJS 搜索插件向 Openfire XMPP 服务器发出非常相似的请求并获得结果。唯一的区别是 Openfire 需要一些非标准添加来搜索请求有效负载以指定在哪些字段中搜索:

Openfire 返回结果

条款。它有什么线索吗?

我被困住了,真的很感谢为我指出正确的方向。

更新:

实际上,这里是第一个问题:当我们向 XMPP 服务器发送以下搜索请求时

搜索条件是用“OR”还是“AND”组合?我们是否搜索任何字段值('first'、'last'、'nick'、email'、'fn')等于 'UnclassifiedFouoLes' 或所有字段都相等的用户?

更新 2: 我正在尝试<x xmlns='jabber:x:data' type='submit'>从 Postman 向 ejabberd 发送一个简单的请求(一个没有 ):

结果始终为空 - 它不返回任何项目。并且有一个用户使用“last”vCard =“UnclassifiedFouoLes”。

为什么?是否需要请求中的“来自”子句?

两个现有的客户可以看到对方并在聊天中交流。但是当我以 client1 身份登录时,抓住 sid 并摆脱它们,将它们插入 Postman 帖子,结果是空的

0 投票
1 回答
110 浏览

ejabberd - 如何使用 Smack Client 在 Ejabberd 中注册带内用户,特别是虚拟主机?

我正在使用 Smack 客户端 4.3.1 并希望使用带内注册方法(使用 Smack 的 AccountManager)注册用户。

我可以使用“管理员”XMPP 连接创建新用户,并且用户是在管理员用户所在的域中创建的,比如 user1@ec2-xxxxx.us-west-2.compute.amazonaws.com

我的要求是,我想在另一个虚拟主机中创建用户 - 比如说 user1@example.com 使用相同的“管理员”XMPP 连接。是否可以 ?

我尝试使用具有管理员权限的用户“mnallath1@example.com”进行“带内注册”。它给出“XMPPError:冲突 - 取消”错误

我的代码是:

是否可以使用带内注册在 example.com 中创建 user1?

我的管理员用户

我的虚拟主机

0 投票
1 回答
277 浏览

android - 如何在 Ejabberd 服务器上从 android 客户端注册新用户

如何在 Ejabberd Server 上从 android 客户端注册新用户?是否有解决此问题的其他 API?

提前致谢

0 投票
1 回答
569 浏览

oauth - Ejabberd Oauth:访问被拒绝

我安装并配置了一个 Ejabberd XMPP 服务器。我测试了从移动应用程序连接到服务器并交换消息。现在我想启用 OAuth(需要将 OAuth 令牌生成集成到我自己的 Node.js REST API 中:登录我的 REST API = 登录我的 DB + Ejabberd OAuth 令牌生成)。我想通过在我的 REST API 登录中生成令牌并在我的 Android/Ios 应用程序中使用此令牌来防止执行 2 次登录调用(我的 REST API + Ejabberd)。

当我打开这个网址时:

http://my-server:5280/oauth/authorization_token?response_type=token&client_id=Client1&redirect_uri=http://my-server:3000/ejabberd&scope=get_roster+sasl_auth

我得到一个登录表单,在使用有效凭据填写表单后,我被重定向到此 url:

http://my-server:5280/oauth/authorization_token

响应为空:ERR_EMPTY_RESPONSE

0 投票
2 回答
770 浏览

ejabberd - ejabberd: AccessRules: 账户无权执行该操作

我正在尝试遵循API 权限 | ejabberd 文档配置 ejabberd | ejabberd 文档

然而在尝试注册用户时:

我得到以下信息ejabberd.log

ejabberd.yml' acl&api_permissions块:

&

请指教。

0 投票
1 回答
85 浏览

ejabberd - 未提供主机服务 (ejabberd)

我正在使用开箱即用的ejabberd/ecs - Docker Hub并且我尝试运行curl命令(从我自己的容器)来注册用户,但收到以下消息:

带输出的实际curl命令:

就 Docker 而言,我的容器appejabberd容器都在同一个网络中。

请指教。


ejabberd.yml以防万一。

0 投票
1 回答
94 浏览

mysql - Ejabberd 用户身份验证失败,使用 mysql

我已经使用下面的参考链接在我的本地系统中安装了 ejabberd 和 mysql。我正在使用 php 进行服务器端使用。

https://medium.com/modern-sysadmin/how-to-install-ejabberd-18-01-xmpp-server-with-mysql-on-ubuntu-16-04-f0faceddf2e

一切正常。

我正在使用这个 PHP 脚本https://github.com/cweiske/xmpphp/

但问题是当我从 ejabberd 网络管理员添加用户时,它非常适合发送消息。但是当我直接在mysql用户表中添加用户时,两个用户都以相同的格式保存在用户表中,但是当我使用直接添加的用户名发送消息时它不起作用。

在终端中出现以下错误

帮助我 ejabberd 如何与 mysql 用户一起工作?Ejabberd 将用户数据保存在其他任何地方吗?

0 投票
1 回答
55 浏览

ejabberd - 如何将我的自定义身份验证脚本连接到 ejabberd?

我已经搜索了我能想到的所有地方。我知道如何创建我的自定义身份验证脚本(我正在使用 Python),但我只是不知道如何将它连接到 ejabberd 服务器。它必须在一个特殊的位置吗?特殊名称?我是否以某种方式从 ejabberd.yml 指向它?

是什么触发 ejabberd 调用我的脚本而不是它自己的内部身份验证代码?

0 投票
1 回答
66 浏览

ejabberd - 为什么 mysql 表“muc_room”存储不持久空间?

我的 ejabberd 服务器使用 mysql DB 作为外部存储,我使用ejabberd API 的/create_room_with_opts方法创建带有选项的房间:{name: "persistent", value: "false"}。一切正常的文件和创建的房间看起来实际上是临时的——当最后一个参与者离开时,它们会自动关闭。

但我有一个问题 - 创建的非持久性房间保存在表muc_room中,尽管它必须只包含持久性房间(https://docs.ejabberd.im/developer/sql-schema/#table-muc-room

例如,我可以在muc_room表中使用以下选项的空间:

主要问题是我在重新启动我的 ejabberd 服务器时收到了重新创建的所有非持久性房间。

问题:1)为什么不使用 ejabberd API 创建的持久化房间存储在muc_room表中(可能是一些错误)?2)如何避免在重新启动 ejabberd 服务器时重新创建这些房间(除了从数据库中删除它:手动或使用 mysql 事件)?