Ошибка чтения параметра модуля ejabberd.yml

У меня есть модуль 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?


person Christian    schedule 26.01.2017    source источник
comment
попробуйте gen_mod:get_module_opt(global,?MODULE,post_url,fun(X) -> X конец, все).   -  person Maryna Krasnova    schedule 26.01.2017
comment
@МаринаКраснова, спасибо! Я работаю просто отлично сейчас. Ты мой спаситель на данный момент. Где я могу найти этот материал? Все, что я нахожу с помощью Google, кажется устаревшим, даже если я ограничу результаты прошлым годом. У меня ничего не работает из коробки. Теперь Ejabberd не запускается, когда я пытаюсь включить «mod_mam», даже если следовать официальной документации. Честно говоря, это немного расстраивает, я попробую для себя еще 1-2 часа и опубликую здесь еще один вопрос. Опять же, ваша помощь очень ценится. Возможно, вы захотите дать правильный ответ, чтобы я мог его принять.   -  person Christian    schedule 27.01.2017
comment
на самом деле я недостаточно хорошо знаю ejabberd и такие же проблемы с документами, поэтому иногда я просто использую код поиска, чтобы получить пример, например $cd src $grep -r gen_mod:get_module_opt или что-то вроде этого, это плохо, но иногда работает   -  person Maryna Krasnova    schedule 27.01.2017