#node.js #botframework
#node.js #botframework
Вопрос:
Я привык к v3 node botbuilder sdk, поэтому у меня есть промежуточное программное обеспечение, в котором я просматриваю стек диалогов и выполняю необходимую мне операцию следующим образом.
Промежуточное программное обеспечение V3, которое знает стек диалогов:-
bot.use({
botbuilder: function (session, next) {
if (session.dialogStack()amp;amp; session.dialogStack().length <= 0 ) {
// Do something is dialog stack is empty.
}
},
send: function (event, next) {
if (event.type != "typing" amp;amp; event.type != "endOfConversation") {
logUserConversation("Botoutput", event);
}
next();
}
});
Промежуточное программное обеспечение V4, в котором мне нужно использовать стек диалоговых окон для выполнения некоторых операций.
adapter.use(async (turnContext, next) => {
// pre-processing of the current incoming activity
turnContext.onSendActivities(async (sendContext, activities, nextSend) => {
// console.log(`pre-processing of outgoing activities`);
await nextSend();
***//Need to know the dialog stack here.***
});
await next();
});
Я посмотрел на объект turnContext, но нет никаких указаний на наличие стека диалоговых окон. Я вижу, что у объекта DialogContext есть свойство ‘stack’, но не уверен, как использовать в моем промежуточном программном обеспечении.
Ответ №1:
Вам нужно только добавить действия.метод фильтрации для извлечения переданных данных, и все готово.
const conversationState = new ConversationState(memoryStorage);
const userState = new UserState(memoryStorage);
adapter.use(async (turnContext, next) => {
const userActivity = turnContext.activity;
if (userActivity.from.role === 'user' amp;amp; turnContext.activity.text.length > 0) {
console.log('From user: ', userActivity);
}
turnContext.onSendActivities(async (sendContext, activities, nextSend) => {
await nextSend();
activities.filter(a => a.type !== 'typing' amp;amp; a.type !== 'endOfConversation').forEach(a => console.log('From bot: ', a));
});
await next();
});
Надеюсь на помощь!
Комментарии:
1. Я думаю, вы неправильно поняли мой вопрос. Я говорил о доступе к стеку диалоговых окон, а не о циклическом просмотре данных о действиях.
2. @vijay, я обновил код, чтобы он лучше соответствовал предоставленному вами коду версии v3. if фиксирует активность, поступающую от пользователя. onSendActivities фиксирует любое действие, которое не является вводом текста или типом endOfConversation от бота. В совокупности это отражает стек диалоговых окон.