Zammad: لا تصل رسائل Twitter DM والإشارات

تم إنشاؤها على ٣٠ يناير ٢٠١٩  ·  22تعليقات  ·  مصدر: zammad/zammad

أهلا،

قمنا بإعداد تكامل Twitter وفقًا للتوثيق لا تظهر إعدادات القناة أي أخطاء. ومع ذلك ، لا شيء يصل.

معلومات:

  • إصدار زمماد المستخدم: 2.8.0-1548330940.ad390e9f.stretch
  • طريقة التثبيت (المصدر ، الحزمة ، ..): حزمة دبيان
  • نظام التشغيل: ديبيان سترتش
  • قاعدة البيانات + الإصدار: MariaDB

سلوك متوقع:

  • عندما يذكرنا شخص ما أو يرسل رسالة مباشرة ، يتم إنشاء تذكرة Zammad.

السلوك الفعلي:

  • عندما يذكرنا شخص ما أو يرسل رسالة مباشرة ، لا يحدث شيء.

نعم أنا متأكد من أن هذا خطأ وليس طلب ميزة أو سؤال عام.
هل يمكنك مساعدتنا في معرفة المعلومات التي تحتاجها لتصحيح الأخطاء؟

bug frontend / JS app verified

التعليق الأكثر فائدة

لقد نسيت أن أذكر: شكرا للطن MrXermon للقفز بهذه السرعة! ساعدتني مدخلاتك ومدخلات abelxluck في العثور على السبب الجذري في سياق Zammad. الإصلاح في الطريق 🚂

ال 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 للتحقق من ربط الويب الخاص بك. لكني لا أرى مكالمات http من Twitter إلى webhook الخاص بك.

- => يبدو أن Twitter لا يرسل رسائل إلى خطاف الويب الخاص بك. لديك مضيف https ، أليس كذلك؟ ربما شيء خاطئ الذي سيرتك ssl؟ أي أخطاء أخرى في log / production.log مرتبطة بتويتر؟

نواجه نفس المشكلة في مثالنا ، تشغيل الإصدار الحالي.

بالمثل هنا ، وجدت شيئًا يمكن أن يساعد؟
لا توجد مثل هذه القناة لمعرف المستخدم "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 يرجى تقديم ملاحظات لمارتن ، خاصة حول سؤال SSL.

rixx بالضبط نفس المشكلة مثل raphaelm ؟ يرجى تقديم ملفات السجل.

@مارتيني

- => يبدو أن Twitter لا يرسل رسائل إلى خطاف الويب الخاص بك. لديك مضيف https ، أليس كذلك؟

نعم.

ربما شيء خاطئ الذي سيرتك ssl؟

لا يمكنني التفكير في: https://www.ssllabs.com/ssltest/analyze.html؟d=support.rami.io&latest

أي أخطاء أخرى في log / production.log مرتبطة بتويتر؟

لا يمكنني العثور على أي منها.

هل يوفر Twitter أي أداة لتصحيح أخطاء الويب هوك؟ لم أجد أي شيء.

أعتقد أن هذه هي المشكلة نفسها حقًا - هل يمكنك إضافة -A 1 إلى أمر grep لرؤية سطر واحد بعده؟ الخطأ لا يحتوي على كلمة "twitter" ، أعتقد أننا سنرى نفس السطر الذي لدي.

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

كلا ، ليست نفس القضية. لا تظهر عبارة "لا توجد مثل هذه القناة للمستخدم" في السجل وقد تحققت بالفعل من تطابق معرفات المستخدم

حسنًا ، قد يكون لدينا مشكلتان مختلفتان هنا

تحديث صغير في هذه القضية.
علمنا أن هذا يحدث فقط إذا كان معرف المستخدم طويلاً جدًا.
تم العثور على هذا من قبل مستخدم المجتمع "abelxluck".

يمكن العثور على المنشور هنا: https://community.zammad.org/t/dont-receive-twitter-dms-railsserver-error/1799/34

أي تحديثات أو إصلاحات في هذه الأثناء؟

مرحبًا schiederme - للأسف لا توجد تحديثات بعد. كما وصف MrGeneration سابقًا ، كانت هناك بعض الأبحاث في المجتمع تشير إلى أن المعرف المخزن قد يكون خاطئًا. لقد كتبت نصًا صغيرًا لمقارنة المعرّف المخزن بالمعرّف الذي نتلقاه من Twitter API لكل قناة 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

      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).

يمكنك تنفيذه عن طريق إنشاء ملف يسمى debug_issue.rb في دليل Zammad الخاص بك (عادة /opt/zammad ). ثم قم بتشغيل الملف من دليل Zammad عبر zammad run rails r debug_issue.rb أو rails r debug_issue.rb كمستخدم zammad ، اعتمادًا على مصدر التثبيت (الحزمة / المصدر). بعد الانتهاء ، يمكنك / يجب عليك حذف ملف debug_issue.rb .

لقد جربت البرنامج النصي مع حسابي ( @ level66network at Twitter) وتثبيت Zammad أيضًا ، ويبدو أن المعرفات غير متطابقة بالفعل في التثبيت.

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

في سجلاتي ، أجد أيضًا المشكلة التالية التي تم تشغيلها بواسطة الويب هوك.

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

رائع! هذا هو حقا! لقد اكتشفنا أن المعرّف يتم إرساله بشكل صحيح من الواجهة الخلفية (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

عبر وحدة سكك زماد .

ومع ذلك ، لن يعمل هذا إلا حتى تذهب وتحفظ / تعدل قناة Twitter الخاصة بك عبر واجهة المسؤول مرة أخرى. نحن نعمل على حل مستدام لهذا.

rlue - هل يمكنك من فضلك تولي الكود الذي يجلب ويخزن المعرف في البداية كعدد صحيح . بالإضافة إلى ذلك ، نحتاج إلى العثور على الأماكن الأخرى التي تستخدم المعرف والتأكد من أنها تتعامل مع إصدار السلسلة بشكل صحيح.

لقد نسيت أن أذكر: شكرا للطن MrXermon للقفز بهذه السرعة! ساعدتني مدخلاتك ومدخلات abelxluck في العثور على السبب الجذري في سياق Zammad. الإصلاح في الطريق 🚂

شكرا لك @ thorsteneckel ، العمل حول يعمل!

شكرًا لك @ thorsteneckel على إنشاء الحل البديل! إنه يعمل مع نظامي أيضًا! <3

بالإضافة إلى ذلك ، نحتاج إلى العثور على الأماكن الأخرى التي تستخدم المعرف والتأكد من أنها تتعامل مع إصدار السلسلة بشكل صحيح.

thorsteneckel ، هل من الآمن افتراض ذلك

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

يجب أن نجد كل الحالات التي نبحث عنها؟

أقترح البحث عن 'Twitter::Account' . هذا هو معرف لجميع تويتر قنوات، التي لديها id المخزنة في options السمة.

ثابت مع الالتزام أعلاه. سيصدر مع Zammad 3.2 والذي سيصل قريبًا (1-2 أسبوع).

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات