/
record_voicemail.go
67 lines (59 loc) · 2.1 KB
/
record_voicemail.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// Package widgets contains auto-generated files. DO NOT MODIFY
package widgets
import (
"fmt"
"github.com/RJPearson94/twilio-sdk-go/studio/flow"
"github.com/RJPearson94/twilio-sdk-go/studio/properties"
"github.com/RJPearson94/twilio-sdk-go/utils"
)
type RecordVoicemailNextTransitions struct {
Hangup *string
NoAudio *string
RecordingComplete *string
}
type RecordVoicemailProperties struct {
FinishOnKey *string `json:"finish_on_key,omitempty"`
MaxLength *int `json:"max_length,omitempty"`
Offset *properties.Offset `json:"offset,omitempty"`
PlayBeep *string `json:"play_beep,omitempty"`
RecordingStatusCallbackURL *string `json:"recording_status_callback_url,omitempty"`
Timeout *int `json:"timeout,omitempty"`
Transcribe *bool `json:"transcribe,omitempty"`
TranscriptionCallbackURL *string `json:"transcription_callback_url,omitempty"`
Trim *string `json:"trim,omitempty"`
}
type RecordVoicemail struct {
NextTransitions RecordVoicemailNextTransitions
Properties RecordVoicemailProperties `validate:"required"`
Name string `validate:"required"`
}
// Validate checks the widget is correctly configured
func (widget RecordVoicemail) Validate() error {
if err := utils.ValidateInput(widget); err != nil {
return fmt.Errorf("Invalid input supplied. Errors %s", err.Error())
}
return nil
}
// ToState returns a populated Studio Widget State struct
func (widget RecordVoicemail) ToState() (*flow.State, error) {
transitions := []flow.Transition{
{
Event: "hangup",
Next: widget.NextTransitions.Hangup,
},
{
Event: "noAudio",
Next: widget.NextTransitions.NoAudio,
},
{
Event: "recordingComplete",
Next: widget.NextTransitions.RecordingComplete,
},
}
return &flow.State{
Name: widget.Name,
Type: "record-voicemail",
Transitions: transitions,
Properties: widget.Properties,
}, nil
}