Documentation ¶
Index ¶
- func IsLegacyDefinition(data json.RawMessage) bool
- func MigrateLegacyDefinition(data json.RawMessage, baseMediaURL string) (json.RawMessage, error)
- func TransformTranslations(items []Translations) map[envs.Language][]string
- func URLJoin(base, relative string) string
- type Action
- type ActionSet
- type ContactReference
- type Flow
- type FlowReference
- type GroupReference
- type LabelReference
- type Metadata
- type NodeUI
- type NodeUIConfig
- type Note
- type Position
- type Rule
- type RuleSet
- type RulesetConfig
- type Sticky
- type StringOrNumber
- type Translations
- type TypedEnvelope
- type UI
- type UINodeType
- type VariableReference
- type WebhookHeader
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"]}
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 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
type FlowReference ¶
func (*FlowReference) Migrate ¶
func (f *FlowReference) Migrate() *assets.FlowReference
type GroupReference ¶
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 ¶
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
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
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
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
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"`
}