gpt4 book ai didi

session - 如何在 webhook 上获取 session ID

转载 作者:行者123 更新时间:2023-12-01 11:19:03 24 4
gpt4 key购买 nike

我正在为 google home 和 Android 移动助手制作助手应用程序

我正在使用 action-on-google推荐且方便的 webhook 上的库

在我的具体情况下,我想制作 userEntity来自需要 session ID 但 的 webhook我无法在 webhook 上获取 sessionid

根据 api.ai document它像这样将 Json 发送到 webhook:

{
"lang": "en",
"status": {
"errorType": "success",
"code": 200
},
"timestamp": "2017-02-09T16:06:01.908Z",
"sessionId": "1486656220806" <<<<<<<<======here is session id
"result": {
"parameters": {
"city": "Rome",
"name": "Ana"
},
"contexts": [],
"resolvedQuery": "my name is Ana and I live in Rome",
"source": "agent",
"score": 1.0,
"speech": "",
"fulfillment": {
"messages": [
{
"speech": "Hi Ana! Nice to meet you!",
"type": 0
}
],
"speech": "Hi Ana! Nice to meet you!"
},
"actionIncomplete": false,
"action": "greetings",
"metadata": {
"intentId": "9f41ef7c-82fa-42a7-9a30-49a93e2c14d0",
"webhookForSlotFillingUsed": "false",
"intentName": "greetings",
"webhookUsed": "true"
}
},
"id": "ab30d214-f4bb-4cdd-ae36-31caac7a6693",
"originalRequest": {
"source": "google",
"data": {
"inputs": [
{
"raw_inputs": [
{
"query": "my name is Ana and I live in Rome",
"input_type": 2
}
],
"intent": "assistant.intent.action.TEXT",
"arguments": [
{
"text_value": "my name is Ana and I live in Rome",
"raw_text": "my name is Ana and I live in Rome",
"name": "text"
}
]
}
],
"user": {
"user_id": "PuQndWs1OMjUYwVJMYqwJv0/KT8satJHAUQGiGPDQ7A="
},
"conversation": {
"conversation_id": "1486656220806",
"type": 2,
"conversation_token": "[]"
}
}
}
}

当然,它正确发送,但在 webhook 上,我们将请求对象移交给 action-on-google它返回一个带有一堆方法的对象,如 ask , askWithCarousel , askWithList等等 ( documented here )

问题是没有方法可以记录对话 ID
那么我如何获得该 session ID:

我的源代码供引用:

/index.ts
import * as admin from 'firebase-admin';
import * as functions from 'firebase-functions';
import { Request, Response } from "express"; //interfaces
const ActionsSdkApp = require('actions-on-google').ApiAiAssistant;

import db from '../db';

// API.AI Action names
import {
inputWelcome
} from './actions'

const WELCOME_INTENT = 'input.welcome';

export const webhook = functions.https.onRequest(async (request: Request, response: Response) => {

console.log("request.body: ", request.body);
console.log("request.body.sessionId: ", request.body.sessionId);

const app = new ActionsSdkApp({ request: request, response: response });

let actionMap = new Map();
actionMap.set(WELCOME_INTENT, inputWelcome);
app.handleRequest(actionMap);
})//end of webhook http trigger

/actions/index.ts
import * as request from 'request';

export function inputWelcome(app: any) {

//I WANT SESSION ID HERE

console.log("app.conversation(): ", app.conversation());
console.log("app.AppRequest: ", app.AppRequest);
console.log("app.AppRequest.conversation: ", app.AppRequest.conversation);

console.log("app.AppRequest(): ", app.AppRequest());
console.log("app.AppRequest().conversation: ", app.AppRequest().conversation);


console.log("app.getUser().accessToken;: ", app.getUser().accessToken)
const accessToken = app.getUser().accessToken;

// MAKE USER ENTITY WITH THESE DATA:
// {
// "sessionId": "current conversation id here",
// "entities": [
// {
// "name": "option1",
// "entries": [
// {
// "value": "option1",
// "synonyms": [
// "first",
// "option one"
// ]
// }
// ]
// },
// {
// "name": "option2",
// "entries": [
// {
// "value": "option2",
// "synonyms": [
// "second one",
// "second option"
// ]
// }
// ]
// },
// {
// "name": "option3",
// "entries": [
// {
// "value": "option3",
// "synonyms": [
// "third one",
// "third option"
// ]
// }
// ]
// },
// {
// "name": "help",
// "entries": [
// {
// "value": "help",
// "synonyms": [
// "help",
// "need help",
// "ditn't get",
// "need support"
// ]
// }
// ]
// }
// ]
// }
//
// AND THEN ASK THE USER WITH SUGGESTION CHIPS

app.ask(app.buildRichResponse()
.addSimpleResponse({
speech: `Hi you can start with these things`,
displayText: `Hi you can start with these things`
})
.addSuggestions(['option1', 'option2', 'option3', 'Help'])
)
}

最佳答案

支持者说:

Hi,

Thank you for your interest in Actions on Google. If you are using nodejs for your webhook, you should be able to access the sessionId with request.body.sessionId. You can store that value in a variable and use it at later stages in the function.

Kind Regards

Jean-Charles, Actions on Google Support Team



enter image description here

关于session - 如何在 webhook 上获取 session ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46368359/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com