func AutoExecuteActionEvent(ch chan DIDCommAction) {
	for msg := range ch {
		msg.Continue(&Empty{})
	}
}
AutoExecuteActionEvent is a utility function to execute Action events automatically. The function requires
a channel to be passed-in to listen to dispatcher.DIDCommAction and triggers the Continue function on the
action event. This is a blocking function and use this function with a goroutine.

Usage:
s := didexchange.New(....)
actionCh := make(chan dispatcher.DIDCommAction)
err = s.RegisterActionEvent(actionCh)
go service.AutoExecuteActionEvent(actionCh)
package service
type StateMsgType int
const (
	PreState StateMsgType = iota
	PostState
)
type StateMsg struct {
	ProtocolName string
	Type StateMsgType
	StateID string
	Msg DIDCommMsg
	Properties EventProperties
}
type DIDCommAction struct {
	ProtocolName string
	Message DIDCommMsg
	Continue func(args interface{})
	Stop func(err error)
	Properties EventProperties
}
type EventProperties interface {
	All() map[string]interface{}
}
type Event interface {
	RegisterActionEvent(ch chan<- DIDCommAction) error
	UnregisterActionEvent(ch chan<- DIDCommAction) error
	RegisterMsgEvent(ch chan<- StateMsg) error
	UnregisterMsgEvent(ch chan<- StateMsg) error
}