code: func fetchTrainingSentences(pluginID uint64, name string) ([]tSentence, error) {
  	c := &http.Client{Timeout: 10 * time.Second}
  	pid := strconv.FormatUint(pluginID, 10)
  	u := os.Getenv("ITSABOT_URL") + "/api/plugins/train/" + pid
  	req, err := http.NewRequest("GET", u, nil)
  	if err != nil {
  		return nil, err
  	}
  	resp, err := c.Do(req)
  	if err != nil {
  		return nil, err
  	}
  	defer func() {
  		if err = resp.Body.Close(); err != nil {
  			log.Info("failed to close response body.", err)
  		}
  	}()
  	ss := []tSentence{}
  
  	// This occurs when the plugin has not been published, which we should
  	// ignore on boot.
  	if resp.StatusCode == http.StatusBadRequest {
  		log.Infof("warn: plugin %s has not been published", name)
  		return ss, nil
  	}
  	err = json.NewDecoder(resp.Body).Decode(&ss)
  	return ss, err
  }
docs: // fetchTrainingSentences retrieves training sentences from a remote source
  // (via ITSABOT_URL, which defaults to itsabot.org).