Contact Flow Args
    Provides an Amazon Connect Contact Flow resource. For more information see Amazon Connect: Getting Started This resource embeds or references Contact Flows specified in Amazon Connect Contact Flow Language. For more information see Amazon Connect Flow language !>WARN: Contact Flows exported from the Console Contact Flow import/export are not in the Amazon Connect Contact Flow Language and can not be used with this resource. Instead, the recommendation is to use the AWS CLI describe-contact-flow. See example below which uses jq to extract the Content attribute and saves it to a local file.
Example Usage
Basic
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const test = new aws.connect.ContactFlow("test", {
    instanceId: "aaaaaaaa-bbbb-cccc-dddd-111111111111",
    name: "Test",
    description: "Test Contact Flow Description",
    type: "CONTACT_FLOW",
    content: JSON.stringify({
        Version: "2019-10-30",
        StartAction: "12345678-1234-1234-1234-123456789012",
        Actions: [
            {
                Identifier: "12345678-1234-1234-1234-123456789012",
                Type: "MessageParticipant",
                Transitions: {
                    NextAction: "abcdef-abcd-abcd-abcd-abcdefghijkl",
                    Errors: [],
                    Conditions: [],
                },
                Parameters: {
                    Text: "Thanks for calling the sample flow!",
                },
            },
            {
                Identifier: "abcdef-abcd-abcd-abcd-abcdefghijkl",
                Type: "DisconnectParticipant",
                Transitions: {},
                Parameters: {},
            },
        ],
    }),
    tags: {
        Name: "Test Contact Flow",
        Application: "Example",
        Method: "Create",
    },
});import pulumi
import json
import pulumi_aws as aws
test = aws.connect.ContactFlow("test",
    instance_id="aaaaaaaa-bbbb-cccc-dddd-111111111111",
    name="Test",
    description="Test Contact Flow Description",
    type="CONTACT_FLOW",
    content=json.dumps({
        "Version": "2019-10-30",
        "StartAction": "12345678-1234-1234-1234-123456789012",
        "Actions": [
            {
                "Identifier": "12345678-1234-1234-1234-123456789012",
                "Type": "MessageParticipant",
                "Transitions": {
                    "NextAction": "abcdef-abcd-abcd-abcd-abcdefghijkl",
                    "Errors": [],
                    "Conditions": [],
                },
                "Parameters": {
                    "Text": "Thanks for calling the sample flow!",
                },
            },
            {
                "Identifier": "abcdef-abcd-abcd-abcd-abcdefghijkl",
                "Type": "DisconnectParticipant",
                "Transitions": {},
                "Parameters": {},
            },
        ],
    }),
    tags={
        "Name": "Test Contact Flow",
        "Application": "Example",
        "Method": "Create",
    })using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
    var test = new Aws.Connect.ContactFlow("test", new()
    {
        InstanceId = "aaaaaaaa-bbbb-cccc-dddd-111111111111",
        Name = "Test",
        Description = "Test Contact Flow Description",
        Type = "CONTACT_FLOW",
        Content = JsonSerializer.Serialize(new Dictionary<string, object?>
        {
            ["Version"] = "2019-10-30",
            ["StartAction"] = "12345678-1234-1234-1234-123456789012",
            ["Actions"] = new[]
            {
                new Dictionary<string, object?>
                {
                    ["Identifier"] = "12345678-1234-1234-1234-123456789012",
                    ["Type"] = "MessageParticipant",
                    ["Transitions"] = new Dictionary<string, object?>
                    {
                        ["NextAction"] = "abcdef-abcd-abcd-abcd-abcdefghijkl",
                        ["Errors"] = new[]
                        {
                        },
                        ["Conditions"] = new[]
                        {
                        },
                    },
                    ["Parameters"] = new Dictionary<string, object?>
                    {
                        ["Text"] = "Thanks for calling the sample flow!",
                    },
                },
                new Dictionary<string, object?>
                {
                    ["Identifier"] = "abcdef-abcd-abcd-abcd-abcdefghijkl",
                    ["Type"] = "DisconnectParticipant",
                    ["Transitions"] = new Dictionary<string, object?>
                    {
                    },
                    ["Parameters"] = new Dictionary<string, object?>
                    {
                    },
                },
            },
        }),
        Tags =
        {
            { "Name", "Test Contact Flow" },
            { "Application", "Example" },
            { "Method", "Create" },
        },
    });
});package main
import (
	"encoding/json"
	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/connect"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		tmpJSON0, err := json.Marshal(map[string]interface{}{
			"Version":     "2019-10-30",
			"StartAction": "12345678-1234-1234-1234-123456789012",
			"Actions": []interface{}{
				map[string]interface{}{
					"Identifier": "12345678-1234-1234-1234-123456789012",
					"Type":       "MessageParticipant",
					"Transitions": map[string]interface{}{
						"NextAction": "abcdef-abcd-abcd-abcd-abcdefghijkl",
						"Errors":     []interface{}{},
						"Conditions": []interface{}{},
					},
					"Parameters": map[string]interface{}{
						"Text": "Thanks for calling the sample flow!",
					},
				},
				map[string]interface{}{
					"Identifier":  "abcdef-abcd-abcd-abcd-abcdefghijkl",
					"Type":        "DisconnectParticipant",
					"Transitions": nil,
					"Parameters":  nil,
				},
			},
		})
		if err != nil {
			return err
		}
		json0 := string(tmpJSON0)
		_, err = connect.NewContactFlow(ctx, "test", &connect.ContactFlowArgs{
			InstanceId:  pulumi.String("aaaaaaaa-bbbb-cccc-dddd-111111111111"),
			Name:        pulumi.String("Test"),
			Description: pulumi.String("Test Contact Flow Description"),
			Type:        pulumi.String("CONTACT_FLOW"),
			Content:     pulumi.String(json0),
			Tags: pulumi.StringMap{
				"Name":        pulumi.String("Test Contact Flow"),
				"Application": pulumi.String("Example"),
				"Method":      pulumi.String("Create"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.connect.ContactFlow;
import com.pulumi.aws.connect.ContactFlowArgs;
import static com.pulumi.codegen.internal.Serialization.*;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }
    public static void stack(Context ctx) {
        var test = new ContactFlow("test", ContactFlowArgs.builder()
            .instanceId("aaaaaaaa-bbbb-cccc-dddd-111111111111")
            .name("Test")
            .description("Test Contact Flow Description")
            .type("CONTACT_FLOW")
            .content(serializeJson(
                jsonObject(
                    jsonProperty("Version", "2019-10-30"),
                    jsonProperty("StartAction", "12345678-1234-1234-1234-123456789012"),
                    jsonProperty("Actions", jsonArray(
                        jsonObject(
                            jsonProperty("Identifier", "12345678-1234-1234-1234-123456789012"),
                            jsonProperty("Type", "MessageParticipant"),
                            jsonProperty("Transitions", jsonObject(
                                jsonProperty("NextAction", "abcdef-abcd-abcd-abcd-abcdefghijkl"),
                                jsonProperty("Errors", jsonArray(
                                )),
                                jsonProperty("Conditions", jsonArray(
                                ))
                            )),
                            jsonProperty("Parameters", jsonObject(
                                jsonProperty("Text", "Thanks for calling the sample flow!")
                            ))
                        ),
                        jsonObject(
                            jsonProperty("Identifier", "abcdef-abcd-abcd-abcd-abcdefghijkl"),
                            jsonProperty("Type", "DisconnectParticipant"),
                            jsonProperty("Transitions", jsonObject(
                            )),
                            jsonProperty("Parameters", jsonObject(
                            ))
                        )
                    ))
                )))
            .tags(Map.ofEntries(
                Map.entry("Name", "Test Contact Flow"),
                Map.entry("Application", "Example"),
                Map.entry("Method", "Create")
            ))
            .build());
    }
}resources:
  test:
    type: aws:connect:ContactFlow
    properties:
      instanceId: aaaaaaaa-bbbb-cccc-dddd-111111111111
      name: Test
      description: Test Contact Flow Description
      type: CONTACT_FLOW
      content:
        fn::toJSON:
          Version: 2019-10-30
          StartAction: 12345678-1234-1234-1234-123456789012
          Actions:
            - Identifier: 12345678-1234-1234-1234-123456789012
              Type: MessageParticipant
              Transitions:
                NextAction: abcdef-abcd-abcd-abcd-abcdefghijkl
                Errors: []
                Conditions: []
              Parameters:
                Text: Thanks for calling the sample flow!
            - Identifier: abcdef-abcd-abcd-abcd-abcdefghijkl
              Type: DisconnectParticipant
              Transitions: {}
              Parameters: {}
      tags:
        Name: Test Contact Flow
        Application: Example
        Method: CreateWith External Content
Use the AWS CLI to extract Contact Flow Content:
% aws connect describe-contact-flow --instance-id 1b3c5d8-1b3c-1b3c-1b3c-1b3c5d81b3c5 --contact-flow-id c1d4e5f6-1b3c-1b3c-1b3c-c1d4e5f6c1d4e5 --region us-west-2 | jq '.ContactFlow.Content | fromjson' contact_flow.jsonUse the generated file as input:
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
import * as std from "@pulumi/std";
const test = new aws.connect.ContactFlow("test", {
    instanceId: "aaaaaaaa-bbbb-cccc-dddd-111111111111",
    name: "Test",
    description: "Test Contact Flow Description",
    type: "CONTACT_FLOW",
    filename: "contact_flow.json",
    contentHash: std.filebase64sha256({
        input: "contact_flow.json",
    }).then(invoke => invoke.result),
    tags: {
        Name: "Test Contact Flow",
        Application: "Example",
        Method: "Create",
    },
});import pulumi
import pulumi_aws as aws
import pulumi_std as std
test = aws.connect.ContactFlow("test",
    instance_id="aaaaaaaa-bbbb-cccc-dddd-111111111111",
    name="Test",
    description="Test Contact Flow Description",
    type="CONTACT_FLOW",
    filename="contact_flow.json",
    content_hash=std.filebase64sha256(input="contact_flow.json").result,
    tags={
        "Name": "Test Contact Flow",
        "Application": "Example",
        "Method": "Create",
    })using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
using Std = Pulumi.Std;
return await Deployment.RunAsync(() =>
{
    var test = new Aws.Connect.ContactFlow("test", new()
    {
        InstanceId = "aaaaaaaa-bbbb-cccc-dddd-111111111111",
        Name = "Test",
        Description = "Test Contact Flow Description",
        Type = "CONTACT_FLOW",
        Filename = "contact_flow.json",
        ContentHash = Std.Filebase64sha256.Invoke(new()
        {
            Input = "contact_flow.json",
        }).Apply(invoke => invoke.Result),
        Tags =
        {
            { "Name", "Test Contact Flow" },
            { "Application", "Example" },
            { "Method", "Create" },
        },
    });
});package main
import (
	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/connect"
	"github.com/pulumi/pulumi-std/sdk/go/std"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		invokeFilebase64sha256, err := std.Filebase64sha256(ctx, &std.Filebase64sha256Args{
			Input: "contact_flow.json",
		}, nil)
		if err != nil {
			return err
		}
		_, err = connect.NewContactFlow(ctx, "test", &connect.ContactFlowArgs{
			InstanceId:  pulumi.String("aaaaaaaa-bbbb-cccc-dddd-111111111111"),
			Name:        pulumi.String("Test"),
			Description: pulumi.String("Test Contact Flow Description"),
			Type:        pulumi.String("CONTACT_FLOW"),
			Filename:    pulumi.String("contact_flow.json"),
			ContentHash: invokeFilebase64sha256.Result,
			Tags: pulumi.StringMap{
				"Name":        pulumi.String("Test Contact Flow"),
				"Application": pulumi.String("Example"),
				"Method":      pulumi.String("Create"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.connect.ContactFlow;
import com.pulumi.aws.connect.ContactFlowArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }
    public static void stack(Context ctx) {
        var test = new ContactFlow("test", ContactFlowArgs.builder()
            .instanceId("aaaaaaaa-bbbb-cccc-dddd-111111111111")
            .name("Test")
            .description("Test Contact Flow Description")
            .type("CONTACT_FLOW")
            .filename("contact_flow.json")
            .contentHash(StdFunctions.filebase64sha256(Filebase64sha256Args.builder()
                .input("contact_flow.json")
                .build()).result())
            .tags(Map.ofEntries(
                Map.entry("Name", "Test Contact Flow"),
                Map.entry("Application", "Example"),
                Map.entry("Method", "Create")
            ))
            .build());
    }
}resources:
  test:
    type: aws:connect:ContactFlow
    properties:
      instanceId: aaaaaaaa-bbbb-cccc-dddd-111111111111
      name: Test
      description: Test Contact Flow Description
      type: CONTACT_FLOW
      filename: contact_flow.json
      contentHash:
        fn::invoke:
          Function: std:filebase64sha256
          Arguments:
            input: contact_flow.json
          Return: result
      tags:
        Name: Test Contact Flow
        Application: Example
        Method: CreateImport
Using pulumi import, import Amazon Connect Contact Flows using the instance_id and contact_flow_id separated by a colon (:). For example:
$ pulumi import aws:connect/contactFlow:ContactFlow example f1288a1f-6193-445a-b47e-af739b2:c1d4e5f6-1b3c-1b3c-1b3c-c1d4e5f6c1d4e5