func (l *Luis) Publish(payload PublishPayload) ([]byte, *ErrorResponse) {
	url := getPublishURL(l.appid, l.versionid)
	bytPayload, err := json.Marshal(payload)
	if err != nil {
		log.Println("err:", err)
		return nil, nil
	}
	return l.client.Connect("POST", url, bytes.NewBuffer(bytPayload), true)
}
Publish :Publishes a specific version of the application
package luis
import (
	"bytes"
	"encoding/json"
	"fmt"
	"log"
	"net/url"
)
type Luis struct {
	appid     string
	versionid string
	client    *Client
}
func NewLuis(key string, appid string) *Luis {
	if len(key) == 0 {
		return nil
	}
	e := new(Luis)
	e.appid = appid
	e.client = NewClient(key)
	res, err := e.GetAppInfo()
	if err != nil {
		fmt.Println(err, "Cannot get app info")
		return nil
	}
	app := NewAppInfo(res)
	fmt.Println(app)
	e.versionid = app.Endpoints.PRODUCTION.VersionID
	fmt.Println(e.versionid)
	return e
}
func (l *Luis) GetAppInfo() ([]byte, *ErrorResponse) {
	url := getAppInfo(l.appid)
	fmt.Println("app detail URL=", url)
	return l.client.Connect("GET", url, nil, true)
}
func (l *Luis) IntelList() ([]byte, *ErrorResponse) {
	url := getIntentListURL(l.appid, l.versionid)
	fmt.Println("intent list URL=", url)
	return l.client.Connect("GET", url, nil, true)
}
func (l *Luis) ActionChannels() ([]byte, *ErrorResponse) {
	url := getActionChannels(l.appid, l.versionid)
	return l.client.Connect("GET", url, nil, true)
}
func (l *Luis) Predict(utterance string) ([]byte, *ErrorResponse) {
	outUrl := getPredictURL(l.appid, l.versionid)
	utterance = url.QueryEscape(utterance)
	outUrl = outUrl + "?subscription-key=" + l.client.key + "&q=" + utterance
	return l.client.Connect("GET", outUrl, nil, true)
}
func (l *Luis) Train() ([]byte, *ErrorResponse) {
	url := getTrainURL(l.appid, l.versionid)
	return l.client.Connect("POST", url, nil, true)
}
func (l *Luis) AddLabel(example ExamplePayload) ([]byte, *ErrorResponse) {
	url := getAddExampleURL(l.appid, l.versionid)
	bytExample, err := json.Marshal(example)
	if err != nil {
		log.Println("err:", err)
		return nil, nil
	}
	return l.client.Connect("POST", url, bytes.NewBuffer(bytExample), true)
}