首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Facebook::Messenger::Bot::RecipientNotFound

Facebook::Messenger::Bot::RecipientNotFound
EN

Stack Overflow用户
提问于 2017-01-12 00:24:17
回答 1查看 257关注 0票数 3

我正在尝试使用由Hypersolo提供的facebook messenger gem构建一个messenger机器人:https://github.com/hyperoslo/facebook-messenger

我总是收到以下错误: Facebook::Messenger::Bot::RecipientNotFound (不支持post请求。ID为'me‘的对象不存在,由于缺少权限而无法加载,或者不支持此操作。请在https://developers.facebook.com/docs/graph-api上阅读Graph API文档)

我假设错误是由于无效或非活动的access_token造成的,但是我一次又一次地请求一个新的new,错误仍然存在。我检查了我的页面订阅,这看起来很好,并且在webhooks中禁用了message_echoes。

我使用的代码很简单:

代码语言:javascript
复制
require 'facebook/messenger'
include Facebook::Messenger

Facebook::Messenger::Subscriptions.subscribe(access_token: ENV["ACCESS_TOKEN"])

Bot.on :message do |message|
  message.reply(text: 'Hello, human!')
end

此外,省略回复并检查message变量会得到一个有效的message对象。

代码语言:javascript
复制
#<Facebook::Messenger::Incoming::Message:0x007fdd2d4a40e0 @messaging={"sender"=>{"id"=>"1349987331712XXX"}, "recipient"=>{"id"=>"1683630555268XXX"}, "timestamp"=>1484149162343, "message"=>{"mid"=>"mid.1484149162343:d5a47f1649", "seq"=>121620, "text"=>"Why wont this work?"}}>
EN

回答 1

Stack Overflow用户

发布于 2017-01-15 05:49:13

我从来没有像你一样使用过hyperoslo框架,但我找到了一些东西可以解释你的问题。

您的消息值:

代码语言:javascript
复制
#<Facebook::Messenger::Incoming::Message:0x007fdd2d4a40e0 @messaging={"sender"=>{"id"=>"1349987331712XXX"}, "recipient"=>{"id"=>"1683630555268XXX"}, "timestamp"=>1484149162343, "message"=>{"mid"=>"mid.1484149162343:d5a47f1649", "seq"=>121620, "text"=>"Why wont this work?"}}>

这意味着,要获取发送者id,代码应该是@message['sender']['id'],但我在hyperoslo源代码(https://github.com/hyperoslo/facebook-messenger/blob/master/lib/facebook/messenger/incoming/common.rb)上发现,它似乎不一致:

代码语言:javascript
复制
    def sender
      @messaging['sender']
    end

    def recipient
      @messaging['recipient']
    end

    def reply(message)
      payload = {
        recipient: sender,
        message: message
      }

      Facebook::Messenger::Bot.deliver(payload, access_token: access_token)
    end

我认为,它应该是@messaging['sender']['id']而不是@messaging['sender']

无论如何,看看这个问题:https://github.com/hyperoslo/facebook-messenger/issues/96

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41595847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档