0

ユーザーが何かを実行するために存在するかどうかを確認する ejabberd モジュールを書いています。それを達成するために ejabberd_auth_external:is_user_exists("USER", "HOST") を使用していますが、ユーザーはありませんが、USER@ の形式で完全な JID を持っていますHOST/RESOURCE、その文字列からユーザーを取得する方法はありますか

4

2 に答える 2

4

これを行う ejabberd の典型的な方法は、jlib:string_to_jid/1関数を使用することです。

-include("jlib.hrl").
...
case jlib:string_to_jid(String) of
    #jid{luser = LUser, lserver = LServer} ->
        ejabberd_auth:is_user_exists(LUser, LServer);
    error ->
        false
end.

ejabberd_auth_externalまた、モジュールの関数を直接使用しないでください。ejabberd_auth代わりに使用してください。

于 2013-10-17T00:45:29.317 に答える
1

関数 string:tokens/2 をセパレーター「@」とともに使用すると、返されるリストの最初の要素がユーザー名になります。

JID = "user.name@host/resource".
[User|_] = string:tokens(JID, "@").
于 2013-10-16T05:35:48.213 に答える