使用亚马逊云科技终端用户消息社交 WhatsApp 实现工作流程自动化

作者: 布鲁诺·乔吉尼, Rakshith Rao |

在当今世界,WhatsApp 已转变为一种广泛使用的通信应用程序,全球拥有超过 27 亿用户。作为企业的所有者,您可能拥有经常使用 WhatsApp 的客户。这为使用 WhatsApp 作为附加渠道提供了一个机会,可以提高知名度并以更有效的方式与客户互动。WhatsApp 的消息不必仅限于与客户进行一对一的互动。您也可以使用它来自动执行企业工作流程中的一些流程。这些工作流程可以成为您在亚马逊云科技中正在进行的流程的一部分,也可以使用亚马逊云科技服务构建新的自动化。

亚马逊云科技终端用户社交消息是在 WhatsApp 商业账户 (WABA) 和您的亚马逊云科技账户上的原生表单链接。这有助于简化客户端 WhatsApp 消息应用程序与您在亚马逊云科技上执行的工作负载之间的集成构建。此外,它还提供了一种在亚马逊云科技中统一计费的体验。

本文阐述了使用 WhatsApp 和亚马逊云科技终端用户消息社交来建立这种集成并自动执行您的企业工作流程的解决方案。

解决方案的总体愿景

该解决方案利用亚马逊云科技终端用户消息社交将您在亚马逊云科技中实施的工作负载与您的 Meta 业务组合整合。它允许您接收来自 WhatsApp 的消息,这些消息是您的最终客户直接在您的亚马逊云科技环境中发送的。来自 WhatsApp 的入口消息由亚马逊云科技终端用户消息社交接收,然后发送到 Amazon Simple Notification Service(SNS)主题,该主题随后激活了 Amazon Lambda 函数。这个 Lambda 函数会处理请求,然后发送一条来自 WhatsApp 的消息作为对用户的回复。您可以构建复杂的企业工作流程和自动化营销,从而扩展此解决方案。

该出版物解决方案的架构显示了客户如何在 AWS 的工作负载中发送一条来自 WhatsApp 的消息。亚马逊云科技终端用户社交消息接收来自 WhatsApp 的消息,然后,它会重新发送到社交网络主题。它激活了 Lambda 函数。接下来,Lambda 功能通过亚马逊云科技终端用户消息社交向客户的移动电话发送了 WhatsApp 的回复。

图 1:解决方案架构

重要提示:请记住,任何 WhatsApp 用户都可以向您的 WABA 号码发送消息并激活工作流程。要避免不必要的费用,请完成"清理"部分中的步骤。

前提条件

在开始本指南之前,请确保:

  1. 一个亚马逊云科技账户
  2. Meta 的业务投资组合。按照这些说明创建一个
  3. 用于创建 WABA 的电话号码
  4. 一款安装了 WhatsApp Messenger 应用程序的移动电话,用于测试解决方案。请注意,移动应用程序使用的电话号码应与您的 WABA 关联的电话号码不同。
  5. 已安装并配置了亚马逊云科技 CLI 以访问您的亚马逊云科技帐户
  6. 用于实现示例应用程序的无服务器应用程序模型 CLI
  7. node.js >= 22.x

解决方案的实施

第 1 步:创建 SNS 主题

  1. 浏览 SNS 页面。
  2. 使用亚马逊云科技终端用户消息社交平台使用计划的亚马逊云科技区域。
  3. 选择"标准"作为主题的"类型"
  4. 输入"WhatsAppIncomingMessages"作为主题的"名称"
  5. 点击"创建主题"按钮。
  6. 在出现的主题细节中,记下主题"ARN"

第 2 步:将 WABA 添加到亚马逊云科技终端用户消息社交

  1. 浏览到 WABA 页面。
  2. 点击"添加 WhatsApp 电话号码"按钮
  3. 点击"启动 Facebook 门户"以连接您的亚马逊云科技账户和 Meta 业务组合。
  4. 按照 Facebook 新窗口中的说明完成注册。下面显示了该过程中的关键步骤的屏幕截图:
截取您的亚马逊云科技账户和 Meta 商业合约需要遵循的步骤的屏幕截图。

图 2:连接亚马逊云科技和 Meta 商业投资组合

  1. 尽管打开了 Facebook 注册表的弹出窗口,但您将在您的亚马逊云科技控制台上看到"已建立链接"消息。在"消息和事件目的地"部分输入在第 1 步创建的 SNS 主题的 ARN。
截取亚马逊云科技控制台的屏幕截图,显示了亚马逊云科技、WABA 账户和 SNS 主题之间建立的连接

图 3:WABA 和亚马逊云科技账户之间的现有连接

  1. 点击"添加电话号码",完成您的 WhatsApp 商业账户与亚马逊云科技账户的关联。
  2. 浏览 WABA 页面,确认添加的账户处于"活跃"状态。
  3. 点击添加的商业账户的 ID 以浏览详情页面。
  4. 在"电话号码"部分,请注意添加的号码的"电话号码 ID"。

第 3 步:实现 Lambda 功能来管理来自客户的 WhatsApp 消息

  1. 克隆示例存储库并实现 Lambda 函数,然后继续:
$ git clone https://github.com/aws-samples/aws-end-user-messaging-social-automation.git

$ cd aws-end-user-messaging-social-automation/
  1. 通过执行以下命令来构建项目:
$ sam build
  1. 通过执行以下命令来实现应用程序,然后按照指示操作:
$ sam deploy --guided
...
# Enter the details for questions asked
Stack Name [sam-app]: EndUserMessagingWhatsApp
AWS Region [us-east-1]: <亚马逊云科技region where you have created the WABA account>
Parameter SNSTopicArn []: 
         
         
         
          
          
          
Parameter PhoneNumberID []: 
          
          
           
          
         
         
         

接受其余问题中的默认值以完成实施。这将创建一个 Lambda 函数,当您向 WABA 号码发送 WhatsApp 消息时,该函数就会被激活。

第 4 步:测试解决方案

  1. 使用安装了 WhatsApp 的手机,将此消息发送到您的 WABA 号码:
Hello
  1. 在回复您之前的留言时,您会看到以下内容:
    • 蓝色标记,表示该消息已被收到并已阅读
    • 对您的消息的反应 👋
    • 一条回复消息说:"你好 {个人资料名称},我们能帮你什么?"
    • 可供选择的选项清单
  2. 从选项中选择一个
  3. 您将收到一条静态消息,提供在文档页面找到有关亚马逊云科技终端用户社交消息的更多信息的链接。互动就像下图所示:
截取用户在 WhatsApp 中的最终互动画面。用户发送了一条起始消息

图 4:最终用户与 WhatsApp 的业务互动

问题排查

通过浏览 CloudWatch 日志页面,访问您的 Lambda 函数的日志,然后在搜索框中搜索"WhatsAppMessageHandler"。选择您的 Lambda 函数的日志组,然后在执行测试时查看相应的日志流。Lambda 函数会在接收和处理消息时记录信息。请注意,Lambda 收到的 SNS 事件以及来自外部用户的消息故意不包含在 CloudWatch 日志中。该事件包含诸如发送方电话号码和 WhatsApp 个人资料名称之类的信息,您的公司可能将其归类为敏感数据。在记录此信息之前,请检查您的组织数据管理政策。在 Meta 开发者文档中查找有关不同类型消息结构的更多信息。

您也可以使用亚马逊云科技 CLI 向客户发送消息。如果您的客户已开始与您的对话,则可以发送"文本"类型的消息。执行以下命令向 WhatsApp 发送回复消息:

aws socialmessaging send-whatsapp-message \
--cli-binary-format raw-in-base64-out \
--message '{"messaging_product": "whatsapp", "to": "+15554567890", "text": { "preview_url": false, "body": "Hello! How can we help you?"}}' \
--origination-phone-number-id phone-number-id-beac123456789abcdefgh \
--meta-api-version v20.0

请记住,如果客户发起了与您的对话,并且自上次发送消息以来已经过了不到 24 小时,则只能向客户发送"文本"类型的消息。使用带有模板的消息来发起与客户的对话,例如,发送 OTP(一次性密码)或营销消息。Meta 需要先审核邮件模板,然后才能发送给客户。

监控

亚马逊云科技终端用户消息社交可以在 CloudWatch 指标中发布与服务使用成本相关的数据。要启用它,请输入以下命令以创建与 IAM 服务关联的名为"AWSServiceRoleforSocialMessaging"的角色:

aws iam create-service-linked-role --aws-service-name social-messaging.amazonaws.com

您可以使用 CloudWatch 监控亚马逊云科技终端用户社交消息以查看指标:

  • WhatsAppMessageFeeCount
  • WhatsAppConversationFeeAmount

当您在这些指标上配置 CloudWatch 警报时,也可以在达到特定阈值时收到通知。这可以帮助您管理与亚马逊云科技终端用户消息社交相关的费用。

清理

请记住,任何 WhatsApp 用户都可以向您的 WABA 号码发送消息并激活工作流程。要避免不必要的费用,请完成以下清理步骤:

  1. 要删除 Lambda 函数和关联资源,请执行以下命令:
sam delete
  1. 要删除亚马逊云科技终端用户消息社交资源,请访问 WABA 页面。选择您的 WABA 的商业账户 ID,然后单击"取消链接"按钮。

结论

本文展示了如何简化 WhatsApp 与您在亚马逊云科技上执行的工作负载之间的集成,允许自动化与您的最终客户的交互。演示了如何从最终客户发起的 WhatsApp 消息中激活 Lambda 功能。您可以扩展此解决方案来构建更复杂的工作流程,例如,激活 Amazon Step Functions,调用基于亚马逊云科技中正在运行的容器的工作负载等。

欲了解更多信息,请查阅以下资源:

  • WABA 留言模板
  • 使用多媒体文件工作
  • 亚马逊云科技终端用户社交消息的最佳实践


布鲁诺·乔吉尼

布鲁诺·乔吉尼

Bruno Giorgini 是一名高级解决方案架构师,专门从事亚马逊云科技通信开发人员服务。Bruno 在 IT 行业拥有二十多年的经验,一直在帮助各种规模的客户实现其目标。当他不为客户制定创新的解决方案时,Bruno 喜欢与家人共度美好时光,探索风景秀丽的徒步路线。他对技术的热情及其推动业务转型的潜力使他有动力为世界各地的组织提供有影响力的解决方案。

Rakshith Rao

Rakshith Rao

Rakshith Rao 是亚马逊云科技的高级解决方案架构师。他与亚马逊云科技的战略客户合作,在亚马逊云科技上构建和运行他们的关键工作负载。


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。