Documentation ¶
Index ¶
- Constants
- Variables
- func FromEndpointID(id string) (tech string, resource string, err error)
- type Application
- type ApplicationData
- type ApplicationEvent
- type ApplicationHandle
- func (ah *ApplicationHandle) Data() (ad ApplicationData, err error)
- func (ah *ApplicationHandle) ID() string
- func (ah *ApplicationHandle) Match(evt Event) bool
- func (ah *ApplicationHandle) Subscribe(eventSource string) (err error)
- func (ah *ApplicationHandle) Unsubscribe(eventSource string) (err error)
- type ApplicationReplaced
- type Asterisk
- type AsteriskInfo
- type Bridge
- type BridgeAttendedTransfer
- type BridgeBlindTransfer
- type BridgeCreated
- type BridgeData
- type BridgeDestroyed
- type BridgeEvent
- type BridgeHandle
- func (bh *BridgeHandle) AddChannel(channelID string) (err error)
- func (bh *BridgeHandle) Data() (bd BridgeData, err error)
- func (bh *BridgeHandle) Delete(channelID string) (err error)
- func (bh *BridgeHandle) ID() string
- func (bh *BridgeHandle) Match(e Event) bool
- func (bh *BridgeHandle) Play(id string, mediaURI string) (ph *PlaybackHandle, err error)
- func (bh *BridgeHandle) Playback() Playback
- func (bh *BridgeHandle) Record(name string, opts *RecordingOptions) (rh *LiveRecordingHandle, err error)
- func (bh *BridgeHandle) RemoveChannel(channelID string) (err error)
- func (bh *BridgeHandle) Subscribe(n ...string) Subscription
- type BridgeMerged
- type BuildInfo
- type Bus
- type CallerID
- type Channel
- type ChannelCallerID
- type ChannelConnectedLine
- type ChannelCreateRequest
- type ChannelCreated
- type ChannelData
- type ChannelDestroyed
- type ChannelDialplan
- type ChannelDtmfReceived
- type ChannelEnteredBridge
- type ChannelEvent
- type ChannelHandle
- func (ch *ChannelHandle) Answer() error
- func (ch *ChannelHandle) Busy() error
- func (ch *ChannelHandle) Congestion() error
- func (ch *ChannelHandle) Continue(context, extension string, priority int) error
- func (ch *ChannelHandle) Data() (ChannelData, error)
- func (ch *ChannelHandle) Dial(caller string, timeout time.Duration) error
- func (ch *ChannelHandle) Hangup() error
- func (ch *ChannelHandle) Hold() error
- func (ch *ChannelHandle) ID() string
- func (ch *ChannelHandle) IsAnswered() (bool, error)
- func (ch *ChannelHandle) MOH(mohClass string) error
- func (ch *ChannelHandle) Match(e Event) bool
- func (ch *ChannelHandle) Mute(dir string) (err error)
- func (ch *ChannelHandle) Play(id string, mediaURI string) (ph *PlaybackHandle, err error)
- func (ch *ChannelHandle) Playback() Playback
- func (ch *ChannelHandle) Record(name string, opts *RecordingOptions) (rh *LiveRecordingHandle, err error)
- func (ch *ChannelHandle) Ring() error
- func (ch *ChannelHandle) SendDTMF(dtmf string, opts *DTMFOptions) error
- func (ch *ChannelHandle) Silence() error
- func (ch *ChannelHandle) Snoop(snoopID string, app string, opts *SnoopOptions) (*ChannelHandle, error)
- func (ch *ChannelHandle) StopHold() error
- func (ch *ChannelHandle) StopMOH() error
- func (ch *ChannelHandle) StopRing() error
- func (ch *ChannelHandle) StopSilence() error
- func (ch *ChannelHandle) Subscribe(n ...string) Subscription
- func (ch *ChannelHandle) Unmute(dir string) (err error)
- func (ch *ChannelHandle) Variables() Variables
- type ChannelHangupRequest
- type ChannelHold
- type ChannelLeftBridge
- type ChannelStateChange
- type ChannelTalkingFinished
- type ChannelTalkingStarted
- type ChannelUnhold
- type ChannelUserevent
- type ChannelVarset
- type Client
- type Config
- type ConfigData
- type ConfigHandle
- type ConfigInfo
- type ConfigTuple
- type ContactInfo
- type ContactStatusChange
- type DTMFOptions
- type DTMFSender
- type DateTime
- type DeviceState
- type DeviceStateChanged
- type DeviceStateData
- type DeviceStateHandle
- type Dial
- type DialplanCEP
- type DurationSec
- type Endpoint
- type EndpointData
- type EndpointEvent
- type EndpointHandle
- type EndpointStateChange
- type Event
- type EventData
- type EventTypes
- type FormatLangPair
- type LiveRecording
- type LiveRecordingData
- type LiveRecordingHandle
- func (s *LiveRecordingHandle) Data() (d LiveRecordingData, err error)
- func (s *LiveRecordingHandle) Delete() (err error)
- func (s *LiveRecordingHandle) ID() string
- func (s *LiveRecordingHandle) Match(e Event) bool
- func (s *LiveRecordingHandle) Mute() (err error)
- func (s *LiveRecordingHandle) Pause() (err error)
- func (s *LiveRecordingHandle) Resume() (err error)
- func (s *LiveRecordingHandle) Scrap() (err error)
- func (s *LiveRecordingHandle) Unmute() (err error)
- type LogData
- type Logging
- type Mailbox
- type MailboxData
- type MailboxHandle
- type Matcher
- type Message
- type MessageRawer
- type MissingParams
- type ModuleData
- type ModuleHandle
- type Modules
- type OriginateRequest
- type Peer
- type PeerStatusChange
- type Playback
- type PlaybackContinuing
- type PlaybackData
- type PlaybackEvent
- type PlaybackFinished
- type PlaybackHandle
- func (ph *PlaybackHandle) Control(op string) (err error)
- func (ph *PlaybackHandle) Data() (pd PlaybackData, err error)
- func (ph *PlaybackHandle) ID() string
- func (ph *PlaybackHandle) Match(e Event) bool
- func (ph *PlaybackHandle) Stop() (err error)
- func (ph *PlaybackHandle) Subscribe(n ...string) Subscription
- type PlaybackStarted
- type Playbacker
- type RawMessage
- type Recording
- type RecordingEvent
- type RecordingFailed
- type RecordingFinished
- type RecordingOptions
- type RecordingStarted
- type Sender
- type SetID
- type SnoopOptions
- type Sound
- type SoundData
- type SoundHandle
- type StasisEnd
- type StasisStart
- type StatusInfo
- type StoredRecording
- type StoredRecordingData
- type StoredRecordingHandle
- type Subscriber
- type Subscription
- type SystemInfo
- type TextMessage
- type TextMessageData
- type TextMessageReceived
- type TextMessageVariable
- type Variables
Constants ¶
const DateFormat = "2006-01-02T15:04:05.000-0700"
DateFormat is the date format that ARI returns in the JSON bodies
const EndpointIDSeparator = "|" //TODO: confirm separator isn't terrible
EndpointIDSeparator seperates the ID components of the endpoint ID
Variables ¶
var Logger = log15.New()
Logger defaults to a discard handler (null output). If you wish to enable logging, you can set your own handler like so:
ari.Logger.SetHandler(log15.StderrHandler)
Functions ¶
Types ¶
type Application ¶
type Application interface { // List returns the list of applications in Asterisk List() ([]*ApplicationHandle, error) // Get returns a handle to the application for further interaction Get(name string) *ApplicationHandle // Data returns the applications data Data(name string) (ApplicationData, error) // Subscribe subscribes the given application to an event source // event source may be one of: // - channel:<channelId> // - bridge:<bridgeId> // - endpoint:<tech>/<resource> (e.g. SIP/102) // - deviceState:<deviceName> Subscribe(name string, eventSource string) error // Unsubscribe unsubscribes (removes a subscription to) a given // ARI application from the provided event source // Equivalent to DELETE /applications/{applicationName}/subscription Unsubscribe(name string, eventSource string) error }
Application represents a communication path interacting with an Asterisk server for application-level resources
type ApplicationData ¶
type ApplicationData struct { BridgeIDs []string `json:"bridge_ids"` // Subscribed BridgeIds ChannelIDs []string `json:"channel_ids"` // Subscribed ChannelIds DeviceNames []string `json:"device_names"` // Subscribed Device names EndpointIDs []string `json:"endpoint_ids"` // Subscribed Endpoints (tech/resource format) Name string `json:"name"` // Name of the application }
ApplicationData describes the data for a Stasis (Ari) application
type ApplicationEvent ¶
type ApplicationEvent interface {
GetApplication() string
}
An ApplicationEvent is an event with an application (which is every event actually)
type ApplicationHandle ¶
type ApplicationHandle struct {
// contains filtered or unexported fields
}
ApplicationHandle provides a wrapper to an Application interface for operations on a specific application
func NewApplicationHandle ¶
func NewApplicationHandle(name string, app Application) *ApplicationHandle
NewApplicationHandle creates a new handle to the application name
func (*ApplicationHandle) Data ¶
func (ah *ApplicationHandle) Data() (ad ApplicationData, err error)
Data retrives the data for the application
func (*ApplicationHandle) ID ¶
func (ah *ApplicationHandle) ID() string
ID returns the identifier for the application
func (*ApplicationHandle) Match ¶
func (ah *ApplicationHandle) Match(evt Event) bool
Match returns true fo the event matches the application
func (*ApplicationHandle) Subscribe ¶
func (ah *ApplicationHandle) Subscribe(eventSource string) (err error)
Subscribe subscribes the application to an event source event source may be one of:
- channel:<channelId>
- bridge:<bridgeId>
- endpoint:<tech>/<resource> (e.g. SIP/102)
- deviceState:<deviceName>
func (*ApplicationHandle) Unsubscribe ¶
func (ah *ApplicationHandle) Unsubscribe(eventSource string) (err error)
Unsubscribe unsubscribes (removes a subscription to) a given ARI application from the provided event source Equivalent to DELETE /applications/{applicationName}/subscription
type ApplicationReplaced ¶
type ApplicationReplaced struct {
EventData
}
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."
type Asterisk ¶
type Asterisk interface { // Info gets data about the asterisk system Info(only string) (*AsteriskInfo, error) // Variables returns the global asterisk variables Variables() Variables // Logging returns the interface for working with asterisk logs Logging() Logging // Modules returns the interface for working with asterisk modules Modules() Modules // Config returns the interface for working with dynamic configuration Config() Config // ReloadModule tells asterisk to load the given module ReloadModule(name string) error }
Asterisk represents a communication path for the Asterisk server for system-level resources
type AsteriskInfo ¶
type AsteriskInfo struct { BuildInfo BuildInfo `json:"build"` ConfigInfo ConfigInfo `json:"config"` StatusInfo StatusInfo `json:"status"` SystemInfo SystemInfo `json:"system"` }
AsteriskInfo describes a running asterisk system
type Bridge ¶
type Bridge interface { // Create creates a bridge Create(id string, btype string, name string) (*BridgeHandle, error) // Get gets the BridgeHandle Get(id string) *BridgeHandle // Lists returns the lists of bridges in asterisk List() ([]*BridgeHandle, error) // Data gets the bridge data Data(id string) (BridgeData, error) // AddChannel adds a channel to the bridge AddChannel(bridgeID string, channelID string) error // RemoveChannel removes a channel from the bridge RemoveChannel(bridgeID string, channelID string) error // Delete deletes the bridge Delete(id string) error // Play plays the media URI to the bridge Play(id string, playbackID string, mediaURI string) (*PlaybackHandle, error) // Record records the bridge Record(id string, name string, opts *RecordingOptions) (*LiveRecordingHandle, error) // Subscribe subscribes the given bridge events events Subscribe(id string, n ...string) Subscription }
Bridge represents a communication path to an Asterisk server for working with bridge resources
type BridgeAttendedTransfer ¶
type BridgeAttendedTransfer struct { EventData DestinationApplication string `json:"destination_application"` // Application that has been transferred into DestinationBridge string `json:"destination_bridge"` // Bridge that survived the merge result DestinationLinkFirstLeg ChannelData `json:"destination_link_first_leg"` // First leg of a link transfer result DestinationLinkSecondLeg ChannelData `json:"destination_link_second_leg"` // Second leg of a link transfer result DestinationThreewayBridge BridgeData `json:"destination_threeway_bridge"` // Bridge that survived the threeway result DestinationThreewayChannel ChannelData `json:"destination_threeway_channel"` // Transferer channel that survived the threeway result DestinationType string `json:"destination_type"` // How the transfer was accomplished IsExternal bool `json:"is_external"` // Whether the transfer was externally initiated or not ReplaceChannel ChannelData `json:"replace_channel,omitempty"` // The channel that is replacing transferer_first_leg in the swap Result string `json:"result"` // The result of the transfer attempt TransferTarget ChannelData `json:"transfer_target,omitempty"` // The channel that is being transferred to Transferee ChannelData `json:"transferee,omitempty"` // The channel that is being transferred TransfererFirstLeg ChannelData `json:"transferer_first_leg"` // First leg of the transferer TransfererFirstLegBridge BridgeData `json:"transferer_first_leg_bridge"` // Bridge the transferer first leg is in TransfererSecondLeg ChannelData `json:"transferer_second_leg"` // Second leg of the transferer TransfererSecondLegBridge BridgeData `json:"transferer_second_leg_bridge"` // Bridge the transferer second leg is in }
BridgeAttendedTransfer - "Notification that an attended transfer has occurred."
func (*BridgeAttendedTransfer) GetBridgeIDs ¶
func (evt *BridgeAttendedTransfer) GetBridgeIDs() (sx []string)
GetBridgeIDs gets the bridge IDs for the event
func (*BridgeAttendedTransfer) GetChannelIDs ¶
func (evt *BridgeAttendedTransfer) GetChannelIDs() (sx []string)
GetChannelIDs gets the channel IDs for the event
type BridgeBlindTransfer ¶
type BridgeBlindTransfer struct { EventData Bridge BridgeData `json:"bridge"` // The bridge being transferred Channel ChannelData `json:"channel"` // The channel performing the blind transfer Context string `json:"context"` // The context transferred to Exten string `json:"exten"` // The extension transferred to IsExternal bool `json:"is_external"` // Whether the transfer was externally initiated or not ReplaceChannel ChannelData `json:"replace_channel,omitempty"` // The channel that is replacing transferer when the transferee(s) can not be transferred directly Result string `json:"result"` // The result of the transfer attempt Transferee ChannelData `json:"transferee,omitempty"` // The channel that is being transferred }
BridgeBlindTransfer - "Notification that a blind transfer has occurred."
func (*BridgeBlindTransfer) GetBridgeIDs ¶
func (evt *BridgeBlindTransfer) GetBridgeIDs() (sx []string)
GetBridgeIDs gets the bridge IDs for the event
func (*BridgeBlindTransfer) GetChannelIDs ¶
func (evt *BridgeBlindTransfer) GetChannelIDs() (sx []string)
GetChannelIDs gets the channel IDs for the event
type BridgeCreated ¶
type BridgeCreated struct { EventData Bridge BridgeData `json:"bridge"` }
BridgeCreated - "Notification that a bridge has been created."
func (*BridgeCreated) GetBridgeIDs ¶
func (evt *BridgeCreated) GetBridgeIDs() (sx []string)
GetBridgeIDs gets the bridge IDs for the event
type BridgeData ¶
type BridgeData struct { ID string `json:"id"` // Unique Id for this bridge Class string `json:"bridge"` // Class of the bridge (TODO: huh?) Type string `json:"bridge_type"` // Type of bridge (mixing, holding, dtmf_events, proxy_media) ChannelIDs []string `json:"channels"` // List of pariticipating channel ids Creator string `json:"creator"` // Creating entity of the bridge Name string `json:"name"` // The name of the bridge Technology string `json:"technology"` // Name of the bridging technology }
BridgeData describes an Asterisk Bridge, the entity which merges media from one or more channels into a common audio output
type BridgeDestroyed ¶
type BridgeDestroyed struct { EventData Bridge BridgeData `json:"bridge"` }
BridgeDestroyed - "Notification that a bridge has been destroyed."
func (*BridgeDestroyed) GetBridgeIDs ¶
func (evt *BridgeDestroyed) GetBridgeIDs() (sx []string)
GetBridgeIDs gets the bridge IDs for the event
type BridgeEvent ¶
type BridgeEvent interface {
GetBridgeIDs() []string
}
A BridgeEvent is an event with one or more Bridge IDs
type BridgeHandle ¶
type BridgeHandle struct {
// contains filtered or unexported fields
}
BridgeHandle is the handle to a bridge for performing operations
func NewBridgeHandle ¶
func NewBridgeHandle(id string, b Bridge) *BridgeHandle
NewBridgeHandle creates a new bridge handle
func (*BridgeHandle) AddChannel ¶
func (bh *BridgeHandle) AddChannel(channelID string) (err error)
AddChannel adds a channel to the bridge
func (*BridgeHandle) Data ¶
func (bh *BridgeHandle) Data() (bd BridgeData, err error)
Data gets the bridge data
func (*BridgeHandle) Delete ¶
func (bh *BridgeHandle) Delete(channelID string) (err error)
Delete deletes the bridge
func (*BridgeHandle) ID ¶
func (bh *BridgeHandle) ID() string
ID returns the identifier for the bridge
func (*BridgeHandle) Match ¶
func (bh *BridgeHandle) Match(e Event) bool
Match returns true if the event matches the bridge
func (*BridgeHandle) Play ¶
func (bh *BridgeHandle) Play(id string, mediaURI string) (ph *PlaybackHandle, err error)
Play initiates playback of the specified media uri to the bridge, returning the Playback handle
func (*BridgeHandle) Playback ¶
func (bh *BridgeHandle) Playback() Playback
Playback returns the playback transport
func (*BridgeHandle) Record ¶
func (bh *BridgeHandle) Record(name string, opts *RecordingOptions) (rh *LiveRecordingHandle, err error)
Record records the bridge to the given filename
func (*BridgeHandle) RemoveChannel ¶
func (bh *BridgeHandle) RemoveChannel(channelID string) (err error)
RemoveChannel removes a channel from the bridge
func (*BridgeHandle) Subscribe ¶
func (bh *BridgeHandle) Subscribe(n ...string) Subscription
Subscribe creates a subscription to the list of events
type BridgeMerged ¶
type BridgeMerged struct { EventData Bridge BridgeData `json:"bridge"` BridgeFrom BridgeData `json:"bridge_from"` }
BridgeMerged - "Notification that one bridge has merged into another."
func (*BridgeMerged) GetBridgeIDs ¶
func (evt *BridgeMerged) GetBridgeIDs() (sx []string)
GetBridgeIDs gets the bridge IDs for the event
type BuildInfo ¶
type BuildInfo struct { Date string `json:"date"` Kernel string `json:"kernel"` Machine string `json:"machine"` Options string `json:"options"` Os string `json:"os"` User string `json:"user"` }
BuildInfo describes information about how Asterisk was built
type Bus ¶
type Bus interface { Sender Subscriber }
Bus is an event bus for ARI events. It receives and redistributes events based on a subscription model.
type CallerID ¶
CallerID describes the name and number which identifies the caller to other endpoints
func CallerIDFromString ¶
CallerIDFromString interprets the provided string as a CallerID. Usually, this string will be of the following forms:
- "Name" <number>
- <number>
- "Name" number
type Channel ¶
type Channel interface { // Get returns a handle to a channel for further interaction Get(id string) *ChannelHandle // List lists the channels in asterisk List() ([]*ChannelHandle, error) // Originate creates a new channel, returning a handle to it or an // error, if the creation failed Originate(OriginateRequest) (*ChannelHandle, error) // Create creates a new channel, returning a handle to it or an // error, if the creation failed Create(ChannelCreateRequest) (*ChannelHandle, error) // Data returns the channel data for a given channel Data(id string) (ChannelData, error) // Continue tells Asterisk to return a channel to the dialplan Continue(id, context, extension string, priority int) error // Busy hangs up the channel with the "busy" cause code Busy(id string) error // Congestion hangs up the channel with the "congestion" cause code Congestion(id string) error // Answer answers the channel Answer(id string) error // Hangup hangs up the given channel Hangup(id string, reason string) error // Ring indicates ringing to the channel Ring(id string) error // StopRing stops ringing on the channel StopRing(id string) error // SendDTMF sends DTMF to the channel SendDTMF(id string, dtmf string, opts *DTMFOptions) error // Hold puts the channel on hold Hold(id string) error // StopHold retrieves the channel from hold StopHold(id string) error // Mute mutes a channel in the given direction (in,out,both) Mute(id string, dir string) error // Unmute unmutes a channel in the given direction (in,out,both) Unmute(id string, dir string) error // MOH plays music on hold MOH(id string, moh string) error // StopMOH stops music on hold StopMOH(id string) error // Silence plays silence to the channel Silence(id string) error // StopSilence stops the silence on the channel StopSilence(id string) error // Play plays the media URI to the channel Play(id string, playbackID string, mediaURI string) (*PlaybackHandle, error) // Record records the channel Record(id string, name string, opts *RecordingOptions) (*LiveRecordingHandle, error) // Dial dials a created channel Dial(id string, caller string, timeout time.Duration) error // Snoop spies on a specific channel, creating a new snooping channel Snoop(id string, snoopID string, app string, opts *SnoopOptions) (*ChannelHandle, error) // Subscribe subscribes on the channel events Subscribe(id string, n ...string) Subscription // Variables gets the channel Variables Variables(id string) Variables }
Channel represents a communication path interacting with an Asterisk server.
type ChannelCallerID ¶
type ChannelCallerID struct { EventData CallerPresentation int `json:"caller_presentation"` // The integer representation of the Caller Presentation value. CallerPresentationTxt string `json:"caller_presentation_txt"` // The text representation of the Caller Presentation value. Channel ChannelData `json:"channel"` // The channel that changed Caller ID. }
ChannelCallerID - "Channel changed Caller ID."
func (*ChannelCallerID) GetChannelIDs ¶
func (evt *ChannelCallerID) GetChannelIDs() (sx []string)
GetChannelIDs gets the channel IDs for the event
type ChannelConnectedLine ¶
type ChannelConnectedLine struct { EventData Channel ChannelData `json:"channel"` // The channel whose connected line has changed. }
ChannelConnectedLine - "Channel changed Connected Line."
type ChannelCreateRequest ¶
type ChannelCreateRequest struct { // Endpoint is the target endpoint for the dial Endpoint string `json:"endpoint"` // App is the name of the Stasis application to execute on connection App string `json:"app"` // Args is the set of (comma-separated) arguments for the Stasis App Args string `json:"appArgs,omitempty"` // ChannelID is the ID to give to the newly-created channel ChannelID string `json:"channelId,omitempty"` // OtherChannelID is the ID of the second created channel (when creating Local channels) OtherChannelID string `json:"otherChannelId,omitempty"` // Originator is the unique ID of the calling channel, for which this new channel-dial is being created Originator string `json:"originator,omitempty"` // Formats is the comma-separated list of valid codecs to allow for the new channel, in the case that // the Originator is not specified Formats string `json:"formats,omitempty"` }
ChannelCreateRequest describes how a channel should be created, when using the separate Create and Dial calls.
type ChannelCreated ¶
type ChannelCreated struct { EventData Channel ChannelData `json:"channel"` }
ChannelCreated - "Notification that a channel has been created."
func (*ChannelCreated) GetChannelIDs ¶
func (evt *ChannelCreated) GetChannelIDs() (sx []string)
GetChannelIDs gets the channel IDs for the event
type ChannelData ¶
type ChannelData struct { ID string `json:"id"` // Unique id for this channel (same as for AMI) Name string `json:"name"` // Name of this channel (tech/name-id format) State string `json:"state"` // State of the channel Accountcode string `json:"accountcode"` Caller CallerID `json:"caller"` // CallerId of the calling endpoint Connected CallerID `json:"connected"` // CallerId of the connected line Creationtime DateTime `json:"creationtime"` Dialplan DialplanCEP `json:"dialplan"` // Current location in the dialplan }
ChannelData is the data for a specific channel
type ChannelDestroyed ¶
type ChannelDestroyed struct { EventData Cause int `json:"cause"` // Integer representation of the cause of the hangup CauseTxt string `json:"cause_txt"` // Text representation of the cause of the hangup Channel ChannelData `json:"channel"` }
ChannelDestroyed - "Notification that a channel has been destroyed."
type ChannelDialplan ¶
type ChannelDialplan struct { EventData Channel ChannelData `json:"channel"` // The channel that changed dialplan location. DialplanApp string `json:"dialplan_app"` // The application about to be executed. DialplanAppData string `json:"dialplan_app_data"` // The data to be passed to the application. }
ChannelDialplan - "Channel changed location in the dialplan."
func (*ChannelDialplan) GetChannelIDs ¶
func (evt *ChannelDialplan) GetChannelIDs() (sx []string)
GetChannelIDs gets the channel IDs for the event
type ChannelDtmfReceived ¶
type ChannelDtmfReceived struct { EventData Channel ChannelData `json:"channel"` // The channel on which DTMF was received Digit string `json:"digit"` // DTMF digit received (0-9, A-E, # or *) DurationMs int `json:"duration_ms"` // Number of milliseconds DTMF was received }
ChannelDtmfReceived - "DTMF received on a channel.This event is sent when the DTMF ends. There is no notification about the start of DTMF"
func (*ChannelDtmfReceived) GetChannelIDs ¶
func (evt *ChannelDtmfReceived) GetChannelIDs() (sx []string)
GetChannelIDs gets the channel IDs for the event
type ChannelEnteredBridge ¶
type ChannelEnteredBridge struct { EventData Bridge BridgeData `json:"bridge"` Channel ChannelData `json:"channel"` }
ChannelEnteredBridge - "Notification that a channel has entered a bridge."
func (*ChannelEnteredBridge) GetBridgeIDs ¶
func (evt *ChannelEnteredBridge) GetBridgeIDs() (sx []string)
GetBridgeIDs gets the bridge IDs for the event
func (*ChannelEnteredBridge) GetChannelIDs ¶
func (evt *ChannelEnteredBridge) GetChannelIDs() (sx []string)
GetChannelIDs gets the channel IDs for the event
type ChannelEvent ¶
type ChannelEvent interface {
GetChannelIDs() []string
}
A ChannelEvent is an event with one or more channel IDs
type ChannelHandle ¶
type ChannelHandle struct {
// contains filtered or unexported fields
}
ChannelHandle provides a wrapper to a Channel interface for operations on a particular channel ID
func NewChannelHandle ¶
func NewChannelHandle(id string, c Channel) *ChannelHandle
NewChannelHandle returns a handle to the given ARI channel
func (*ChannelHandle) Busy ¶
func (ch *ChannelHandle) Busy() error
Busy hangs up the channel with the "busy" cause code
func (*ChannelHandle) Congestion ¶
func (ch *ChannelHandle) Congestion() error
Congestion hangs up the channel with the congestion cause code
func (*ChannelHandle) Continue ¶
func (ch *ChannelHandle) Continue(context, extension string, priority int) error
Continue tells Asterisk to return the channel to the dialplan
func (*ChannelHandle) Data ¶
func (ch *ChannelHandle) Data() (ChannelData, error)
Data returns the channel's data
func (*ChannelHandle) Dial ¶
func (ch *ChannelHandle) Dial(caller string, timeout time.Duration) error
Dial dials a created channel
func (*ChannelHandle) Hangup ¶
func (ch *ChannelHandle) Hangup() error
Hangup hangs up the channel with the normal cause code
func (*ChannelHandle) ID ¶
func (ch *ChannelHandle) ID() string
ID returns the identifier for the channel handle
func (*ChannelHandle) IsAnswered ¶
func (ch *ChannelHandle) IsAnswered() (bool, error)
IsAnswered checks the current state of the channel to see if it is "Up"
func (*ChannelHandle) MOH ¶
func (ch *ChannelHandle) MOH(mohClass string) error
MOH plays music on hold of the given class to the channel
func (*ChannelHandle) Match ¶
func (ch *ChannelHandle) Match(e Event) bool
Match returns true if the event matches the channel
func (*ChannelHandle) Mute ¶
func (ch *ChannelHandle) Mute(dir string) (err error)
Mute mutes the channel in the given direction (in, out, both)
func (*ChannelHandle) Play ¶
func (ch *ChannelHandle) Play(id string, mediaURI string) (ph *PlaybackHandle, err error)
Play initiates playback of the specified media uri to the channel, returning the Playback handle
func (*ChannelHandle) Playback ¶
func (ch *ChannelHandle) Playback() Playback
Playback returns the playback transport
func (*ChannelHandle) Record ¶
func (ch *ChannelHandle) Record(name string, opts *RecordingOptions) (rh *LiveRecordingHandle, err error)
Record records the channel to the given filename
func (*ChannelHandle) Ring ¶
func (ch *ChannelHandle) Ring() error
Ring indicates ringing to the channel
func (*ChannelHandle) SendDTMF ¶
func (ch *ChannelHandle) SendDTMF(dtmf string, opts *DTMFOptions) error
SendDTMF sends the DTMF information to the server
func (*ChannelHandle) Silence ¶
func (ch *ChannelHandle) Silence() error
Silence plays silence to the channel
func (*ChannelHandle) Snoop ¶
func (ch *ChannelHandle) Snoop(snoopID string, app string, opts *SnoopOptions) (*ChannelHandle, error)
Snoop spies on a specific channel, creating a new snooping channel placed into the given app
func (*ChannelHandle) StopHold ¶
func (ch *ChannelHandle) StopHold() error
StopHold retrieves the channel from hold
func (*ChannelHandle) StopMOH ¶
func (ch *ChannelHandle) StopMOH() error
StopMOH stops playing of music on hold to the channel
func (*ChannelHandle) StopRing ¶
func (ch *ChannelHandle) StopRing() error
StopRing stops ringing on the channel
func (*ChannelHandle) StopSilence ¶
func (ch *ChannelHandle) StopSilence() error
StopSilence stops silence to the channel
func (*ChannelHandle) Subscribe ¶
func (ch *ChannelHandle) Subscribe(n ...string) Subscription
Subscribe subscribes the list of channel events
func (*ChannelHandle) Unmute ¶
func (ch *ChannelHandle) Unmute(dir string) (err error)
Unmute unmutes the channel in the given direction (in, out, both)
func (*ChannelHandle) Variables ¶
func (ch *ChannelHandle) Variables() Variables
Variables returns the channel variables
type ChannelHangupRequest ¶
type ChannelHangupRequest struct { EventData Cause int `json:"cause"` // Integer representation of the cause of the hangup. Channel ChannelData `json:"channel"` // The channel on which the hangup was requested. Soft bool `json:"soft"` // Whether the hangup request was a soft hangup request. }
ChannelHangupRequest - "A hangup was requested on the channel."
func (*ChannelHangupRequest) GetChannelIDs ¶
func (evt *ChannelHangupRequest) GetChannelIDs() (sx []string)
GetChannelIDs gets the channel IDs for the event
type ChannelHold ¶
type ChannelHold struct { EventData Channel ChannelData `json:"channel"` // The channel that initiated the hold event. Musicclass string `json:"musicclass,omitempty"` // The music on hold class that the initiator requested. }
ChannelHold - "A channel initiated a media hold."
func (*ChannelHold) GetChannelIDs ¶
func (evt *ChannelHold) GetChannelIDs() (sx []string)
GetChannelIDs gets the channel IDs for the event
type ChannelLeftBridge ¶
type ChannelLeftBridge struct { EventData Bridge BridgeData `json:"bridge"` Channel ChannelData `json:"channel"` }
ChannelLeftBridge - "Notification that a channel has left a bridge."
func (*ChannelLeftBridge) GetBridgeIDs ¶
func (evt *ChannelLeftBridge) GetBridgeIDs() (sx []string)
GetBridgeIDs gets the bridge IDs for the event
func (*ChannelLeftBridge) GetChannelIDs ¶
func (evt *ChannelLeftBridge) GetChannelIDs() (sx []string)
GetChannelIDs gets the channel IDs for the event
type ChannelStateChange ¶
type ChannelStateChange struct { EventData Channel ChannelData `json:"channel"` }
ChannelStateChange - "Notification of a channel's state change."
func (*ChannelStateChange) GetChannelIDs ¶
func (evt *ChannelStateChange) GetChannelIDs() (sx []string)
GetChannelIDs gets the channel IDs for the event
type ChannelTalkingFinished ¶
type ChannelTalkingFinished struct { EventData Channel ChannelData `json:"channel"` // The channel on which talking completed. Duration int `json:"duration"` // The length of time, in milliseconds, that talking was detected on the channel }
ChannelTalkingFinished - "Talking is no longer detected on the channel."
type ChannelTalkingStarted ¶
type ChannelTalkingStarted struct { EventData Channel ChannelData `json:"channel"` // The channel on which talking started. }
ChannelTalkingStarted - "Talking was detected on the channel."
func (*ChannelTalkingStarted) GetChannelIDs ¶
func (evt *ChannelTalkingStarted) GetChannelIDs() (sx []string)
GetChannelIDs gets the channel IDs for the event
type ChannelUnhold ¶
type ChannelUnhold struct { EventData Channel ChannelData `json:"channel"` // The channel that initiated the unhold event. }
ChannelUnhold - "A channel initiated a media unhold."
func (*ChannelUnhold) GetChannelIDs ¶
func (evt *ChannelUnhold) GetChannelIDs() (sx []string)
GetChannelIDs gets the channel IDs for the event
type ChannelUserevent ¶
type ChannelUserevent struct { EventData Bridge BridgeData `json:"bridge,omitempty"` // A bridge that is signaled with the user event. Channel ChannelData `json:"channel,omitempty"` // A channel that is signaled with the user event. Endpoint EndpointData `json:"endpoint,omitempty"` // A endpoint that is signaled with the user event. Eventname string `json:"eventname"` // The name of the user event. Userevent interface{} `json:"userevent"` // Custom Userevent data }
ChannelUserevent - "User-generated event with additional user-defined fields in the object."
func (*ChannelUserevent) GetBridgeIDs ¶
func (evt *ChannelUserevent) GetBridgeIDs() (sx []string)
GetBridgeIDs gets the bridge IDs for the event
func (*ChannelUserevent) GetChannelIDs ¶
func (evt *ChannelUserevent) GetChannelIDs() (sx []string)
GetChannelIDs gets the channel IDs for the event
func (*ChannelUserevent) GetEndpointIDs ¶
func (evt *ChannelUserevent) GetEndpointIDs() (sx []string)
GetEndpointIDs gets the bridge IDs for the event
type ChannelVarset ¶
type ChannelVarset struct { EventData Channel ChannelData `json:"channel,omitempty"` // The channel on which the variable was set.If missing, the variable is a global variable. Value string `json:"value"` // The new value of the variable. Variable string `json:"variable"` // The variable that changed. }
ChannelVarset - "Channel variable changed."
func (*ChannelVarset) GetChannelIDs ¶
func (evt *ChannelVarset) GetChannelIDs() (sx []string)
GetChannelIDs gets the channel IDs for the event
type Client ¶
type Client struct { // Namespaced Interfaces Application Application Asterisk Asterisk Channel Channel Bridge Bridge Playback Playback Mailbox Mailbox Endpoint Endpoint DeviceState DeviceState TextMessage TextMessage Sound Sound Recording *Recording Bus Bus Cleanup func() error // Optional application details ApplicationName string ApplicationArguments []string }
Client represents a set of operations to interact with an Asterisk ARI server. It is agnostic to transport and implementation.
type Config ¶
type Config interface { // Get gets the reference to a config object Get(configClass, objectType, id string) *ConfigHandle // Data gets the data for the config object Data(configClass, objectType, id string) (ConfigData, error) // Update creates or updates the given tuples Update(configClass, objectType, id string, tuples []ConfigTuple) error // Delete deletes the dynamic configuration object. Delete(configClass, objectType, id string) error }
Config represents a transport to the asterisk config ARI resource.
type ConfigData ¶
type ConfigData struct { ID string Class string Type string Fields []ConfigTuple }
ConfigData contains the data for a given configuration object
type ConfigHandle ¶
type ConfigHandle struct {
// contains filtered or unexported fields
}
A ConfigHandle is a reference to a Config object on the asterisk service
func NewConfigHandle ¶
func NewConfigHandle(configClass, objectType, id string, c Config) *ConfigHandle
NewConfigHandle builds a new config handle
func (*ConfigHandle) Data ¶
func (ch *ConfigHandle) Data() (ConfigData, error)
Data gets the current data for the config handle
func (*ConfigHandle) Delete ¶
func (ch *ConfigHandle) Delete() error
Delete deletes the dynamic configuration object
func (*ConfigHandle) ID ¶
func (ch *ConfigHandle) ID() string
ID returns the unique identifier for the config object
func (*ConfigHandle) Update ¶
func (ch *ConfigHandle) Update(tuples []ConfigTuple) error
Update creates or updates the given config tuples
type ConfigInfo ¶
type ConfigInfo struct { DefaultLanguage string `json:"default_language"` MaxChannels int `json:"max_channels,omitempty"` //omitempty denotes an optional field, meaning the field may not be present if no value is assigned. MaxLoad float64 `json:"max_load,omitempty"` MaxOpenFiles int `json:"max_open_files,omitempty"` Name string `json:"name"` // Asterisk system name SetID SetID `json:"setid"` // Effective user/group id under which Asterisk is running }
ConfigInfo describes information about the Asterisk configuration
type ConfigTuple ¶
ConfigTuple is the key-value pair that defines a configuration entry
type ContactInfo ¶
type ContactInfo struct { EventData Aor string `json:"aor"` // The Address of Record this contact belongs to. ContactStatus string `json:"contact_status"` // The current status of the contact. RoundtripUsec string `json:"roundtrip_usec,omitempty"` // Current round trip time, in microseconds, for the contact. Uri string `json:"uri"` // The location of the contact. }
ContactInfo - "Detailed information about a contact on an endpoint."
type ContactStatusChange ¶
type ContactStatusChange struct { EventData ContactInfo ContactInfo `json:"contact_info"` Endpoint EndpointData `json:"endpoint"` }
ContactStatusChange - "The state of a contact on an endpoint has changed."
func (*ContactStatusChange) GetEndpointIDs ¶
func (evt *ContactStatusChange) GetEndpointIDs() (sx []string)
GetEndpointIDs gets the bridge IDs for the event
type DTMFOptions ¶
type DTMFOptions struct { Before time.Duration Between time.Duration Duration time.Duration After time.Duration }
DTMFOptions is the list of pptions for DTMF sending
type DTMFSender ¶
type DTMFSender interface {
SendDTMF(dtmf string, opts *DTMFOptions)
}
DTMFSender is an object which can be send DTMF signals
type DateTime ¶
DateTime is an alias type for attaching a custom asterisk unmarshaller and marshaller for JSON
func (DateTime) MarshalJSON ¶
MarshalJSON converts the given date object to ARIs date format
func (*DateTime) UnmarshalJSON ¶
UnmarshalJSON parses the given date per ARIs date format
type DeviceState ¶
type DeviceState interface { Get(name string) *DeviceStateHandle List() ([]*DeviceStateHandle, error) Data(name string) (DeviceStateData, error) Update(name string, state string) error Delete(name string) error }
DeviceState represents a communication path interacting with an Asterisk server for device state resources
type DeviceStateChanged ¶
type DeviceStateChanged struct { EventData DeviceState DeviceStateData `json:"device_state"` // Device state object }
DeviceStateChanged - "Notification that a device state has changed."
type DeviceStateData ¶
type DeviceStateData string
DeviceStateData is the device state for the device
type DeviceStateHandle ¶
type DeviceStateHandle struct {
// contains filtered or unexported fields
}
DeviceStateHandle is a representation of a device state that can be interacted with
func NewDeviceStateHandle ¶
func NewDeviceStateHandle(name string, d DeviceState) *DeviceStateHandle
NewDeviceStateHandle creates a new deviceState handle
func (*DeviceStateHandle) Data ¶
func (dsh *DeviceStateHandle) Data() (d DeviceStateData, err error)
Data gets the device state
func (*DeviceStateHandle) Delete ¶
func (dsh *DeviceStateHandle) Delete() (err error)
Delete deletes the device state
func (*DeviceStateHandle) ID ¶
func (dsh *DeviceStateHandle) ID() string
ID returns the identifier for the device
func (*DeviceStateHandle) Update ¶
func (dsh *DeviceStateHandle) Update(state string) (err error)
Update updates the device state, implicitly creating it if not exists
type Dial ¶
type Dial struct { EventData Caller ChannelData `json:"caller,omitempty"` // The calling channel. Dialstatus string `json:"dialstatus"` // Current status of the dialing attempt to the peer. Dialstring string `json:"dialstring,omitempty"` // The dial string for calling the peer channel. Forward string `json:"forward,omitempty"` // Forwarding target requested by the original dialed channel. Forwarded ChannelData `json:"forwarded,omitempty"` // Channel that the caller has been forwarded to. Peer ChannelData `json:"peer"` // The dialed channel. }
Dial - "Dialing state has changed."
func (*Dial) GetChannelIDs ¶
GetChannelIDs gets the bridge IDs for the event
type DialplanCEP ¶
type DialplanCEP struct { Context string `json:"context"` Exten string `json:"exten"` Priority int64 `json:"priority"` //int64 derived from Java's 'long' }
DialplanCEP describes a location in the dialplan (context,extension,priority)
type DurationSec ¶
DurationSec is a JSON type for duration in seconds
func (DurationSec) MarshalJSON ¶
func (ds DurationSec) MarshalJSON() ([]byte, error)
MarshalJSON converts the duration into a JSON friendly format
func (*DurationSec) UnmarshalJSON ¶
func (ds *DurationSec) UnmarshalJSON(data []byte) error
UnmarshalJSON parses the data into the duration seconds object
type Endpoint ¶
type Endpoint interface { // List lists the endpoints // TODO: associated with the application, or on the entire system? List() ([]*EndpointHandle, error) // List available endpoints for a given endpoint technology ListByTech(tech string) ([]*EndpointHandle, error) // Get returns a handle to the endpoint for further operations Get(tech string, resource string) *EndpointHandle // Data returns the state of the endpoint Data(tech string, resource string) (EndpointData, error) }
Endpoint represents a communication path to an Asterisk server for endpoint resources
type EndpointData ¶
type EndpointData struct { ChannelIDs []string `json:"channel_ids"` // List of channel Ids which are associated with this endpoint Resource string `json:"resource"` // The endpoint's resource name State string `json:"state,omitempty"` // The state of the endpoint Technology string `json:"technology"` // The technology of the endpoint (e.g. SIP, PJSIP, DAHDI, etc) }
EndpointData describes an external device which may offer or accept calls to or from Asterisk. Devices are defined by a technology/resource pair.
Allowed states: 'unknown', 'offline', 'online'
type EndpointEvent ¶
type EndpointEvent interface {
GetEndpointIDs() []string
}
An EndpointEvent is an event with one or more endpoint IDs
type EndpointHandle ¶
type EndpointHandle struct {
// contains filtered or unexported fields
}
An EndpointHandle is a reference to an endpoint attached to a transport to an asterisk server
func NewEndpointHandle ¶
func NewEndpointHandle(tech string, resource string, e Endpoint) *EndpointHandle
NewEndpointHandle creates a new EndpointHandle
func (*EndpointHandle) Data ¶
func (eh *EndpointHandle) Data() (EndpointData, error)
Data returns the state of the endpoint
func (*EndpointHandle) ID ¶
func (eh *EndpointHandle) ID() string
ID returns the identifier for the endpoint
func (*EndpointHandle) Match ¶
func (eh *EndpointHandle) Match(e Event) bool
Match returns true if the event matches the bridge
type EndpointStateChange ¶
type EndpointStateChange struct { EventData Endpoint EndpointData `json:"endpoint"` }
EndpointStateChange - "Endpoint state changed."
func (*EndpointStateChange) GetEndpointIDs ¶
func (evt *EndpointStateChange) GetEndpointIDs() (sx []string)
GetEndpointIDs gets the bridge IDs for the event
type Event ¶
type Event interface { MessageRawer ApplicationEvent GetType() string }
Event is the top level event interface
type EventData ¶
type EventData struct { Message Application string `json:"application"` Timestamp DateTime `json:"timestamp,omitempty"` }
EventData is the base struct for all events
func (*EventData) GetApplication ¶
GetApplication gets the application of the event
type EventTypes ¶
type EventTypes struct { All string ApplicationReplaced string BridgeAttendedTransfer string BridgeBlindTransfer string BridgeCreated string BridgeDestroyed string BridgeMerged string ChannelCallerID string ChannelConnectedLine string ChannelCreated string ChannelDestroyed string ChannelDialplan string ChannelDtmfReceived string ChannelEnteredBridge string ChannelHangupRequest string ChannelHold string ChannelLeftBridge string ChannelStateChange string ChannelTalkingFinished string ChannelTalkingStarted string ChannelUnhold string ChannelUserevent string ChannelVarset string ContactInfo string ContactStatusChange string DeviceStateChanged string Dial string EndpointStateChange string MissingParams string Peer string PeerStatusChange string PlaybackContinuing string PlaybackFinished string PlaybackStarted string RecordingFailed string RecordingFinished string RecordingStarted string StasisEnd string StasisStart string TextMessageReceived string }
EventTypes enumerates the list of event types
var Events EventTypes
Events is the instance for grabbing event types
func (*EventTypes) Parse ¶
func (ev *EventTypes) Parse(msg *Message) Event
Parse parses the message into the specific eventer
type FormatLangPair ¶
FormatLangPair describes the format and language of a sound file
type LiveRecording ¶
type LiveRecording interface { // Get gets the Recording by type Get(name string) *LiveRecordingHandle // Data gets the data for the live recording Data(name string) (LiveRecordingData, error) // Stop stops the live recording Stop(name string) error // Pause pauses the live recording Pause(name string) error // Resume resumes the live recording Resume(name string) error // Mute mutes the live recording Mute(name string) error // Unmute unmutes the live recording Unmute(name string) error // Delete deletes the live recording Delete(name string) error // Scrap Stops and deletes the current LiveRecording //TODO: reproduce this error in isolation: does not delete. Cannot delete any recording produced by this. Scrap(name string) error }
LiveRecording represents a communication path interacting with an Asterisk server for live recording resources
type LiveRecordingData ¶
type LiveRecordingData struct { Cause string `json:"cause,omitempty"` // If failed, the cause of the failure Duration DurationSec `json:"duration,omitempty"` // Length of recording in seconds Format string `json:"format"` // Format of recording (wav, gsm, etc) Name string `json:"name"` // (base) name for the recording Silence DurationSec `json:"silence_duration,omitempty"` // If silence was detected in the recording, the duration in seconds of that silence (requires that maxSilenceSeconds be non-zero) State string `json:"state"` // Current state of the recording Talking DurationSec `json:"talking_duration,omitempty"` // Duration of talking, in seconds, that has been detected in the recording (requires that maxSilenceSeconds be non-zero) TargetURI string `json:"target_uri"` // URI for the channel or bridge which is being recorded (TODO: figure out format for this) }
LiveRecordingData is the data for a stored recording
func (*LiveRecordingData) ID ¶
func (s *LiveRecordingData) ID() string
ID returns the identifier of the live recording
type LiveRecordingHandle ¶
type LiveRecordingHandle struct {
// contains filtered or unexported fields
}
A LiveRecordingHandle is a reference to a stored recording that can be operated on
func NewLiveRecordingHandle ¶
func NewLiveRecordingHandle(name string, s LiveRecording) *LiveRecordingHandle
NewLiveRecordingHandle creates a new stored recording handle
func (*LiveRecordingHandle) Data ¶
func (s *LiveRecordingHandle) Data() (d LiveRecordingData, err error)
Data gets the data for the stored recording
func (*LiveRecordingHandle) Delete ¶
func (s *LiveRecordingHandle) Delete() (err error)
Delete deletes the recording
func (*LiveRecordingHandle) ID ¶
func (s *LiveRecordingHandle) ID() string
ID returns the identifier of the live recording
func (*LiveRecordingHandle) Match ¶
func (s *LiveRecordingHandle) Match(e Event) bool
Match returns true if the event matches the bridge
func (*LiveRecordingHandle) Mute ¶
func (s *LiveRecordingHandle) Mute() (err error)
Mute mutes the recording
func (*LiveRecordingHandle) Pause ¶
func (s *LiveRecordingHandle) Pause() (err error)
Pause pauses the recording
func (*LiveRecordingHandle) Resume ¶
func (s *LiveRecordingHandle) Resume() (err error)
Resume resumes the recording
func (*LiveRecordingHandle) Scrap ¶
func (s *LiveRecordingHandle) Scrap() (err error)
Scrap stops and deletes the recording
func (*LiveRecordingHandle) Unmute ¶
func (s *LiveRecordingHandle) Unmute() (err error)
Unmute mutes the recording
type LogData ¶
type LogData struct { Name string `json:"channel"` Configuration string `json:"configuration"` Type string `json:"type"` Status string `json:"configuration"` }
LogData represents the log data
type Logging ¶
type Logging interface { // Create creates a new log Create(name string, level string) error // List the logs List() ([]LogData, error) // Rotate rotates the log Rotate(name string) error // Delete deletes the log Delete(name string) error }
Logging represents a communication path to an Asterisk server for working with logging resources
type Mailbox ¶
type Mailbox interface { // Get gets a handle to the mailbox for further operations Get(name string) *MailboxHandle // List lists the mailboxes in asterisk List() ([]*MailboxHandle, error) // Data gets the current state of the mailbox Data(name string) (MailboxData, error) // Update updates the state of the mailbox, or creates if does not exist Update(name string, oldMessages int, newMessages int) error // Delete deletes the mailbox Delete(name string) error }
Mailbox is the communication path to an Asterisk server for operating on mailbox resources
type MailboxData ¶
type MailboxData struct { Name string `json:"name"` NewMessages int `json:"new_messages"` // Number of new (unread) messages OldMessages int `json:"old_messages"` // Number of old (read) messages }
MailboxData respresents the state of an Asterisk (voice) mailbox
type MailboxHandle ¶
type MailboxHandle struct {
// contains filtered or unexported fields
}
A MailboxHandle is a handle to a mailbox instance attached to an ari transport
func NewMailboxHandle ¶
func NewMailboxHandle(name string, m Mailbox) *MailboxHandle
NewMailboxHandle creates a new mailbox handle given the name and mailbox transport
func (*MailboxHandle) Data ¶
func (mh *MailboxHandle) Data() (MailboxData, error)
Data gets the current state of the mailbox
func (*MailboxHandle) ID ¶
func (mh *MailboxHandle) ID() string
ID returns the identifier for the mailbox handle
type Message ¶
type Message struct { RawMessage Type string `json:"type"` }
Message is the first extension of the RawMessage type, containing only a Type
func NewMessage ¶
NewMessage constructs a Message from a byte slice
type MessageRawer ¶
MessageRawer provides operations to get raw message data
type MissingParams ¶
type MissingParams struct { EventData Params []string `json:"params"` // A list of the missing parameters }
MissingParams - "Error event sent when required params are missing."
type ModuleData ¶
type ModuleData struct { Name string `json:"name"` Description string `json:"description"` SupportLevel string `json:"support_level"` UseCount int `json:"use_count"` Status string `json:"status"` }
ModuleData is the data for an asterisk module
type ModuleHandle ¶
type ModuleHandle struct {
// contains filtered or unexported fields
}
ModuleHandle is the reference to an asterisk module
func NewModuleHandle ¶
func NewModuleHandle(name string, m Modules) *ModuleHandle
NewModuleHandle returns a new module handle
func (*ModuleHandle) Data ¶
func (mh *ModuleHandle) Data() (ModuleData, error)
Data gets the module data
func (*ModuleHandle) ID ¶
func (mh *ModuleHandle) ID() string
ID returns the identifier for the module
type Modules ¶
type Modules interface { Get(name string) *ModuleHandle List() ([]*ModuleHandle, error) Load(name string) error Reload(name string) error Unload(name string) error Data(name string) (ModuleData, error) }
Modules is the communication path for interacting with the asterisk modules resource
type OriginateRequest ¶
type OriginateRequest struct { Endpoint string `json:"endpoint"` // Endpoint to use (tech/resource notation) Timeout int `json:"timeout,omitempty"` // Dial Timeout in seconds (-1 = no limit) CallerID string `json:"callerId,omitempty"` // CallerID to set for outgoing call // One set of: Context string `json:"context,omitempty"` // Drop the channel into the dialplan Extension string `json:"extension,omitempty"` Priority int64 `json:"priority,omitempty"` // OR App string `json:"app,omitempty"` // Associate channel to Stasis (Ari) application AppArgs string `json:"appArgs,omitempty"` // Arguments to the application // The label to dial after the endpoint answers. // Will supersede 'priority' if provided. Mutually exclusive with 'app'. Label string `json:"label,omitempty"` // The unique id of the channel which is originating this one. Originator string `json:"originator,omitempty"` // The format name capability list to use if originator is not specified. // Ex. "ulaw,slin16". Format names can be found with "core show codecs". Formats string `json:"formats,omitempty"` // // Channel ID declarations ChannelID string `json:"channelId,omitempty"` // Optionally assign channel id OtherChannelID string `json:"otherChannelId,omitempty"` // Optionally assign second channel's id (only for local channels) Variables map[string]string `json:"variables,omitempty"` // Channel variables to set }
OriginateRequest is the basic structure for all channel creation methods
type Peer ¶
type Peer struct { EventData Address string `json:"address,omitempty"` // The IP address of the peer. Cause string `json:"cause,omitempty"` // An optional reason associated with the change in peer_status. 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. Port string `json:"port,omitempty"` // The port of the peer. Time string `json:"time,omitempty"` // The last known time the peer was contacted. }
Peer - "Detailed information about a remote peer that communicates with Asterisk."
type PeerStatusChange ¶
type PeerStatusChange struct { EventData Endpoint EndpointData `json:"endpoint"` Peer Peer `json:"peer"` }
PeerStatusChange - "The state of a peer associated with an endpoint has changed."
func (*PeerStatusChange) GetEndpointIDs ¶
func (evt *PeerStatusChange) GetEndpointIDs() (sx []string)
GetEndpointIDs gets the bridge IDs for the event
type Playback ¶
type Playback interface { // Get gets the handle to the given playbacl ID Get(id string) *PlaybackHandle // Data gets the playback data Data(id string) (PlaybackData, error) // Control performs the given operation on the current playback Control(id string, op string) error // Stop stops the playback Stop(id string) error // Subscribe subscribes on the playback events Subscribe(id string, n ...string) Subscription }
Playback represents a communication path for interacting with an Asterisk server for playback resources
type PlaybackContinuing ¶
type PlaybackContinuing struct { EventData Playback PlaybackData `json:"playback"` // Playback control object }
PlaybackContinuing - "Event showing the continuation of a media playback operation from one media URI to the next in the list."
func (*PlaybackContinuing) GetPlaybackIDs ¶
func (evt *PlaybackContinuing) GetPlaybackIDs() (sx []string)
GetPlaybackIDs gets the playback IDs for the event
type PlaybackData ¶
type PlaybackData struct { ID string `json:"id"` // Unique ID for this playback session Language string `json:"language,omitempty"` MediaURI string `json:"media_uri"` // URI for the media which is to be played State string `json:"state"` // State of the playback operation TargetURI string `json:"target_uri"` // URI of the channel or bridge on which the media should be played (follows format of 'type':'name') }
PlaybackData represents the state of a playback
type PlaybackEvent ¶
type PlaybackEvent interface {
GetPlaybackIDs() []string
}
A PlaybackEvent is an event with one or more playback IDs
type PlaybackFinished ¶
type PlaybackFinished struct { EventData Playback PlaybackData `json:"playback"` // Playback control object }
PlaybackFinished - "Event showing the completion of a media playback operation."
func (*PlaybackFinished) Destroyed ¶
func (evt *PlaybackFinished) Destroyed() (playbackID string)
Destroyed returns the playbacK ID that was finished by this event. Used by the proxy to route events to dialogs.
func (*PlaybackFinished) GetPlaybackIDs ¶
func (evt *PlaybackFinished) GetPlaybackIDs() (sx []string)
GetPlaybackIDs gets the playback IDs for the event
type PlaybackHandle ¶
type PlaybackHandle struct {
// contains filtered or unexported fields
}
PlaybackHandle is the handle for performing playback operations
func NewPlaybackHandle ¶
func NewPlaybackHandle(id string, pb Playback) *PlaybackHandle
NewPlaybackHandle builds a handle to the playback id
func (*PlaybackHandle) Control ¶
func (ph *PlaybackHandle) Control(op string) (err error)
Control performs the given operation
func (*PlaybackHandle) Data ¶
func (ph *PlaybackHandle) Data() (pd PlaybackData, err error)
Data gets the playback data
func (*PlaybackHandle) ID ¶
func (ph *PlaybackHandle) ID() string
ID returns the identifier for the playback
func (*PlaybackHandle) Match ¶
func (ph *PlaybackHandle) Match(e Event) bool
Match returns true if the event matches the playback
func (*PlaybackHandle) Subscribe ¶
func (ph *PlaybackHandle) Subscribe(n ...string) Subscription
Subscribe subscribes the list of channel events
type PlaybackStarted ¶
type PlaybackStarted struct { EventData Playback PlaybackData `json:"playback"` // Playback control object }
PlaybackStarted - "Event showing the start of a media playback operation."
func (*PlaybackStarted) Created ¶
func (evt *PlaybackStarted) Created() (playbackID, otherID string)
Created returns the playbacK ID that we created plus the ID that the playback is operating on (a bridge or channel). Used by the proxy to route events to dialogs
func (*PlaybackStarted) GetPlaybackIDs ¶
func (evt *PlaybackStarted) GetPlaybackIDs() (sx []string)
GetPlaybackIDs gets the playback IDs for the event
type Playbacker ¶
type Playbacker interface {
Playback() Playback
}
Playbacker contains a playback transport
type RawMessage ¶
type RawMessage struct {
// contains filtered or unexported fields
}
RawMessage contains the raw bytes
func (*RawMessage) DecodeAs ¶
func (m *RawMessage) DecodeAs(v MessageRawer) error
DecodeAs converts the current message to a new message type
func (*RawMessage) GetRaw ¶
func (m *RawMessage) GetRaw() *[]byte
GetRaw gets the raw value of this RawMessage
func (*RawMessage) SetRaw ¶
func (m *RawMessage) SetRaw(raw *[]byte)
SetRaw sets the raw value of this RawMessage
type Recording ¶
type Recording struct { Stored StoredRecording Live LiveRecording }
Recording is a namespace for the recording types
type RecordingEvent ¶
type RecordingEvent interface {
GetRecordingIDs() []string
}
A RecordingEvent is an event with one or more recording IDs
type RecordingFailed ¶
type RecordingFailed struct { EventData Recording LiveRecordingData `json:"recording"` // Recording control object }
RecordingFailed - "Event showing failure of a recording operation."
func (*RecordingFailed) Destroyed ¶
func (evt *RecordingFailed) Destroyed() string
Destroyed returns the item that gets destroyed by this event
func (*RecordingFailed) GetRecordingIDs ¶
func (evt *RecordingFailed) GetRecordingIDs() (sx []string)
GetRecordingIDs gets the recording IDs for the event
type RecordingFinished ¶
type RecordingFinished struct { EventData Recording LiveRecordingData `json:"recording"` // Recording control object }
RecordingFinished - "Event showing the completion of a recording operation."
func (*RecordingFinished) Destroyed ¶
func (evt *RecordingFinished) Destroyed() string
Destroyed returns the item that gets destroyed by this event
func (*RecordingFinished) GetRecordingIDs ¶
func (evt *RecordingFinished) GetRecordingIDs() (sx []string)
GetRecordingIDs gets the recording IDs for the event
type RecordingOptions ¶
type RecordingOptions struct { // Format is the file format/encoding to which the recording should be stored. // This will usually be one of: slin, ulaw, alaw, wav, gsm. // If not specified, this will default to slin. Format string // MaxDuration is the maximum duration of the recording, after which the recording will // automatically stop. If not set, there is no maximum. MaxDuration time.Duration // MaxSilence is the maximum duration of detected to be found before terminating the recording. MaxSilence time.Duration // Exists determines what should happen if the given recording already exists. // Valid values are: "fail", "overwrite", or "append". // If not specified, it will default to "fail" Exists string // Beep indicates whether a beep should be played to the recorded // party at the beginning of the recording. Beep bool // Terminate indicates whether the recording should be terminated on // receipt of a DTMF digit. // valid options are: "none", "any", "*", and "#" // If not specified, it will default to "none" (never terminate on DTMF). Terminate string }
RecordingOptions describes the set of options available when making a recording.
type RecordingStarted ¶
type RecordingStarted struct { EventData Recording LiveRecordingData `json:"recording"` // Recording control object }
RecordingStarted - "Event showing the start of a recording operation."
func (*RecordingStarted) GetRecordingIDs ¶
func (evt *RecordingStarted) GetRecordingIDs() (sx []string)
GetRecordingIDs gets the recording IDs for the event
type Sender ¶
type Sender interface {
Send(m *Message)
}
A Sender is an entity which can send event bus messages
type SetID ¶
type SetID struct { Group string `json:"group"` // group id (not name? why string?) User string `json:"user"` // user id (not name? why string?) }
SetID describes a userid/groupid pair
type SnoopOptions ¶
type SnoopOptions struct { Direction string // Direction of audio to spy on (in, out, both) Whisper string // Direction of audio to whisper into (in, out, both) AppArgs string // The arguments to pass to the new application. }
SnoopOptions enumerates the non-required arguments for the snoop operation
type Sound ¶
type Sound interface { // List returns available sounds limited by the provided filters. // Valid filters are "lang", "format", and nil (no filter) List(filters map[string]string) ([]*SoundHandle, error) // Get returns a handle pointer to the sound for further interaction Get(name string) *SoundHandle // Data returns the Sound's data Data(name string) (SoundData, error) }
Sound represents a communication path to the asterisk server for Sound resources
type SoundData ¶
type SoundData struct { Formats []FormatLangPair `json:"formats"` ID string `json:"id"` Text string `json:"text,omitempty"` }
SoundData describes a media file which may be played back
type SoundHandle ¶
type SoundHandle struct {
// contains filtered or unexported fields
}
SoundHandle provides a wrapper to a Sound interface for operations on a specific Sound
func NewSoundHandle ¶
func NewSoundHandle(name string, snd Sound) *SoundHandle
NewSoundHandle creates a new handle to the sound name
func (*SoundHandle) Data ¶
func (sh *SoundHandle) Data() (sd SoundData, err error)
Data retrieves the data for the Sound
type StasisEnd ¶
type StasisEnd struct { EventData Channel ChannelData `json:"channel"` }
StasisEnd - "Notification that a channel has left a Stasis application."
func (*StasisEnd) GetChannelIDs ¶
GetChannelIDs gets the channel IDs for the event
type StasisStart ¶
type StasisStart struct { EventData Args []string `json:"args"` // Arguments to the application Channel ChannelData `json:"channel"` ReplaceChannel ChannelData `json:"replace_channel,omitempty"` }
StasisStart - "Notification that a channel has entered a Stasis application."
func (*StasisStart) GetChannelIDs ¶
func (evt *StasisStart) GetChannelIDs() (sx []string)
GetChannelIDs gets the channel IDs for the event
type StatusInfo ¶
type StatusInfo struct { LastReloadTime DateTime `json:"last_reload_time"` StartupTime DateTime `json:"startup_time"` }
StatusInfo describes the state of an Asterisk system
type StoredRecording ¶
type StoredRecording interface { // List lists the recordings List() ([]*StoredRecordingHandle, error) // Get gets the Recording by type Get(name string) *StoredRecordingHandle // data gets the data for the stored recording Data(name string) (StoredRecordingData, error) // Copy copies the recording to the destination name Copy(name string, dest string) (*StoredRecordingHandle, error) // Delete deletes the recording Delete(name string) error }
StoredRecording represents a communication path interacting with an Asterisk server for stored recording resources
type StoredRecordingData ¶
StoredRecordingData is the data for a stored recording
func (StoredRecordingData) ID ¶
func (d StoredRecordingData) ID() string
ID returns the identifier for the stored recording.
type StoredRecordingHandle ¶
type StoredRecordingHandle struct {
// contains filtered or unexported fields
}
A StoredRecordingHandle is a reference to a stored recording that can be operated on
func NewStoredRecordingHandle ¶
func NewStoredRecordingHandle(name string, s StoredRecording) *StoredRecordingHandle
NewStoredRecordingHandle creates a new stored recording handle
func (*StoredRecordingHandle) Copy ¶
func (s *StoredRecordingHandle) Copy(dest string) (h *StoredRecordingHandle, err error)
Copy copies the stored recording
func (*StoredRecordingHandle) Data ¶
func (s *StoredRecordingHandle) Data() (d StoredRecordingData, err error)
Data gets the data for the stored recording
func (*StoredRecordingHandle) Delete ¶
func (s *StoredRecordingHandle) Delete() (err error)
Delete deletes the recording
func (*StoredRecordingHandle) ID ¶
func (s *StoredRecordingHandle) ID() string
ID returns the identifier for the stored recording
type Subscriber ¶
type Subscriber interface {
Subscribe(n ...string) Subscription
}
A Subscriber is an entity which can create ARI event subscriptions
type Subscription ¶
type Subscription interface { Events() chan Event Cancel() }
A Subscription is a subscription on series of ARI events
type SystemInfo ¶
SystemInfo describes information about the Asterisk system
type TextMessage ¶
type TextMessage interface { // Send() sends a text message to an endpoint Send(from, tech, resource, body string, vars map[string]string) error // SendByURI sends a text message to an endpoint by free-form URI SendByURI(from, to, body string, vars map[string]string) error }
TextMessage needs some verbiage here
type TextMessageData ¶
type TextMessageData struct { Body string `json:"body"` // The body (text) of the message From string `json:"from"` // Technology-specific source URI To string `json:"to"` // Technology-specific destination URI Variables []TextMessageVariable `json:"variables,omitempty"` }
TextMessageData describes text message
type TextMessageReceived ¶
type TextMessageReceived struct { EventData Endpoint EndpointData `json:"endpoint,omitempty"` Message TextMessageData `json:"message"` }
TextMessageReceived - "A text message was received from an endpoint."
func (*TextMessageReceived) GetEndpointIDs ¶
func (evt *TextMessageReceived) GetEndpointIDs() (sx []string)
GetEndpointIDs gets the bridge IDs for the event
type TextMessageVariable ¶
TextMessageVariable describes a key-value pair (associated with a text message)
Source Files ¶
- application.go
- asterisk.go
- bridge.go
- bus.go
- callerid.go
- channel.go
- client.go
- config.go
- datetime.go
- device.go
- dialplan.go
- direction.go
- dtmf.go
- endpoint.go
- events.go
- events_gen.go
- liveRecording.go
- logger.go
- logging.go
- mailbox.go
- message.go
- modules.go
- originate.go
- playback.go
- recording.go
- sound.go
- storedRecording.go
- textMessage.go
- variables.go
Directories ¶
Path | Synopsis |
---|---|
_examples
|
|
client
|
|
mock
Package mock is a mock client used for unit testing
|
Package mock is a mock client used for unit testing |
ext
|
|
audio/audiouri
Package audiouri provides conversions for common sounds to asterisk-supported audio URIs
|
Package audiouri provides conversions for common sounds to asterisk-supported audio URIs |
prompt
Package prompt is the utility section for working with asterisk prompts.
|
Package prompt is the utility section for working with asterisk prompts. |
internal
|
|