У меня есть фид уведомлений типа NOTIFICATIONS:userID
, а у меня плоский фид GLOBAL:domain
.
Фид уведомлений настроен так, чтобы следовать плоскому каналу, но когда я выполняю действия sh для плоского канала, они не поступают в канал уведомлений. Я не могу заставить их проходить через реагирующие компоненты или делать вызовы API напрямую. Любые элементы в ленте уведомлений проходят нормально, но не через плоский канал.
Есть ли что-то, что я бы пропустил при настройке каналов, чтобы сделать это возможным? Я не уверен, почему это не работает.
Вот код, используемый для вызова getstream:
// AddNotification writes a feed notification to the provided feed.
func (c *Client) AddNotification(feedID, actor string, n *feed.Notification) error {
keys := map[string]bool{}
feeds := make([]stream.Feed, 0)
for _, s := range n.Streams {
if s == feed.STREAM_NONE {
continue
}
if _, ok := keys[s.String()]; ok {
continue
}
f, err := c.getstream.FlatFeed(s.String(), feedID)
if err != nil {
return errors.Wrapf(err, "failed to get feed %s", feedID)
}
keys[s.String()] = true
feeds = append(feeds, f)
}
extra, err := getExtraFromString(n.Content)
if err != nil {
return errors.Wrap(err, "failed to marshal extra content")
}
appliesAt, err := time.FromProtoTS(n.GetAppliesAt())
if err != nil {
return errors.Wrap(err, "failed to cast applies at time")
}
activity := stream.Activity{
Actor: actor,
Verb: n.GetVerb(),
Object: n.GetObject(),
Extra: extra,
ForeignID: n.GetIdempotentKey(),
Time: stream.Time{Time: appliesAt},
}
log.WithFields(log.Fields{
"activity": activity,
"feeds": keys,
}).Debug("sending request to stream.io")
if err = c.getstream.AddToMany(activity, feeds...); err != nil {
return errors.Wrap(err, "error while feeding to stream.io")
}
return nil
}
Просто чтобы немного объяснить код. У нас есть тип feed.Notification
, который позволяет вам указать то, что мы назвали «потоками», это просто типы, представляющие слагов.
В этом случае я использую фид GLOBAL:domain
, которой настроен канал NOTIFICATION:userID
пользователя для отслеживания.