in go/GetQueueAvailableAgents/main.go [14:68]
func main() {
region := flag.String("r", "", "The AWS region where your Amazon Connect instance is in")
queueARN := flag.String("q", "", "The ARN of the Amazon Connect queue")
flag.Parse()
// Create a new AWS session
sess := session.Must(session.NewSession())
// Use the session to create an Amazon Connect client for the configured region
svc := connect.New(sess, &aws.Config{Region: region})
// Create the input for the the GetCurrentMetricData API
// This will request a count of the number of Agents available in the queue
instanceARN := strings.Join(strings.Split(aws.StringValue(queueARN), "/")[:2], "/") // instance ARN from queue ARN
input := &connect.GetCurrentMetricDataInput{
CurrentMetrics: []*connect.CurrentMetric{
{
Name: aws.String(connect.CurrentMetricNameAgentsAvailable),
Unit: aws.String(connect.UnitCount),
},
},
Filters: &connect.Filters{
Channels: []*string{aws.String(connect.ChannelVoice)},
Queues: []*string{queueARN},
},
Groupings: []*string{aws.String(connect.GroupingQueue)},
InstanceId: aws.String(instanceARN),
}
if err := input.Validate(); err != nil {
log.Fatalf("Error validating GetCurrentMetricDataInput: %v", err)
return
}
// Create a pager. This will let us page over all of the metrics available
// when there are more metrics than can be returned in a single request
var count float64
pager := func(out *connect.GetCurrentMetricDataOutput, lastPage bool) bool {
for _, result := range out.MetricResults {
for _, collection := range result.Collections {
// If the metric returned is for the number of available agents, increment the counter
if aws.StringValue(collection.Metric.Name) == connect.CurrentMetricNameAgentsAvailable {
count += aws.Float64Value(collection.Value)
}
}
}
return lastPage
}
if err := svc.GetCurrentMetricDataPagesWithContext(context.Background(), input, pager); err != nil {
log.Fatalf("Error calling GetCurrentMetricDataPagesWithContext: %v", err)
return
}
// Use a default context, the input, and the pager to call the GetCurrentMetricData API.
log.Printf("There are %d available agents in the queue.", int(count))
}