rename _on_user_defined_event => _on_call
rename on_user_defined_event => on_call
support to_json
support JSON