'Add a comment from the current authenticated user on the specified issue and return a Resource for it.
The issue identifier and comment body are required.
:param issue: ID or key of the issue to add the comment to
:param body: Text of the comment to add
:param visibility: a dict containing two entries: "type" and "value".
"type" is \'role\' (or \'group\' if the JIRA server has configured
comment visibility for groups) and \'value\' is the name of the role
(or group) to which viewing of this comment will be restricted.
:param is_internal: defines whether a comment has to be marked as \'Internal\' in Jira Service Desk'

@translate_resource_args
def add_comment(self, issue, body, visibility=None, is_internal=False):

    data = {u'body': body}
    if is_internal:
        data.update({u'properties': [{u'key': u'sd.public.comment', u'value': {u'internal': is_internal}}]})
    if (visibility is not None):
        data[u'visibility'] = visibility
    url = self._get_url(((u'issue/' + str(issue)) + u'/comment'))
    r = self._session.post(url, data=json.dumps(data))
    comment = Comment(self._options, self._session, raw=json_loads(r))
    return comment
