У меня есть модуль Ejabberd для отправки уведомлений в случае, если получатель сообщения не в сети. В принципе работает нормально. Одна проблема заключается в том, что URL-адрес, на который я отправляю уведомление, жестко запрограммирован в модуле. Интуитивно это должно быть настроено в файле ejabberd.yml
conf.
Соответствующий фрагмент в моем ejabberd.yml
выглядит так
modules:
mod_fcm_fork:
post_url: "http://xxx.xxx.xxx.xxx/notification/push/"
Проблема в том, что я не могу получить доступ к этому значению внутри своего модуля, по крайней мере, не так, как я могу найти в Интернете:
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
, который в свою очередь вызывается хуком. Итак, как я могу получить значение post_url
в методе push_notification
?