チャット概要スキップバグ

チャット要約メールが有効なメールアドレスを持つユーザーでスキップされています。

image

分析を行った結果、その理由がわかりました。

スキップが発生する最終的な場所は以下の通りです。

これは message.to が空白であるためです。

message.to が空白なのは、send_user_email に渡される引数に to_address が含まれておらず、ユーザーのプライマリメールでエンリッチされないためです。例:

args: {"type"=>"chat_summary", "user_id"=>3, "force_respect_seen_recently"=>true, "current_site_id"=>"default"}

これは Chat Mailer によって呼び出され、to_address が欠落していることがわかります。

これは問題ないかもしれませんが、send_user_email の先頭に到達するまでに、to_address がユーザーメールでエンリッチされているべきだと考えられます。これにより、渡されたときに、メーラーがこのプロパティにアクセスできるようになり、メール送信が成功します。

send_user_email にこの小さなモンキーパッチを追加したところ、問題は解消されました。

      # CORE BUG: to_address を設定しないと、最終的にメールが送信されずスキップされます。
      # これはコアバグであり、Meta で報告する必要があります。
      if args[:to_address].blank? && user&.primary_email&.email
        args[:to_address] = user&.primary_email&.email
      end
「いいね!」 2

デバッグありがとうございます @merefield さん。メンバーのXPがすぐに確認するようにします。

「いいね!」 2

これを少し調べてみたのですが、たどっていくとエンリッチメントがあるはずです。

メール送信者から始まり ここ 、次に ユーザー通知拡張を呼び出しここで ユーザーメールでエンリッチし、次にメールビルドヘルパーに渡します ここ 、そして最後に送信する前にメッセージビルダーでアドレスを設定します ここ

それ以外にも、チャット要約メールは他のサイトで既に機能しているため、ここでの問題の原因はおそらく他にあるでしょう。

一時的な解決策として、ジョブにユーザーメールを渡すことで、最初から正しいデータがあることへの信頼性/可視性が少し高まると思います。

「いいね!」 3

修正に関するフィードバックがなかったため、クローズします。