我正在尝试通过添加 wit/datetime 来扩展 wit-ai 天气示例。
例如,用户可能会输入“柏林 1 小时内会有多冷?” 天气机器人将在 1 小时内带回柏林的天气数据。
到目前为止,这是可行的,但是当我尝试设置missingDate
以询问日期是否丢失时,它的行为有点有趣。
对话将是:
- How cold will it be in Berlin?
- In what time?
- In 1 hour.
相反,在 1 小时的步骤之后,我再次被询问上下文中的位置,而是再次被触发。
我的动作被命名getForecast({context, entities})
,我将其定义如下:
actions:
[...],
getForecast({ context, entities }) {
console.log(`The current context is: ${JSON.stringify(context)}`);
console.log(`Wit extracted ${JSON.stringify(entities)}`);
// extract entity
var location = firstEntityValue(entities, "location");
var date = firstEntityValue(entities, "datetime");
// if the entity exists, do a remote weather call.
if (date) {
context.date = date;
delete context.missingDate;
} else {
context.missingDate = true;
delete context.date;
delete context.forecast;
}
if (location) {
context.forecast = '38 degrees';
context.location = location;
delete context.missingLocation;
} else {
context.missingLocation = true;
delete context.forecast;
}
// return the context object
return Promise.resolve(context);
}