Skip to content

Instantly share code, notes, and snippets.

@cweems
Created January 22, 2021 17:42
Show Gist options
  • Save cweems/80e1f9352d4719b8fc31c08891534809 to your computer and use it in GitHub Desktop.
Save cweems/80e1f9352d4719b8fc31c08891534809 to your computer and use it in GitHub Desktop.
terraform {
required_providers {
twilio = {
source = "RJPearson94/twilio"
version = ">= 0.2.1"
}
}
}
provider "twilio" {
account_sid = ""
auth_token = ""
}
resource "twilio_phone_number" "phone_number" {
account_sid = ""
area_code = "413"
voice {
url = twilio_studio_flow.flow.webhook_url
}
}
data "twilio_taskrouter_workspace" "workspace" {
sid = ""
}
data "twilio_taskrouter_task_queue" "everyone_queue" {
workspace_sid = data.twilio_taskrouter_workspace.workspace.sid
sid = ""
}
data "twilio_taskrouter_task_channel" "voice" {
workspace_sid = data.twilio_taskrouter_workspace.workspace.sid
sid = ""
}
resource "twilio_taskrouter_workflow" "did_workflow" {
workspace_sid = data.twilio_taskrouter_workspace.workspace.sid
friendly_name = "Test Workflow"
configuration = <<EOF
{
"task_routing": {
"filters": [
{
"filter_friendly_name": "Match By Worker Phone Number",
"expression": "1==1",
"targets": [
{
"queue": "${data.twilio_taskrouter_task_queue.everyone_queue.sid}",
"expression": "task.phone_number CONTAINS worker.phone_number",
"timeout": 60,
"skip_if": "1==1"
},
{
"queue": "${data.twilio_taskrouter_task_queue.everyone_queue.sid}"
}
]
}
],
"default_filter": {
"queue": "${data.twilio_taskrouter_task_queue.everyone_queue.sid}"
}
}
}
EOF
}
resource "twilio_studio_flow" "flow" {
friendly_name = "Test studio flow"
status = "draft"
definition = <<EOF
{
"description": "Direct Inbound",
"states": [
{
"name": "Trigger",
"type": "trigger",
"transitions": [
{
"event": "incomingMessage"
},
{
"next": "Welcome",
"event": "incomingCall"
},
{
"event": "incomingRequest"
}
],
"properties": {
"offset": {
"x": 40,
"y": -120
}
}
},
{
"name": "ConnectToAgentByDID",
"type": "send-to-flex",
"transitions": [
{
"event": "callComplete"
},
{
"event": "failedToEnqueue"
},
{
"event": "callFailure"
}
],
"properties": {
"offset": {
"x": 70,
"y": 330
},
"workflow": "${twilio_taskrouter_workflow.did_workflow.sid}",
"channel": "${data.twilio_taskrouter_task_channel.voice.sid}",
"attributes": "{\n\"name\": \"{{trigger.call.From}}\" ,\n\"phone_number\": \"{{trigger.call.To}}\",\n\"type\": \"inbound\", \n\"direction\": \"inbound\"}"
}
},
{
"name": "Welcome",
"type": "say-play",
"transitions": [
{
"next": "ConnectToAgentByDID",
"event": "audioComplete"
}
],
"properties": {
"voice": "Polly.Joanna",
"offset": {
"x": 60,
"y": 70
},
"loop": 1,
"say": " ",
"language": "en-US"
}
}
],
"initial_state": "Trigger",
"flags": {
"allow_concurrent_calls": true
}
}
EOF
validate = true
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment