我正在开发一个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作业-但欢迎任何建议的解决方案。
答案 0 :(得分:0)
我认为您的问题更多是关于如何设计同步(webhook响应)与异步响应/消息。我没有使用过twiml,但是概念是相同的。
如果您不想使用后台作业,请使用API发送带有第一个N-1消息的时间间隔,最后一个消息作为响应。
如果可以使用后台作业,则发送第一条消息作为响应,并排队使用API发送其余消息的作业。