Как я могу сохранить данные в хранилище из ответа на внешний 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?