legacy

package
v0.23.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 25, 2018 License: AGPL-3.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const (
	UINodeTypeActionSet                 flows.UINodeType = "execute_actions"
	UINodeTypeWaitForResponse           flows.UINodeType = "wait_for_response"
	UINodeTypeSplitByAirtime            flows.UINodeType = "split_by_airtime"
	UINodeTypeSplitBySubflow            flows.UINodeType = "split_by_subflow"
	UINodeTypeSplitByWebhook            flows.UINodeType = "split_by_webhook"
	UINodeTypeSplitByResthook           flows.UINodeType = "split_by_resthook"
	UINodeTypeSplitByGroups             flows.UINodeType = "split_by_groups"
	UINodeTypeSplitByExpression         flows.UINodeType = "split_by_expression"
	UINodeTypeSplitByContactField       flows.UINodeType = "split_by_contact_field"
	UINodeTypeSplitByRunResult          flows.UINodeType = "split_by_run_result"
	UINodeTypeSplitByRunResultDelimited flows.UINodeType = "split_by_run_result_delimited"
	UINodeTypeSplitByRandom             flows.UINodeType = "split_by_random"
)

the different node types supported by the editor

Variables

This section is empty.

Functions

func TransformTranslations

func TransformTranslations(items []Translations) map[utils.Language][]string

TransformTranslations transforms a list of single item translations into a map of multi-item translations, e.g.

[{"eng": "yes", "fra": "oui"}, {"eng": "no", "fra": "non"}] becomes {"eng": ["yes", "no"], "fra": ["oui", "non"]}

Types

type Action

type Action struct {
	Type string           `json:"type"`
	UUID flows.ActionUUID `json:"uuid"`
	Name string           `json:"name"`

	// message and email
	Msg          json.RawMessage `json:"msg"`
	Media        json.RawMessage `json:"media"`
	QuickReplies json.RawMessage `json:"quick_replies"`
	SendAll      bool            `json:"send_all"`

	// variable contact actions
	Contacts  []ContactReference  `json:"contacts"`
	Groups    []GroupReference    `json:"groups"`
	Variables []VariableReference `json:"variables"`

	// save actions
	Field string `json:"field"`
	Value string `json:"value"`
	Label string `json:"label"`

	// set language
	Language utils.Language `json:"lang"`

	// webhook
	Action         string          `json:"action"`
	Webhook        string          `json:"webhook"`
	WebhookHeaders []WebhookHeader `json:"webhook_headers"`

	// add lable action
	Labels []LabelReference `json:"labels"`

	// Start/Trigger flow
	Flow FlowReference `json:"flow"`

	// channel
	Channel assets.ChannelUUID `json:"channel"`

	//email
	Emails  []string `json:"emails"`
	Subject string   `json:"subject"`
}

type ActionSet

type ActionSet struct {
	Y           int            `json:"y"`
	X           int            `json:"x"`
	Destination flows.NodeUUID `json:"destination" validate:"omitempty,uuid4"`
	ExitUUID    flows.ExitUUID `json:"exit_uuid" validate:"required,uuid4"`
	UUID        flows.NodeUUID `json:"uuid" validate:"required,uuid4"`
	Actions     []Action       `json:"actions"`
}

type ContactReference

type ContactReference struct {
	UUID flows.ContactUUID `json:"uuid"`
	Name string            `json:"name"`
}

func (*ContactReference) Migrate

func (c *ContactReference) Migrate() *flows.ContactReference

type Flow

type Flow struct {
	BaseLanguage utils.Language `json:"base_language"`
	FlowType     string         `json:"flow_type"`
	Metadata     Metadata       `json:"metadata"`
	RuleSets     []RuleSet      `json:"rule_sets" validate:"dive"`
	ActionSets   []ActionSet    `json:"action_sets" validate:"dive"`
	Entry        flows.NodeUUID `json:"entry" validate:"omitempty,uuid4"`
}

Flow is a flow in the legacy format

func ReadLegacyFlow

func ReadLegacyFlow(data json.RawMessage) (*Flow, error)

ReadLegacyFlow reads a single legacy formatted flow

func (*Flow) Migrate

func (f *Flow) Migrate(collapseExits bool, includeUI bool) (flows.Flow, error)

Migrate migrates this legacy flow to the new format

type FlowReference

type FlowReference struct {
	UUID assets.FlowUUID `json:"uuid"`
	Name string          `json:"name"`
}

func (*FlowReference) Migrate

func (f *FlowReference) Migrate() *assets.FlowReference

type GroupReference

type GroupReference struct {
	UUID assets.GroupUUID
	Name string
}

func (*GroupReference) Migrate

func (g *GroupReference) Migrate() *assets.GroupReference

func (*GroupReference) UnmarshalJSON

func (g *GroupReference) UnmarshalJSON(data []byte) error

UnmarshalJSON unmarshals a legacy group reference from the given JSON

type LabelReference

type LabelReference struct {
	UUID assets.LabelUUID
	Name string
}

func (*LabelReference) Migrate

func (l *LabelReference) Migrate() *assets.LabelReference

func (*LabelReference) UnmarshalJSON

func (l *LabelReference) UnmarshalJSON(data []byte) error

UnmarshalJSON unmarshals a legacy label reference from the given JSON

type Metadata

type Metadata struct {
	UUID     assets.FlowUUID `json:"uuid" validate:"required,uuid4"`
	Name     string          `json:"name"`
	Revision int             `json:"revision"`
	Expires  int             `json:"expires"`
	Notes    []Note          `json:"notes,omitempty"`
}

Metadata is the metadata section of a legacy flow

type Note added in v0.9.9

type Note struct {
	X     decimal.Decimal `json:"x"`
	Y     decimal.Decimal `json:"y"`
	Title string          `json:"title"`
	Body  string          `json:"body"`
}

Note is a legacy sticky note

func (*Note) Migrate added in v0.9.9

func (n *Note) Migrate() flows.Sticky

Migrate migrates this note to a new sticky note

type Rule

type Rule struct {
	UUID            flows.ExitUUID `json:"uuid" validate:"required,uuid4"`
	Destination     flows.NodeUUID `json:"destination" validate:"omitempty,uuid4"`
	DestinationType string         `json:"destination_type" validate:"eq=A|eq=R"`
	Test            TypedEnvelope  `json:"test"`
	Category        Translations   `json:"category"`
}

type RuleSet

type RuleSet struct {
	Y       int             `json:"y"`
	X       int             `json:"x"`
	UUID    flows.NodeUUID  `json:"uuid" validate:"required,uuid4"`
	Type    string          `json:"ruleset_type"`
	Label   string          `json:"label"`
	Operand string          `json:"operand"`
	Rules   []Rule          `json:"rules"`
	Config  json.RawMessage `json:"config"`
}

type RulesetConfig added in v0.10.20

type RulesetConfig struct {
	Flow           *assets.FlowReference `json:"flow"`
	FieldDelimiter string                `json:"field_delimiter"`
	FieldIndex     int                   `json:"field_index"`
	Webhook        string                `json:"webhook"`
	WebhookAction  string                `json:"webhook_action"`
	WebhookHeaders []WebhookHeader       `json:"webhook_headers"`
	Resthook       string                `json:"resthook"`
}

RulesetConfig holds the config dictionary for a legacy ruleset

type StringOrNumber added in v0.15.2

type StringOrNumber string

StringOrNumber represents something we need to read as a string, but might actually be number value in the JSON source

func (*StringOrNumber) UnmarshalJSON added in v0.15.2

func (s *StringOrNumber) UnmarshalJSON(data []byte) error

UnmarshalJSON unmarshals this from the given JSON

type Translations added in v0.10.8

type Translations map[utils.Language]string

Translations is an inline translation map used for localization

func (Translations) Base added in v0.10.8

func (t Translations) Base(baseLanguage utils.Language) string

Base looks up the translation in the given base language, or "base"

func (*Translations) UnmarshalJSON added in v0.10.8

func (t *Translations) UnmarshalJSON(data []byte) error

UnmarshalJSON unmarshals legacy translations from the given JSON

type TypedEnvelope added in v0.22.0

type TypedEnvelope struct {
	Type string `json:"type" validate:"required"`
	Data []byte `json:"-"`
}

TypedEnvelope represents a json blob with a type property

func (*TypedEnvelope) UnmarshalJSON added in v0.22.0

func (e *TypedEnvelope) UnmarshalJSON(b []byte) error

UnmarshalJSON unmarshals a typed envelope from the given JSON

type VariableReference

type VariableReference struct {
	ID string `json:"id"`
}

type WebhookHeader

type WebhookHeader struct {
	Name  string `json:"name"`
	Value string `json:"value"`
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL