startOutboundVoiceContact method

Future<StartOutboundVoiceContactResponse> startOutboundVoiceContact({
  1. required String contactFlowId,
  2. required String destinationPhoneNumber,
  3. required String instanceId,
  4. Map<String, String>? attributes,
  5. String? clientToken,
  6. String? queueId,
  7. String? sourcePhoneNumber,
})

This API places an outbound call to a contact, and then initiates the contact flow. It performs the actions in the contact flow that's specified (in ContactFlowId).

Agents are not involved in initiating the outbound API (that is, dialing the contact). If the contact flow places an outbound call to a contact, and then puts the contact in queue, that's when the call is routed to the agent, like any other inbound case.

There is a 60 second dialing timeout for this operation. If the call is not connected after 60 seconds, it fails.

May throw InvalidRequestException. May throw InvalidParameterException. May throw ResourceNotFoundException. May throw InternalServiceException. May throw LimitExceededException. May throw DestinationNotAllowedException. May throw OutboundContactNotPermittedException.

Parameter contactFlowId : The identifier of the contact flow for the outbound call. To see the ContactFlowId in the Amazon Connect console user interface, on the navigation menu go to Routing, Contact Flows. Choose the contact flow. On the contact flow page, under the name of the contact flow, choose Show additional flow information. The ContactFlowId is the last part of the ARN, shown here in bold:

arn:aws:connect:us-west-2:xxxxxxxxxxxx:instance/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/contact-flow/846ec553-a005-41c0-8341-xxxxxxxxxxxx

Parameter destinationPhoneNumber : The phone number of the customer, in E.164 format.

Parameter instanceId : The identifier of the Amazon Connect instance.

Parameter attributes : A custom key-value pair using an attribute map. The attributes are standard Amazon Connect attributes, and can be accessed in contact flows just like any other contact attributes.

There can be up to 32,768 UTF-8 bytes across all key-value pairs per contact. Attribute keys can include only alphanumeric, dash, and underscore characters.

Parameter clientToken : A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. The token is valid for 7 days after creation. If a contact is already started, the contact ID is returned. If the contact is disconnected, a new contact is started.

Parameter queueId : The queue for the call. If you specify a queue, the phone displayed for caller ID is the phone number specified in the queue. If you do not specify a queue, the queue defined in the contact flow is used. If you do not specify a queue, you must specify a source phone number.

Parameter sourcePhoneNumber : The phone number associated with the Amazon Connect instance, in E.164 format. If you do not specify a source phone number, you must specify a queue.

Implementation

Future<StartOutboundVoiceContactResponse> startOutboundVoiceContact({
  required String contactFlowId,
  required String destinationPhoneNumber,
  required String instanceId,
  Map<String, String>? attributes,
  String? clientToken,
  String? queueId,
  String? sourcePhoneNumber,
}) async {
  ArgumentError.checkNotNull(contactFlowId, 'contactFlowId');
  _s.validateStringLength(
    'contactFlowId',
    contactFlowId,
    0,
    500,
    isRequired: true,
  );
  ArgumentError.checkNotNull(
      destinationPhoneNumber, 'destinationPhoneNumber');
  ArgumentError.checkNotNull(instanceId, 'instanceId');
  _s.validateStringLength(
    'instanceId',
    instanceId,
    1,
    100,
    isRequired: true,
  );
  _s.validateStringLength(
    'clientToken',
    clientToken,
    0,
    500,
  );
  final $payload = <String, dynamic>{
    'ContactFlowId': contactFlowId,
    'DestinationPhoneNumber': destinationPhoneNumber,
    'InstanceId': instanceId,
    if (attributes != null) 'Attributes': attributes,
    'ClientToken': clientToken ?? _s.generateIdempotencyToken(),
    if (queueId != null) 'QueueId': queueId,
    if (sourcePhoneNumber != null) 'SourcePhoneNumber': sourcePhoneNumber,
  };
  final response = await _protocol.send(
    payload: $payload,
    method: 'PUT',
    requestUri: '/contact/outbound-voice',
    exceptionFnMap: _exceptionFns,
  );
  return StartOutboundVoiceContactResponse.fromJson(response);
}