Rails Facebook Messenger Bot

时间:2016-07-22 14:52:01

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

这是我的第一个问题,如果我做错了,请告诉我。我尝试使用'messenger-ruby'gem(https://github.com/netguru/messenger-ruby)构建一个简单的facebook messenger机器人。我成功安装了gem,但我认为我并没有真正了解如何发送/接收消息。

详细说明,我遵循了自述文件中的所有步骤:

  1. 获取页面访问令牌
  2. 按照自述文件
  3. 中所述创建messenger.rb
  4. 完全按照自述文件
  5. 添加路线
  6. 在自述文件中创建了messenger_controller.rb
  7. 成功设置webhooks,如自述文件
  8. 访问过/ messenger /订阅订阅
  9. 到目前为止这一切都有效,https://developers.facebook.com/apps/.../messenger我在Webooks下看到了绿色支票,并在订阅页面下看到了我的页面。

    我做了做了“App Review for Messenger”。

    现在出现问题:我尝试向每个传入的消息发送标准回复。我把#components下的自述文件中的代码放入messenger_controller.rb:

    # YOUR_APP/app/controllers/messenger_controller.rb
    class MessengerController < Messenger::MessengerController
      def webhook
      #logic here
        if fb_params.first_entry.callback.message?
          Messenger::Client.send(
            Messenger::Request.new(
              Messenger::Elements::Text.new(text: 'some text'),
              fb_params.first_entry.sender_id
            )
          )
        end
        render nothing: true, status: 200
      end
    end
    

    但是当其中一个页面管理员向页面发送消息时,没有任何反应。我查看了日志,但没有看到我期望的POST请求。

    当使用我的浏览器访问https:/.../ messenger / webhook时,我看到“无效的验证令牌”,并在日志中显示以下内容:

    Started GET "/messenger/webhook" for xxx.xxx.xxx.xxx at 2016-07-22 14:39:52 +0000
    Cannot render console from xxx.xxx.xxx.xxx! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
    Processing by Messenger::MessengerController#validate as HTML
    Completed 200 OK in 10ms (Views: 0.3ms | ActiveRecord: 0.0ms)
    

    我猜这没关系,但我不确定。

    我确信我可能犯了一个简单的错误,但我整天都在阅读文档而无法找到解决方案。我甚至不确定问题是什么,因为我希望在日志中找到POST请求......

    真的很感激任何帮助。请告诉我如何改进我的问题。

1 个答案:

答案 0 :(得分:2)

在写完我的问题后,我正在摆弄https://developers.facebook.com/apps/。我意识到:

  1. 发送邮件的用户只是一个页面管理员,而不是应用程序管理员。
  2. 我的应用未公开,我的网页未发布。
  3. 我将该用户添加为应用管理员,并且有效。上面的代码和gem安装都可以。

    因为这花费了我差不多一整天,我希望这个答案能帮助其他人。对不起,如果我回答我自己的问题。