This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Nightly fedibird の絵文字リアクション機能
対応サーバの見分け方
GET https://nightly.fedibird.com/api/v1/instance
- fedibird_capabilities[] に "emoji_reaction" が含まれるなら対応サーバ
Status エンティティに追加されるデータ
"emoji_reactioned" :boolean?
自分がリアクション済みなら真
"emoji_reactions": Array
[
{
"name": "👍",
"count": 1, // 後述する理由で、0の場合にパーサは対応すること
"me": false // 自分がリアクションしたなら真
},
{
"name": "zzzsushi",
"count": 1,
"me": true,
"url": "https://files-nightly.fedibird.com/custom_emojis/images/000/002/352/original/zzzsushi.png",
"static_url": "https://files-nightly.fedibird.com/custom_emojis/images/000/002/352/static/zzzsushi.png",
"domain": null // リモートの絵文字ならdomainが設定される
}
]
リアクションの追加
-
Request Method: PUT
-
Request URL: https://nightly.fedibird.com/api/v1/statuses/106245771772524935/emoji_reactions/%F0%9F%91%8D
-
Request URL: https://nightly.fedibird.com/api/v1/statuses/106245771772524935/emoji_reactions/zzzsushi
-
Request URL: https://nightly.fedibird.com/api/v1/statuses/106245771772524935/emoji_reactions/zzzsushi@domain
-
Status Code: 200
-
response: updated status
-
Emoji 13など、サーバが絵文字として認識しないnameを渡すと422エラーとなる
リアクションの削除
- Request Method: POST
- Request URL: https://nightly.fedibird.com/api/v1/statuses/106245771772524935/emoji_unreaction
- Status Code: 200
- response: updated status
userストリームのnotificationイベント
- userストリームに通知イベントがくる。
- 通知タイプは
emoji_reaction
。 - クライアントはそれを通知TLに表示する他、各種TLに出ている投稿のリアクション内容を更新する。
- ステータスの投稿者に送られる。
- 自分でリアクションした時は通知は来ない
- リアクション解除した時は通知は来ない
- Notificationオブジェクト直下のemoji_reactionはcount=0,me=falseになる。絵文字の種別のみが有効な情報である。
{
"stream": ["user"],
"event": "notification",
"payload": "..." 下記
}
payload (notification entity)
{
"id":"27804",
"type": "emoji_reaction",
"created_at": "2021-05-16T16:26:47.440Z",
"account": {...},
"status":{
"account":{...},
...
"emojis":[],
"emoji_reactioned":true,
"emoji_reactions":[
{"name":"zzzsushi","count":1,"me":true,
"url":"https://files-nightly.fedibird.com/custom_emojis/images/000/002/352/original/zzzsushi.png",
"static_url":"https://files-nightly.fedibird.com/custom_emojis/images/000/002/352/static/zzzsushi.png",
"domain":null
},
{"name":"🎆","count":1,"me":false}
],
...
},
"emoji_reaction":{
"name":"🎆",
"count":0,
"me":false
}
}
userストリームの emoji_reaction イベント
- userストリームに emoji_reaction イベントが来る。
- 「サーバ上で処理されたリアクション全て」が送られてくる。
- 自分が投げたリアクションに対しても発生する。
- reaction entity中にstatus_idが含まれる。
- meは設定されない。 読込済ステータスのリアクション集合とは適切にマージを行う必要がある。
以下がどの順序で発生してもUIに問題がでないように作ること
- 追加/削除APIへの応答
- 自分の投稿についたリアクションの通知
- emoji_reactionイベント
例えばAPIの応答が返る前にemoji_reactionイベントが来るかもしれないし、自分の投稿についたリアクションの通知の前後にemoji_reactionイベントが来るかもしれない。
{
"stream": ["user"],
"event": "emoji_reaction",
"payload": "…" // 下記
}
payload (reaction entity)
{
"name":"majikayo",
"count":1, // リアクション削除時は0になる
"url":"https://files-nightly.fedibird.com/cache/custom_emojis/images/000/003/843/original/a436fd4f7d99b3b7.png",
"static_url":"https://files-nightly.fedibird.com/cache/custom_emojis/images/000/003/843/static/a436fd4f7d99b3b7.png",
"domain":"misskey.io",
"status_id":"106256591712106765"
}
WebPush
購読APIの data.alerts[] に "emoji_reaction" を追加することでプッシュ通知を受け取れる。
自分がリアクションした投稿の一覧
- see https://fedibird.com/@noellabo/106260836928081303
- GET /api/v1/emoji_reactions
- emojisにUnicode絵文字かshortcode(複数or)を指定すると絞り込めます。
- curl -XGET -H "Authorization: Bearer XXXXXXXX" https://fedibird.com/api/v1/emoji_reactions -d "emojis[]=🎉" -d "emojis[]=nnaa"