Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How much of Amazon Connect is scriptable, either through Terraform, Ansible or another approach?

This question concerns AWS Connect, the cloud-based call center. For those people who have been involved in the setup and configuration of AWS Connect, is there any portion of Amazon Connect that is configurable through a continuous integration flow other than any possible Lambda touchpoints. What I am looking for is scripting various functions such as loading exported flows, etc.

Looking at the AWS CLI, I see a number of AWS Connect calls but a majority is getting access to information (https://docs.aws.amazon.com/cli/latest/reference/connect/index.html) but very few that are available to configure portions of AWS Connect.

like image 371
Perry Hoekstra Avatar asked Feb 25 '20 16:02

Perry Hoekstra


2 Answers

There is basically nothing at this time. All contact flows must be imported/exported by hand. Other settings (e.g. routing profiles, prompts, etc.) must be re-created manually.

Someone has created a "beta" Connect CloudFormation template though that actually uses puppeteer behind the scenes to automate the import/export process. I imagine that Amazon will eventually support this, because devops is certainly one of the rough edges of the platform right now.

like image 59
jspru Avatar answered Oct 02 '22 14:10

jspru


For new people checking this question. Amazon has recently published the APIs you are looking for. create-contact-flow

It uses a JSON-based language specific to Amazon Connect, below is an example:

{
"Version": "2019-10-30",
"StartAction": "12345678-1234-1234-1234-123456789012",
"Metadata": {
    "EntryPointPosition": {"X": 88,"Y": 100},
    "ActionMetadata": {
        "12345678-1234-1234-1234-123456789012": {
            "Position": {"X": 270, "Y": 98}
        },
        "abcdef-abcd-abcd-abcd-abcdefghijkl": {
            "Position": {"X": 545, "Y": 92}
        }

    }
},
"Actions": [
    {
        "Identifier": "12345678-1234-1234-1234-123456789012",
        "Type": "MessageParticipant",
        "Transitions": {
            "NextAction": "abcdef-abcd-abcd-abcd-abcdefghijkl",
            "Errors": [],
            "Conditions": []
        },
        "Parameters": {
            "Prompt": {
                "Text": "Thanks for calling the sample flow!",
                "TextType": "text",
                "PromptId": null
            }
        }
    },
    {
        "Identifier": "abcdef-abcd-abcd-abcd-abcdefghijkl",
        "Type": "DisconnectParticipant",
        "Transitions": {},
        "Parameters": {}
    }
]
}

Exporting from the GUI does not produce a JSON in this format. Obviously, a problem with this is keeping a state. I am keeping a close eye on Terraform/CloudFormation/CDK and will update this post if there is any support (that does not use puppeteer).

like image 25
Amri Avatar answered Oct 02 '22 16:10

Amri