Как сохранить данные между разговорами в Dialogflow?
Я не понимаю, как вы должны сохранять данные. Я пытался с помощью
let conv = agent.conv()
conv.data.data1=mydata //to save
mydata = conv.data.data1 //to load
agent.add(conv)
но это сбой моего приложения. Я видел, что вы можете поместить информацию в
var token = JSON.stringify(request.body.originalDetectIntentRequest.payload.conversation.conversationToken);
а как вы помещаете данные в разговор, взятый в ответе?
Какой у вас метод? Спасибо
2 ответа
Используйте выходной контекст для сохранения параметров
{
"fulfillmentText":"This is a text response",
"fulfillmentMessages":[ ],
"source":"example.com",
"payload":{
"google":{ },
"facebook":{ },
"slack":{ }
},
"outputContexts":[
{
"name":"<Context Name>",
"lifespanCount":5,
"parameters":{
"<param name>":"<param value>"
}
}
],
"followupEventInput":{ }
}
Если вы используете NodeJS клиент
Вы можете сохранить контекст с такими параметрами, как
let param1 = [];
let param2 = {};
let ctx = {'name': '<context name>', 'lifespan': 5, 'parameters': {'param1':param1, 'param2': param2}};
agent.setContext(ctx);
и получить это как
let params = agent.getContext("<context name>").parameters;
let param1 = params.param1;
let param2 = params.param2;
Вы можете хранить массивы, JSON obj, но есть предел общей полезной нагрузки, которую может сохранить ответ. проверьте более подробную информацию здесь. Для больших данных используйте БД.
Кроме того, если вы используете автономные действия в Google, вы можете просто добавить пару ключ-значение в объект данных. Смотрите ссылку, где они хранят счет
Также, если вы хотите пометить эти параметры как обязательные и использовать заполнение слотов, это автоматически сгенерирует ваши выходные контексты во время выполнения. Вы можете увидеть это с помощью простого примера здесь: https://github.com/dialogflow/fulfillment-slot-filling-nodejs