Inz*_*lik 3 session bots actions-on-google api-ai
我正在为Google Home和Android移动助手制作助手应用
我在webhook 上使用Google Action上的Google图书馆,这是推荐且方便的方法
在我的特定情况下,我想从webhook中创建userEntity,这需要会话ID,但是我无法在webhook上获取sessionid
根据api.ai文档,它将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": "[]"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
和ofcourse它被正确,但是,网络挂接我们切换请求对象发送到它action-on-google,并将其与一堆类似方法返回一个对象ask,askWithCarousel,askWithList和等(这里记录)
问题是没有方法可以记录会话ID,然后如何获取会话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
Run Code Online (Sandbox Code Playgroud)
/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'])
)
}
Run Code Online (Sandbox Code Playgroud)
支持人员说:
你好
感谢您关注Google的操作。如果您将nodejs用于webhook,则应该能够使用request.body.sessionId访问sessionId。您可以将该值存储在变量中,并在以后的函数中使用它。
亲切的问候
Jean-Charles,Google支持小组的行动
| 归档时间: |
|
| 查看次数: |
2494 次 |
| 最近记录: |