Refactor callbacks

### References
* https://www.pivotaltracker.com/story/show/83499268

### Details
iHat should accept a string for `metadata` instead of JSON.

This can be deployed when the following Tahi pull request is merged:
* https://github.com/Tahi-project/tahi/pull/697/files