【问题标题】:What is the most reliable and efficient way to ensure Twilio sends a chain of messages in order?确保 Twilio 按顺序发送消息链的最可靠和最有效的方法是什么?
【发布时间】:2019-11-15 15:49:00
【问题描述】:

我正在尝试为使用 Twilio API 及其 Python 包装器的相对简单的消息传递系统奠定基础。用户应该能够给关键字发短信并收到一串回复。

问题是,使用 Twilio 文档中建议的 HttpResponse() 包,当我遍历消息以将它们添加到响应链时,它们会在一个块中命中 Twilio,并发送服务以看似随机的顺序发送它们,这确实损害了块的可读性。

这是我在 Django 中运行以创建响应的循环的简化版本:

@csrf_exempt
def inbox(request)
   if request.method == "POST":
        # Interpret the keyword in the incoming message
        data = request.POST
        messageBody = data['Body'].lower()

        # Check if it matches a valid keyword
        targetTrigger = Keyword.objects.get(trigger_word=messageBody)

        # Pull the appropriate responses
        messageChain = Message.objects.filter(keyword_answers=targetTrigger)

        # Create the messaging response
        resp = MessagingResponse()

        # Populate it with messages
        for sms in messageChain:
            resp.message(sms)

        # Send them to Twilio
        return HttpResponse(str(resp))

为了便于阅读,我忽略了尝试和错误捕获。就像我说的那样,这会以看似随机的顺序发送消息,较短的消息似乎更多地首先发送到我的 iPhone。并非总是如此,但足以让我需要重新考虑这种方法。

奇怪的是,文档中几乎没有关于在 SMS HttpResponse 中发送多条消息的内容,尽管我认为这是一个常见的用例。我正在考虑的替代方法是发回一个空白的 HttpResponse 以简单地向 Twilio 确认消息已成功接收,然后将其常规的一对一发送方法与我的 for 循环一起使用。这似乎效率有点低,但我需要消息发送顺序的准确性。

有什么建议吗? Twilio 开发人员传道者,我知道你们都在这里。

【问题讨论】:

    标签: python django twilio twilio-api


    【解决方案1】:

    据 Twilio 称,this cannot be done. 因为他们根本无法控制交付过程。

    Twilio 不能保证从您的 Twilio 电话号码发送的 SMS 消息会按顺序到达。虽然我们会按照您排队的顺序发送您传递给我们的 SMS 消息,但 SMS 消息是单独发送的,彼此之间没有关联。交货顺序取决于承运人。

    为了帮助您的用户了解您的消息的顺序,我们建议 例如,您在每条消息后附加一个页面引用 1/3、2/3、3/3。

    在 SMS 中,最短的消息通常以最快的速度发送。您可能会将您的消息设计为按大小排序。这可能会减少错误的频率。

    另一种选择可能是将它们全部捆绑到一个 1600 字符的大型消息中,并让运营商处理将其拆分。这取决于您的客户群中的运营商是否可靠地支持级联 SMS。这可能会处理订单问题。

    【讨论】:

    • 嗯,我在扫描时错过了他们的故障排除部分。不是一个理想的解决方案。但我们会找到一种方法让它发挥作用。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-07
    • 1970-01-01
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多