如何在多租户应用程序中管理具有唯一电话号码的多个租户的自动化 WhatsApp 机器人?

问题描述 投票:0回答:1

我有一个多租户应用程序,每个租户(客户)都可以管理他们的产品并通过 WhatsApp 与客户互动。这是我的设置和我面临的问题:

  • 我的应用程序中有 70 个租户,每个租户都需要自己的 WhatsApp 机器人来与客户沟通。
  • 每个机器人都需要一个唯一的电话号码才能运行。
  • 我正在使用 WhatsApp Business Cloud API 并拥有一个名为 XYZ 的帐户。
  • 我能够向 XYZ 帐户添加两个电话号码,但在尝试添加更多号码时遇到限制。
  • 每个机器人需要独立发送和接收消息,我还需要单独处理每个机器人的 webhook 事件以处理特定于租户的逻辑。

问题:

  1. 如何使用 WhatsApp Business Cloud API 支持 70 个租户(每个租户都有唯一的电话号码和 WhatsApp 机器人)?
  2. 有没有办法克服向单个 WhatsApp Business 帐户添加多个电话号码的限制?
  3. 如何在多租户架构中为每个租户高效地设置和处理 webhook 事件?

我尝试过的:

  • 向 XYZ 帐户添加多个电话号码,但在两个号码后遇到限制。
  • 研究 WhatsApp 的文档和社区论坛,但找不到针对此类多租户设置的明确解决方案。

我需要什么:

我正在寻找一种可扩展的解决方案:

  • 允许每个租户拥有自己的机器人和唯一的电话号码。
  • 考虑每个租户的特定逻辑,确保正确处理 Webhook 事件。
facebook webhooks whatsapp whatsapp-cloud-api
1个回答
0
投票

您的问题有两个不同的部分,第二个部分更加棘手/复杂,因为它取决于您想要实现的架构。请提供更多设计信息,以便我们更好地帮助您。

有没有办法克服向单个 WhatsApp Business 帐户添加多个电话号码的限制?

是的,您需要验证您的业务。验证后,您可以添加更多商家号码。请按照此处 Meta 的说明进行操作: 元业务验证

如何使用 WhatsApp Business Cloud API 支持 70 个租户(每个租户都有唯一的电话号码和 WhatsApp 机器人)?

这取决于您使用的架构和编程语言。这是在多租户设置中处理这种情况的可扩展方法:

  • 发布/订阅架构:使用中央队列来路由消息,这是必需的,因为 Whatsapp 只接受一个 WEBHOOK URL。工作人员在有可用容量时消费消息。
  • 带有 python 工作线程的 Redis 队列:每个租户获取一个队列并独立处理这些消息。

消息网关:

import redis

redis_client = redis.StrictRedis()

def enqueue_message(message):
    tenant_id = message["metadata"]["phone_number_id"]  # Unique for each WhatsApp number
    queue_name = f"queue:{tenant_id}"
    redis_client.rpush(queue_name, message)

工人:

import time

def processor_1(tenant_id, message):
    print(f"First Processor {tenant_id}: {message}")

def processor_2(tenant_id, message):
    print(f"Second Processor {tenant_id}: {message}")

def worker(tenant_id):
    queue_name = f"queue:{tenant_id}"
    while True:
        message = redis_client.lpop(queue_name)
        if message:
            if tenant_id == "foo": 
                processor_1(tenant_id, message)
            else:
                processor_2(tenant_id, message)
        else:
            time.sleep(1)  # No messages, wait and retry

这是一个简化的示例。对于更全面的实现(并且我在生产中运行),您可以参考这个示例:

Whatsapp 消息网关 + 多个工作人员示例

© www.soinside.com 2019 - 2024. All rights reserved.