コメント欄からのリプライのメンション表示が変な件について、メンション表示だけの問題なら良いのだけど、 #fedibird に通知が届かない問題がある。そのことに初めて気づいたのが c=125 のコメントで、c=137 のコメントで通知が届くようにする方法を確認した。要するにコメント欄から返信すれば、返信元へのメンションが自動的に付加されるのだけど、 #fedibird のアカウントに返信する場合はコメント欄にメンションを自分で記載する必要があるというもの。表示が変なのは自動的に付加される方で、自分で記載した方がマストドンの通常の表示になる。

https://ishii00141.stars.ne.jp/20250216-1148-881/#comment-125
この c=125 と c=137 がどのようにマストドンに送られているのか確認してなかったのだが、データベースの wp_posts テーブルで見つけたので、記録しておく。utf-8でエンコードされていて分かりにくかったのだが、デコードして記録しておく。デコードは #Gemini に頼んだ。
まずは c=125 の方。
{
"@context": [
"https://www.w3.org/ns/activitystreams",
{
"Hashtag": "as:Hashtag",
"sensitive": "as:sensitive"
}
],
"id": "https://ishii00141.stars.ne.jp/?c=125",
"type": "Note",
"attributedTo": "https://ishii00141.stars.ne.jp/?author=0",
"content": "<p><a rel=\"mention\" class=\"u-url mention\" href=\"https://fedibird.com/@hitorinezumi\">@hitorinezumi@fedibird.com</a> <a rel=\"mention\" class=\"u-url mention\" href=\"https://mastodon-japan.net/@ishii00141\">@ishii00141@mastodon-japan.net</a> ダメ押しの返信テスト。<br />「A←B←A←A」「A←B←A←A←A」のAの返信は全て、Bへのメンションも付いてしまった。<br />「A←B←A←A←A←C」のCの返信はAへのメンションだけ。<br />では、「A←B←A←A←A←C←A」はBへのメンションが付くのか?<br />Cの返信にBへのメンションが無いのでつかないと思うが、テスト。</p>",
"contentMap": {
"ja": "<p><a rel=\"mention\" class=\"u-url mention\" href=\"https://fedibird.com/@hitorinezumi\">@hitorinezumi@fedibird.com</a> <a rel=\"mention\" class=\"u-url mention\" href=\"https://mastodon-japan.net/@ishii00141\">@ishii00141@mastodon-japan.net</a> ダメ押しの返信テスト。<br />「A←B←A←A」「A←B←A←A←A」のAの返信は全て、Bへのメンションも付いてしまった。<br />「A←B←A←A←A←C」のCの返信はAへのメンションだけ。<br />では、「A←B←A←A←A←C←A」はBへのメンションが付くのか?<br />Cの返信にBへのメンションが無いのでつかないと思うが、テスト。</p>"
},
"inReplyTo": "https://fedibird.com/users/hitorinezumi/statuses/114011783882976303",
"published": "2025-02-16T05:06:38Z",
"tag": [
{
"type": "Mention",
"href": "https://fedibird.com/@hitorinezumi",
"name": "@hitorinezumi@fedibird.com"
},
{
"type": "Mention",
"href": "https://mastodon-japan.net/@ishii00141",
"name": "@ishii00141@mastodon-japan.net"
}
],
"url": "https://ishii00141.stars.ne.jp/?c=125",
"to": [
"https://www.w3.org/ns/activitystreams#Public"
],
"cc": [
"https://ishii00141.stars.ne.jp/wp-json/activitypub/1.0/actors/0/followers",
"https://fedibird.com/@hitorinezumi",
"https://mastodon-japan.net/@ishii00141"
],
"mediaType": "text/html",
"replies": {
"id": "https://ishii00141.stars.ne.jp/wp-json/activitypub/1.0/comments/125/replies",
"type": "Collection",
"first": {
"id": "https://ishii00141.stars.ne.jp/wp-json/activitypub/1.0/comments/125/replies?page=1",
"type": "CollectionPage",
"partOf": "https://ishii00141.stars.ne.jp/wp-json/activitypub/1.0/comments/125/replies",
"items": []
}
},
"sensitive": false
}
次に c=137 の方。
{
"@context": [
"https://www.w3.org/ns/activitystreams",
{
"Hashtag": "as:Hashtag",
"sensitive": "as:sensitive"
}
],
"id": "https://ishii00141.stars.ne.jp/?c=137",
"type": "Note",
"attributedTo": "https://ishii00141.stars.ne.jp/?author=0",
"content": "<p><a rel=\"mention\" class=\"u-url mention\" href=\"https://fedibird.com/@hitorinezumi\">@hitorinezumi@fedibird.com</a> <a rel=\"mention\" class=\"u-url mention\" href=\"https://mastodon-japan.net/@ishii00141\">@ishii00141@mastodon-japan.net</a> <a rel=\"mention\" class=\"u-url mention\" href=\"https://fedibird.com/@hitorinezumi\">@<span>hitorinezumi</span></a> コメント欄にメンションを付けて返信すれば、通知が届くということですか?</p>",
"contentMap": {
"ja": "<p><a rel=\"mention\" class=\"u-url mention\" href=\"https://fedibird.com/@hitorinezumi\">@hitorinezumi@fedibird.com</a> <a rel=\"mention\" class=\"u-url mention\" href=\"https://mastodon-japan.net/@ishii00141\">@ishii00141@mastodon-japan.net</a> <a rel=\"mention\" class=\"u-url mention\" href=\"https://fedibird.com/@hitorinezumi\">@<span>hitorinezumi</span></a> コメント欄にメンションを付けて返信すれば、通知が届くということですか?</p>"
},
"inReplyTo": "https://fedibird.com/users/hitorinezumi/statuses/114011889007024579",
"published": "2025-02-16T11:26:51Z",
"tag": [
{
"type": "Mention",
"href": "https://fedibird.com/users/hitorinezumi",
"name": "@hitorinezumi@fedibird.com"
},
{
"type": "Mention",
"href": "https://mastodon-japan.net/@ishii00141",
"name": "@ishii00141@mastodon-japan.net"
}
],
"url": "https://ishii00141.stars.ne.jp/?c=137",
"to": [
"https://www.w3.org/ns/activitystreams#Public"
],
"cc": [
"https://ishii00141.stars.ne.jp/wp-json/activitypub/1.0/actors/0/followers",
"https://fedibird.com/users/hitorinezumi",
"https://mastodon-japan.net/@ishii00141"
],
"mediaType": "text/html",
"replies": {
"id": "https://ishii00141.stars.ne.jp/wp-json/activitypub/1.0/comments/137/replies",
"type": "Collection",
"first": {
"id": "https://ishii00141.stars.ne.jp/wp-json/activitypub/1.0/comments/137/replies?page=1",
"type": "CollectionPage",
"partOf": "https://ishii00141.stars.ne.jp/wp-json/activitypub/1.0/comments/137/replies",
"items": []
}
},
"sensitive": false
}
コメント
あっ、"cc":のURLが異なる。
c=125 の方は" https://fedibird.com/@hitorinezumi "で、
c=137 の方は" https://fedibird.com/users/hitorinezumi "。
通知が届くか届かないかの違いは、これかも。
" https://fedibird.com/users/hitorinezumi "は" https://fedibird.com/@hitorinezumi "にリダイレクトされる。"cc":にあるURLがリダイレクト後のものだと、 #fedibird の場合は通知が届かないのか…。
"tag":のURLも異なる。これは"cc":と同じURL。同じ所から取得しているのかな?通知で重要なのは"cc":の方のURLらしい。
wp_optionsテーブルにWebFingerプロトコルで使用されるJSON形式のデータがあったようなので、メモしておく。
「a:3:{s:7:"subject";s:30:"acct:hitorinezumi@fedibird.com";」で始まっているのだけど、#Gemini に見やすいように整形してもらった。
{
"subject": "acct:hitorinezumi@fedibird.com",
"aliases": [
"https: //fedibird.com/@hitorinezumi",
"https: //fedibird.com/users/hitorinezumi"
],
"links": [
{
"rel": "http: //webfinger.net/rel/profile-page",
"type": "text/html",
"href": "https: //fedibird.com/@hitorinezumi"
},
{
"rel": "self",
"type": "application/activity+json",
"href": "https: //fedibird.com/users/hitorinezumi"
},
{
"rel": "http: //ostatus.org/schema/1.0/subscribe",
"template": "https: //fedibird.com/authorize_interaction?uri={uri}"
}
]
}
mastodon.socialでも同様。
text/htmlの方は「ドメイン/@ユーザー」で
application/activity+jsonの方は「ドメイン/users/ユーザー」だった。
だから、 #fedibird にリプライする時に、ccフィードが「ドメイン/@ユーザー」の方になってしまうことが問題。
そうではない。
mastodon.socialへの2025年3月11日 8:06 AMのリプライ(c=340)では、次のようにtext/htmlの方の「ドメイン/@ユーザー」になってる。
"cc":["https:\/\/ishii00141.stars.ne.jp\/wp-json\/activitypub\/1.0\/actors\/0\/followers","https:\/\/mastodon.social\/@ishii00141"],
ただ、記事からのメンションなら、application/activity+jsonの方の「ドメイン/users/ユーザー」になってる。
https://ishii00141.stars.ne.jp/20250327-1540-2191/#comment-542
コメントの時はtext/htmlの方を拾っているというよりも、コメント欄で確認できる相手のアカウントのURLを取得してccフィールドに送っているのか?
記事の方は、テキストからアカウントの形式を取得して、そのURLは何かを確認する関数を通ってccに記入するURLを決めているのだろうが、コメント欄からのリプライでは違うのかもしれない。同じ関数を通してプロフィールURLのtext/htmlの方を取得するとは思えない。
https://mastodon.social/@ishii00141 のヘッダに
<link href='https: //mastodon.social/users/ishii00141' rel='alternate' type='application/activity+json'>
https://fedibird.com/@hitorinezumi のヘッダに
<link href='https: //fedibird.com/users/hitorinezumi' rel='alternate' type='application/activity+json'>
これは通知には効かないのか…。
@ishii 通知が届いてましたが、メンションしましたか?
コメント欄にURLを記載しましたが、メンションはしていません。
今度は通知が届かなかったようですね。 #Gemini に教わったコードをfunctions.phpに追加してみましたが、今度はどうでしょう?
通知は届かず、Fatal error: Uncaught Error: が発生したので、即座に戻した。
データベースによると、「/?post_type=ap_outbox&p=2167」に次のコードが含まれていた。
"cc":["https:\/\/ishii00141.stars.ne.jp\/wp-json\/activitypub\/1.0\/actors\/0\/followers","https:\/\/fedibird.com\/users\/hitorinezumi","https:\/\/mastodon-japan.net\/users\/
/?p=2164 の元の投稿にも“cc”に同じURLが含まれていた。リプライしてもコメント欄に載らなかったのにリプライとして扱われたらしい。リプライ元の投稿を遡ると、それらのアカウントからの、あるいはアカウントへのリプライがあるはず。確認してみる。
無い!
違った。?p=2164 の“cc”は本文の引用コードの所のこと。
怪しいのは、記事に書いたコードの部分。これで通知しちゃった?
もちろん、mastodon-japan.netの方にも通知が来てる。
良く見たら、コードブロックにメンションがある。マストドンの方ではメンションとして認識されてないけど…。
想定外の通知は、コードブロックに記載したメンションが原因だった。
https://ishii00141.stars.ne.jp/20250327-1540-2191/