当我在Sialogflow意图中使用“日期”实体时,我希望它能够根据特定的时区来解释today的日期。
该时区在会话之间可能会有所不同,因为我的web客户端知道用户的特定时区,并且可以在请求中或在第一次发起会话时传递这一点。
现在,对话框流只使用UTC,所以如果用户在加利福尼亚,UTC-7,在加利福尼亚是January 1st, 9pm,在UTC是4am on January 2nd,所以用户说today被解释为January 2nd,而不是想要的January 1st。
发布于 2018-04-17 16:34:04
根据文档,在发送查询时有一个timezone参数:
POST /query sample
HTTPCURL
curl \
https://api.dialogflow.com/v1/query?v=20150910 \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_CLIENT_ACCESS_TOKEN' \
-d '{
"contexts": [
"shop"
],
"lang": "en",
"query": "I need apples",
"sessionId": "12345",
"timezone": "America/New_York"
}'因此,如果您知道用户的时区,您只需要在每个请求上发送它。
API V2
对于API V2代理,可以在queryParams.timeZone中发送时区。
const sessionClient = new dialogflow.SessionsClient({
keyFilename: '/path/to/google.json'
});
const sessionPath = sessionClient.sessionPath('[PROJECT_ID]', '[SESSION_ID]');
const request = {
session: sessionPath,
queryInput: {
text: {
text: 'query',
languageCode: 'en'
}
},
queryParams: {
timeZone: 'America/New_York'
}
};
sessionClient.detectIntent(request)
.then(res => console.log(res))
.catch(err => console.error(err))https://stackoverflow.com/questions/49883196
复制相似问题