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": map[string]interface{}{},
"Parameters": map[string]interface{}{},
},
},
})
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: Create
With 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.json
Use 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: pulumi.String(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: Create
Import
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
Properties
Used to trigger updates. Must be set to a base64-encoded SHA256 hash of the Contact Flow source specified with filename
.
Specifies the description of the Contact Flow.
Specifies the identifier of the hosting Amazon Connect Instance.