code: function Message (params) {
    var self = this
    if (!(self instanceof Message)) return new Message(params)
  
    var message = params['chat_message'] || params
    var header = message['header']
    var body = message['body'] || { }
    var media = body['media']
    var type = body['type']
  
    self.identifier = message['id']
    self.messageIdentifier = message['chat_message_id']
    self.pagination = params['iter_token']
    self.messageKind = constants.messageKindFromString(type)
    self.created = new Date(+message['timestamp'])
  
    if (self.messageKind === null) {
      debug('invalid MessageKind (%s %j)', type, params)
    } else if (self.messageKind === constants.MessageKind.Text.value) {
      self.text = body['text']
    } else if (media) {
      self.mediaIdentifier = media['media_id']
      self.mediaSize = {
        'width': media['width'] | 0,
        'height': media['height'] | 0
      }
      self.mediaIV = media['iv']
      self.mediaKey = media['key']
      self.mediaType = media['media_type']
  
      if (self.mediaType) {
        self.mediaType = 'UNSPECIFIED'
      } else if (self.mediaType !== 'VIDEO') {
        debug('new message type (%s)', self.mediaType)
      }
    }
  
    self.conversationIdentifier = header['conv_id']
  
    self.recipients = header['to']
    self.sender = header['from']
  
    self.index = message['seq_num'] | 0
    self.savedState = message['saved_state']
    self.type = message['type']
  
    if (self.type !== 'chat_message') {
      debug('unknown chat message type (%s %j)', self.type, params)
    }
  }
docs: Snapchat Message
  
  @class
  @param {Object} params