Okay, it seems the respbody only be a string if the content-type is text/plain.
JSON.stringify(respbody) should be fine to most of content-type except application/octet-stream
(for xml body, it will be converted to json)
I think it could be worth an idea ticket to ask product team to add getTextContent(), or toString() for interface JavaScriptMessage
Currently, we can get the message body as string by following steps.
In policy,
Set Context Variable textBody as String to: ${httpresp1.mainpart}
before javascript assertion, and in javascript assertion
var respbody = context.getVariable ('textBody');