class_docstr: This publisher attaches slack attachments generated from the Alert's full record
  
  The full record is likely to be significantly longer than the slack max messages size.
  So we cut up the record by rows and send it as a series of 1 or more attachments.
  The attachments are rendered in slack in a way such that a mouse drag and copy will
  copy the entire JSON in-tact.
  
  The first attachment is slightly different as it includes the source entity where the
  record originated from. The last attachment includes a footer.
class_docstr_tok: ["This","publisher","attaches","slack","attachments","generated","from","the","Alert","'s","full","record","The","full","record","is","likely","to","be","significantly","longer","than","the","slack","max","messages","size",".","So","we","cut","up","the","record","by","rows","and","send","it","as","a","series","of","1","or","more","attachments",".","The","attachments","are","rendered","in","slack","in","a","way","such","that","a","mouse","drag","and","copy","will","copy","the","entire","JSON","in-tact",".","The","first","attachment","is","slightly","different","as","it","includes","the","source","entity","where","the","record","originated","from",".","The","last","attachment","includes","a","footer","."]
code: def _color():
      return HACKBERRY
  
imports: import calendar
  import cgi
  import json
  import urllib.request, urllib.parse, urllib.error
  from streamalert.shared.publisher import AlertPublisher, Register
  from streamalert.shared.description import RuleDescriptionParser
label_desc: Use image node_id 2 for calling the AttachFullRecord obj's underlying member method code with example usage: obj._color() and returns: HACKBERRY