legacy

package
v0.45.2 Latest Latest
Warning

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

Go to latest
Published: Aug 1, 2019 License: AGPL-3.0 Imports: 22 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func IsLegacyDefinition added in v0.27.8

func IsLegacyDefinition(data json.RawMessage) bool

IsLegacyDefinition peeks at the given flow definition to determine if it is in legacy format

func MigrateLegacyDefinition added in v0.27.8

func MigrateLegacyDefinition(data json.RawMessage, baseMediaURL string) (json.RawMessage, error)

MigrateLegacyDefinition migrates a legacy definition

func TransformTranslations

func TransformTranslations(items []Translations) map[envs.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"]}

func URLJoin added in v0.29.7

func URLJoin(base, relative string) string

URLJoin joins two URL parts with /

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 envs.Language `json:"lang"`

	// add label 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"`

	// IVR
	Recording json.RawMessage `json:"recording"`
	URL       string          `json:"url"`
}

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 envs.Language  `json:"base_language"`
	FlowType     string         `json:"flow_type"`
	RuleSets     []RuleSet      `json:"rule_sets" validate:"dive"`
	ActionSets   []ActionSet    `json:"action_sets" validate:"dive"`
	Entry        flows.NodeUUID `json:"entry" validate:"omitempty,uuid4"`
	Metadata     *Metadata      `json:"metadata"`

	// some flows have these set here instead of in metadata
	UUID assets.FlowUUID `json:"uuid"`
	Name string          `json:"name"`
}

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(baseMediaURL string) (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"`
	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 NodeUI added in v0.35.0

type NodeUI struct {
	Type     UINodeType   `json:"type,omitempty"`
	Position Position     `json:"position"`
	Config   NodeUIConfig `json:"config,omitempty"`
}

NodeUI is a node specific UI configuration

func NewNodeUI added in v0.35.0

func NewNodeUI(nodeType UINodeType, x, y int, config NodeUIConfig) *NodeUI

NewNodeUI creates a new node specific UI configuration

type NodeUIConfig added in v0.35.0

type NodeUIConfig map[string]interface{}

NodeUIConfig holds node type specific configuration

func (NodeUIConfig) AddCaseConfig added in v0.35.0

func (c NodeUIConfig) AddCaseConfig(uuid uuids.UUID, config map[string]interface{})

AddCaseConfig adds a case specific UI configuration

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() Sticky

Migrate migrates this note to a new sticky note

type Position added in v0.33.6

type Position struct {
	Left int `json:"left"`
	Top  int `json:"top"`
}

Position is a position of a node in the editor canvas

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"`
	FinishedKey string          `json:"finished_key"`
}

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 Sticky added in v0.9.9

type Sticky struct {
	Position Position `json:"position"`
	Title    string   `json:"title"`
	Body     string   `json:"body"`
	Color    string   `json:"color"`
}

Sticky is a user note

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[envs.Language]string

Translations is an inline translation map used for localization

func ReadTranslations added in v0.24.0

func ReadTranslations(data json.RawMessage) (Translations, error)

ReadTranslations reads a translations map

func (Translations) Base added in v0.10.8

func (t Translations) Base(baseLanguage envs.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 UI added in v0.10.20

type UI struct {
	Nodes    map[flows.NodeUUID]*NodeUI `json:"nodes"`
	Stickies map[uuids.UUID]Sticky      `json:"stickies"`
}

UI is the _ui section of the flow definition used by the editor

func NewUI added in v0.10.20

func NewUI() *UI

NewUI creates a new UI section

func (*UI) AddNode added in v0.10.20

func (u *UI) AddNode(uuid flows.NodeUUID, nodeDetails *NodeUI)

AddNode adds information about a node

func (*UI) AddSticky added in v0.10.20

func (u *UI) AddSticky(sticky Sticky)

AddSticky adds a new sticky note

type UINodeType added in v0.10.20

type UINodeType string

UINodeType tells the editor how to render a particular node

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

the different node types supported by the editor

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