首页 > 解决方案 > Twilio:使用多个不同的消息响应用户输入

问题描述

我正在开发一个 twilio-programable-sms 聊天机器人,它需要在第一次对话开始时向用户提供大量信息。目前,我们已经写了大约 562 个字符。对于我们的一些用户来说,这会被分成 160 个字符的块,这些字符不一定会以正确的顺序显示在他们的 SMS 应用程序中。

考虑到这一点,我们试图将我们的消息分解为 160 个字符或更少的不同消息,每个消息一个接一个地发送。

但是,我和我的队友目前不确定如何做到这一点。我们的应用程序当前编写为为从用户收到的每条消息提供一个 twiml 响应。我一直无法找到一种方法来创建一个表示许多连续消息的 twiml 响应,并且我们提出的理论解决方案感觉很老套和有缺陷。

为了演示,目前我们的代码如下所示。如您所见,当一个新用户发送关键字“开始”时,我们将 4 条消息连接到一个长文本响应中。但是,我们希望每条消息都单独发送,一个接一个,相隔大约一两秒。

    case @body
    when "start"
      if !!@user
        CreateMessage::SubscriptionMessage.triage_subscribable_type(!!@user)
      else
        [
          CreateMessage::AlphaMessage.personalized_welcome(@conversation.from, true),
          CreateMessage::SubscriptionMessage.introduce_bcd,
          CreateMessage::SubscriptionMessage.for_example,
          CreateMessage::SubscriptionMessage.intvite_to_start
        ].join("\n\n")
      end

如果可能,我们希望避免创建后台工作人员/cron 作业 - 但欢迎任何和所有建议的解决方案。

标签: ruby-on-railsrubytwiliotwilio-api

解决方案


我认为您的问题更多是关于如何设计同步(webhook 响应)与异步响应/消息。我没有使用过 twiml,但概念是相同的。

如果您不想使用后台作业,请使用 API 发送 Fir N-1 条消息,中间有时间延迟,最后一条消息作为响应。

如果您可以使用后台作业,则发送第一条消息作为响应并排队作业以使用 API 发送剩余消息。


推荐阅读