IBM Watson Assistant: как Skill может получить доступ к session_id с помощью V2 API WA

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?

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

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
862
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете получить доступ к контекстным переменным, используя либо context[variableName], либо $variableName. См. документация по выражениям для доступа к объектам в IBM Watson Assistant.

идентификатор сессии, если он присутствует (это зависит от интерфейса), является частью системных переменных (context.system.session_id). Я только что попытался получить доступ и распечатать его в предварительном просмотре, добавив следующий текст ответа:

My session ID: <? $system.session_id ?>

<? ?> используется для оценки выражения в тексте.

Я протестировал его с API V2 в моем инструмент для разговора, и идентификатор сеанса хорошо напечатан в качестве ответа.

Я попытался добавить контекст: { "session_id":"<? $system.session_id ?>" }, но это приводит к нулю при использовании функции Try it. Другие настройки в json работают, поэтому я считаю, что session_id не находится в context.system. Глядя на то, что возвращается на веб-страницу предварительного просмотра, мы видим session_id как одноранговый элемент для вывода, но у нас нет к нему доступа. Не уверен, как отлаживать то, что происходит между Помощником (Агентом) и Навыком.

wnm3 12.04.2019 00:15

session_id присутствует только в том случае, если интерфейс использует V2 API. «Попробуйте» устарело и ИМХО основано на V1. Новый предварительный просмотр и другие интеграции, похоже, основаны на V2 API и, следовательно, имеют его.

data_henrik 12.04.2019 07:24

Другие вопросы по теме