startOutboundVoiceContact method
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);
}