Как передать данные в артефакт?

Есть какие-нибудь советы, как передавать данные в артефакт? Я хочу вставлять один и тот же артефакт во многих местах на моём форуме, используя в каждом случае разный JWT-токен. Я пробовал разные варианты, например такие, но не могу заставить Creator использовать их:

<div class="ai-artifact" data-jwt-token="my-jwt-token" data-ai-artifact-id="10"></div>

Или, если Web Creator сможет определить, в какой теме он находится, я смогу работать с этим.

3 лайка

О, это сложная задача. Нет, на данный момент фреймворк это не поддерживает, хотя это очень интересный вариант использования.

Мне нравится идея в этом запросе на новую функцию — просто передавать все атрибуты data-* в изолированный артефакт; это элегантное решение.

Один из возможных вариантов — использовать параметры запроса, но у изолированного iframe нет к ним доступа:

https://meta.discourse.org/discourse-ai/ai-bot/artifacts/166?222

@david, как ты думаешь, есть ли какие-либо последствия для безопасности при передаче артефакту информации об окружающем мире? (оставить песочницу, но, возможно, вывести echo window.location.search в какой-нибудь атрибут?)

3 лайка

Предоставление артефакту доступа к строке запроса звучит нормально. Самый простой способ — использовать Ruby для внедрения её в недоверенный HTML-документ. Возможно, как мета-тег или что-то подобное.

3 лайка

Это была идея бота. :slight_smile:

Я считаю, что для реальных артефактов это очень распространённый сценарий. У меня есть артефакт финансового анализа, который я хочу запускать для множества инвестиций. Артефакт получает данные о производительности из API, используя JWT для идентификации конкретной инвестиции. Создание множества различных артефактов, каждый с жёстко заданным JWT, — это неприемлемое решение.

Не хочу испытывать удачу, но если бы я также мог получать идентификатор пользователя и идентификатор темы внутри артефакта, это открыло бы гораздо больше возможностей для применения.

4 лайка

Добавить идентификатор темы несложно, но с идентификатором пользователя всё чуть сложнее, поскольку артефакт сильно кэшируется. Чтобы это реализовать, нам пришлось бы уменьшить объём кэширования.

На самом деле это было бы лучше для моего приложения, чем передача атрибутов данных. Между темами и моими JWT существует соответствие один к одному, поэтому я могу найти JWT, не редактируя его в каждом посте.

Однако это, вероятно, не покрывает другие варианты использования.

Технически, достаточно просто передать URL, так как идентификатор темы является частью URL.

Разберёмся с этим на следующей неделе, в данный момент работаем над поддержкой PDF :slight_smile:

Просто уточняю: это когда-либо было реализовано?

Ещё нет, я сегодня немного поэкспериментирую с этим, чтобы понять, насколько это сложно.

Это решит проблему. В данном случае из-за песочницы действительно нет простого выбора, кроме как использовать post message, поэтому API требует await… Однако это работает, что приятно.

7 лайков

У меня работает отлично!

1 лайк