actions

package
v0.4.2 Latest Latest
Warning

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

Go to latest
Published: Oct 30, 2017 License: AGPL-3.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const TypeAddLabel string = "add_label"

TypeAddLabel is our type for add label actions

View Source
const TypeAddToGroup string = "add_to_group"

TypeAddToGroup is our type for the add to group action

View Source
const TypeAddURN string = "add_urn"

TypeAddURN is our type for add URN actions

View Source
const TypeCallWebhook string = "call_webhook"

TypeCallWebhook is the type for our webhook action

View Source
const TypeRemoveFromGroup string = "remove_from_group"

TypeRemoveFromGroup is our type for our remove from group action

View Source
const TypeReply string = "reply"

TypeReply is the type for reply actions

View Source
const TypeSaveContactField string = "save_contact_field"

TypeSaveContactField is the type for our save to contact action

View Source
const TypeSaveFlowResult string = "save_flow_result"

TypeSaveFlowResult is our type for the save result action

View Source
const TypeSendEmail string = "send_email"

TypeSendEmail is our type for the email action

View Source
const TypeSendMsg string = "send_msg"

TypeSendMsg is the type for msg actions

View Source
const TypeSetPreferredChannel string = "set_preferred_channel"
View Source
const TypeStartFlow string = "start_flow"

TypeStartFlow is the type for the start flow action

View Source
const TypeStartSession string = "start_session"

TypeStartSession is the type for the start session action

View Source
const TypeUpdateContact string = "update_contact"

TypeUpdateContact is the type for our update contact action

Variables

This section is empty.

Functions

func ActionFromEnvelope

func ActionFromEnvelope(envelope *utils.TypedEnvelope) (flows.Action, error)

func NewEventLog added in v0.4.0

func NewEventLog() flows.EventLog

Types

type AddLabelAction

type AddLabelAction struct {
	BaseAction
	Labels []*flows.LabelReference `json:"labels" validate:"required,min=1,dive"`
}

AddLabelAction can be used to add a label to the last user input on a flow. An `add_label` event will be created with the input UUID and label UUIDs when this action is encountered. If there is no user input at that point then this action will be ignored.

```

{
  "uuid": "8eebd020-1af5-431c-b943-aa670fc74da9",
  "type": "add_label",
  "labels": [{
    "uuid": "b7cf0d83-f1c9-411c-96fd-c511a4cfa86d",
    "name": "complaint"
  }]
}

```

@action add_label

func (*AddLabelAction) Execute

func (a *AddLabelAction) Execute(run flows.FlowRun, step flows.Step, log flows.EventLog) error

Execute runs the labeling action

func (*AddLabelAction) Type

func (a *AddLabelAction) Type() string

Type returns the type of this action

func (*AddLabelAction) Validate

func (a *AddLabelAction) Validate(assets flows.SessionAssets) error

Validate validates our action is valid and has all the assets it needs

type AddToGroupAction

type AddToGroupAction struct {
	BaseAction
	Groups []*flows.GroupReference `json:"groups" validate:"required,min=1,dive"`
}

AddToGroupAction can be used to add a contact to one or more groups. An `add_to_group` event will be created for each group which the contact is added to.

```

{
  "uuid": "8eebd020-1af5-431c-b943-aa670fc74da9",
  "type": "add_to_group",
  "groups": [{
    "uuid": "2aad21f6-30b7-42c5-bd7f-1b720c154817",
    "name": "Survey Audience"
  }]
}

```

@action add_to_group

func (*AddToGroupAction) Execute

func (a *AddToGroupAction) Execute(run flows.FlowRun, step flows.Step, log flows.EventLog) error

Execute adds our contact to the specified groups

func (*AddToGroupAction) Type

func (a *AddToGroupAction) Type() string

Type returns the type of this action

func (*AddToGroupAction) Validate

func (a *AddToGroupAction) Validate(assets flows.SessionAssets) error

Validate validates our action is valid and has all the assets it needs

type AddURNAction added in v0.4.0

type AddURNAction struct {
	BaseAction
	Scheme string `json:"scheme" validate:"urnscheme"`
	Path   string `json:"path" validate:"required"`
}

AddURNAction can be used to add a URN to the current contact. An `add_urn` event will be created when this action is encountered. If there is no contact then this action will be ignored.

```

{
  "uuid": "8eebd020-1af5-431c-b943-aa670fc74da9",
  "type": "add_urn",
  "scheme": "tel",
  "path": "@flow.phone_number"
}

```

@action add_urn

func (*AddURNAction) Execute added in v0.4.0

func (a *AddURNAction) Execute(run flows.FlowRun, step flows.Step, log flows.EventLog) error

Execute runs the labeling action

func (*AddURNAction) Type added in v0.4.0

func (a *AddURNAction) Type() string

Type returns the type of this action

func (*AddURNAction) Validate added in v0.4.0

func (a *AddURNAction) Validate(assets flows.SessionAssets) error

Validate validates our action is valid and has all the assets it needs

type BaseAction

type BaseAction struct {
	UUID_ flows.ActionUUID `json:"uuid" validate:"required,uuid4"`
}

BaseAction is our base action

func NewBaseAction added in v0.4.0

func NewBaseAction(uuid flows.ActionUUID) BaseAction

func (*BaseAction) UUID

func (a *BaseAction) UUID() flows.ActionUUID

UUID returns the UUID of the action

type EmailAction

type EmailAction struct {
	BaseAction
	Addresses []string `json:"addresses" validate:"required,min=1"`
	Subject   string   `json:"subject" validate:"required"`
	Body      string   `json:"body" validate:"required"`
}

EmailAction can be used to send an email to one or more recipients. The subject, body and addresses can all contain expressions.

A `send_email` event will be created for each email address.

```

{
  "uuid": "8eebd020-1af5-431c-b943-aa670fc74da9",
  "type": "send_email",
  "addresses": ["@contact.urns.email"],
  "subject": "Here is your activation token",
  "body": "Your activation token is @contact.fields.activation_token"
}

```

@action send_email

func (*EmailAction) Execute

func (a *EmailAction) Execute(run flows.FlowRun, step flows.Step, log flows.EventLog) error

Execute creates the email events

func (*EmailAction) Type

func (a *EmailAction) Type() string

Type returns the type of this action

func (*EmailAction) Validate

func (a *EmailAction) Validate(assets flows.SessionAssets) error

Validate validates our action is valid and has all the assets it needs

type PreferredChannelAction

type PreferredChannelAction struct {
	BaseAction
	Channel *flows.ChannelReference `json:"channel"`
}

func (*PreferredChannelAction) Execute

func (a *PreferredChannelAction) Execute(run flows.FlowRun, step flows.Step, log flows.EventLog) error

func (*PreferredChannelAction) Type

func (a *PreferredChannelAction) Type() string

Type returns the type of this action

func (*PreferredChannelAction) Validate

func (a *PreferredChannelAction) Validate(assets flows.SessionAssets) error

Validate validates our action is valid and has all the assets it needs

type RemoveFromGroupAction

type RemoveFromGroupAction struct {
	BaseAction
	Groups []*flows.GroupReference `json:"groups" validate:"required,min=1,dive"`
}

RemoveFromGroupAction can be used to remove a contact from one or more groups. A `remove_from_group` event will be created for each group which the contact is removed from. If no groups are specified, then the contact will be removed from all groups.

```

{
  "uuid": "8eebd020-1af5-431c-b943-aa670fc74da9",
  "type": "remove_from_group",
  "groups": [{
    "uuid": "b7cf0d83-f1c9-411c-96fd-c511a4cfa86d",
    "name": "Registered Users"
  }]
}

```

@action remove_from_group

func (*RemoveFromGroupAction) Execute

func (a *RemoveFromGroupAction) Execute(run flows.FlowRun, step flows.Step, log flows.EventLog) error

Execute runs the action

func (*RemoveFromGroupAction) Type

func (a *RemoveFromGroupAction) Type() string

Type returns the type of this action

func (*RemoveFromGroupAction) Validate

func (a *RemoveFromGroupAction) Validate(assets flows.SessionAssets) error

Validate validates our action is valid and has all the assets it needs

type ReplyAction

type ReplyAction struct {
	BaseAction
	Text        string   `json:"text"`
	Attachments []string `json:"attachments"`
	AllURNs     bool     `json:"all_urns,omitempty"`
}

ReplyAction can be used to reply to the current contact in a flow. The text field may contain templates.

A `send_msg` event will be created with the evaluated text.

```

{
  "uuid": "8eebd020-1af5-431c-b943-aa670fc74da9",
  "type": "reply",
  "text": "Hi @contact.name, are you ready to complete today's survey?",
  "attachments": [],
  "all_urns": false
}

```

@action reply

func (*ReplyAction) Execute

func (a *ReplyAction) Execute(run flows.FlowRun, step flows.Step, log flows.EventLog) error

Execute runs this action

func (*ReplyAction) Type

func (a *ReplyAction) Type() string

Type returns the type of this action

func (*ReplyAction) Validate

func (a *ReplyAction) Validate(assets flows.SessionAssets) error

Validate validates our action is valid and has all the assets it needs

type SaveContactField

type SaveContactField struct {
	BaseAction
	Field *flows.FieldReference `json:"field" validate:"required"`
	Value string                `json:"value"`
}

SaveContactField can be used to save a value to a contact. The value can be a template and will be evaluated during the flow. A `save_contact_field` event will be created with the corresponding value.

```

{
  "uuid": "8eebd020-1af5-431c-b943-aa670fc74da9",
  "type": "save_contact_field",
  "field": {"key": "gender", "label": "Gender"},
  "value": "Male"
}

```

@action save_contact_field

func (*SaveContactField) Execute

func (a *SaveContactField) Execute(run flows.FlowRun, step flows.Step, log flows.EventLog) error

Execute runs this action

func (*SaveContactField) Type

func (a *SaveContactField) Type() string

Type returns the type of this action

func (*SaveContactField) Validate

func (a *SaveContactField) Validate(assets flows.SessionAssets) error

Validate validates our action is valid and has all the assets it needs

type SaveFlowResultAction

type SaveFlowResultAction struct {
	BaseAction
	ResultName string `json:"result_name"        validate:"required"`
	Value      string `json:"value"`
	Category   string `json:"category"`
}

SaveFlowResultAction can be used to save a result for a flow. The result will be available in the context for the run as @run.results.[name]. The optional category can be used as a way of categorizing results, this can be useful for reporting or analytics.

Both the value and category fields may be templates. A `save_flow_result` event will be created with the final values.

```

{
  "uuid": "8eebd020-1af5-431c-b943-aa670fc74da9",
  "type": "save_flow_result",
  "result_name": "gender",
  "value": "m",
  "category": "Male"
}

```

@action save_flow_result

func (*SaveFlowResultAction) Execute

func (a *SaveFlowResultAction) Execute(run flows.FlowRun, step flows.Step, log flows.EventLog) error

Execute runs this action

func (*SaveFlowResultAction) Type

func (a *SaveFlowResultAction) Type() string

Type returns the type of this action

func (*SaveFlowResultAction) Validate

func (a *SaveFlowResultAction) Validate(assets flows.SessionAssets) error

Validate validates our action is valid and has all the assets it needs

type SendMsgAction

type SendMsgAction struct {
	BaseAction
	Text        string                    `json:"text"`
	Attachments []string                  `json:"attachments"`
	URNs        []urns.URN                `json:"urns,omitempty"`
	Contacts    []*flows.ContactReference `json:"contacts,omitempty" validate:"dive"`
	Groups      []*flows.GroupReference   `json:"groups,omitempty" validate:"dive"`
	LegacyVars  []string                  `json:"legacy_vars,omitempty"`
}

SendMsgAction can be used to send a message to one or more contacts. It accepts a list of URNs, a list of groups and a list of contacts.

The URNs and text fields may be templates. A `send_msg` event will be created for each unique urn, contact and group with the evaluated text.

```

{
  "uuid": "8eebd020-1af5-431c-b943-aa670fc74da9",
  "type": "send_msg",
  "urns": ["tel:+12065551212"],
  "text": "Hi @contact.name, are you ready to complete today's survey?"
}

```

@action send_msg

func (*SendMsgAction) Execute

func (a *SendMsgAction) Execute(run flows.FlowRun, step flows.Step, log flows.EventLog) error

Execute runs this action

func (*SendMsgAction) Type

func (a *SendMsgAction) Type() string

Type returns the type of this action

func (*SendMsgAction) Validate

func (a *SendMsgAction) Validate(assets flows.SessionAssets) error

Validate validates our action is valid and has all the assets it needs

type StartFlowAction

type StartFlowAction struct {
	BaseAction
	Flow *flows.FlowReference `json:"flow" validate:"required"`
}

StartFlowAction can be used to start a contact down another flow. The current flow will pause until the subflow exits or expires.

A `flow_entered` event will be created when the flow is started, a `flow_exited` event will be created upon the subflows exit.

```

{
  "uuid": "8eebd020-1af5-431c-b943-aa670fc74da9",
  "type": "start_flow",
  "flow": {"uuid": "b7cf0d83-f1c9-411c-96fd-c511a4cfa86d", "name": "Collect Language"}
}

```

@action start_flow

func (*StartFlowAction) Execute

func (a *StartFlowAction) Execute(run flows.FlowRun, step flows.Step, log flows.EventLog) error

Execute runs our action

func (*StartFlowAction) Type

func (a *StartFlowAction) Type() string

Type returns the type of this action

func (*StartFlowAction) Validate

func (a *StartFlowAction) Validate(assets flows.SessionAssets) error

Validate validates our action is valid and has all the assets it needs

type StartSessionAction added in v0.4.0

type StartSessionAction struct {
	BaseAction
	URNs          []urns.URN                `json:"urns,omitempty"`
	Contacts      []*flows.ContactReference `json:"contacts,omitempty" validate:"dive"`
	Groups        []*flows.GroupReference   `json:"groups,omitempty" validate:"dive"`
	LegacyVars    []string                  `json:"legacy_vars,omitempty"`
	Flow          *flows.FlowReference      `json:"flow" validate:"required"`
	CreateContact bool                      `json:"create_contact,omitempty"`
}

StartSessionAction can be used to trigger sessions for other contacts and groups

```

{
  "uuid": "8eebd020-1af5-431c-b943-aa670fc74da9",
  "type": "start_session",
  "flow": {"uuid": "b7cf0d83-f1c9-411c-96fd-c511a4cfa86d", "name": "Registration"},
  "groups": [
    {"uuid": "8f8e2cae-3c8d-4dce-9c4b-19514437e427", "name": "New contacts"}
  ]
}

```

@action start_session

func (*StartSessionAction) Execute added in v0.4.0

func (a *StartSessionAction) Execute(run flows.FlowRun, step flows.Step, log flows.EventLog) error

Execute runs our action

func (*StartSessionAction) Type added in v0.4.0

func (a *StartSessionAction) Type() string

Type returns the type of this action

func (*StartSessionAction) Validate added in v0.4.0

func (a *StartSessionAction) Validate(assets flows.SessionAssets) error

Validate validates our action is valid and has all the assets it needs

type UpdateContactAction

type UpdateContactAction struct {
	BaseAction
	FieldName string `json:"field_name"    validate:"required,eq=name|eq=language"`
	Value     string `json:"value"         validate:"required"`
}

UpdateContactAction can be used to update one of the built in fields for a contact of "name" or "language". An `update_contact` event will be created with the corresponding values.

```

{
  "uuid": "8eebd020-1af5-431c-b943-aa670fc74da9",
  "type": "update_contact",
  "field_name": "language",
  "value": "eng"
}

```

@action update_contact

func (*UpdateContactAction) Execute

func (a *UpdateContactAction) Execute(run flows.FlowRun, step flows.Step, log flows.EventLog) error

Execute runs this action

func (*UpdateContactAction) Type

func (a *UpdateContactAction) Type() string

Type returns the type of this action

func (*UpdateContactAction) Validate

func (a *UpdateContactAction) Validate(assets flows.SessionAssets) error

Validate validates our action is valid and has all the assets it needs

type WebhookAction

type WebhookAction struct {
	BaseAction
	Method  string            `json:"method"                validate:"required"`
	URL     string            `json:"url"                   validate:"required"`
	Headers map[string]string `json:"headers,omitempty"`
	Body    string            `json:"body,omitempty"`
}

WebhookAction can be used to call an external service and insert the results in @run.webhook context variable. The body, header and url fields may be templates and will be evaluated at runtime.

A `webhook_called` event will be created based on the results of the HTTP call.

```

  {
    "uuid": "8eebd020-1af5-431c-b943-aa670fc74da9",
    "type": "call_webhook",
    "method": "get",
    "url": "https://api.ipify.org?format=json",
    "headers": {
	      "Authorization": "Token AAFFZZHH"
    }
  }

```

@action call_webhook

func (*WebhookAction) Execute

func (a *WebhookAction) Execute(run flows.FlowRun, step flows.Step, log flows.EventLog) error

Execute runs this action

func (*WebhookAction) Type

func (a *WebhookAction) Type() string

Type returns the type of this action

func (*WebhookAction) Validate

func (a *WebhookAction) Validate(assets flows.SessionAssets) error

Validate validates our action is valid and has all the assets it needs

Jump to

Keyboard shortcuts

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