{
  "name": "DFC Demo V1 - Language Selection",
  "type": "CONTACT_FLOW_MODULE",
  "sourceId": "18bc14e7-57f2-4e14-a955-3e38f8b7e467",
  "content": {
    "Version": "2019-10-30",
    "StartAction": "enabled",
    "Metadata": {
      "entryPointPosition": {
        "x": 20,
        "y": 20
      },
      "snapToGrid": false,
      "ActionMetadata": {
        "enabled": {
          "position": {
            "x": 40,
            "y": 40
          }
        },
        "ask-channel": {
          "position": {
            "x": 300,
            "y": 40
          }
        },
        "ask": {
          "position": {
            "x": 560,
            "y": 40
          }
        },
        "choice-from-attr": {
          "position": {
            "x": 820,
            "y": 40
          }
        },
        "set-english": {
          "position": {
            "x": 1080,
            "y": 40
          }
        },
        "set-spanish": {
          "position": {
            "x": 1340,
            "y": 40
          }
        },
        "lookup-language": {
          "position": {
            "x": 40,
            "y": 260
          }
        },
        "check-language-error": {
          "position": {
            "x": 300,
            "y": 260
          }
        },
        "stash-language": {
          "position": {
            "x": 560,
            "y": 260
          }
        },
        "set-voice": {
          "position": {
            "x": 820,
            "y": 260
          }
        },
        "done": {
          "position": {
            "x": 1080,
            "y": 260
          }
        }
      }
    },
    "Actions": [
      {
        "Identifier": "enabled",
        "Parameters": {
          "ComparisonValue": "$.Attributes.langSelect"
        },
        "Transitions": {
          "Errors": [
            {
              "NextAction": "done",
              "ErrorType": "NoMatchingCondition"
            }
          ],
          "Conditions": [
            {
              "NextAction": "ask-channel",
              "Condition": {
                "Operator": "Equals",
                "Operands": [
                  "true"
                ]
              }
            }
          ],
          "NextAction": "done"
        },
        "Type": "Compare"
      },
      {
        "Identifier": "ask-channel",
        "Parameters": {
          "ComparisonValue": "$.Channel"
        },
        "Transitions": {
          "Errors": [
            {
              "NextAction": "choice-from-attr",
              "ErrorType": "NoMatchingCondition"
            }
          ],
          "Conditions": [
            {
              "NextAction": "ask",
              "Condition": {
                "Operator": "Equals",
                "Operands": [
                  "VOICE"
                ]
              }
            }
          ],
          "NextAction": "choice-from-attr"
        },
        "Type": "Compare"
      },
      {
        "Identifier": "ask",
        "Parameters": {
          "Text": "For English, press 1. Para espa\u00f1ol, oprima 2.",
          "StoreInput": "False",
          "InputTimeLimitSeconds": "8"
        },
        "Transitions": {
          "Errors": [
            {
              "NextAction": "set-english",
              "ErrorType": "NoMatchingCondition"
            },
            {
              "NextAction": "set-english",
              "ErrorType": "InputTimeLimitExceeded"
            },
            {
              "NextAction": "set-english",
              "ErrorType": "NoMatchingError"
            }
          ],
          "Conditions": [
            {
              "NextAction": "set-english",
              "Condition": {
                "Operator": "Equals",
                "Operands": [
                  "1"
                ]
              }
            },
            {
              "NextAction": "set-spanish",
              "Condition": {
                "Operator": "Equals",
                "Operands": [
                  "2"
                ]
              }
            }
          ],
          "NextAction": "set-english"
        },
        "Type": "GetParticipantInput"
      },
      {
        "Identifier": "choice-from-attr",
        "Parameters": {
          "ComparisonValue": "$.Attributes.dfcLangChoice"
        },
        "Transitions": {
          "Errors": [
            {
              "NextAction": "set-english",
              "ErrorType": "NoMatchingCondition"
            }
          ],
          "Conditions": [
            {
              "NextAction": "set-spanish",
              "Condition": {
                "Operator": "Equals",
                "Operands": [
                  "2"
                ]
              }
            },
            {
              "NextAction": "set-spanish",
              "Condition": {
                "Operator": "Equals",
                "Operands": [
                  "es-US"
                ]
              }
            }
          ],
          "NextAction": "set-english"
        },
        "Type": "Compare"
      },
      {
        "Identifier": "set-english",
        "Parameters": {
          "Attributes": {
            "dfcLangPath": "/Language/en-US"
          }
        },
        "Transitions": {
          "Errors": [
            {
              "NextAction": "done",
              "ErrorType": "NoMatchingError"
            }
          ],
          "Conditions": [],
          "NextAction": "lookup-language"
        },
        "Type": "UpdateContactAttributes"
      },
      {
        "Identifier": "set-spanish",
        "Parameters": {
          "Attributes": {
            "dfcLangPath": "/Language/es-US"
          }
        },
        "Transitions": {
          "Errors": [
            {
              "NextAction": "done",
              "ErrorType": "NoMatchingError"
            }
          ],
          "Conditions": [],
          "NextAction": "lookup-language"
        },
        "Type": "UpdateContactAttributes"
      },
      {
        "Identifier": "lookup-language",
        "Parameters": {
          "LambdaFunctionARN": "arn:aws:lambda:<REGION>:<ACCOUNT_ID>:function:dfc-query-by-path-<STAGE>",
          "InvocationTimeLimitSeconds": "8",
          "LambdaInvocationAttributes": {
            "path": "$.Attributes.dfcLangPath",
            "debug": "false"
          },
          "ResponseValidation": {
            "ResponseType": "JSON"
          }
        },
        "Transitions": {
          "Errors": [
            {
              "NextAction": "done",
              "ErrorType": "NoMatchingError"
            }
          ],
          "Conditions": [],
          "NextAction": "check-language-error"
        },
        "Type": "InvokeLambdaFunction"
      },
      {
        "Identifier": "check-language-error",
        "Parameters": {
          "ComparisonValue": "$.External.error"
        },
        "Transitions": {
          "Errors": [
            {
              "NextAction": "stash-language",
              "ErrorType": "NoMatchingCondition"
            }
          ],
          "Conditions": [
            {
              "NextAction": "done",
              "Condition": {
                "Operator": "Equals",
                "Operands": [
                  "ITEM_NOT_FOUND"
                ]
              }
            },
            {
              "NextAction": "done",
              "Condition": {
                "Operator": "Equals",
                "Operands": [
                  "ENTITY_NOT_FOUND"
                ]
              }
            },
            {
              "NextAction": "done",
              "Condition": {
                "Operator": "Equals",
                "Operands": [
                  "MISSING_REQUIRED_FIELDS"
                ]
              }
            },
            {
              "NextAction": "done",
              "Condition": {
                "Operator": "Equals",
                "Operands": [
                  "INTERNAL_ERROR"
                ]
              }
            }
          ],
          "NextAction": "done"
        },
        "Type": "Compare"
      },
      {
        "Identifier": "stash-language",
        "Parameters": {
          "Attributes": {
            "langCode": "$.External.data.code",
            "langName": "$.External.data.name",
            "voiceId": "$.External.data.pollyVoiceId",
            "welcome": "$.External.data.promptSet.welcome.content",
            "outOfHours": "$.External.data.promptSet.outOfHours.content"
          }
        },
        "Transitions": {
          "Errors": [
            {
              "NextAction": "done",
              "ErrorType": "NoMatchingError"
            }
          ],
          "Conditions": [],
          "NextAction": "set-voice"
        },
        "Type": "UpdateContactAttributes"
      },
      {
        "Identifier": "set-voice",
        "Parameters": {
          "TextToSpeechEngine": "Neural",
          "TextToSpeechStyle": "None",
          "TextToSpeechVoice": "$.Attributes.voiceId"
        },
        "Transitions": {
          "Errors": [
            {
              "NextAction": "done",
              "ErrorType": "NoMatchingError"
            }
          ],
          "Conditions": [],
          "NextAction": "done"
        },
        "Type": "UpdateContactTextToSpeechVoice"
      },
      {
        "Identifier": "done",
        "Type": "EndFlowModuleExecution",
        "Parameters": {},
        "Transitions": {}
      }
    ],
    "Settings": {
      "InputParameters": [],
      "OutputParameters": [],
      "Transitions": [
        {
          "DisplayName": "Success",
          "ReferenceName": "Success",
          "Description": ""
        }
      ]
    }
  }
}
