使用输出上下文响应操作特定上下文



我目前正在尝试使用 webhook 响应更改我的一个上下文的特定值,从我发现的情况来看,以下内容应该有效:

{
"fulfillmentText": ${textToSpeech},
"fulfillmentMessages": [{ "text": { "text": [${text}] } }],
"payload": {
"google": {
"expectUserResponse": true,
"richResponse": {
"items": [
{
"simpleResponse": {
"textToSpeech": ${textToSpeech},
"displayText": ${text}
}
}
],
"suggestions": ${suggestions},
"linkOutSuggestion": {
"destinationName": "Feedback",
"url": ${feedbackURL}
}
}
}
},
"outputContexts": [
{
"name": "projects/${projectID}/agent/sessions/${conversationID}/contexts/${context}",
"lifespanCount": 15,
"parameters": { 
"param":"value"
}
}]
}

但是,这不会更改该上下文中指定的任何参数。我是否做错了什么,或者是否有更好的方法 使用 webhook 响应更改输出上下文的参数?

您可能需要检查传入上下文的命名方式。

名称可以具有以下格式之一:

  • projects/<Project ID>/agent/sessions/<Session ID>/contexts/<Context ID>
  • projects/<Project ID>/agent/environments/<Environment ID>/users/<User ID>/sessions/<Session ID>/contexts/<Context ID>

如果上下文使用第二种格式(包括环境和用户 ID(,则需要创建具有相似名称的上下文。

具体来说,您之前/contexts/<Context ID>的部分应该与 WebhookRequest 中提供的完整会话字符串匹配,您猜对了,它匹配以下两种模式之一:

  • projects/<Project ID>/agent/sessions/<Session ID>
  • projects/<Project ID>/agent/environments/<Environment ID>/users/<User ID>/sessions/<Session ID>

刚刚设法解决了这个问题。 我没有尝试创建自己的输出上下文,我只是在req.body.queryResult.outputContexts中操作了值。

例如:req.body.queryResult.outputContexts[0].parameters.param="value"

然后发送带有原始输出上下文的响应

{
"fulfillmentText": ${textToSpeech},
"fulfillmentMessages": [{ "text": { "text": [${text}] } }],
"payload": {
"google": {
"expectUserResponse": true,
"richResponse": {
"items": [
{
"simpleResponse": {
"textToSpeech": ${textToSpeech},
"displayText": ${text}
}
}
],
"suggestions": ${suggestions},
"linkOutSuggestion": {
"destinationName": "Feedback",
"url": ${feedbackURL}
}
}
}
},
"outputContexts": ${req.body.queryResult.outputContexts}
}

最新更新