code: func convertPayload(payload interface{}, onlyFields []string) (body []byte, err error) {
  	if payload != nil {
  		switch t := payload.(type) {
  		case string:
  			body = []byte(t)
  		case []byte:
  			body = t
  		default:
  			v := reflect.Indirect(reflect.ValueOf(payload))
  			if v.Kind() == reflect.Ptr {
  				return convertPayload(v.Interface(), onlyFields)
  			} else if v.Kind() == reflect.Struct {
  				body, err = json.Marshal(buildMap(v, onlyFields))
  				if err != nil {
  					return body, err
  				}
  			}
  		}
  		if DebugLevel == LevelDebugFull {
  			log.Println("Body:", string(body))
  		}
  	}
  	return body, err
  }
docs: // converPayload returns payload casted in []byte.
  // If the payload is a structure, it's encoded to JSON.