Чем поле ActivityStreams в поле "Действия" отличается от поля "аудитория"?
Спецификация ActivityStreams объясняет разницу между to
, cc
, bto
, а также bcc
в разделе 5.1. Но есть также audience
свойство, определяемое как:
один или несколько объектов, представляющих общую совокупность объектов, для которых объект может считаться релевантным.
Чем это отличается от "к" и "куб"? В частности, как это влияет на доставку ActivityPub?
1 ответ
Ответ можно найти в списке выпусков спецификации ActivityPub, в этом комментарии Джеймса М Снелла:
audience
используется для таргетинга.Например, предположим, что у меня есть активность, которую все в моей компании должны видеть в своих лентах активности, но только определенные конкретные люди должны быть уведомлены, в результате я получу что-то вроде:
{ //...// "audience": { "type": "Organization", "id": "http://example.org", "name": "My Organization" }, "to": ["http://jane.example.org", "http://joe.example.org"], "cc": ["http://sally.example.org"] }
Здесь
audience
свойство обеспечивает охват всей аудитории, в то время какto
а такжеcc
поля идентифицируют конкретных людей в пределах этой аудитории, которые должны быть уведомлены более непосредственно о деятельности.
После этого обсуждения спецификация была обновлена. См. Таргетинг на аудиторию и, в частности, в пар. 5.1.1
есть еще некоторые уточнения по его использованию:
Мероприятия редко бывают изолированными. Часто несколько отдельных действий будут выполняться в аналогичном контексте или аудитории. Например, сотрудники, работающие над общим проектом, могут выполнять несколько связанных действий в процессе достижения какой-либо цели. Такие действия могут быть логически сгруппированы, используя
context
собственности, и ограничены определенной аудиторией, используяaudience
имущество.
В следующем примере (Пример 144):
{
"@context": "https://www.w3.org/ns/activitystreams",
"summary": "Activities in Project XYZ",
"type": "Collection",
"items": [
{
"summary": "Sally created a note",
"type": "Create",
"id": "http://activities.example.com/1",
"actor": "http://sally.example.org",
"object": {
"summary": "A note",
"type": "Note",
"id": "http://notes.example.com/1",
"content": "A note"
},
"context": {
"type": "http://example.org/Project",
"name": "Project XYZ"
},
"audience": {
"type": "Group",
"name": "Project XYZ Working Group"
},
"to": "http://john.example.org"
},
{
"summary": "John liked Sally's note",
"type": "Like",
"id": "http://activities.example.com/1",
"actor": "http://john.example.org",
"object": "http://notes.example.com/1",
"context": {
"type": "http://example.org/Project",
"name": "Project XYZ"
},
"audience": {
"type": "Group",
"name": "Project XYZ Working Group"
},
"to": "http://sally.example.org"
}
]
}