UPDATES

Amazon Join with Terraform deploy.


¿Qué es Amazon Join?

Amazon Join es un centro de contacto en la nube de pago por uso. No hay tarifas mínimas obligatorias, compromisos a largo plazo o cargos de licencias iniciales, y los precios no se basan en la capacidad máxima, los puestos de agente ni el mantenimiento; solo paga po lo que usa. Amazon Join ofrece capacidad para su centro de contacto y espacio de trabajo de los agentes, entre los que la previsión, planificación de capacidad, programación y campañas salientes, así como la voz, conversación, tareas, Perfiles de clientes, Contact Lens, ID de voz, Knowledge, casos y guías.



Nivel gratuito de AWS

Como parte del nivel gratuito de AWS, puede comenzar a utilizar Amazon Join de manera gratuita.

Durante los primeros 12 meses de la implementación inicial del centro de contacto en la nube de Amazon Join en cualquier región, recibirá:

  • 90 minutos al mes de uso del servicio Amazon Join
  • Un número de marcación interna directa (DID) del país en el que se encuentra la región de AWS
  • 30 minutos al mes de llamadas DID entrantes
  • 30 minutos al mes de llamadas salientes realizadas a números en el país en el que se encuentra la región de AWS

Para las regiones de EE. UU., también recibe:

  • Un número gratuito de EE. UU.
  • 30 minutos al mes de llamadas entrantes gratuitas realizadas desde EE. UU.

Por ejemplo, si crea su instancia en la región Asia-Pacífico (Sídney), obtiene un número DID de Australia, recibe 30 minutos de llamadas DID entrantes a ese número y puede usar Amazon Join para hacer 30 minutos de llamadas salientes a números de Australia.

Otras capacidades de Amazon Join que también forman parte del nivel gratuito durante su primer año incluyen:

500 mensajes al mes del chat de Amazon Join
100 tareas al mes con Amazon Join
1000 perfiles de cliente al mes con Perfiles de clientes de Amazon Join
90 minutos al mes para llamadas de audio con Amazon Join Contact Lens
500 mensajes al mes para mensajes de chat con Amazon Join Contact Lens
180 transacciones por mes con Amazon Join Voice ID, repartidas de manera equitativa entre inscripciones, autenticación y detección de fraude
90 días de uso gratuito de previsión, planificación de capacidad y programación de Amazon Join al activar la característica por primera vez

Image description



Despliegue de instancia de Join con 3 Contact Circulation

Este repositorio contiene los archivos necesarios para desplegar una instancia de Join en AWS, junto con 3 flujos de contacto (Contact Circulation), una tabla DynamoDB y una función Lambda.



Recursos desplegados en este manifiesto:

  • Instancia de Join
  • 3 Contact Circulation
  • Tabla DynamoDB
  • Función Lambda



Solución – Diagrama:

Image description



Probado con:

Ambiente Aplicación Versión
WSL2 Ubuntu 20.04 Terraform v1.4.6
WSL2 Ubuntu 20.04 aws-cli v2.7.9



Procedimiento de implementación:

Antes de desplegar los recursos, asegúrate de tener los siguientes archivos en el directorio:

  • principal.tf
  • supplier.tf
  • default.auto.tfvars
  • variable.tf

A continuación, proporciona la siguiente información en cada archivo:

Archivo principal.tf:

# Create Instace Join
module "lambda" {
  supply      = "./module/lambda"
  table_name  = var.table_name
  name_prefix = var.name_prefix
  lambda_name = var.lambda_name
}

module "join" {
  supply                   = "./module/join"
  aws_profile              = var.aws_profile
  aws_region               = var.aws_region
  identity_management_type = var.identity_management_type
  instance_alias           = var.instance_alias
  name_user                = var.name_user
  password_user            = var.password_user
  first_name               = var.first_name
  last_name                = var.last_name
  country_code             = var.country_code
  name_prefix              = var.name_prefix
  phone_type               = var.phone_type
  type_contactflow         = var.type_contactflow
  lambda_arn               = module.lambda.lambda_arn
  lambda_name              = var.lambda_name

  depends_on = [module.lambda]
}
Enter fullscreen mode

Exit fullscreen mode

Archivosupplier.tf:

# AWS supplier model definition
terraform {
  required_providers {
    aws = {
      supply  = "hashicorp/aws"
      model = "~> 4.0"
    }
  }
}

#Supplier for the community account
supplier "aws" {
  area  = var.aws_region
  profile = var.aws_profile
}
Enter fullscreen mode

Exit fullscreen mode

Archivo default.auto.tfvars:

#Variable Generales
aws_profile              = "join"
aws_region               = "us-east-1"
name_prefix              = "First-Launch"
project-tags = {
  DeployBy   = "instance",
  Enviroment = "Dev"
}

#Variable Join
instance_alias           = "example-demo-connect-terraform"
name_user                = "join"
password_user            = "Password123"
first_name               = "FirstName"
last_name                = "LastName"
country_code             = "AR" ## https://countrycode.org/
phone_type               = "SOFT_PHONE"      ## otras opciones (DESK_PHONE)
identity_management_type = "CONNECT_MANAGED" ## Otra opciones (SAML, EXISTING_DIRECTORY)
type_contactflow         = "CONTACT_FLOW"    ## Otras opciones (CUSTOMER_QUEUE, CUSTOMER_HOLD, CUSTOMER_WHISPER, AGENT_HOLD, AGENT_WHISPER, OUTBOUND_WHISPER, AGENT_TRANSFER, QUEUE_TRANSFER )

#Variable Dynamo y lambda
table_name               = "pedidos_y_facturas"
lambda_name              = "Lambda-valicacion-flow"
Enter fullscreen mode

Exit fullscreen mode

Archivo variable.tf:

variable "aws_profile" {
  description = "[REQUERIDO] Profile utilizado para realizar el despliegue."
  sort        = string
}

variable "aws_region" {
  description = "[REQUERIDO] El AWS Area para implementar los recursos."
  sort        = string
}

variable "identity_management_type" {
  description = "[REQUERIDO] Tipo de gestión de identidad adjunto a la instancia."
}

variable "instance_alias" {
  description = "[REQUERIDO] Alias de la instancia de Join."
  sort        = string
}

variable "name_user" {
  description = "[REQUERIDO] Nombre para la creación de usuario."
  sort        = string
}

variable "password_user" {
  description = "[REQUERIDO] Contraseña para la creación de usuario."
  sort        = string
}

variable "first_name" {
  description = "[REQUERIDO] Nombre del usuario."
  sort        = string
}

variable "last_name" {
  description = "[REQUERIDO] Apellido del usuario."
  sort        = string
}

variable "country_code" {
  description = "[REQUERIDO] Código telefónico del país."
  sort        = string
}

variable "name_prefix" {
  description = "[REQUERIDO] Prefijo del nombre."
  sort        = string
}

variable "phone_type" {
  description = "[REQUERIDO] Tipo de número de teléfono."
  sort        = string
}

variable "type_contactflow" {
  description = "[REQUERIDO] Tipo de flujo de contacto."
  sort        = string
}

variable "table_name" {
  description = "[REQUERIDO] Nombre de la tabla de DynamoDB."
}

variable "lambda_name" {
  description = "[REQUERIDO] Nombre de la función Lambda."
  sort        = string
}

# Variables de Etiquetas #
variable "project-tags" {
  sort    = map(string)
  default = {}
}
Enter fullscreen mode

Exit fullscreen mode

Ubicado en el directorio donde se crearon los archivos antes mencionados, iniciamos nuestro proyecto y desplegamos el manifiesto de la siguiente forma:

terraform init     = Inicializamos terraform
terraform fmt      = Para darle formato a los archivos
terraform validate = Validamos que no tengamos alguna inconsistencia en los recursos
terraform plan     = Realizamos un plan para verificar los recursos a desplegar
terraform apply    = Realizamos ya el despliegue de los recursos
Enter fullscreen mode

Exit fullscreen mode



authors:

  • 👩‍💻 Hermes Vargas
  • 👩‍💻 Diego Mujica

Leave a Reply

Your email address will not be published. Required fields are marked *