{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-binds #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Network.AWS.Connect.StartOutboundVoiceContact -- Copyright : (c) 2013-2018 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- The @StartOutboundVoiceContact@ operation initiates a contact flow to place an outbound call to a customer. -- -- -- There is a throttling limit placed on usage of the API that includes a @RateLimit@ of 2 per second, and a @BurstLimit@ of 5 per second. -- -- If you are using an IAM account, it must have permissions to the @connect:StartOutboundVoiceContact@ action. -- module Network.AWS.Connect.StartOutboundVoiceContact ( -- * Creating a Request startOutboundVoiceContact , StartOutboundVoiceContact -- * Request Lenses , sovcClientToken , sovcQueueId , sovcAttributes , sovcSourcePhoneNumber , sovcDestinationPhoneNumber , sovcContactFlowId , sovcInstanceId -- * Destructuring the Response , startOutboundVoiceContactResponse , StartOutboundVoiceContactResponse -- * Response Lenses , sovcrsContactId , sovcrsResponseStatus ) where import Network.AWS.Connect.Types import Network.AWS.Connect.Types.Product import Network.AWS.Lens import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response -- | /See:/ 'startOutboundVoiceContact' smart constructor. data StartOutboundVoiceContact = StartOutboundVoiceContact' { _sovcClientToken :: !(Maybe Text) , _sovcQueueId :: !(Maybe Text) , _sovcAttributes :: !(Maybe (Map Text Text)) , _sovcSourcePhoneNumber :: !(Maybe Text) , _sovcDestinationPhoneNumber :: !Text , _sovcContactFlowId :: !Text , _sovcInstanceId :: !Text } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'StartOutboundVoiceContact' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'sovcClientToken' - 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. -- -- * 'sovcQueueId' - The queue to which to add the call. If you specify a queue, the phone displayed for caller ID is the phone number defined for the queue. If you do not specify a queue, the queue used is the queue defined in the contact flow specified by @ContactFlowId@ . To find the @QueueId@ , open the queue to use in the Amazon Connect queue editor. The ID for the queue is displayed in the address bar as part of the URL. For example, the @QueueId@ value is the set of characters at the end of the URL, after "queue/", such as @aeg40574-2d01-51c3-73d6-bf8624d2168c@ . -- -- * 'sovcAttributes' - Specify 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. Attribute keys can include only alphanumeric, dash, and underscore characters. For example, to play a greeting when the customer answers the call, you can pass the customer name in attributes similar to the following: -- -- * 'sovcSourcePhoneNumber' - The phone number, in E.164 format, associated with your Amazon Connect instance to use to place the outbound call. -- -- * 'sovcDestinationPhoneNumber' - The phone number, in E.164 format, of the customer to call with the outbound contact. -- -- * 'sovcContactFlowId' - The identifier for the contact flow to execute for the outbound call. This is a GUID value only. Amazon Resource Name (ARN) values are not supported. To find the @ContactFlowId@ , open the contact flow to use in the Amazon Connect contact flow designer. The ID for the contact flow is displayed in the address bar as part of the URL. For example, an address displayed when you open a contact flow is similar to the following: @https://myconnectinstance.awsapps.com/connect/contact-flows/edit?id=arn:aws:connect:us-east-1:361814831152:instance/2fb42df9-78a2-4b99-b484-f5cf80dc300c/contact-flow//b0b8f2dd-ed1b-4c44-af36-ce189a178181/ @ . At the end of the URL, you see @contact-flow/b0b8f2dd-ed1b-4c44-af36-ce189a178181@ . The @ContactFlowID@ for this contact flow is @/b0b8f2dd-ed1b-4c44-af36-ce189a178181/ @ . Make sure to include only the GUID after the "contact-flow/" in your requests. -- -- * 'sovcInstanceId' - The identifier for your Amazon Connect instance. To find the @InstanceId@ value for your Amazon Connect instance, open the . Select the instance alias of the instance and view the instance ID in the __Overview__ section. For example, the instance ID is the set of characters at the end of the instance ARN, after "instance/", such as 10a4c4eb-f57e-4d4c-b602-bf39176ced07. startOutboundVoiceContact :: Text -- ^ 'sovcDestinationPhoneNumber' -> Text -- ^ 'sovcContactFlowId' -> Text -- ^ 'sovcInstanceId' -> StartOutboundVoiceContact startOutboundVoiceContact pDestinationPhoneNumber_ pContactFlowId_ pInstanceId_ = StartOutboundVoiceContact' { _sovcClientToken = Nothing , _sovcQueueId = Nothing , _sovcAttributes = Nothing , _sovcSourcePhoneNumber = Nothing , _sovcDestinationPhoneNumber = pDestinationPhoneNumber_ , _sovcContactFlowId = pContactFlowId_ , _sovcInstanceId = pInstanceId_ } -- | 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. sovcClientToken :: Lens' StartOutboundVoiceContact (Maybe Text) sovcClientToken = lens _sovcClientToken (\ s a -> s{_sovcClientToken = a}) -- | The queue to which to add the call. If you specify a queue, the phone displayed for caller ID is the phone number defined for the queue. If you do not specify a queue, the queue used is the queue defined in the contact flow specified by @ContactFlowId@ . To find the @QueueId@ , open the queue to use in the Amazon Connect queue editor. The ID for the queue is displayed in the address bar as part of the URL. For example, the @QueueId@ value is the set of characters at the end of the URL, after "queue/", such as @aeg40574-2d01-51c3-73d6-bf8624d2168c@ . sovcQueueId :: Lens' StartOutboundVoiceContact (Maybe Text) sovcQueueId = lens _sovcQueueId (\ s a -> s{_sovcQueueId = a}) -- | Specify 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. Attribute keys can include only alphanumeric, dash, and underscore characters. For example, to play a greeting when the customer answers the call, you can pass the customer name in attributes similar to the following: sovcAttributes :: Lens' StartOutboundVoiceContact (HashMap Text Text) sovcAttributes = lens _sovcAttributes (\ s a -> s{_sovcAttributes = a}) . _Default . _Map -- | The phone number, in E.164 format, associated with your Amazon Connect instance to use to place the outbound call. sovcSourcePhoneNumber :: Lens' StartOutboundVoiceContact (Maybe Text) sovcSourcePhoneNumber = lens _sovcSourcePhoneNumber (\ s a -> s{_sovcSourcePhoneNumber = a}) -- | The phone number, in E.164 format, of the customer to call with the outbound contact. sovcDestinationPhoneNumber :: Lens' StartOutboundVoiceContact Text sovcDestinationPhoneNumber = lens _sovcDestinationPhoneNumber (\ s a -> s{_sovcDestinationPhoneNumber = a}) -- | The identifier for the contact flow to execute for the outbound call. This is a GUID value only. Amazon Resource Name (ARN) values are not supported. To find the @ContactFlowId@ , open the contact flow to use in the Amazon Connect contact flow designer. The ID for the contact flow is displayed in the address bar as part of the URL. For example, an address displayed when you open a contact flow is similar to the following: @https://myconnectinstance.awsapps.com/connect/contact-flows/edit?id=arn:aws:connect:us-east-1:361814831152:instance/2fb42df9-78a2-4b99-b484-f5cf80dc300c/contact-flow//b0b8f2dd-ed1b-4c44-af36-ce189a178181/ @ . At the end of the URL, you see @contact-flow/b0b8f2dd-ed1b-4c44-af36-ce189a178181@ . The @ContactFlowID@ for this contact flow is @/b0b8f2dd-ed1b-4c44-af36-ce189a178181/ @ . Make sure to include only the GUID after the "contact-flow/" in your requests. sovcContactFlowId :: Lens' StartOutboundVoiceContact Text sovcContactFlowId = lens _sovcContactFlowId (\ s a -> s{_sovcContactFlowId = a}) -- | The identifier for your Amazon Connect instance. To find the @InstanceId@ value for your Amazon Connect instance, open the . Select the instance alias of the instance and view the instance ID in the __Overview__ section. For example, the instance ID is the set of characters at the end of the instance ARN, after "instance/", such as 10a4c4eb-f57e-4d4c-b602-bf39176ced07. sovcInstanceId :: Lens' StartOutboundVoiceContact Text sovcInstanceId = lens _sovcInstanceId (\ s a -> s{_sovcInstanceId = a}) instance AWSRequest StartOutboundVoiceContact where type Rs StartOutboundVoiceContact = StartOutboundVoiceContactResponse request = putJSON connect response = receiveJSON (\ s h x -> StartOutboundVoiceContactResponse' <$> (x .?> "ContactId") <*> (pure (fromEnum s))) instance Hashable StartOutboundVoiceContact where instance NFData StartOutboundVoiceContact where instance ToHeaders StartOutboundVoiceContact where toHeaders = const (mconcat ["Content-Type" =# ("application/x-amz-json-1.1" :: ByteString)]) instance ToJSON StartOutboundVoiceContact where toJSON StartOutboundVoiceContact'{..} = object (catMaybes [("ClientToken" .=) <$> _sovcClientToken, ("QueueId" .=) <$> _sovcQueueId, ("Attributes" .=) <$> _sovcAttributes, ("SourcePhoneNumber" .=) <$> _sovcSourcePhoneNumber, Just ("DestinationPhoneNumber" .= _sovcDestinationPhoneNumber), Just ("ContactFlowId" .= _sovcContactFlowId), Just ("InstanceId" .= _sovcInstanceId)]) instance ToPath StartOutboundVoiceContact where toPath = const "/contact/outbound-voice" instance ToQuery StartOutboundVoiceContact where toQuery = const mempty -- | /See:/ 'startOutboundVoiceContactResponse' smart constructor. data StartOutboundVoiceContactResponse = StartOutboundVoiceContactResponse' { _sovcrsContactId :: !(Maybe Text) , _sovcrsResponseStatus :: !Int } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'StartOutboundVoiceContactResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'sovcrsContactId' - The unique identifier of this contact within your Amazon Connect instance. -- -- * 'sovcrsResponseStatus' - -- | The response status code. startOutboundVoiceContactResponse :: Int -- ^ 'sovcrsResponseStatus' -> StartOutboundVoiceContactResponse startOutboundVoiceContactResponse pResponseStatus_ = StartOutboundVoiceContactResponse' {_sovcrsContactId = Nothing, _sovcrsResponseStatus = pResponseStatus_} -- | The unique identifier of this contact within your Amazon Connect instance. sovcrsContactId :: Lens' StartOutboundVoiceContactResponse (Maybe Text) sovcrsContactId = lens _sovcrsContactId (\ s a -> s{_sovcrsContactId = a}) -- | -- | The response status code. sovcrsResponseStatus :: Lens' StartOutboundVoiceContactResponse Int sovcrsResponseStatus = lens _sovcrsResponseStatus (\ s a -> s{_sovcrsResponseStatus = a}) instance NFData StartOutboundVoiceContactResponse where