{
  "context": "contentScopeScripts",
  "featureName": "duckPlayer",
  "method": "saveUserValues"
}
Messaging.NotificationMessage with params
{
  "context": "contentScopeScripts",
  "featureName": "duckPlayer",
  "method": "saveUserValues",
  "params": { "hello": "world" }
}
 Messaging.NotificationMessage with invalid params
{
  "context": "contentScopeScripts",
  "featureName": "duckPlayer",
  "method": "getUserValues",
  "params": "oops! <- cannot be a string/number/boolean/null"
}
{
  "context": "contentScopeScripts",
  "featureName": "duckPlayer",
  "method": "getUserValues",
  "id": "abc123"
}
Messaging.RequestMessage with params
{
  "context": "contentScopeScripts",
  "featureName": "duckPlayer",
  "method": "getUserValues",
  "params": { "hello": "world" },
  "id": "abc123"
}
Messaging.RequestMessage with invalid params
{
  "context": "contentScopeScripts",
  "featureName": "duckPlayer",
  "method": "getUserValues",
  "params": "oops! <- cannot be a string/number/boolean/null",
  "id": "abc123"
}
Messaging.MessageResponse with data
{
  "context": "contentScopeScripts",
  "featureName": "duckPlayer",
  "id": "abc123",
  "result": { "hello":  "world" }
}
Messaging.MessageResponse with error
{
  "context": "contentScopeScripts",
  "featureName": "duckPlayer",
  "id": "abc123",
  "error": {
    "message": "Method not found"
  }
}
Messaging.SubscriptionEvent without data
{
  "context": "contentScopeScripts",
  "featureName": "duckPlayer",
  "subscriptionName": "onUserValuesUpdated"
}
Messaging.SubscriptionEvent with data
{
  "context": "contentScopeScripts",
  "featureName": "duckPlayer",
  "subscriptionName": "onUserValuesUpdated",
  "params": { "hello":  "world" }
}