读取 ejabberd.yml 模块参数失败
Reading ejabberd.yml module parameter fails
我有一个 Ejabberd 模块,用于在消息接收者离线时推送通知。原则上,它工作得相当好。一个问题是我向其推送通知的 URL 在模块中是硬编码的。直观地说,这应该可以在 ejabberd.yml
conf 文件中进行配置。
我的 ejabberd.yml
中的相关片段如下所示
modules:
mod_fcm_fork:
post_url: "http://xxx.xxx.xxx.xxx/notification/push/"
问题是我无法在我的模块中访问该值,至少不能以我在 Web 上找到的方式访问:
push_notification(From, To, Packet) ->
URL = gen_mod:get_module_opt(global, ?MODULE, post_url, []),
%URL = gen_mod:get_module_opt(To#jid.lserver, ?MODULE, post_url, []),
?INFO_MSG("mod_fcm_fork -> push_notification: ~p~n",[URL]),
...
此命令抛出以下警告(甚至不是错误):
[warning] <0.5453.0>@ejabberd_config:prepare_opt_val:806 incorrect value '"http://xxx.xxx.xxx.xxx/notification/push/"' of option 'post_url', using 'undefined' as fallback
所以它有点发现/看到了价值。 ?INFO_MSG
打印和 undefined
:
的任何方式
2017-01-26 20:16:09.019 [info] <0.5453.0>@mod_fcm_fork:push_notification:52 mod_fcm_fork -> push_notification: undefined
有趣的是,下面的效果很好:
start(Host, _Opts) ->
URL = proplists:get_value(post_url, _Opts),
?INFO_MSG("HTTP client started ~p~n", [URL]),
但是在 push_notification
中,我无权访问 _Opts
,后者又被挂钩调用。那么如何在方法 push_notification
?
中获取 post_url
值
gen_mod:get_module_opt(global,?MODULE,post_url,fun(X) -> X end, all)
我有一个 Ejabberd 模块,用于在消息接收者离线时推送通知。原则上,它工作得相当好。一个问题是我向其推送通知的 URL 在模块中是硬编码的。直观地说,这应该可以在 ejabberd.yml
conf 文件中进行配置。
我的 ejabberd.yml
中的相关片段如下所示
modules:
mod_fcm_fork:
post_url: "http://xxx.xxx.xxx.xxx/notification/push/"
问题是我无法在我的模块中访问该值,至少不能以我在 Web 上找到的方式访问:
push_notification(From, To, Packet) ->
URL = gen_mod:get_module_opt(global, ?MODULE, post_url, []),
%URL = gen_mod:get_module_opt(To#jid.lserver, ?MODULE, post_url, []),
?INFO_MSG("mod_fcm_fork -> push_notification: ~p~n",[URL]),
...
此命令抛出以下警告(甚至不是错误):
[warning] <0.5453.0>@ejabberd_config:prepare_opt_val:806 incorrect value '"http://xxx.xxx.xxx.xxx/notification/push/"' of option 'post_url', using 'undefined' as fallback
所以它有点发现/看到了价值。 ?INFO_MSG
打印和 undefined
:
2017-01-26 20:16:09.019 [info] <0.5453.0>@mod_fcm_fork:push_notification:52 mod_fcm_fork -> push_notification: undefined
有趣的是,下面的效果很好:
start(Host, _Opts) ->
URL = proplists:get_value(post_url, _Opts),
?INFO_MSG("HTTP client started ~p~n", [URL]),
但是在 push_notification
中,我无权访问 _Opts
,后者又被挂钩调用。那么如何在方法 push_notification
?
post_url
值
gen_mod:get_module_opt(global,?MODULE,post_url,fun(X) -> X end, all)