0

我们使用 firebase 云功能来实现我们的功能,并使用外部 rest api 来进行 crud 操作。

我们有几个后续行动的一个意图,它看起来像这样

 - Create Note
 - - Create Note - fallback*
 - - - Create Note - fallback - yes
 - - - Create Note - fallback - no

* the fallback allows us to capture free text

在我们的网络钩子中,我有以下满足

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");
});

问题是,conv.user.storage.note当我从 API 获得响应时,它正在设置,但随后它被重置为空,因此每次都会创建一个新注释。我正在尝试将用户的各种输入附加为一个注释

4

2 回答 2

0

基于 ...

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 之前删除了该代码。那是对的吗?

您能否更新您的问题以显示您将 HTTP 请求发送到外部 REST API 的位置和方式?

于 2019-02-25T17:56:01.453 回答
0

对于最终可能会有所帮助的任何人,我发现了一篇文章并意识到处理对异步调用的响应可能需要更多思考(以解决问题)如何从外部服务进行异步调用到谷歌上的操作?

对于我们的用例,我们不需要响应数据,即我们不需要将任何响应数据传达给用户,因此我们将用户的多个输入保存在 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");
});
于 2019-02-25T20:49:47.507 回答