func (r *EchoResponse) LinkAccountCard() *EchoResponse {
	r.Response.Card = &EchoRespPayload{
		Type: "LinkAccount",
	}
	return r
}
LinkAccountCard is used to indicate that account linking still needs to be completed to continue
using the Alexa skill. This will force an account linking card to be shown in the user's companion app.
package skillserver
import (
	"encoding/json"
	"errors"
	"time"
	"github.com/mikeflynn/go-alexa/skillserver/dialog"
)
type ConfirmationStatus string
const (
	ConfConfirmed ConfirmationStatus = "CONFIRMED"
	ConfDenied ConfirmationStatus = "DENIED"
	ConfNone ConfirmationStatus = "NONE"
)
func (r *EchoRequest) VerifyTimestamp() bool {
	reqTimestamp, _ := time.Parse("2006-01-02T15:04:05Z", r.Request.Timestamp)
	if time.Since(reqTimestamp) < time.Duration(150)*time.Second {
		return true
	}
	return false
}
func (r *EchoRequest) VerifyAppID(myAppID string) bool {
	if r.Session.Application.ApplicationID == myAppID ||
		r.Context.System.Application.ApplicationID == myAppID {
		return true
	}
	return false
}
func (r *EchoRequest) GetSessionID() string {
	return r.Session.SessionID
}
func (r *EchoRequest) GetUserID() string {
	return r.Session.User.UserID
}
func (r *EchoRequest) GetRequestType() string {
	return r.Request.Type
}
func (r *EchoRequest) GetIntentName() string {
	if r.GetRequestType() == "IntentRequest" {
		return r.Request.Intent.Name
	}
	return r.GetRequestType()
}
func (r *EchoRequest) GetSlotValue(slotName string) (string, error) {
	slot, err := r.GetSlot(slotName)
	if err != nil {
		return "", err
	}
	return slot.Value, nil
}
func (r *EchoRequest) GetSlot(slotName string) (EchoSlot, error) {
	if _, ok := r.Request.Intent.Slots[slotName]; ok {
		return r.Request.Intent.Slots[slotName], nil
	}
	return EchoSlot{}, errors.New("slot name not found")
}
func (r *EchoRequest) AllSlots() map[string]EchoSlot {
	return r.Request.Intent.Slots
}
func (r *EchoRequest) Locale() string {
	return r.Request.Locale
}
func NewEchoResponse() *EchoResponse {
	er := &EchoResponse{
		Version: "1.0",
		Response: EchoRespBody{
			ShouldEndSession: true,
		},
		SessionAttributes: make(map[string]interface{}),
	}
	return er
}
func (r *EchoResponse) OutputSpeech(text string) *EchoResponse {
	r.Response.OutputSpeech = &EchoRespPayload{
		Type: "PlainText",
		Text: text,
	}
	return r
}
func (r *EchoResponse) Card(title string, content string) *EchoResponse {
	return r.SimpleCard(title, content)
}
func (r *EchoResponse) OutputSpeechSSML(text string) *EchoResponse {
	r.Response.OutputSpeech = &EchoRespPayload{
		Type: "SSML",
		SSML: text,
	}
	return r
}
func (r *EchoResponse) SimpleCard(title string, content string) *EchoResponse {
	r.Response.Card = &EchoRespPayload{
		Type:    "Simple",
		Title:   title,
		Content: content,
	}
	return r
}
func (r *EchoResponse) StandardCard(title string, content string, smallImg string, largeImg string) *EchoResponse {
	r.Response.Card = &EchoRespPayload{
		Type:    "Standard",
		Title:   title,
		Content: content,
	}
	if smallImg != "" {
		r.Response.Card.Image.SmallImageURL = smallImg
	}
	if largeImg != "" {
		r.Response.Card.Image.LargeImageURL = largeImg
	}
	return r
}