Sending non payload messages to call service node

I’m familiar with passing msg.payload to a call service node (in this case an html5 message) by just leaving the data field blank. Is there a way to pass messages other than the msg.payload (i.e. msg.text_data}? I’d like to leave the msg.payload intact for reference for following nodes. I’ve searched around online and haven’t found any discussions on it. Here’s an example of what I’d like to feed the call service. What do I put in the service node? or is there a better, easier way to go about this? Thanks in advance!

msg.text_data = 
{
  "data": {
    "title": "Location Update",
    "message":  msg.data.new_state.attributes.friendly_name + " arrived at "  + msg.data.new_state.state + ".",
    "data": {
      "icon": msg.data.new_state.attributes.entity_picture,
      "tag": msg.data.new_state.attributes.lcase + "_location", 
      "renotify": "true"
    },
    "target": msg.data.new_state.attributes.receiver
  }
}

return msg;

do it directly in the call-service node?

or you can set it to a flow/global var and use mergecontext