برنامه نویسی

آمازون اتصال با Terraform استقرار.

آمازون کانکت چیست؟

آمازون کانکت یک مرکز تماس ابری پرداختی است. هیچ حداقل کارمزد اجباری، تعهدات بلندمدت یا هزینه‌های مجوز اولیه وجود ندارد، و قیمت‌گذاری بر اساس حداکثر ظرفیت، صندلی‌های نمایندگی، یا نگهداری نیست. شما فقط برای چیزی که استفاده می کنید هزینه می پردازید. آمازون کانکت قابلیت هایی را برای مرکز تماس و فضای کاری نماینده شما فراهم می کند، از جمله پیش بینی، برنامه ریزی ظرفیت، زمان بندی و کمپین های خروجی، و همچنین صدا، چت، وظایف، نمایه های مشتری، لنز تماسی، صدا، حکمت، موارد و راهنماها.

AWS Free Tier

به عنوان بخشی از AWS Free Tier، می توانید به صورت رایگان از Amazon Connect استفاده کنید.

در طول 12 ماه اول اجرای اولیه مرکز تماس ابری آمازون کانکت در هر منطقه، دریافت خواهید کرد:

  • 90 دقیقه در ماه استفاده از سرویس آمازون کانکت
  • یک شماره تماس مستقیم به داخل (DID) کشوری که منطقه AWS در آن قرار دارد
  • 30 دقیقه در ماه تماس های ورودی DID
  • 30 دقیقه در ماه تماس های خروجی با شماره های کشوری که منطقه AWS در آن واقع شده است

برای مناطق ایالات متحده، شما همچنین دریافت می کنید:

  • یک شماره تلفن رایگان ایالات متحده
  • 30 دقیقه در ماه تماس های دریافتی رایگان از ایالات متحده.

به عنوان مثال، اگر نمونه خود را در منطقه آسیا و اقیانوسیه (سیدنی) ایجاد کنید، یک شماره DID استرالیایی دریافت کنید، 30 دقیقه تماس DID ورودی به آن شماره دریافت می کنید، و می توانید از Amazon Connect برای برقراری 30 دقیقه تماس خروجی با شماره ها استفاده کنید. در استرالیا . .

سایر قابلیت های آمازون کانکت که در طول سال اول آن نیز بخشی از سطح رایگان هستند عبارتند از:

500 پیام در ماه از چت آمازون کانکت
100 کار در ماه با آمازون کانکت
1000 پروفایل مشتری در ماه با نمایه های مشتری آمازون اتصال
90 دقیقه در ماه برای تماس صوتی با لنز تماسی Amazon Connect
500 پیام در ماه برای پیام های چت با لنز تماسی Amazon Connect
180 تراکنش در ماه با Amazon Connect Voice ID، به طور مساوی بین ثبت نام، احراز هویت و تشخیص تقلب تقسیم می شود.
90 روز استفاده رایگان از آمازون کانکت پیش بینی، برنامه ریزی ظرفیت و زمان بندی زمانی که برای اولین بار این ویژگی را فعال می کنید

توضیحات تصویر

استقرار نمونه را با 3 Contact Flow وصل کنید

این مخزن شامل فایل های مورد نیاز برای استقرار یک نمونه Connect در AWS، به همراه 3 جریان تماس، یک جدول DynamoDB و یک تابع Lambda است.

منابع مستقر در این مانیفست:

  • اتصال نمونه
  • 3 جریان تماس
  • Tabla DynamoDB
  • تابع لامبدا

راه حل – نمودار:

توضیحات تصویر

تست شده با:

محیط کاربرد نسخه
WSL2 اوبونتو 20.04 Terraform نسخه 1.4.6
WSL2 اوبونتو 20.04 aws-cli نسخه 2.7.9

روش اجرا:

قبل از استقرار منابع، مطمئن شوید که فایل های زیر را در دایرکتوری دارید:

  • main.tf
  • provider.tf
  • default.auto.tfvars
  • variable.tf

سپس اطلاعات زیر را در مورد هر فایل ارائه می دهد:

بایگانی main.tf:

# Create Instace Connect
module "lambda" {
  source      = "./module/lambda"
  table_name  = var.table_name
  name_prefix = var.name_prefix
  lambda_name = var.lambda_name
}

module "connect" {
  source                   = "./module/connect"
  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]
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بایگانیprovider.tf:

# AWS provider version definition
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 4.0"
    }
  }
}

#Provider for the network account
provider "aws" {
  region  = var.aws_region
  profile = var.aws_profile
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بایگانی default.auto.tfvars:

#Variable Generales
aws_profile              = "connect"
aws_region               = "us-east-1"
name_prefix              = "First-Release"
project-tags = {
  DeployBy   = "example",
  Enviroment = "Dev"
}

#Variable Connect
instance_alias           = "example-demo-connect-terraform"
name_user                = "connect"
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"
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بایگانی variable.tf:

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

variable "aws_region" {
  description = "[REQUERIDO] El AWS Region para implementar los recursos."
  type        = 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 Connect."
  type        = string
}

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

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

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

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

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

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

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

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

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

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

# Variables de Etiquetas #
variable "project-tags" {
  type    = map(string)
  default = {}
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در دایرکتوری که فایل‌های فوق‌الذکر ایجاد شده‌اند، پروژه خود را شروع می‌کنیم و مانیفست را به صورت زیر اجرا می‌کنیم:

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
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نویسندگان:

  • 👩‍💻 هرمس وارگاس
  • 👩‍💻دیگو موخیکا

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا