triggers

package
v0.25.4 Latest Latest
Warning

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

Go to latest
Published: Jan 28, 2019 License: AGPL-3.0 Imports: 11 Imported by: 13

Documentation

Index

Constants

View Source
const TypeCampaign string = "campaign"

TypeCampaign is the type for sessions triggered by campaign events

View Source
const TypeChannel string = "channel"

TypeChannel is the type for sessions triggered by channel events

View Source
const TypeFlowAction string = "flow_action"

TypeFlowAction is a constant for sessions triggered by flow actions in other sessions

View Source
const TypeManual string = "manual"

TypeManual is the type for manually triggered sessions

View Source
const TypeMsg string = "msg"

TypeMsg is the type for message triggered sessions

Variables

This section is empty.

Functions

func EnsureDynamicGroups added in v0.21.1

func EnsureDynamicGroups(session flows.Session, logEvent func(flows.Event))

EnsureDynamicGroups ensures that our session contact is in the correct dynamic groups as as far as the engine is concerned

func NewManualTrigger

func NewManualTrigger(env utils.Environment, flow *assets.FlowReference, contact *flows.Contact, params types.XValue) flows.Trigger

NewManualTrigger creates a new manual trigger

func NewManualVoiceTrigger added in v0.25.2

func NewManualVoiceTrigger(env utils.Environment, flow *assets.FlowReference, contact *flows.Contact, connection *flows.Connection, params types.XValue) flows.Trigger

NewManualVoiceTrigger creates a new manual trigger with a channel connection for voice

func NewMsgTrigger added in v0.20.0

func NewMsgTrigger(env utils.Environment, flow *assets.FlowReference, contact *flows.Contact, msg *flows.MsgIn, match *KeywordMatch) flows.Trigger

NewMsgTrigger creates a new message trigger

func ReadTrigger

func ReadTrigger(sessionAssets flows.SessionAssets, data json.RawMessage) (flows.Trigger, error)

ReadTrigger reads a trigger from the given JSON

func RegisterType added in v0.11.0

func RegisterType(name string, f readFunc)

RegisterType registers a new type of trigger

Types

type CampaignEvent added in v0.12.2

type CampaignEvent struct {
	UUID     string             `json:"uuid" validate:"required,uuid4"`
	Campaign *CampaignReference `json:"campaign" validate:"required,dive"`
}

CampaignEvent describes the specific event in the campaign that triggered the session

func NewCampaignEvent added in v0.24.0

func NewCampaignEvent(uuid string, campaign *CampaignReference) *CampaignEvent

NewCampaignEvent creates a new campaign event

type CampaignReference added in v0.24.0

type CampaignReference struct {
	UUID string `json:"uuid" validate:"required,uuid4"`
	Name string `json:"name" validate:"required"`
}

CampaignReference is a reference to the campaign that triggered the session

func NewCampaignReference added in v0.24.0

func NewCampaignReference(uuid, name string) *CampaignReference

NewCampaignReference creates a new campaign reference

type CampaignTrigger added in v0.12.2

type CampaignTrigger struct {
	// contains filtered or unexported fields
}

CampaignTrigger is used when a session was triggered by a campaign event

{
  "type": "campaign",
  "flow": {"uuid": "50c3706e-fedb-42c0-8eab-dda3335714b7", "name": "Registration"},
  "contact": {
    "uuid": "9f7ede93-4b16-4692-80ad-b7dc54a1cd81",
    "name": "Bob",
    "created_on": "2018-01-01T12:00:00.000000Z"
  },
  "event": {
      "uuid": "34d16dbd-476d-4b77-bac3-9f3d597848cc",
      "campaign": {"uuid": "58e9b092-fe42-4173-876c-ff45a14a24fe", "name": "New Mothers"}
  },
  "triggered_on": "2000-01-01T00:00:00.000000000-00:00"
}

@trigger campaign

func NewCampaignTrigger added in v0.14.4

func NewCampaignTrigger(env utils.Environment, flow *assets.FlowReference, contact *flows.Contact, event *CampaignEvent) *CampaignTrigger

NewCampaignTrigger creates a new campaign trigger with the passed in values

func (*CampaignTrigger) Connection added in v0.25.0

func (t *CampaignTrigger) Connection() *flows.Connection

func (*CampaignTrigger) Contact added in v0.12.2

func (t *CampaignTrigger) Contact() *flows.Contact

func (*CampaignTrigger) Describe added in v0.12.2

func (t *CampaignTrigger) Describe() string

Describe returns a representation of this type for error messages

func (*CampaignTrigger) Environment added in v0.12.2

func (t *CampaignTrigger) Environment() utils.Environment

func (*CampaignTrigger) Flow added in v0.12.2

func (t *CampaignTrigger) Flow() *assets.FlowReference

func (*CampaignTrigger) Initialize added in v0.20.0

func (t *CampaignTrigger) Initialize(session flows.Session, logEvent func(flows.Event)) error

Initialize initializes the session

func (*CampaignTrigger) InitializeRun added in v0.20.0

func (t *CampaignTrigger) InitializeRun(run flows.FlowRun, logEvent func(flows.Event)) error

InitializeRun performs additional initialization when we create our first run

func (*CampaignTrigger) MarshalJSON added in v0.12.2

func (t *CampaignTrigger) MarshalJSON() ([]byte, error)

MarshalJSON marshals this trigger into JSON

func (*CampaignTrigger) Params added in v0.12.2

func (t *CampaignTrigger) Params() types.XValue

func (*CampaignTrigger) Reduce added in v0.12.2

func (t *CampaignTrigger) Reduce(env utils.Environment) types.XPrimitive

Reduce is called when this object needs to be reduced to a primitive

func (*CampaignTrigger) Resolve added in v0.12.2

func (t *CampaignTrigger) Resolve(env utils.Environment, key string) types.XValue

Resolve resolves the given key when this trigger is referenced in an expression

func (*CampaignTrigger) ToXJSON added in v0.12.2

func (t *CampaignTrigger) ToXJSON(env utils.Environment) types.XText

ToXJSON is called when this type is passed to @(json(...))

func (*CampaignTrigger) TriggeredOn added in v0.12.2

func (t *CampaignTrigger) TriggeredOn() time.Time

func (*CampaignTrigger) Type added in v0.12.2

func (t *CampaignTrigger) Type() string

Type returns the type of this trigger

type ChannelEvent added in v0.22.0

type ChannelEvent struct {
	Type    ChannelEventType         `json:"type" validate:"required"`
	Channel *assets.ChannelReference `json:"channel" validate:"required,dive"`
}

ChannelEvent describes the specific event on the channel that triggered the session

func NewChannelEvent added in v0.24.0

func NewChannelEvent(typeName ChannelEventType, channel *assets.ChannelReference) *ChannelEvent

NewChannelEvent creates a new channel event

type ChannelEventType added in v0.24.0

type ChannelEventType string

ChannelEventType is the type of event that occured on the channel

const (
	ChannelEventTypeNewConversation ChannelEventType = "new_conversation"
	ChannelEventTypeIncomingCall    ChannelEventType = "incoming_call"
)

different channel event types

type ChannelTrigger added in v0.22.0

type ChannelTrigger struct {
	// contains filtered or unexported fields
}

ChannelTrigger is used when a session was triggered by a channel event

{
  "type": "channel",
  "flow": {"uuid": "50c3706e-fedb-42c0-8eab-dda3335714b7", "name": "Registration"},
  "contact": {
    "uuid": "9f7ede93-4b16-4692-80ad-b7dc54a1cd81",
    "name": "Bob",
    "created_on": "2018-01-01T12:00:00.000000Z"
  },
  "event": {
      "type": "new_conversation",
      "channel": {"uuid": "58e9b092-fe42-4173-876c-ff45a14a24fe", "name": "Facebook"}
  },
  "triggered_on": "2000-01-01T00:00:00.000000000-00:00"
}

@trigger channel

func NewChannelTrigger added in v0.22.0

func NewChannelTrigger(env utils.Environment, flow *assets.FlowReference, contact *flows.Contact, event *ChannelEvent, params types.XValue) *ChannelTrigger

NewChannelTrigger creates a new channel trigger with the passed in values

func NewIncomingCallTrigger added in v0.25.2

func NewIncomingCallTrigger(env utils.Environment, flow *assets.FlowReference, contact *flows.Contact, urn urns.URN, channel *assets.ChannelReference) *ChannelTrigger

NewIncomingCallTrigger creates a new channel trigger with the passed in values

func (*ChannelTrigger) Connection added in v0.25.0

func (t *ChannelTrigger) Connection() *flows.Connection

func (*ChannelTrigger) Contact added in v0.22.0

func (t *ChannelTrigger) Contact() *flows.Contact

func (*ChannelTrigger) Describe added in v0.22.0

func (t *ChannelTrigger) Describe() string

Describe returns a representation of this type for error messages

func (*ChannelTrigger) Environment added in v0.22.0

func (t *ChannelTrigger) Environment() utils.Environment

func (*ChannelTrigger) Flow added in v0.22.0

func (t *ChannelTrigger) Flow() *assets.FlowReference

func (*ChannelTrigger) Initialize added in v0.22.0

func (t *ChannelTrigger) Initialize(session flows.Session, logEvent func(flows.Event)) error

Initialize initializes the session

func (*ChannelTrigger) InitializeRun added in v0.22.0

func (t *ChannelTrigger) InitializeRun(run flows.FlowRun, logEvent func(flows.Event)) error

InitializeRun performs additional initialization when we create our first run

func (*ChannelTrigger) MarshalJSON added in v0.22.0

func (t *ChannelTrigger) MarshalJSON() ([]byte, error)

MarshalJSON marshals this trigger into JSON

func (*ChannelTrigger) Params added in v0.22.0

func (t *ChannelTrigger) Params() types.XValue

func (*ChannelTrigger) Reduce added in v0.22.0

func (t *ChannelTrigger) Reduce(env utils.Environment) types.XPrimitive

Reduce is called when this object needs to be reduced to a primitive

func (*ChannelTrigger) Resolve added in v0.22.0

func (t *ChannelTrigger) Resolve(env utils.Environment, key string) types.XValue

Resolve resolves the given key when this trigger is referenced in an expression

func (*ChannelTrigger) ToXJSON added in v0.22.0

func (t *ChannelTrigger) ToXJSON(env utils.Environment) types.XText

ToXJSON is called when this type is passed to @(json(...))

func (*ChannelTrigger) TriggeredOn added in v0.22.0

func (t *ChannelTrigger) TriggeredOn() time.Time

func (*ChannelTrigger) Type added in v0.22.0

func (t *ChannelTrigger) Type() string

Type returns the type of this trigger

type FlowActionTrigger

type FlowActionTrigger struct {
	// contains filtered or unexported fields
}

FlowActionTrigger is used when another session triggered this run using a trigger_flow action.

{
  "type": "flow_action",
  "flow": {"uuid": "b7cf0d83-f1c9-411c-96fd-c511a4cfa86d", "name": "Collect Age"},
  "triggered_on": "2000-01-01T00:00:00.000000000-00:00",
  "run_summary": {
    "uuid": "b7cf0d83-f1c9-411c-96fd-c511a4cfa86d",
    "flow": {"uuid": "50c3706e-fedb-42c0-8eab-dda3335714b7", "name": "Registration"},
    "contact": {
      "uuid": "c59b0033-e748-4240-9d4c-e85eb6800151",
      "name": "Bob",
      "fields": {"gender": {"text": "Male"}},
      "created_on": "2018-01-01T12:00:00.000000000-00:00"
    },
    "status": "active",
    "results": {
      "age": {
        "result_name": "Age",
        "value": "33",
        "node": "cd2be8c4-59bc-453c-8777-dec9a80043b8",
        "created_on": "2018-01-01T12:00:00.000000000-00:00"
      }
    }
  }
}

@trigger flow_action

func NewFlowActionTrigger added in v0.24.0

func NewFlowActionTrigger(env utils.Environment, flow *assets.FlowReference, contact *flows.Contact, runSummary json.RawMessage) *FlowActionTrigger

NewFlowActionTrigger creates a new flow action trigger with the passed in values

func (*FlowActionTrigger) Connection added in v0.25.0

func (t *FlowActionTrigger) Connection() *flows.Connection

func (*FlowActionTrigger) Contact added in v0.5.0

func (t *FlowActionTrigger) Contact() *flows.Contact

func (*FlowActionTrigger) Describe added in v0.10.1

func (t *FlowActionTrigger) Describe() string

Describe returns a representation of this type for error messages

func (*FlowActionTrigger) Environment added in v0.5.0

func (t *FlowActionTrigger) Environment() utils.Environment

func (*FlowActionTrigger) Flow

func (t *FlowActionTrigger) Flow() *assets.FlowReference

func (*FlowActionTrigger) Initialize added in v0.20.0

func (t *FlowActionTrigger) Initialize(session flows.Session, logEvent func(flows.Event)) error

Initialize initializes the session

func (*FlowActionTrigger) InitializeRun added in v0.20.0

func (t *FlowActionTrigger) InitializeRun(run flows.FlowRun, logEvent func(flows.Event)) error

InitializeRun performs additional initialization when we create our first run

func (*FlowActionTrigger) MarshalJSON

func (t *FlowActionTrigger) MarshalJSON() ([]byte, error)

MarshalJSON marshals this trigger into JSON

func (*FlowActionTrigger) Params added in v0.5.0

func (t *FlowActionTrigger) Params() types.XValue

func (*FlowActionTrigger) Reduce added in v0.8.0

func (t *FlowActionTrigger) Reduce(env utils.Environment) types.XPrimitive

Reduce is called when this object needs to be reduced to a primitive

func (*FlowActionTrigger) Resolve added in v0.5.0

func (t *FlowActionTrigger) Resolve(env utils.Environment, key string) types.XValue

Resolve resolves the given key when this trigger is referenced in an expression

func (*FlowActionTrigger) RunSummary added in v0.24.0

func (t *FlowActionTrigger) RunSummary() json.RawMessage

RunSummary returns the summary of the run that triggered this session

func (*FlowActionTrigger) ToXJSON added in v0.8.0

func (t *FlowActionTrigger) ToXJSON(env utils.Environment) types.XText

ToXJSON is called when this type is passed to @(json(...))

func (*FlowActionTrigger) TriggeredOn

func (t *FlowActionTrigger) TriggeredOn() time.Time

func (*FlowActionTrigger) Type

func (t *FlowActionTrigger) Type() string

Type returns the type of this trigger

type KeywordMatch added in v0.20.0

type KeywordMatch struct {
	Type    KeywordMatchType `json:"type" validate:"required"`
	Keyword string           `json:"keyword" validate:"required"`
}

KeywordMatch describes why the message triggered a session

func NewKeywordMatch added in v0.24.0

func NewKeywordMatch(typeName KeywordMatchType, keyword string) *KeywordMatch

NewKeywordMatch creates a new keyword match

type KeywordMatchType added in v0.20.0

type KeywordMatchType string

KeywordMatchType describes how the message matched a keyword

const (
	KeywordMatchTypeFirstWord KeywordMatchType = "first_word"
	KeywordMatchTypeOnlyWord  KeywordMatchType = "only_word"
)

the different types of keyword match

type ManualTrigger

type ManualTrigger struct {
	// contains filtered or unexported fields
}

ManualTrigger is used when a session was triggered manually by a user

{
  "type": "manual",
  "flow": {"uuid": "50c3706e-fedb-42c0-8eab-dda3335714b7", "name": "Registration"},
  "contact": {
    "uuid": "9f7ede93-4b16-4692-80ad-b7dc54a1cd81",
    "name": "Bob",
    "created_on": "2018-01-01T12:00:00.000000Z"
  },
  "triggered_on": "2000-01-01T00:00:00.000000000-00:00"
}

@trigger manual

func (*ManualTrigger) Connection added in v0.25.0

func (t *ManualTrigger) Connection() *flows.Connection

func (*ManualTrigger) Contact added in v0.5.0

func (t *ManualTrigger) Contact() *flows.Contact

func (*ManualTrigger) Describe added in v0.10.1

func (t *ManualTrigger) Describe() string

Describe returns a representation of this type for error messages

func (*ManualTrigger) Environment added in v0.5.0

func (t *ManualTrigger) Environment() utils.Environment

func (*ManualTrigger) Flow

func (t *ManualTrigger) Flow() *assets.FlowReference

func (*ManualTrigger) Initialize added in v0.20.0

func (t *ManualTrigger) Initialize(session flows.Session, logEvent func(flows.Event)) error

Initialize initializes the session

func (*ManualTrigger) InitializeRun added in v0.20.0

func (t *ManualTrigger) InitializeRun(run flows.FlowRun, logEvent func(flows.Event)) error

InitializeRun performs additional initialization when we create our first run

func (*ManualTrigger) MarshalJSON

func (t *ManualTrigger) MarshalJSON() ([]byte, error)

MarshalJSON marshals this trigger into JSON

func (*ManualTrigger) Params added in v0.5.0

func (t *ManualTrigger) Params() types.XValue

func (*ManualTrigger) Reduce added in v0.8.0

func (t *ManualTrigger) Reduce(env utils.Environment) types.XPrimitive

Reduce is called when this object needs to be reduced to a primitive

func (*ManualTrigger) Resolve added in v0.5.0

func (t *ManualTrigger) Resolve(env utils.Environment, key string) types.XValue

Resolve resolves the given key when this trigger is referenced in an expression

func (*ManualTrigger) ToXJSON added in v0.8.0

func (t *ManualTrigger) ToXJSON(env utils.Environment) types.XText

ToXJSON is called when this type is passed to @(json(...))

func (*ManualTrigger) TriggeredOn

func (t *ManualTrigger) TriggeredOn() time.Time

func (*ManualTrigger) Type

func (t *ManualTrigger) Type() string

Type returns the type of this trigger

type MsgTrigger added in v0.20.0

type MsgTrigger struct {
	// contains filtered or unexported fields
}

MsgTrigger is used when a session was triggered by a message being recieved by the caller

{
  "type": "msg",
  "flow": {"uuid": "50c3706e-fedb-42c0-8eab-dda3335714b7", "name": "Registration"},
  "contact": {
    "uuid": "9f7ede93-4b16-4692-80ad-b7dc54a1cd81",
    "name": "Bob",
    "created_on": "2018-01-01T12:00:00.000000Z"
  },
  "msg": {
    "uuid": "2d611e17-fb22-457f-b802-b8f7ec5cda5b",
    "channel": {"uuid": "61602f3e-f603-4c70-8a8f-c477505bf4bf", "name": "Twilio"},
    "urn": "tel:+12065551212",
    "text": "hi there",
    "attachments": ["https://s3.amazon.com/mybucket/attachment.jpg"]
  },
  "keyword_match": {
    "type": "first_word",
    "keyword": "start"
  },
  "triggered_on": "2000-01-01T00:00:00.000000000-00:00"
}

@trigger msg

func (*MsgTrigger) Connection added in v0.25.0

func (t *MsgTrigger) Connection() *flows.Connection

func (*MsgTrigger) Contact added in v0.20.0

func (t *MsgTrigger) Contact() *flows.Contact

func (*MsgTrigger) Describe added in v0.20.0

func (t *MsgTrigger) Describe() string

Describe returns a representation of this type for error messages

func (*MsgTrigger) Environment added in v0.20.0

func (t *MsgTrigger) Environment() utils.Environment

func (*MsgTrigger) Flow added in v0.20.0

func (t *MsgTrigger) Flow() *assets.FlowReference

func (*MsgTrigger) Initialize added in v0.20.0

func (t *MsgTrigger) Initialize(session flows.Session, logEvent func(flows.Event)) error

Initialize initializes the session

func (*MsgTrigger) InitializeRun added in v0.20.0

func (t *MsgTrigger) InitializeRun(run flows.FlowRun, logEvent func(flows.Event)) error

InitializeRun performs additional initialization when we visit our first node

func (*MsgTrigger) MarshalJSON added in v0.20.0

func (t *MsgTrigger) MarshalJSON() ([]byte, error)

MarshalJSON marshals this trigger into JSON

func (*MsgTrigger) Params added in v0.20.0

func (t *MsgTrigger) Params() types.XValue

func (*MsgTrigger) Reduce added in v0.20.0

func (t *MsgTrigger) Reduce(env utils.Environment) types.XPrimitive

Reduce is called when this object needs to be reduced to a primitive

func (*MsgTrigger) Resolve added in v0.20.0

func (t *MsgTrigger) Resolve(env utils.Environment, key string) types.XValue

Resolve resolves the given key when this trigger is referenced in an expression

func (*MsgTrigger) ToXJSON added in v0.20.0

func (t *MsgTrigger) ToXJSON(env utils.Environment) types.XText

ToXJSON is called when this type is passed to @(json(...))

func (*MsgTrigger) TriggeredOn added in v0.20.0

func (t *MsgTrigger) TriggeredOn() time.Time

func (*MsgTrigger) Type added in v0.20.0

func (t *MsgTrigger) Type() string

Type returns the type of this trigger

Jump to

Keyboard shortcuts

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