Twilio:使用多个不同的消息来响应用户输入

时间:2019-02-20 20:17:07

标签: ruby-on-rails ruby twilio twilio-api

我正在开发一个twilio-programming-sms聊天机器人,该机器人需要在第一次对话开始时就向用户提供大量信息。目前,我们编写的内容约为562个字符。对于我们的某些用户,这可以分为160个字符的块,不一定按正确的顺序显示在其SMS应用中。

为了解决这个问题,我们正在尝试将消息分解为160个字符或更少的不同消息,每个消息都一个接一个地发送。

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

为了演示,当前我们的代码如下所示。如您所见,当一个新用户发送关键字“ start”时,我们将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作业-但欢迎任何建议的解决方案。

1 个答案:

答案 0 :(得分:0)

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

如果您不想使用后台作业,请使用API​​发送带有第一个N-1消息的时间间隔,最后一个消息作为响应。

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