我们正在使用firebase云功能来实现我们的运行,并使用外部休息API来实现我们的运行。
我们有一个意图,有一些跟进,它看起来像这样
- Create Note
- - Create Note - fallback*
- - - Create Note - fallback - yes
- - - Create Note - fallback - no
* the fallback allows us to capture free text
在我们的webhook中,我有以下的实现
app.intent("Create Note", (conv) => {
if (!conv.user.storage.note) conv.user.storage.note = {};
conv.ask("Go ahead, talk to Talkatoo!");
});
app.intent("Create Note - fallback", (conv) => {
conv.user.storage.input = conv.input.raw;
let response = conv.user.storage.note
? conv.user.storage.note.body.concat(conv.input.raw)
: conv.user.storage.input;
conv.ask("So far this is what I heard you say, let me know if this is complete. ", response);
});
app.intent("Create Note - fallback - yes", (conv) => {
// based on the conv.user.storage.note object
// either make a call to create a note or update a note
// make call to external api and based on the response
// set the value for conv.user.storage.note
conv.ask("Great news, let me save that for you!");
});
app.intent("Create Note - fallback - no", (conv) => {
// based on the conv.user.storage.note object
// either make a call to create a note or update a note
// make call to external api and based on the response
// set the value for conv.user.storage.note
// Send the user back to Create Note to capture the rest of their input
conv.followup("my_custom_event");
});
问题是当我从API获得响应时conv.user.storage.note
正在设置,但随后它被重置为空,因此每次都会创建一个新注释。我试图将用户的各种输入附加到一个音符
基于 ...
app.intent("Create Note - fallback - yes", (conv) => {
// based on the conv.user.storage.note object
// either make a call to create a note or update a note
// make call to external api and based on the response
// set the value for conv.user.storage.note
conv.ask("Great news, let me save that for you!");
});
看起来你还没有编写API调用的代码,或者你在StackOverflow上发布之前删除了那些代码。那是对的吗?
您是否可以更新您的问题以显示向外部REST API发送HTTP请求的位置和方式?
对于任何可能最终帮助的人,我发现了一个帖子,并意识到处理对异步调用的响应可能需要更多的思考(在工作中工作)How to make asynchronous calls from external services to actions on google?
对于我们的用例,我们不需要响应数据,即我们不需要将任何响应数据传达给用户,因此我们将用户的多个输入保存在user.storage中,当它们完成时我们保存完整的回应。
app.intent("Intent - fallback", (conv) => {
conv.user.storage.input = conv.user.storage.input
? conv.user.storage.input.concat(conv.input.raw)
: conv.input.raw;
conv.ask("Is that complete or would you like to continue?");
});
app.intent("Intent - fallback - yes", (conv) => {
createNote(conv); <--- makes call to save
conv.ask("Great news, let me save that for you!");
});
app.intent("Intent - fallback - no", (conv) => {
conv.followup("my_custom_event");
});