Zammad: Twitter DMs und Erwähnungen kommen nicht an

Erstellt am 30. Jan. 2019  ·  22Kommentare  ·  Quelle: zammad/zammad

Hallo,

Wir haben die Twitter-Integration gemäß der Dokumentation eingerichtet und die Kanaleinstellungen zeigen keine Fehler an. Es kommt jedoch nichts an.

Infos:

  • Verwendete Zammad-Version: 2.8.0-1548330940.ad390e9f.stretch
  • Installationsmethode (Quelle, Paket, ..): Debian-Paket
  • Betriebssystem: Debian Stretch
  • Datenbank + Version: MariaDB

Erwartetes Verhalten:

  • Wenn uns jemand erwähnt oder einen DM sendet, wird ein Zammad-Ticket erstellt.

Tatsächliches Verhalten:

  • Wenn jemand uns erwähnt oder einen DM sendet, passiert nichts.

Ja, ich bin sicher, dass dies ein Fehler ist und keine Funktionsanforderung oder eine allgemeine Frage.
Können Sie uns helfen, herauszufinden, welche Informationen Sie zum Debuggen benötigen?

bug frontend / JS app verified

Hilfreichster Kommentar

Ich habe vergessen zu erwähnen: Vielen Dank @MrXermon, dass reingesprungen bist ! Ihre Eingabe und die von abelxluck haben mir geholfen, die Grundursache im Zammad-Kontext zu finden. Fix ist unterwegs 🚂

Alle 22 Kommentare

Hallo @raphaelm Gibt es einen Hinweis in log / Production.log (zB -i Twitter)?

Das ist die Ausgabe von grep -i twitter /var/log/zammad/production.log , nachdem die Protokollierung von E-Mails, die wir von Twitter erhalten haben, entfernt wurde.

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"}

Ich sehe einen Bestätigungsanruf von Twitter, um Ihren Web-Hook zu überprüfen. Aber ich sehe keine http-Anrufe von Twitter zu Ihrem Webhook.

- => Es scheint, dass Twitter keine Nachrichten an Ihren Webhook sendet. Sie haben einen https-Host, oder? Vielleicht stimmt etwas nicht was dein ssl cert? Irgendwelche anderen Fehler in log / Production.log, die mit Twitter zusammenhängen?

Auf unserer Instanz tritt das gleiche Problem auf, wenn die aktuelle Version ausgeführt wird.

Gleich hier habe ich etwas gefunden, das helfen könnte?
Kein solcher Kanal für Benutzer-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 Dies hängt mit dem Community-Problem zusammen. Wir haben die Ursache noch nicht gefunden. Es wäre großartig, wenn wir die Diskussion darüber von diesem Tracker fernhalten könnten. :-)

@raphaelm Bitte geben Sie Martin Feedback, insbesondere zur SSL-Frage.

@rixx Genau das gleiche Problem wie @raphaelm ? Bitte geben Sie Protokolldateien an.

@Martini

- => Es scheint, dass Twitter keine Nachrichten an Ihren Webhook sendet. Sie haben einen https-Host, oder?

Ja.

Vielleicht stimmt etwas nicht was dein ssl cert?

Nicht, dass ich mir vorstellen könnte :

Irgendwelche anderen Fehler in log / Production.log, die mit Twitter zusammenhängen?

Ich kann keine finden.

Bietet Twitter ein Tool zum Debuggen von Webhooks? Ich konnte nichts finden.

Ich denke, das ist wirklich das gleiche Problem - @raphaelm Könnten Sie Ihrem grep-Befehl -A 1 hinzufügen, um eine Zeile danach zu sehen? Der Fehler enthält kein "Twitter" -Wort. Ich denke, wir werden dieselbe Zeile sehen, die ich habe.

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

Nein, nicht das gleiche Problem. "Kein solcher Kanal für Benutzer" wird nicht im Protokoll angezeigt, und ich habe bereits überprüft, ob die Benutzer-IDs übereinstimmen

Okay, vielleicht haben wir hier zwei verschiedene Probleme @martini

Kleines Update zu diesem Thema.
Wir haben erfahren, dass dies nur stattfindet, wenn die Benutzer-ID zu lang ist.
Dies wurde von einem Community-Benutzer "abelxluck" gefunden.

Der Beitrag ist hier zu finden: https://community.zammad.org/t/dont-receive-twitter-dms-railsserver-error/1799/34

Irgendwelche Updates oder Korrekturen in der Zwischenzeit?

Hey @schiederme - leider noch keine Updates. Wie bereits von @MrGeneration beschrieben, wurden in der Community einige Untersuchungen durchgeführt, die darauf hinweisen, dass die gespeicherte ID möglicherweise falsch ist. Ich habe ein kleines Skript geschrieben, um die gespeicherte ID mit der ID zu vergleichen, die wir von der Twitter-API für jeden Twitter-Kanal erhalten. Außerdem wird die ID ausgedruckt, damit Sie überprüfen können / sollten, ob dies die tatsächliche ID Ihres Kontos ist. Feedback willkommen!

    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

Die Ausgabe sieht folgendermaßen aus:
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).

Sie können es ausführen, indem Sie eine Datei mit dem Namen debug_issue.rb in Ihrem Zammad-Verzeichnis erstellen (normalerweise /opt/zammad ). Führen Sie dann die Datei aus Ihrem Zammad-Verzeichnis über zammad run rails r debug_issue.rb oder rails r debug_issue.rb als Zammad-Benutzer aus, abhängig von Ihrer Installationsquelle (Paket / Quelle). Nachdem Sie fertig sind, können / sollten Sie die Datei debug_issue.rb löschen.

Ich habe das Skript auch mit meinem Konto ( @ level66network bei Twitter) und meiner Zammad-Installation ausprobiert, und es sieht so aus, als ob die IDs in der Installation tatsächlich nicht übereinstimmen.

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

In meinen Protokollen finde ich auch das folgende Problem, das durch den Webhook ausgelöst wurde.

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

Beeindruckend! Das ist es wirklich! Wir haben herausgefunden, dass die ID ordnungsgemäß vom Backend (Ruby) an das Frontend (JavaScript) gesendet wird, wodurch die Zahl da diese großen Ganzzahlen nicht richtig verarbeitet werden können,

Der Fehler tritt also auf, sobald Sie einen Twitter-Kanal öffnen, um ihn zu bearbeiten und Ihre Änderungen anschließend zu speichern. Nach diesem Zeitpunkt können Sie keine Twitter-Direktnachrichten mehr empfangen.

Sie können Ihre defekten Kanäle beheben, indem Sie den folgenden Befehl ausführen:

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

Über die Zammad Rails Konsole .

Dies funktioniert jedoch nur, bis Sie Ihren Twitter-Kanal erneut über die Administrationsoberfläche speichern / bearbeiten. Wir arbeiten an einer nachhaltigen Lösung dafür.

@rlue - kannst du bitte von hier übernehmen? Wir müssen die ID in eine Zeichenfolge konvertieren und auf diese Weise speichern. Mein Hotfix-Skript könnte der Ausgangspunkt für die erforderliche Migration sein. Außerdem müssen wir den Code ändern,

Ich habe vergessen zu erwähnen: Vielen Dank @MrXermon, dass reingesprungen bist ! Ihre Eingabe und die von abelxluck haben mir geholfen, die Grundursache im Zammad-Kontext zu finden. Fix ist unterwegs 🚂

Vielen Dank an @thorsteneckel , die Arbeit rund um funktioniert!

Vielen Dank an @thorsteneckel für die Erstellung der

Außerdem müssen wir die anderen Stellen finden, die die ID verwenden, und sicherstellen, dass sie die Zeichenfolgenversion ordnungsgemäß verarbeiten.

@thorsteneckel , ist es sicher anzunehmen, dass

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

sollten alle Instanzen finden, nach denen wir suchen?

Ich würde vorschlagen, nach 'Twitter::Account' zu graben. Dies ist die Kennung für alle Twitter-Kanäle, in denen das Attribut id im Attribut options gespeichert ist.

Mit dem obigen Commit behoben. Wird mit Zammad 3.2 veröffentlicht, das bald verfügbar sein wird (1-2 Wochen).

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen