代理从 Amazon Connect 发起的 WhatsApp 消息

发布: (2026年2月26日 GMT+8 09:44)
8 分钟阅读
原文: Dev.to

Source: Dev.to

学习如何让客服代理在 Agent Workspace 中仅需 一次点击 即可发送 WhatsApp 模板消息。非常适合希望在不离开 Amazon Connect 控制台的情况下,实现 WhatsApp 出站通信自动化和简化的团队。

为什么要这样做?

  • 主动性:代理可以直接从他们的桌面联系客户。
  • 无错误:消除复制‑粘贴号码或使用手动模板的需求。
  • 完整集成:所有内容由 Contact Flows、Lambda 函数和一个表单(Connect View)编排。

一般流程

  1. Contact Flow 调用 Lambda get_customer_data 获取客户信息(姓名、电话等)。
    • 可选:使用 Customer Profile 块在 Customer Profiles 中查找数据。
  2. 流程在 Agent Workspace 中显示一个 表单 (View),并预填充数据。
  3. 代理审查/编辑信息并点击 发送
  4. 第二个 Lambda (send_whatsapp_message) 通过 AWS End User Messaging Social 发送模板消息。

先决条件

需求详情
WhatsApp Business 账户 (WABA)创建一个新的或将现有的迁移到 AWS。查看此处的步骤。
Meta Business用于将账户绑定到 AWS End User Messaging Social 所必需的。
电话号码必须能够接收短信/语音验证码,并已添加到 WhatsApp。⚠️ 请勿使用个人号码。
Amazon Connect 实例如果没有,请按照官方指南创建。
INSTANCE_ID可在控制台或 ARN 中找到:arn:aws:connect:::instance/INSTANCE_ID
WhatsApp 消息模板在 End User Messaging 中创建(与您的号码位于同一地区)。
AWS CDK用于部署基础设施。
AWS Systems Manager 参数存储用于存储模板配置。

初始配置

  1. 编辑 config.py 并填写你的 INSTANCE_ID

    INSTANCE_ID = ""
  2. 克隆仓库

    git clone https://github.com/aws-samples/sample-whatsapp-end-user-messaging-connect-chat.git
    cd sample-whatsapp-end-user-messaging-connect-chat/agent-initiated-whatsapp
  3. 使用 CDK 部署
    请遵循仓库中包含的 CDK 部署指南

AWS Systems Manager (SSM) 参数

使用你的配置更新参数 /whatsapp_template/config

{
  "message": {
    "messaging_product": "whatsapp",
    "to": "PHONE_NUMBER",
    "recipient_type": "individual",
    "type": "template",
    "template": {
      "name": "nombre_de_tu_plantilla",
      "language": { "code": "en_US" },
      "components": [
        {
          "type": "body",
          "parameters": []
        }
      ]
    }
  },
  "META_API_VERSION": "v23.0",
  "ORIGINATION_PHONE_NUMBER_ID": ""
}

字段说明

参数描述
template.name在 End User Messaging 中创建的 WhatsApp 模板名称。
template.language.code语言代码(例如:en_US)。
ORIGINATION_PHONE_NUMBER_IDAWS End User Messaging Social 中的电话号码 ID。
META_API_VERSIONMeta API 版本(默认 v23.0)。

在 Amazon Connect 中的配置

视图(Form)

访问: https://.my.connect.aws/views

  • 查找视图 enviarWhatsAppForm007
  • 这是代理用于查看数据并发送消息的表单。
  • WhatsApp 字段设置为 password 以隐藏号码(也可以通过联系属性获取)。

联系流

  • 导航到流 SendWhatsAppGuideFlow007

a) 第一个块 Invoke AWS Lambda function

  • 选择包含 GetCustomerData 的 Lambda。

  • 示例 mock 函数(请用真实逻辑替换):

    def lambda_handler(event, context):
        return {
            "fullName": "Juan Pérez",
            "phoneNumber": "+XXXXXXXX",
            "input4": "Entregado",
            "input3": "Puzzle 1000 piezas",
            "input2": "P12345",
            "input1": "Juan",
        }
  • 将此 mock 替换为你的数据源(Customer Profiles、DynamoDB、外部 API 等)。

  • 点击 Confirm

b) 块 Show view

  • 选择视图 enviarWhatsAppForm007

  • 将 Lambda 返回的值映射到表单字段:

    表单字段JSON 映射
    fullName$.External.fullName
    whatsappNumber$.External.phoneNumber
    input1input4$.External.input1$.External.input4
  • 点击 Confirm

c) 第二个块 Invoke AWS Lambda function

  • 选择包含 SendWhatsappMessage 的 Lambda(使用 ARN)。

  • 此 Lambda 读取 SSM 参数配置,提取表单值并发送消息:

    import json
    import boto3
    
    ssm = boto3.client('ssm')
    eums = boto3.client('eums')   # End User Messaging Social client (pseudocódigo)
    
    def lambda_handler(event, context):
        # 1️⃣ 从 SSM 获取模板配置
        param = ssm.get_parameter(Name='/whatsapp_template/config')
        config = json.loads(param['Parameter']['Value'])
    
        # 2️⃣ 提取联系属性中的数据
        contact_attrs = event['Details']['ContactData']['Attributes']
        config['message']['to'] = contact_attrs.get('whatsappNumber')
        # 填充正文参数(如果有)
        # ...
    
        # 3️⃣ 通过 EUMS 发送消息
        response = eums.send_message(**config['message'])
        return response
  • 点击 Confirm

最终步骤

  1. 部署基础设施 使用 CDK。
  2. 更新 SSM 参数 使用你的模板配置。
  3. 配置视图 enviarWhatsAppForm007 在 Amazon Connect 中。
  4. 修改 LambdaGetCustomerDataSendWhatsappMessage)以符合你的业务逻辑。
  5. 将 Lambda 关联 到 Contact Flow SendWhatsAppGuideFlow007 的相应块。
  6. 测试:打开 Agent Workspace,启动一次联系,检查表单是否预填,以及消息是否能一键发送。

有用资源

  • GitHub 仓库
  • AWS End User Messaging Social 文档
  • WhatsApp 模板创建指南(在 EUMS 控制台)
  • AWS CDK – 入门指南

Lambda 代码

def da_handler(event, context):
    # Carga la configuración de la plantilla desde SSM Parameter Store
    config = get_ssm_parameter(CONFIG_PARAM_NAME)
    message_payload = config["message"]

    # Extrae los valores del formulario desde los atributos de contacto
    attributes = event["Details"]["ContactData"]["Attributes"]
    phone_number = attributes.get("phoneNumber")

    # Construye los parámetros de la plantilla desde input1..input4
    template_params = build_template_parameters(
        attributes, ["input1", "input2", "input3", "input4"]
    )

    # Envía usando AWS End User Messaging Social
    response = social_client.send_whatsapp_message(
        originationPhoneNumberId=origination_phone_number_id,
        message=bytes(json.dumps(message_payload), "utf-8"),
        metaApiVersion=meta_api_version,
    )
    return {"result": "OK", "messageId": response.get("messageId", "")}

注意:Confirm 保存。然后 SavePublish 联系流。

Amazon Connect 视图配置

  1. 导航到 Amazon Connect 的视图
    https://.my.connect.aws/views

  2. 创建一个类型为 Guide 的新视图。

  3. Connect Application 组件拖到画布上。

    • contactFlowId 设置为已部署的联系流 SendWhatsAppGuideFlow007
  4. 为视图命名并点击 Publish

创建工作区

  1. 导航到 Amazon Connect 的工作区
    https://.my.connect.aws/workspaces

  2. 点击 Add new workspace 并填写:

    • 名称
    • 描述
    • 标题
  3. 将此工作区分配给所需的用户或路由配置文件。

  4. 添加新页面

    • 使用 Set page with custom page slug
    • 选择在上一步创建的视图(包含 Connect Application 组件的那个)。
    • 使用自定义 slug,例如:
    /page/send_whatsapp
  5. 保存页面。

  6. Agent Workspace 的顶部导航栏中选择你的自定义工作区。

现在,坐席可以导航到自定义页面,并使用指南向客户发送 WhatsApp 模板消息。

代理工作流程

  • 打开自定义页面时,会显示一个 Connect Application,它执行联系流。
  • 流程会显示一个表单,表单的值预先从客户数据的 Lambda 中加载。
  • 代理审查、修改并提交表单。
  • 提交后,会调用 WhatsApp 发送的 Lambda,携带表单的所有参数以发送最终消息。

扩展解决方案的想法

  • 将客户数据的 Lambda 连接到 Amazon Connect Customer ProfilesDynamoDB
  • 在表单中添加额外的验证。
  • 支持由坐席选择的多个 WhatsApp 模板。
  • 根据模板中的变量数量动态添加输入字段。

附加资源

  • [项目仓库]
  • [模板创建指南]
  • [先决条件指南]
  • [CDK 部署指南]
0 浏览
Back to Blog

相关文章

阅读更多 »