Как я могу сохранить данные в хранилище из ответа на внешний API

Мы используем функции облачной базы 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");
});

Проблема в том, что conv.user.storage.note устанавливается, когда я получаю ответ от API, но затем он сбрасывается до пустого значения, поэтому каждый раз создается новая заметка. Я пытаюсь добавить различные входные данные от пользователя, чтобы одна заметка

2 ответа

Для любого, кому это может в итоге помочь, я нашел пост и понял, что для работы с ответами на асинхронные вызовы может потребоваться больше размышлений (для работы в обходных путях) Как сделать асинхронные вызовы от внешних служб к действиям в 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");
});

На основании...

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, либо вы удалили этот код до того, как опубликовать его в Stackru. Это верно?

Можете ли вы обновить свой вопрос, чтобы показать, куда и как вы отправляете HTTP-запрос на ваш внешний REST API?

Другие вопросы по тегам