API V2 для IBM Watson Assistant требуют, чтобы вы получили идентификатор session_id, а затем использовали его в последующих вызовах Assistant, чтобы значения глобального контекста сохранялись между вызовами. Глядя на веб-страницу ссылки предварительного просмотра, которую мы связали с нашим помощником, кажется, что запрос содержит как объект значения, содержащий все ожидаемые части полезной нагрузки для навыка, так и session_id.
Я хотел бы получить доступ к этому идентификатору session_id в моем навыке, чтобы передать его облачным функциям, которые могут захотеть использовать V2 API для навыков в своих URI. Это возможно? Другими словами, на что нужно ссылаться в содержимом Skills JSON, чтобы получить доступ к значению session_id?
Я предполагаю, что ссылка Preview приводит к использованию V2 API для Assistant (похоже, есть посредник, обслуживающий веб-страницу Preview Link и отправляющий запросы фактическому Assistant), и я также предполагаю, что установка значений context.global в моем Skill вызовет их повторение помощником, поскольку ссылка для предварительного просмотра должна повторно использовать идентификатор session_id?
Как навык может предоставить помощнику обратную связь о том, что идентификатор сеанса может быть удален (например, беседа завершена), заставляя веб-страницу со ссылкой на предварительный просмотр получить доступ к новому идентификатору сеанса?
Вы можете получить доступ к контекстным переменным, используя либо context[variableName]
, либо $variableName
. См. документация по выражениям для доступа к объектам в IBM Watson Assistant.
идентификатор сессии, если он присутствует (это зависит от интерфейса), является частью системных переменных (context.system.session_id
). Я только что попытался получить доступ и распечатать его в предварительном просмотре, добавив следующий текст ответа:
My session ID: <? $system.session_id ?>
<? ?>
используется для оценки выражения в тексте.
Я протестировал его с API V2 в моем инструмент для разговора, и идентификатор сеанса хорошо напечатан в качестве ответа.
session_id присутствует только в том случае, если интерфейс использует V2 API. «Попробуйте» устарело и ИМХО основано на V1. Новый предварительный просмотр и другие интеграции, похоже, основаны на V2 API и, следовательно, имеют его.
Я попытался добавить контекст: { "session_id":"<? $system.session_id ?>" }, но это приводит к нулю при использовании функции Try it. Другие настройки в json работают, поэтому я считаю, что session_id не находится в context.system. Глядя на то, что возвращается на веб-страницу предварительного просмотра, мы видим session_id как одноранговый элемент для вывода, но у нас нет к нему доступа. Не уверен, как отлаживать то, что происходит между Помощником (Агентом) и Навыком.