code: def add_comment(self, issue, body, visibility=None, is_internal=False):
          
          data = {
              'body': body,
          }
  
          if is_internal:
              data.update({
                  'properties': [
                      {'key': 'sd.public.comment',
                       'value': {'internal': is_internal}}
                  ]
              })
  
          if visibility is not None:
              data['visibility'] = visibility
  
          url = self._get_url('issue/' + str(issue) + '/comment')
          r = self._session.post(
              url, data=json.dumps(data)
          )
  
          comment = Comment(self._options, self._session, raw=json_loads(r))
          return comment
docs: 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
          :type issue: str
          :param body: Text of the comment to add
          :type body: str
          :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.
          :type visibility: Optional[Dict[str, str]]
          :param is_internal: Defines whether a comment has to be marked as 'Internal' in Jira Service Desk (Default: False)
          :type is_internal: bool
          :rtype: Comment