我目前正在尝试使用 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}
}