github.com/grokify/go-ringcentral-client@v0.3.31/engagevoice/v1/examples/get_simple/main.go (about) 1 package main 2 3 import ( 4 "context" 5 "fmt" 6 "log" 7 "net/http" 8 "os" 9 "strconv" 10 "strings" 11 "time" 12 13 engagevoice "github.com/grokify/go-ringcentral-client/engagevoice/v1/client" 14 engagevoiceutil "github.com/grokify/go-ringcentral-client/engagevoice/v1/util" 15 "github.com/grokify/mogo/config" 16 "github.com/grokify/mogo/fmt/fmtutil" 17 "github.com/jessevdk/go-flags" 18 ) 19 20 type Options struct { 21 EnvPath string `short:"e" long:"envPath" description:"Environment File Path"` 22 Token string `short:"t" long:"token" description:"Token"` 23 AccountID string `short:"a" long:"accountID" description:"AccountID"` 24 Object string `short:"o" long:"object" description:"Object to retrieve" required:"true"` 25 ID string `short:"i" long:"id" description:"id to get"` 26 AccountIdInt64 int64 27 } 28 29 func main() { 30 opts := Options{} 31 _, err := flags.Parse(&opts) 32 if err != nil { 33 log.Fatal(err) 34 } 35 36 _, err = config.LoadDotEnv([]string{opts.EnvPath, os.Getenv("ENV_PATH")}, 1) 37 if err != nil { 38 log.Fatal(err) 39 } 40 41 if len(opts.Token) == 0 { 42 opts.Token = os.Getenv("ENGAGE_VOICE_API_TOKEN") 43 } 44 if len(opts.AccountID) == 0 { 45 opts.AccountID = os.Getenv("ENGAGE_VOICE_ACCOUNT_ID") 46 accountIdInt, err := strconv.Atoi(opts.AccountID) 47 if err != nil { 48 log.Fatal(err) 49 } 50 opts.AccountIdInt64 = int64(accountIdInt) 51 } 52 53 clientApis := engagevoiceutil.NewClientAPIs(opts.Token) 54 apiClient := clientApis.APIClient 55 56 object := strings.ToLower(opts.Object) 57 switch object { 58 case "agent": 59 info, resp, err := apiClient.AgentsApi.GetAgents( 60 context.Background(), opts.AccountID, opts.ID) 61 handleErrors(resp, err) 62 fmtutil.PrintJSON(info) 63 case "agentgroup": 64 info, resp, err := apiClient.AgentsApi.GetAgentGroups( 65 context.Background(), opts.AccountID) 66 handleErrors(resp, err) 67 fmtutil.PrintJSON(info) 68 case "campaign": 69 campaigns, err := engagevoiceutil.GetAllCampaigns( 70 context.Background(), apiClient, opts.AccountID) 71 if err != nil { 72 log.Fatal(err) 73 } 74 fmtutil.PrintJSON(campaigns) 75 case "campaignclearcache": 76 campaigns, err := engagevoiceutil.GetAllCampaigns( 77 context.Background(), apiClient, opts.AccountID) 78 if err != nil { 79 log.Fatal(err) 80 } 81 if len(campaigns) == 0 { 82 log.Fatal("E_NO_CAMPAIGNS") 83 } 84 for _, campaign := range campaigns { 85 fmt.Println("CLEARING...") 86 fmtutil.PrintJSON(campaign) 87 resp, err := apiClient.DialGroupsApi.ClearCampaignCache( 88 context.Background(), 89 opts.AccountIdInt64, 90 campaign.DialGroup.Id, 91 campaign.CampaignId, 92 map[string]interface{}{}, 93 ) 94 handleErrors(resp, err) 95 fmt.Printf("SUCCESS [%v]\n", resp.StatusCode) 96 break 97 } 98 case "leadstate": 99 info, resp, err := apiClient.CampaignLeadsApi.GetLeadStates( 100 context.Background(), opts.AccountID) 101 handleErrors(resp, err) 102 fmtutil.PrintJSON(info) 103 case "country": 104 info, resp, err := apiClient.CountriesApi.GetAvailableCountries( 105 context.Background(), opts.AccountID) 106 handleErrors(resp, err) 107 fmtutil.PrintJSON(info) 108 case "dialgroup": 109 info, resp, err := apiClient.DialGroupsApi.GetDialGroups( 110 context.Background(), opts.AccountID) 111 handleErrors(resp, err) 112 fmtutil.PrintJSON(info) 113 case "systemdispositions": 114 info, resp, err := apiClient.CampaignLeadsApi.GetSystemDispositions( 115 context.Background(), opts.AccountID) 116 handleErrors(resp, err) 117 fmtutil.PrintJSON(info) 118 case "leadsearch": 119 //qry := engagevoice.CampaignLeadSearchCriteria{FirstName: "Jon"} 120 qry := engagevoice.CampaignLeadSearchCriteria{} 121 info, resp, err := apiClient.CampaignLeadsApi.SearchLeads( 122 context.Background(), opts.AccountID, 123 qry, nil, 124 ) 125 handleErrors(resp, err) 126 fmtutil.PrintJSON(info) 127 case "token": 128 info, resp, err := apiClient.AuthApi.GetTokens(context.Background()) 129 handleErrors(resp, err) 130 fmtutil.PrintJSON(info) 131 case "user": 132 info, resp, err := apiClient.UsersApi.GetUsers(context.Background()) 133 handleErrors(resp, err) 134 fmtutil.PrintJSON(info) 135 default: 136 log.Fatal(fmt.Sprintf("Object not found [%v]", object)) 137 } 138 139 if 1 == 0 { 140 info, resp, err := apiClient.DialGroupsApi.GetDialGroups( 141 context.Background(), opts.AccountID, 142 ) 143 handleErrors(resp, err) 144 fmtutil.PrintJSON(info) 145 dialGroupIDs := []int64{} 146 for _, dg := range info { 147 dialGroupIDs = append(dialGroupIDs, dg.DialGroupId) 148 } 149 fmtutil.PrintJSON(dialGroupIDs) 150 for _, dialGroupID := range dialGroupIDs { 151 info, resp, err := apiClient.DialGroupsApi.GetCampaigns( 152 context.Background(), 153 opts.AccountID, 154 strconv.Itoa(int(dialGroupID)), 155 ) 156 handleErrors(resp, err) 157 fmtutil.PrintJSON(info) 158 for _, campaign := range info { 159 campaignID := campaign.CampaignId 160 fmt.Printf("CAMPAIGN [%v]\n", campaignID) 161 uploadLeads(apiClient, opts.AccountID, strconv.Itoa(int(campaignID))) 162 163 } 164 } 165 } 166 fmt.Println("DONE") 167 } 168 169 func uploadLeads(client *engagevoice.APIClient, accountId, campaignId string) { 170 dt := time.Now() 171 leadsRequest := engagevoice.UploadLeadsRequest{ 172 Description: "Test from Go " + dt.Format(time.RFC3339), 173 DialPriority: "IMMEDIATE", 174 DuplicateHandling: "RETAIN_ALL", 175 ListState: "ACTIVE", 176 TimeZoneOption: "NPA_NXX", 177 UploadLeads: []engagevoice.CampaignLead{ 178 { 179 LeadPhone: "6505550100", 180 ExternId: "1", 181 FirstName: "Jon", 182 LastName: "Snow", 183 /*ExtendedLeadData: engagevoice.ExtendedLeadData{ 184 Important: "Priority 1: needs help right away", 185 Interested: true, 186 },*/ 187 }, 188 }, 189 } 190 info, resp, err := client.CampaignsApi.UploadLeads( 191 context.Background(), 192 accountId, 193 campaignId, 194 leadsRequest, 195 ) 196 handleErrors(resp, err) 197 fmtutil.PrintJSON(info) 198 } 199 200 func handleErrors(resp *http.Response, err error) { 201 if err != nil { 202 log.Fatal(err) 203 } else if resp.StatusCode >= 300 { 204 log.Fatal("E_STATUS_CODE_GTE_300") 205 } 206 }