问题描述
在使用webhook检查用户是否登录后,我试图将用户对调查表的回复保存在Firestore中。
app.intent('Default Welcome Intent',async (conv) => {
conv.ask(new SignIn('To get your account details'));
})
app.intent('Get Signin',async (conv,params,signin) => {
console.log("...........GET SIGN IN INTENT............")
if (signin.status === 'OK') {
const payload = conv.user.profile.payload;
conv.data.userID = `${payload.email}`;
conv.data.userName = `${payload.given_name}`;
prompt = randomize(diary.o1);
conv.ask(`<speak> ${getGreetings(moment().add(2,'hours'))} ${conv.data.userName},</speak>`);
ask(conv,prompt,reprompt(prompt));
output_context = "awaiting_oq1";
conv.data.q = 'oq1';
conv.data.output_context = output_context;
conv.contexts.set(output_context,3);// set the output context
conv.data.q_text = prompt;
conv.data.q_time = new Date().toISOString();
conv.data.fallbackCount = 0;
} else {
conv.ask(new SignIn('To get your account details'));
}
})
app.intent('oq1',{ response,enquiry_oq1 }) => {
console.log("OQ1 response: " + response)
conv.data.entry = {
questionned_at: conv.data.q_time,answered_at: new Date().toISOString(),response: response,question: conv.data.q,question_text: conv.data.q_text,fallback_count: conv.data.fallbackCount
}
await setData(conv);// save the user response
... and ask the next question ...
})
- setData函数如下所示:
async function setData(conv) {
const entryData = conv.data.entry;
const promises = [];
const input1 = await coll_ref.doc(conv.data.userID).collection(today).add(entryData);
const input2 = await coll_ref.doc(conv.data.userID).set({ data: "empty" });
const input_data = promises.push([input1,input2]);
}
问题是,一旦我登录,它就会抛出“默认回退意图”,并且不会在数据库中保存任何内容。怎么了?
此设置在2020年8月18日之前可以正常工作。在firestore-> functions-> log中没有显示任何错误。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)