github.com/CyCoreSystems/ari@v4.8.4+incompatible/events_gen.go (about)

     1  // file generated by eventgen
     2  
     3  package ari
     4  
     5  import (
     6  	"encoding/json"
     7  
     8  	"github.com/pkg/errors"
     9  )
    10  
    11  // EventTypes enumerates the list of event types
    12  type EventTypes struct {
    13  	All                      string
    14  	ApplicationReplaced      string
    15  	BridgeAttendedTransfer   string
    16  	BridgeBlindTransfer      string
    17  	BridgeCreated            string
    18  	BridgeDestroyed          string
    19  	BridgeMerged             string
    20  	BridgeVideoSourceChanged string
    21  	ChannelCallerID          string
    22  	ChannelConnectedLine     string
    23  	ChannelCreated           string
    24  	ChannelDestroyed         string
    25  	ChannelDialplan          string
    26  	ChannelDtmfReceived      string
    27  	ChannelEnteredBridge     string
    28  	ChannelHangupRequest     string
    29  	ChannelHold              string
    30  	ChannelLeftBridge        string
    31  	ChannelStateChange       string
    32  	ChannelTalkingFinished   string
    33  	ChannelTalkingStarted    string
    34  	ChannelUnhold            string
    35  	ChannelUserevent         string
    36  	ChannelVarset            string
    37  	ContactInfo              string
    38  	ContactStatusChange      string
    39  	DeviceStateChanged       string
    40  	Dial                     string
    41  	EndpointStateChange      string
    42  	MissingParams            string
    43  	Peer                     string
    44  	PeerStatusChange         string
    45  	PlaybackContinuing       string
    46  	PlaybackFinished         string
    47  	PlaybackStarted          string
    48  	RecordingFailed          string
    49  	RecordingFinished        string
    50  	RecordingStarted         string
    51  	StasisEnd                string
    52  	StasisStart              string
    53  	TextMessageReceived      string
    54  }
    55  
    56  // Events is the instance for grabbing event types
    57  var Events EventTypes
    58  
    59  func init() {
    60  	Events.All = "all"
    61  	Events.ApplicationReplaced = "ApplicationReplaced"
    62  	Events.BridgeAttendedTransfer = "BridgeAttendedTransfer"
    63  	Events.BridgeBlindTransfer = "BridgeBlindTransfer"
    64  	Events.BridgeCreated = "BridgeCreated"
    65  	Events.BridgeDestroyed = "BridgeDestroyed"
    66  	Events.BridgeMerged = "BridgeMerged"
    67  	Events.BridgeVideoSourceChanged = "BridgeVideoSourceChanged"
    68  	Events.ChannelCallerID = "ChannelCallerId"
    69  	Events.ChannelConnectedLine = "ChannelConnectedLine"
    70  	Events.ChannelCreated = "ChannelCreated"
    71  	Events.ChannelDestroyed = "ChannelDestroyed"
    72  	Events.ChannelDialplan = "ChannelDialplan"
    73  	Events.ChannelDtmfReceived = "ChannelDtmfReceived"
    74  	Events.ChannelEnteredBridge = "ChannelEnteredBridge"
    75  	Events.ChannelHangupRequest = "ChannelHangupRequest"
    76  	Events.ChannelHold = "ChannelHold"
    77  	Events.ChannelLeftBridge = "ChannelLeftBridge"
    78  	Events.ChannelStateChange = "ChannelStateChange"
    79  	Events.ChannelTalkingFinished = "ChannelTalkingFinished"
    80  	Events.ChannelTalkingStarted = "ChannelTalkingStarted"
    81  	Events.ChannelUnhold = "ChannelUnhold"
    82  	Events.ChannelUserevent = "ChannelUserevent"
    83  	Events.ChannelVarset = "ChannelVarset"
    84  	Events.ContactInfo = "ContactInfo"
    85  	Events.ContactStatusChange = "ContactStatusChange"
    86  	Events.DeviceStateChanged = "DeviceStateChanged"
    87  	Events.Dial = "Dial"
    88  	Events.EndpointStateChange = "EndpointStateChange"
    89  	Events.MissingParams = "MissingParams"
    90  	Events.Peer = "Peer"
    91  	Events.PeerStatusChange = "PeerStatusChange"
    92  	Events.PlaybackContinuing = "PlaybackContinuing"
    93  	Events.PlaybackFinished = "PlaybackFinished"
    94  	Events.PlaybackStarted = "PlaybackStarted"
    95  	Events.RecordingFailed = "RecordingFailed"
    96  	Events.RecordingFinished = "RecordingFinished"
    97  	Events.RecordingStarted = "RecordingStarted"
    98  	Events.StasisEnd = "StasisEnd"
    99  	Events.StasisStart = "StasisStart"
   100  	Events.TextMessageReceived = "TextMessageReceived"
   101  
   102  }
   103  
   104  // DecodeEvent converts a JSON-encoded event to an ARI event.
   105  func DecodeEvent(data []byte) (Event, error) {
   106  	// Decode the event type
   107  	var typer Message
   108  	err := json.Unmarshal(data, &typer)
   109  	if err != nil {
   110  		return nil, errors.Wrap(err, "failed to decode type")
   111  	}
   112  	if typer.Type == "" {
   113  		return nil, errors.New("no type found")
   114  	}
   115  
   116  	switch typer.Type {
   117  	case Events.ApplicationReplaced:
   118  		var e ApplicationReplaced
   119  		err = json.Unmarshal(data, &e)
   120  		return &e, err
   121  	case Events.BridgeAttendedTransfer:
   122  		var e BridgeAttendedTransfer
   123  		err = json.Unmarshal(data, &e)
   124  		return &e, err
   125  	case Events.BridgeBlindTransfer:
   126  		var e BridgeBlindTransfer
   127  		err = json.Unmarshal(data, &e)
   128  		return &e, err
   129  	case Events.BridgeCreated:
   130  		var e BridgeCreated
   131  		err = json.Unmarshal(data, &e)
   132  		return &e, err
   133  	case Events.BridgeDestroyed:
   134  		var e BridgeDestroyed
   135  		err = json.Unmarshal(data, &e)
   136  		return &e, err
   137  	case Events.BridgeMerged:
   138  		var e BridgeMerged
   139  		err = json.Unmarshal(data, &e)
   140  		return &e, err
   141  	case Events.BridgeVideoSourceChanged:
   142  		var e BridgeVideoSourceChanged
   143  		err = json.Unmarshal(data, &e)
   144  		return &e, err
   145  	case Events.ChannelCallerID:
   146  		var e ChannelCallerID
   147  		err = json.Unmarshal(data, &e)
   148  		return &e, err
   149  	case Events.ChannelConnectedLine:
   150  		var e ChannelConnectedLine
   151  		err = json.Unmarshal(data, &e)
   152  		return &e, err
   153  	case Events.ChannelCreated:
   154  		var e ChannelCreated
   155  		err = json.Unmarshal(data, &e)
   156  		return &e, err
   157  	case Events.ChannelDestroyed:
   158  		var e ChannelDestroyed
   159  		err = json.Unmarshal(data, &e)
   160  		return &e, err
   161  	case Events.ChannelDialplan:
   162  		var e ChannelDialplan
   163  		err = json.Unmarshal(data, &e)
   164  		return &e, err
   165  	case Events.ChannelDtmfReceived:
   166  		var e ChannelDtmfReceived
   167  		err = json.Unmarshal(data, &e)
   168  		return &e, err
   169  	case Events.ChannelEnteredBridge:
   170  		var e ChannelEnteredBridge
   171  		err = json.Unmarshal(data, &e)
   172  		return &e, err
   173  	case Events.ChannelHangupRequest:
   174  		var e ChannelHangupRequest
   175  		err = json.Unmarshal(data, &e)
   176  		return &e, err
   177  	case Events.ChannelHold:
   178  		var e ChannelHold
   179  		err = json.Unmarshal(data, &e)
   180  		return &e, err
   181  	case Events.ChannelLeftBridge:
   182  		var e ChannelLeftBridge
   183  		err = json.Unmarshal(data, &e)
   184  		return &e, err
   185  	case Events.ChannelStateChange:
   186  		var e ChannelStateChange
   187  		err = json.Unmarshal(data, &e)
   188  		return &e, err
   189  	case Events.ChannelTalkingFinished:
   190  		var e ChannelTalkingFinished
   191  		err = json.Unmarshal(data, &e)
   192  		return &e, err
   193  	case Events.ChannelTalkingStarted:
   194  		var e ChannelTalkingStarted
   195  		err = json.Unmarshal(data, &e)
   196  		return &e, err
   197  	case Events.ChannelUnhold:
   198  		var e ChannelUnhold
   199  		err = json.Unmarshal(data, &e)
   200  		return &e, err
   201  	case Events.ChannelUserevent:
   202  		var e ChannelUserevent
   203  		err = json.Unmarshal(data, &e)
   204  		return &e, err
   205  	case Events.ChannelVarset:
   206  		var e ChannelVarset
   207  		err = json.Unmarshal(data, &e)
   208  		return &e, err
   209  	case Events.ContactInfo:
   210  		var e ContactInfo
   211  		err = json.Unmarshal(data, &e)
   212  		return &e, err
   213  	case Events.ContactStatusChange:
   214  		var e ContactStatusChange
   215  		err = json.Unmarshal(data, &e)
   216  		return &e, err
   217  	case Events.DeviceStateChanged:
   218  		var e DeviceStateChanged
   219  		err = json.Unmarshal(data, &e)
   220  		return &e, err
   221  	case Events.Dial:
   222  		var e Dial
   223  		err = json.Unmarshal(data, &e)
   224  		return &e, err
   225  	case Events.EndpointStateChange:
   226  		var e EndpointStateChange
   227  		err = json.Unmarshal(data, &e)
   228  		return &e, err
   229  	case Events.MissingParams:
   230  		var e MissingParams
   231  		err = json.Unmarshal(data, &e)
   232  		return &e, err
   233  	case Events.Peer:
   234  		var e Peer
   235  		err = json.Unmarshal(data, &e)
   236  		return &e, err
   237  	case Events.PeerStatusChange:
   238  		var e PeerStatusChange
   239  		err = json.Unmarshal(data, &e)
   240  		return &e, err
   241  	case Events.PlaybackContinuing:
   242  		var e PlaybackContinuing
   243  		err = json.Unmarshal(data, &e)
   244  		return &e, err
   245  	case Events.PlaybackFinished:
   246  		var e PlaybackFinished
   247  		err = json.Unmarshal(data, &e)
   248  		return &e, err
   249  	case Events.PlaybackStarted:
   250  		var e PlaybackStarted
   251  		err = json.Unmarshal(data, &e)
   252  		return &e, err
   253  	case Events.RecordingFailed:
   254  		var e RecordingFailed
   255  		err = json.Unmarshal(data, &e)
   256  		return &e, err
   257  	case Events.RecordingFinished:
   258  		var e RecordingFinished
   259  		err = json.Unmarshal(data, &e)
   260  		return &e, err
   261  	case Events.RecordingStarted:
   262  		var e RecordingStarted
   263  		err = json.Unmarshal(data, &e)
   264  		return &e, err
   265  	case Events.StasisEnd:
   266  		var e StasisEnd
   267  		err = json.Unmarshal(data, &e)
   268  		return &e, err
   269  	case Events.StasisStart:
   270  		var e StasisStart
   271  		err = json.Unmarshal(data, &e)
   272  		return &e, err
   273  	case Events.TextMessageReceived:
   274  		var e TextMessageReceived
   275  		err = json.Unmarshal(data, &e)
   276  		return &e, err
   277  
   278  	}
   279  	return nil, errors.New("unhandled type: " + typer.Type)
   280  }
   281  
   282  // ApplicationReplaced - "Notification that another WebSocket has taken over for an application.An application may only be subscribed to by a single WebSocket at a time. If multiple WebSockets attempt to subscribe to the same application, the newer WebSocket wins, and the older one receives this event."
   283  type ApplicationReplaced struct {
   284  	EventData `json:",inline"`
   285  
   286  	// Header describes any transport-related metadata
   287  	Header Header `json:"-"`
   288  }
   289  
   290  // BridgeAttendedTransfer - "Notification that an attended transfer has occurred."
   291  type BridgeAttendedTransfer struct {
   292  	EventData `json:",inline"`
   293  
   294  	// Header describes any transport-related metadata
   295  	Header Header `json:"-"`
   296  
   297  	DestinationApplication     string      `json:"destination_application"`      // Application that has been transferred into
   298  	DestinationBridge          string      `json:"destination_bridge"`           // Bridge that survived the merge result
   299  	DestinationLinkFirstLeg    ChannelData `json:"destination_link_first_leg"`   // First leg of a link transfer result
   300  	DestinationLinkSecondLeg   ChannelData `json:"destination_link_second_leg"`  // Second leg of a link transfer result
   301  	DestinationThreewayBridge  BridgeData  `json:"destination_threeway_bridge"`  // Bridge that survived the threeway result
   302  	DestinationThreewayChannel ChannelData `json:"destination_threeway_channel"` // Transferer channel that survived the threeway result
   303  	DestinationType            string      `json:"destination_type"`             // How the transfer was accomplished
   304  	IsExternal                 bool        `json:"is_external"`                  // Whether the transfer was externally initiated or not
   305  	ReplaceChannel             ChannelData `json:"replace_channel,omitempty"`    // The channel that is replacing transferer_first_leg in the swap
   306  	Result                     string      `json:"result"`                       // The result of the transfer attempt
   307  	TransferTarget             ChannelData `json:"transfer_target,omitempty"`    // The channel that is being transferred to
   308  	Transferee                 ChannelData `json:"transferee,omitempty"`         // The channel that is being transferred
   309  	TransfererFirstLeg         ChannelData `json:"transferer_first_leg"`         // First leg of the transferer
   310  	TransfererFirstLegBridge   BridgeData  `json:"transferer_first_leg_bridge"`  // Bridge the transferer first leg is in
   311  	TransfererSecondLeg        ChannelData `json:"transferer_second_leg"`        // Second leg of the transferer
   312  	TransfererSecondLegBridge  BridgeData  `json:"transferer_second_leg_bridge"` // Bridge the transferer second leg is in
   313  }
   314  
   315  // BridgeBlindTransfer - "Notification that a blind transfer has occurred."
   316  type BridgeBlindTransfer struct {
   317  	EventData `json:",inline"`
   318  
   319  	// Header describes any transport-related metadata
   320  	Header Header `json:"-"`
   321  
   322  	Bridge         BridgeData  `json:"bridge"`                    // The bridge being transferred
   323  	Channel        ChannelData `json:"channel"`                   // The channel performing the blind transfer
   324  	Context        string      `json:"context"`                   // The context transferred to
   325  	Exten          string      `json:"exten"`                     // The extension transferred to
   326  	IsExternal     bool        `json:"is_external"`               // Whether the transfer was externally initiated or not
   327  	ReplaceChannel ChannelData `json:"replace_channel,omitempty"` // The channel that is replacing transferer when the transferee(s) can not be transferred directly
   328  	Result         string      `json:"result"`                    // The result of the transfer attempt
   329  	Transferee     ChannelData `json:"transferee,omitempty"`      // The channel that is being transferred
   330  }
   331  
   332  // BridgeCreated - "Notification that a bridge has been created."
   333  type BridgeCreated struct {
   334  	EventData `json:",inline"`
   335  
   336  	// Header describes any transport-related metadata
   337  	Header Header `json:"-"`
   338  
   339  	Bridge BridgeData `json:"bridge"`
   340  }
   341  
   342  // BridgeDestroyed - "Notification that a bridge has been destroyed."
   343  type BridgeDestroyed struct {
   344  	EventData `json:",inline"`
   345  
   346  	// Header describes any transport-related metadata
   347  	Header Header `json:"-"`
   348  
   349  	Bridge BridgeData `json:"bridge"`
   350  }
   351  
   352  // BridgeMerged - "Notification that one bridge has merged into another."
   353  type BridgeMerged struct {
   354  	EventData `json:",inline"`
   355  
   356  	// Header describes any transport-related metadata
   357  	Header Header `json:"-"`
   358  
   359  	Bridge     BridgeData `json:"bridge"`
   360  	BridgeFrom BridgeData `json:"bridge_from"`
   361  }
   362  
   363  // BridgeVideoSourceChanged - "Notification that the source of video in a bridge has changed."
   364  type BridgeVideoSourceChanged struct {
   365  	EventData `json:",inline"`
   366  
   367  	// Header describes any transport-related metadata
   368  	Header Header `json:"-"`
   369  
   370  	Bridge           BridgeData `json:"bridge"`
   371  	OldVideoSourceId string     `json:"old_video_source_id,omitempty"`
   372  }
   373  
   374  // ChannelCallerID - "Channel changed Caller ID."
   375  type ChannelCallerID struct {
   376  	EventData `json:",inline"`
   377  
   378  	// Header describes any transport-related metadata
   379  	Header Header `json:"-"`
   380  
   381  	CallerPresentation    int         `json:"caller_presentation"`     // The integer representation of the Caller Presentation value.
   382  	CallerPresentationTxt string      `json:"caller_presentation_txt"` // The text representation of the Caller Presentation value.
   383  	Channel               ChannelData `json:"channel"`                 // The channel that changed Caller ID.
   384  }
   385  
   386  // ChannelConnectedLine - "Channel changed Connected Line."
   387  type ChannelConnectedLine struct {
   388  	EventData `json:",inline"`
   389  
   390  	// Header describes any transport-related metadata
   391  	Header Header `json:"-"`
   392  
   393  	Channel ChannelData `json:"channel"` // The channel whose connected line has changed.
   394  }
   395  
   396  // ChannelCreated - "Notification that a channel has been created."
   397  type ChannelCreated struct {
   398  	EventData `json:",inline"`
   399  
   400  	// Header describes any transport-related metadata
   401  	Header Header `json:"-"`
   402  
   403  	Channel ChannelData `json:"channel"`
   404  }
   405  
   406  // ChannelDestroyed - "Notification that a channel has been destroyed."
   407  type ChannelDestroyed struct {
   408  	EventData `json:",inline"`
   409  
   410  	// Header describes any transport-related metadata
   411  	Header Header `json:"-"`
   412  
   413  	Cause    int         `json:"cause"`     // Integer representation of the cause of the hangup
   414  	CauseTxt string      `json:"cause_txt"` // Text representation of the cause of the hangup
   415  	Channel  ChannelData `json:"channel"`
   416  }
   417  
   418  // ChannelDialplan - "Channel changed location in the dialplan."
   419  type ChannelDialplan struct {
   420  	EventData `json:",inline"`
   421  
   422  	// Header describes any transport-related metadata
   423  	Header Header `json:"-"`
   424  
   425  	Channel         ChannelData `json:"channel"`           // The channel that changed dialplan location.
   426  	DialplanApp     string      `json:"dialplan_app"`      // The application about to be executed.
   427  	DialplanAppData string      `json:"dialplan_app_data"` // The data to be passed to the application.
   428  }
   429  
   430  // ChannelDtmfReceived - "DTMF received on a channel.This event is sent when the DTMF ends. There is no notification about the start of DTMF"
   431  type ChannelDtmfReceived struct {
   432  	EventData `json:",inline"`
   433  
   434  	// Header describes any transport-related metadata
   435  	Header Header `json:"-"`
   436  
   437  	Channel    ChannelData `json:"channel"`     // The channel on which DTMF was received
   438  	Digit      string      `json:"digit"`       // DTMF digit received (0-9, A-E, # or *)
   439  	DurationMs int         `json:"duration_ms"` // Number of milliseconds DTMF was received
   440  }
   441  
   442  // ChannelEnteredBridge - "Notification that a channel has entered a bridge."
   443  type ChannelEnteredBridge struct {
   444  	EventData `json:",inline"`
   445  
   446  	// Header describes any transport-related metadata
   447  	Header Header `json:"-"`
   448  
   449  	Bridge  BridgeData  `json:"bridge"`
   450  	Channel ChannelData `json:"channel"`
   451  }
   452  
   453  // ChannelHangupRequest - "A hangup was requested on the channel."
   454  type ChannelHangupRequest struct {
   455  	EventData `json:",inline"`
   456  
   457  	// Header describes any transport-related metadata
   458  	Header Header `json:"-"`
   459  
   460  	Cause   int         `json:"cause"`   // Integer representation of the cause of the hangup.
   461  	Channel ChannelData `json:"channel"` // The channel on which the hangup was requested.
   462  	Soft    bool        `json:"soft"`    // Whether the hangup request was a soft hangup request.
   463  }
   464  
   465  // ChannelHold - "A channel initiated a media hold."
   466  type ChannelHold struct {
   467  	EventData `json:",inline"`
   468  
   469  	// Header describes any transport-related metadata
   470  	Header Header `json:"-"`
   471  
   472  	Channel    ChannelData `json:"channel"`              // The channel that initiated the hold event.
   473  	Musicclass string      `json:"musicclass,omitempty"` // The music on hold class that the initiator requested.
   474  }
   475  
   476  // ChannelLeftBridge - "Notification that a channel has left a bridge."
   477  type ChannelLeftBridge struct {
   478  	EventData `json:",inline"`
   479  
   480  	// Header describes any transport-related metadata
   481  	Header Header `json:"-"`
   482  
   483  	Bridge  BridgeData  `json:"bridge"`
   484  	Channel ChannelData `json:"channel"`
   485  }
   486  
   487  // ChannelStateChange - "Notification of a channel's state change."
   488  type ChannelStateChange struct {
   489  	EventData `json:",inline"`
   490  
   491  	// Header describes any transport-related metadata
   492  	Header Header `json:"-"`
   493  
   494  	Channel ChannelData `json:"channel"`
   495  }
   496  
   497  // ChannelTalkingFinished - "Talking is no longer detected on the channel."
   498  type ChannelTalkingFinished struct {
   499  	EventData `json:",inline"`
   500  
   501  	// Header describes any transport-related metadata
   502  	Header Header `json:"-"`
   503  
   504  	Channel  ChannelData `json:"channel"`  // The channel on which talking completed.
   505  	Duration int         `json:"duration"` // The length of time, in milliseconds, that talking was detected on the channel
   506  }
   507  
   508  // ChannelTalkingStarted - "Talking was detected on the channel."
   509  type ChannelTalkingStarted struct {
   510  	EventData `json:",inline"`
   511  
   512  	// Header describes any transport-related metadata
   513  	Header Header `json:"-"`
   514  
   515  	Channel ChannelData `json:"channel"` // The channel on which talking started.
   516  }
   517  
   518  // ChannelUnhold - "A channel initiated a media unhold."
   519  type ChannelUnhold struct {
   520  	EventData `json:",inline"`
   521  
   522  	// Header describes any transport-related metadata
   523  	Header Header `json:"-"`
   524  
   525  	Channel ChannelData `json:"channel"` // The channel that initiated the unhold event.
   526  }
   527  
   528  // ChannelUserevent - "User-generated event with additional user-defined fields in the object."
   529  type ChannelUserevent struct {
   530  	EventData `json:",inline"`
   531  
   532  	// Header describes any transport-related metadata
   533  	Header Header `json:"-"`
   534  
   535  	Bridge    BridgeData   `json:"bridge,omitempty"`   // A bridge that is signaled with the user event.
   536  	Channel   ChannelData  `json:"channel,omitempty"`  // A channel that is signaled with the user event.
   537  	Endpoint  EndpointData `json:"endpoint,omitempty"` // A endpoint that is signaled with the user event.
   538  	Eventname string       `json:"eventname"`          // The name of the user event.
   539  	Userevent interface{}  `json:"userevent"`          // Custom Userevent data
   540  }
   541  
   542  // ChannelVarset - "Channel variable changed."
   543  type ChannelVarset struct {
   544  	EventData `json:",inline"`
   545  
   546  	// Header describes any transport-related metadata
   547  	Header Header `json:"-"`
   548  
   549  	Channel  ChannelData `json:"channel,omitempty"` // The channel on which the variable was set.If missing, the variable is a global variable.
   550  	Value    string      `json:"value"`             // The new value of the variable.
   551  	Variable string      `json:"variable"`          // The variable that changed.
   552  }
   553  
   554  // ContactInfo - "Detailed information about a contact on an endpoint."
   555  type ContactInfo struct {
   556  	EventData `json:",inline"`
   557  
   558  	// Header describes any transport-related metadata
   559  	Header Header `json:"-"`
   560  
   561  	Aor           string `json:"aor"`                      // The Address of Record this contact belongs to.
   562  	ContactStatus string `json:"contact_status"`           // The current status of the contact.
   563  	RoundtripUsec string `json:"roundtrip_usec,omitempty"` // Current round trip time, in microseconds, for the contact.
   564  	Uri           string `json:"uri"`                      // The location of the contact.
   565  }
   566  
   567  // ContactStatusChange - "The state of a contact on an endpoint has changed."
   568  type ContactStatusChange struct {
   569  	EventData `json:",inline"`
   570  
   571  	// Header describes any transport-related metadata
   572  	Header Header `json:"-"`
   573  
   574  	ContactInfo ContactInfo  `json:"contact_info"`
   575  	Endpoint    EndpointData `json:"endpoint"`
   576  }
   577  
   578  // DeviceStateChanged - "Notification that a device state has changed."
   579  type DeviceStateChanged struct {
   580  	EventData `json:",inline"`
   581  
   582  	// Header describes any transport-related metadata
   583  	Header Header `json:"-"`
   584  
   585  	DeviceState DeviceStateData `json:"device_state"` // Device state object
   586  }
   587  
   588  // Dial - "Dialing state has changed."
   589  type Dial struct {
   590  	EventData `json:",inline"`
   591  
   592  	// Header describes any transport-related metadata
   593  	Header Header `json:"-"`
   594  
   595  	Caller     ChannelData `json:"caller,omitempty"`     // The calling channel.
   596  	Dialstatus string      `json:"dialstatus"`           // Current status of the dialing attempt to the peer.
   597  	Dialstring string      `json:"dialstring,omitempty"` // The dial string for calling the peer channel.
   598  	Forward    string      `json:"forward,omitempty"`    // Forwarding target requested by the original dialed channel.
   599  	Forwarded  ChannelData `json:"forwarded,omitempty"`  // Channel that the caller has been forwarded to.
   600  	Peer       ChannelData `json:"peer"`                 // The dialed channel.
   601  }
   602  
   603  // EndpointStateChange - "Endpoint state changed."
   604  type EndpointStateChange struct {
   605  	EventData `json:",inline"`
   606  
   607  	// Header describes any transport-related metadata
   608  	Header Header `json:"-"`
   609  
   610  	Endpoint EndpointData `json:"endpoint"`
   611  }
   612  
   613  // MissingParams - "Error event sent when required params are missing."
   614  type MissingParams struct {
   615  	EventData `json:",inline"`
   616  
   617  	// Header describes any transport-related metadata
   618  	Header Header `json:"-"`
   619  
   620  	Params []string `json:"params"` // A list of the missing parameters
   621  }
   622  
   623  // Peer - "Detailed information about a remote peer that communicates with Asterisk."
   624  type Peer struct {
   625  	EventData `json:",inline"`
   626  
   627  	// Header describes any transport-related metadata
   628  	Header Header `json:"-"`
   629  
   630  	Address    string `json:"address,omitempty"` // The IP address of the peer.
   631  	Cause      string `json:"cause,omitempty"`   // An optional reason associated with the change in peer_status.
   632  	PeerStatus string `json:"peer_status"`       // The current state of the peer. Note that the values of the status are dependent on the underlying peer technology.
   633  	Port       string `json:"port,omitempty"`    // The port of the peer.
   634  	Time       string `json:"time,omitempty"`    // The last known time the peer was contacted.
   635  }
   636  
   637  // PeerStatusChange - "The state of a peer associated with an endpoint has changed."
   638  type PeerStatusChange struct {
   639  	EventData `json:",inline"`
   640  
   641  	// Header describes any transport-related metadata
   642  	Header Header `json:"-"`
   643  
   644  	Endpoint EndpointData `json:"endpoint"`
   645  	Peer     Peer         `json:"peer"`
   646  }
   647  
   648  // PlaybackContinuing - "Event showing the continuation of a media playback operation from one media URI to the next in the list."
   649  type PlaybackContinuing struct {
   650  	EventData `json:",inline"`
   651  
   652  	// Header describes any transport-related metadata
   653  	Header Header `json:"-"`
   654  
   655  	Playback PlaybackData `json:"playback"` // Playback control object
   656  }
   657  
   658  // PlaybackFinished - "Event showing the completion of a media playback operation."
   659  type PlaybackFinished struct {
   660  	EventData `json:",inline"`
   661  
   662  	// Header describes any transport-related metadata
   663  	Header Header `json:"-"`
   664  
   665  	Playback PlaybackData `json:"playback"` // Playback control object
   666  }
   667  
   668  // PlaybackStarted - "Event showing the start of a media playback operation."
   669  type PlaybackStarted struct {
   670  	EventData `json:",inline"`
   671  
   672  	// Header describes any transport-related metadata
   673  	Header Header `json:"-"`
   674  
   675  	Playback PlaybackData `json:"playback"` // Playback control object
   676  }
   677  
   678  // RecordingFailed - "Event showing failure of a recording operation."
   679  type RecordingFailed struct {
   680  	EventData `json:",inline"`
   681  
   682  	// Header describes any transport-related metadata
   683  	Header Header `json:"-"`
   684  
   685  	Recording LiveRecordingData `json:"recording"` // Recording control object
   686  }
   687  
   688  // RecordingFinished - "Event showing the completion of a recording operation."
   689  type RecordingFinished struct {
   690  	EventData `json:",inline"`
   691  
   692  	// Header describes any transport-related metadata
   693  	Header Header `json:"-"`
   694  
   695  	Recording LiveRecordingData `json:"recording"` // Recording control object
   696  }
   697  
   698  // RecordingStarted - "Event showing the start of a recording operation."
   699  type RecordingStarted struct {
   700  	EventData `json:",inline"`
   701  
   702  	// Header describes any transport-related metadata
   703  	Header Header `json:"-"`
   704  
   705  	Recording LiveRecordingData `json:"recording"` // Recording control object
   706  }
   707  
   708  // StasisEnd - "Notification that a channel has left a Stasis application."
   709  type StasisEnd struct {
   710  	EventData `json:",inline"`
   711  
   712  	// Header describes any transport-related metadata
   713  	Header Header `json:"-"`
   714  
   715  	Channel ChannelData `json:"channel"`
   716  }
   717  
   718  // StasisStart - "Notification that a channel has entered a Stasis application."
   719  type StasisStart struct {
   720  	EventData `json:",inline"`
   721  
   722  	// Header describes any transport-related metadata
   723  	Header Header `json:"-"`
   724  
   725  	Args           []string    `json:"args"` // Arguments to the application
   726  	Channel        ChannelData `json:"channel"`
   727  	ReplaceChannel ChannelData `json:"replace_channel,omitempty"`
   728  }
   729  
   730  // TextMessageReceived - "A text message was received from an endpoint."
   731  type TextMessageReceived struct {
   732  	EventData `json:",inline"`
   733  
   734  	// Header describes any transport-related metadata
   735  	Header Header `json:"-"`
   736  
   737  	Endpoint EndpointData    `json:"endpoint,omitempty"`
   738  	Message  TextMessageData `json:"message"`
   739  }