-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmessage.go
111 lines (87 loc) · 4.31 KB
/
message.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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
package aircall
import "fmt"
// Message service
type MessagesService service
type NumberConfiguration struct {
Token string `json:"token,omitempty"`
CallbackURL string `json:"callbackUrl,omitempty"`
Type string `json:"type,omitempty"`
}
type Message struct {
ID string `json:"id,omitempty"`
DirectLink string `json:"direct_link,omitempty"`
Direction string `json:"direction,omitempty"`
ExternalNumber string `json:"external_number,omitempty"`
Body string `json:"body,omitempty"`
Status string `json:"status,omitempty"`
RawDigits string `json:"raw_digits,omitempty"`
CreatedAt interface{} `json:"created_at,omitempty"`
UpdatedAt interface{} `json:"updated_at,omitempty"`
SentAt interface{} `json:"sent_at,omitempty"`
MediaURL *[]string `json:"media_url,omitempty"`
User *User `json:"user,omitempty"`
Number *Number `json:"number,omitempty"`
Contact *Contact `json:"contact,omitempty"`
MediaDetails *[]MediaDetail `json:"media_details,omitempty"`
}
type NewMessage struct {
To string `json:"to,omitempty"`
Body string `json:"body,omitempty"`
MediaURL []string `json:"media_url,omitempty"`
}
type MediaDetail struct {
FileName string `json:"file_name,omitempty"`
FileType string `json:"file_type,omitempty"`
PresignedURL string `json:"presigned_url,omitempty"`
}
// ***********************************************************************************
// CREATE NUMBER CONFIGURATION
// https://developer.aircall.io/api-references/#create-number-configuration
// ***********************************************************************************
// Create number configuration. Reference: https://developer.aircall.io/api-references/#create-number-configuration
func (service *MessagesService) CreateNumberConfiguration(numberID int, numberConfiguration *NumberConfiguration) (*NumberConfiguration, *Response, error) {
_url := fmt.Sprintf("numbers/%d/messages/configuration", numberID)
responseBody := new(NumberConfiguration)
response, err := service.client.Post(_url, numberConfiguration, responseBody)
if err != nil {
return nil, response, err
}
return responseBody, response, nil
}
// ***********************************************************************************
// GET NUMBER CONFIGURATION
// https://developer.aircall.io/api-references/#fetch-number-configuration
// ***********************************************************************************
// Get number configuration. Reference: https://developer.aircall.io/api-references/#fetch-number-configuration
func (service *MessagesService) GetNumberConfiguration(numberID int) (*NumberConfiguration, *Response, error) {
_url := fmt.Sprintf("numbers/%d/messages/configuration", numberID)
responseBody := new(NumberConfiguration)
response, err := service.client.Get(_url, nil, responseBody)
if err != nil {
return nil, response, err
}
return responseBody, response, nil
}
// ***********************************************************************************
// DELETE NUMBER CONFIGURATION
// https://developer.aircall.io/api-references/#fetch-number-configuration
// ***********************************************************************************
// Delete number configuration. Reference: https://developer.aircall.io/api-references/#fetch-number-configuration
func (service *MessagesService) DeleteNumberConfiguration(numberID int) (*Response, error) {
_url := fmt.Sprintf("numbers/%d/messages/configuration", numberID)
return service.client.Delete(_url)
}
// ***********************************************************************************
// SEND MESSAGE
// https://developer.aircall.io/api-references/#send-message
// ***********************************************************************************
// Send message. Reference: https://developer.aircall.io/api-references/#send-message
func (service *MessagesService) Send(numberID int, message *NewMessage) (*Message, *Response, error) {
_url := fmt.Sprintf("numbers/%d/messages/send", numberID)
responseBody := new(Message)
response, err := service.client.Post(_url, message, responseBody)
if err != nil {
return nil, response, err
}
return responseBody, response, nil
}