【问题标题】:Parse Received Message in Ruby在 Ruby 中解析收到的消息
【发布时间】:2017-06-13 15:12:08
【问题描述】:

我正在使用 Ruby on Rails 编写一个 Facebook Messenger ChatBot。

我为响应创建了一个数据库。如果消息存在于我的数据库中,它会回复,否则回复为“抱歉未找到”。

  ....
  def analysis(sender, text)

    message = Message.where(:recieved => text).first
    if message
      reply = message.reply
    else
      reply = "Sorry not found"
    end
    send_message(sender,reply)
  end
  ....

我想添加类似条件的正则表达式匹配。像这样:如果消息中包含“this”这个词。回复“那个”。

我该怎么做?

【问题讨论】:

  • 可以使用include?,比使用正则表达式'A string that contains bla'.include?('bla') ? do_this : do_another_thing稍微快一点
  • 请阅读“minimal reproducible example”。你试过什么?向我们展示演示您尝试解决此问题所需的最少代码,并描述它没有正确执行的操作。否则,您是在要求我们为您编写代码或编写教程,这两者都是题外话。我建议了解case/when 以及正则表达式的工作原理。

标签: ruby-on-rails ruby facebook-chatbot


【解决方案1】:

您可以使用子字符串索引:

definite_article = message.reply['this'] ? 'that' : 'this'

【讨论】:

    【解决方案2】:

    我不确定我是否明白你的意图,但如果你想替换响应中给定模式的出现,你可以使用gsub 方法docs

    或者简单地使用条件语句来匹配给定的正则表达式,例如:

      if /this/.match(message.reply)
         reply = 'that'
    

    【讨论】:

      猜你喜欢
      • 2013-05-20
      • 2015-01-17
      • 2013-07-19
      • 2013-03-28
      • 2011-02-11
      • 1970-01-01
      • 2011-07-05
      • 2016-01-01
      • 1970-01-01
      相关资源
      最近更新 更多