Zammad: Twitter DM和提及未到

创建于 2019-01-30  ·  22评论  ·  资料来源: zammad/zammad

你好,

我们根据文档资料设置了Twitter集成,并且频道设置未显示任何错误。 但是,什么也没有到达。

资讯:

  • 二手的Zammad版本:2.8.0-1548330940.ad390e9f.stretch
  • 安装方法(源代码,软件包,..):Debian软件包
  • 操作系统:Debian Stretch
  • 数据库+版本:MariaDB

预期行为:

  • 当有人提到我们或发送DM时,就会创建Zammad票证。

实际行为:

  • 当有人提到我们或发送DM时,什么也没有发生。

是的,我确定这是一个错误,没有功能要求或一般性问题。
您可以帮助我们找出调试所需的信息吗?

bug frontend / JS app verified

最有用的评论

我忘了提:感谢一吨@MrXermon这么快跳! 您的意见和abelxluck的意见帮助我在Zammad上下文中找到了根本原因。 修复方法the

所有22条评论

嗨, @ raphaelm在log / production.log中是否有任何提示(例如-i twitter)?

这是grep -i twitter /var/log/zammad/production.log的输出,在删除了我们从Twitter获得的电子邮件的日志记录之后。

I, [2019-01-30T12:43:16.877706 #5931-47137720567500]  INFO -- : Started POST "/api/v1/external_credentials/twitter/app_verify" for 2a02:…:23b0 at 2019-01-30 12:43:16 +0100
I, [2019-01-30T12:43:16.882895 #5931-47137720567500]  INFO -- :   Parameters: {"consumer_key"=>"…", "consumer_secret"=>"…", "oauth_token"=>"…", "oauth_token_secret"=>"…", "env"=>"…", "provider"=>"twitter"}
I, [2019-01-30T12:43:18.081499 #5931-47137720546680]  INFO -- : Started GET "/api/v1/channels_twitter_webhook?crc_token=…&nonce=…" for … at 2019-01-30 12:43:18 +0100
I, [2019-01-30T12:43:18.085266 #5931-47137720546680]  INFO -- : Processing by ChannelsTwitterController#webhook_verify as HTML
I, [2019-01-30T12:43:18.982109 #5931-70307650490460]  INFO -- :   Parameters: {"name"=>"twitter", "credentials"=>{"consumer_key"=>"…", "consumer_secret"=>"…", "oauth_token"=>"22133603-…", "oauth_token_secret"=>"…", "env"=>"zammad", "controller"=>"external_credentials", "action"=>"app_verify", "provider"=>"twitter", "webhook_id"=>"…"}, "id"=>"c-0"}
I, [2019-01-30T12:43:19.337857 #5931-70307339885820]  INFO -- : Started GET "/api/v1/channels_twitter?_=1548750017521" for 2a02:…:23b0 at 2019-01-30 12:43:19 +0100
I, [2019-01-30T12:43:19.344139 #5931-70307339885820]  INFO -- : Processing by ChannelsTwitterController#index as JSON
I, [2019-01-30T12:43:22.154145 #5931-47137720546680]  INFO -- : Started GET "/api/v1/external_credentials/twitter/link_account" for 2a02:…:23b0 at 2019-01-30 12:43:22 +0100
I, [2019-01-30T12:43:22.165744 #5931-47137720546680]  INFO -- :   Parameters: {"provider"=>"twitter"}
I, [2019-01-30T12:43:22.345333 #5931-47137720546680]  INFO -- : Redirected to https://api.twitter.com/oauth/authorize?oauth_token=…
I, [2019-01-30T12:43:41.122898 #5931-70307339885820]  INFO -- : Started GET "/api/v1/channels_twitter?_=1548848605494" for 2a02:…:23b0 at 2019-01-30 12:43:41 +0100
I, [2019-01-30T12:43:41.129583 #5931-70307339885820]  INFO -- : Processing by ChannelsTwitterController#index as JSON
I, [2019-01-30T12:43:42.183169 #5931-70307650490460]  INFO -- : Started GET "/api/v1/external_credentials/twitter/link_account" for 2a02:…:23b0 at 2019-01-30 12:43:42 +0100
I, [2019-01-30T12:43:42.190428 #5931-70307650490460]  INFO -- :   Parameters: {"provider"=>"twitter"}
I, [2019-01-30T12:43:42.722202 #5931-70307650490460]  INFO -- : Redirected to https://api.twitter.com/oauth/authorize?oauth_token=--…
I, [2019-01-30T12:43:45.737308 #5931-70307339871840]  INFO -- : Started GET "/api/v1/external_credentials/twitter/callback?oauth_token=--…&oauth_verifier=…" for 2a02:…:23b0 at 2019-01-30 12:43:45 +0100
I, [2019-01-30T12:43:45.744095 #5931-70307339871840]  INFO -- :   Parameters: {"oauth_token"=>"--…", "oauth_verifier"=>"…", "provider"=>"twitter"}
I, [2019-01-30T12:43:47.400984 #5931-70307339871840]  INFO -- : Redirected to https://support.rami.io/#channels/twitter/8
I, [2019-01-30T12:43:48.717842 #5931-70307339885820]  INFO -- : Started GET "/api/v1/channels_twitter?_=1548848627791" for 2a02:…:23b0 at 2019-01-30 12:43:48 +0100
I, [2019-01-30T12:43:48.723376 #5931-70307339885820]  INFO -- : Processing by ChannelsTwitterController#index as JSON
I, [2019-01-30T12:44:11.587083 #5931-70307339871840]  INFO -- : Started POST "/api/v1/channels_twitter/8" for 2a02:…:23b0 at 2019-01-30 12:44:11 +0100
I, [2019-01-30T12:44:11.597494 #5931-70307339871840]  INFO -- : Processing by ChannelsTwitterController#update as JSON
I, [2019-01-30T12:44:11.597694 #5931-70307339871840]  INFO -- :   Parameters: {"area"=>"Twitter::Account", "options"=>{"adapter"=>"twitter", "user"=>{"id"=>…, "screen_name"=>"pretixeu", "name"=>"pretix"}, "auth"=>{"external_credential_id"=>1, "oauth_token"=>"…", "oauth_token_secret"=>"…", "consumer_key"=>"…", "consumer_secret"=>"…"}, "sync"=>{"webhook_id"=>"", "track_retweets"=>false, "mentions"=>{"group_id"=>"9"}, "direct_messages"=>{"group_id"=>"9"}, "search"=>[]}}, "group_id"=>nil, "active"=>true, "id"=>"8"}
I, [2019-01-30T12:44:12.005019 #5931-47137720546680]  INFO -- : Started GET "/api/v1/channels_twitter?_=1548848627807" for 2a02:…:23b0 at 2019-01-30 12:44:12 +0100
I, [2019-01-30T12:44:12.010727 #5931-47137720546680]  INFO -- : Processing by ChannelsTwitterController#index as JSON
I, [2019-01-30T12:44:20.436356 #5931-70307374877540]  INFO -- : Started GET "/api/v1/external_credentials/twitter/link_account" for 2a02:…:23b0 at 2019-01-30 12:44:20 +0100
I, [2019-01-30T12:44:20.441759 #5931-70307374877540]  INFO -- :   Parameters: {"provider"=>"twitter"}
I, [2019-01-30T12:44:20.776232 #5931-70307374877540]  INFO -- : Redirected to https://api.twitter.com/oauth/authorize?oauth_token=…
I, [2019-01-30T12:44:23.329907 #5931-70307339885820]  INFO -- : Started GET "/api/v1/external_credentials/twitter/callback?oauth_token=…&oauth_verifier=…" for 2a02:…:23b0 at 2019-01-30 12:44:23 +0100
I, [2019-01-30T12:44:23.335028 #5931-70307339885820]  INFO -- :   Parameters: {"oauth_token"=>"…", "oauth_verifier"=>"…", "provider"=>"twitter"}
I, [2019-01-30T12:44:24.963013 #5931-70307339885820]  INFO -- : Redirected to https://support.rami.io/#channels/twitter/8
I, [2019-01-30T12:44:26.218570 #5931-47137720546680]  INFO -- : Started GET "/api/v1/channels_twitter?_=1548848665152" for 2a02:…:23b0 at 2019-01-30 12:44:26 +0100
I, [2019-01-30T12:44:26.226071 #5931-47137720546680]  INFO -- : Processing by ChannelsTwitterController#index as JSON
I, [2019-01-30T12:44:28.066560 #5931-47137720546680]  INFO -- : Started POST "/api/v1/channels_twitter/8" for 2a02:…:23b0 at 2019-01-30 12:44:28 +0100
I, [2019-01-30T12:44:28.076235 #5931-47137720546680]  INFO -- : Processing by ChannelsTwitterController#update as JSON
I, [2019-01-30T12:44:28.076351 #5931-47137720546680]  INFO -- :   Parameters: {"area"=>"Twitter::Account", "options"=>{"adapter"=>"twitter", "user"=>{"id"=>4362252801, "screen_name"=>"pretixeu", "name"=>"pretix"}, "auth"=>{"external_credential_id"=>1, "oauth_token"=>"…", "oauth_token_secret"=>"…", "consumer_key"=>"…", "consumer_secret"=>"…"}, "sync"=>{"webhook_id"=>"", "track_retweets"=>false, "mentions"=>{"group_id"=>"9"}, "direct_messages"=>{"group_id"=>"9"}, "search"=>[]}, "subscribed_to_webhook_id"=>"…"}, "group_id"=>nil, "active"=>true, "id"=>"8"}
I, [2019-01-30T12:44:28.742588 #5931-70307339885820]  INFO -- : Started GET "/api/v1/channels_twitter?_=1548848665162" for 2a02:…:23b0 at 2019-01-30 12:44:28 +0100
I, [2019-01-30T12:44:28.752236 #5931-70307339885820]  INFO -- : Processing by ChannelsTwitterController#index as JSON
I, [2019-01-30T12:48:46.835649 #5931-70307339885820]  INFO -- : Started GET "/api/v1/channels_twitter?_=1548848665187" for 2a02:…:23b0 at 2019-01-30 12:48:46 +0100
I, [2019-01-30T12:48:46.843058 #5931-70307339885820]  INFO -- : Processing by ChannelsTwitterController#index as JSON
I, [2019-01-30T12:43:18.081499 #5931-47137720546680]  INFO -- : Started GET "/api/v1/channels_twitter_webhook?crc_token=…&nonce=…" for … at 2019-01-30 12:43:18 +0100
I, [2019-01-30T12:43:18.085266 #5931-47137720546680]  INFO -- : Processing by ChannelsTwitterController#webhook_verify as HTML
I, [2019-01-30T12:43:18.982109 #5931-70307650490460]  INFO -- :   Parameters: {"name"=>"twitter", "credentials"=>{"consumer_key"=>"…", "consumer_secret"=>"…", "oauth_token"=>"22133603-…", "oauth_token_secret"=>"…", "env"=>"zammad", "controller"=>"external_credentials", "action"=>"app_verify", "provider"=>"twitter", "webhook_id"=>"…"}, "id"=>"c-0"}

我看到来自twitter的验证电话,以验证您的网络挂钩。 但是我看不到来自twitter到您的webhook的http调用。

-=>似乎Twitter没有向您的Webhook发送消息。 您有一个https主机,对吗? 也许您的ssl证书有问题? log / production.log中是否还有其他与Twitter相关的错误?

我们在运行当前版本的实例上遇到了相同的问题。

同样在这里,我发现了一些可以帮助的东西?
用户ID'1090618064528424961'没有这样的频道!

I, [2019-01-31T12:53:22.891153 #1-70353379302120]  INFO -- : Started POST "/api/v1/channels_twitter_webhook" for ::ffff:172.21.0.10 at 2019-01-31 12:53:22 +0000
I, [2019-01-31T12:53:22.896366 #1-70353379302120]  INFO -- : Processing by ChannelsTwitterController#webhook_incoming as HTML
I, [2019-01-31T12:53:22.896571 #1-70353379302120]  INFO -- :   Parameters: {" some data removed "}
E, [2019-01-31T12:53:22.960167 #1-70353379302120] ERROR -- : No such channel for user id '1090618064528424961'! (Exceptions::UnprocessableEntity)
/opt/zammad/app/controllers/channels_twitter_controller.rb:32:in 'validate_webhook_signature!'

@nicolaswurtz这与社区问题有关,我们仍未找到原因,如果我们不对此进行讨论的话,那就太好了。 :-)

@raphaelm请提供反馈给Martin,特别是有关SSL问题的反馈。

@rixx完全一样的问题,因为@raphaelm? 请提供日志文件。

@马蒂尼

-=>似乎Twitter没有向您的Webhook发送消息。 您有一个https主机,对吗?

是的。

也许您的ssl证书有问题?

并不是我能想到的: https :

log / production.log中是否还有其他与Twitter相关的错误?

我找不到。

Twitter是否提供任何调试Webhooks的工具? 我什么都找不到。

我认为这确实是同一问题- @raphaelm您可以在grep命令中添加-A 1来在其后看到一行吗? 该错误不包含“ twitter”一词,我想我们会看到相同的行。

E, [2019-01-31T12:53:22.960167 #1-70353379302120] ERROR -- : No such channel for user [...]

不,不是同一个问题。 日志中没有出现“没有此类用户频道”,我已经检查了用户ID是否匹配

好的,所以我们这里可能有两个不同的问题@martini

关于此问题的小更新。
我们了解到,只有在用户ID太长的情况下才会发生这种情况。
这是由社区用户“ abelxluck”找到的。

该帖子可以在这里找到: https :

在此期间有任何更新或修复?

@schiederme-很抱歉,尚无更新。 正如@MrGeneration先前所述,社区中已有一些研究表明所存储的ID可能是错误的。 我编写了一个小脚本,将存储的ID与我们从Twitter API收到的每个Twitter频道的ID进行比较。 它还会打印出该ID,因此您可以/应该验证这是您帐户的实际ID。 欢迎反馈!

    Channel.where(area: 'Twitter::Account').each do |channel|
      client = Twitter::REST::Client.new do |config|
        config.consumer_key        = channel.options['auth']['consumer_key']
        config.consumer_secret     = channel.options['auth']['consumer_secret']
        config.access_token        = channel.options['auth']['oauth_token']
        config.access_token_secret = channel.options['auth']['oauth_token_secret']
      end

      if channel.options['user']['id'] != client.user.id
        puts "ATTENTION: Found ID mismatch. Local ID '#{channel.options['user']['id']}' doesn't match with received remote ID '#{client.user.id}'."
      else
        puts "Local ID '#{channel.options['user']['id']}' matches with received remote ID. Please double check if this is the ID of your twitter account (via e.g. https://tweeterid.com)."
      end
    end

输出看起来像这样:
Local ID '785412523193425920' matches with received remote ID. Please double check if this is the ID of your twitter account (via e.g. https://tweeterid.com).

您可以通过在Zammad目录中创建一个名为debug_issue.rb的文件(通常/opt/zammad )来执行该文件。 然后以zammad用户的身份通过zammad run rails r debug_issue.rbrails r debug_issue.rb从Zammad目录运行文件,具体取决于您的安装源(软件包/源)。 完成后,您可以/应该删除debug_issue.rb文件。

我也用我的帐户(Twitter上的@ level66network )和Zammad安装尝试了该脚本,并且看起来ID确实在安装中确实不匹配。

ATTENTION: Found ID mismatch. Local ID '1170020461641642000' doesn't match with received remote ID '1170020461641641990'.

在我的日志中,我还发现了由Webhook触发的以下问题。

No such channel for user id '1170020461641641990'! (Exceptions::UnprocessableEntity)

哇! 真的是这样! 我们发现ID是正确地从后端(Ruby)发送到前端(JavaScript)的,然后就中断了该数字,因为它不能正确处理这么大的整数,如“ abelxluck”所示

因此,一旦您打开Twitter频道进行编辑并随后保存更改,就会发生该错误。 此后,您将无法接收Twitter直接消息。

您可以通过运行以下命令来修复断开的频道:

Channel.where(area: 'Twitter::Account').each do |channel|

  client = Twitter::REST::Client.new do |config|
    config.consumer_key        = channel.options['auth']['consumer_key']
    config.consumer_secret     = channel.options['auth']['consumer_secret']
    config.access_token        = channel.options['auth']['oauth_token']
    config.access_token_secret = channel.options['auth']['oauth_token_secret']
  end

  channel.options['user']['id'] = client.user.id

  channel.save!
end

通过Zammad rails控制台

但是,只有在您再次通过管理界面保存和编辑Twitter频道后,此方法才能起作用。 我们正在为此寻求一种可持续的解决方案。

@rlue-您能从这里接管吗? 我们需要将ID转换为字符串并以这种方式存储。 我的修补程序脚本可能是所需迁移的起点。 除此之外,我们还需要更改最初获取和存储ID为整数的代码。 另外,我们需要查找使用该ID的其他位置,并确保它们正确处理了字符串版本。

我忘了提:感谢一吨@MrXermon这么快跳! 您的意见和abelxluck的意见帮助我在Zammad上下文中找到了根本原因。 修复方法the

谢谢@thorsteneckel ,工作正常!

感谢@thorsteneckel创建解决方法! 它也适用于我的系统! <3

另外,我们需要查找使用该ID的其他位置,并确保它们正确处理了字符串版本。

@thorsteneckel ,可以安全地假设

$ grep "\['user'\]\['id'\]"

应该找到我们正在寻找的所有实例?

我建议挖'Twitter::Account' 。 这是所有在options属性中存储了id Twitter频道的标识符。

已通过上面的提交修复。 将与Zammad 3.2一起发布,该版本将很快(1-2周)到货。

此页面是否有帮助?
0 / 5 - 0 等级