获取用户的所有对话

时间:2019-03-22 11:08:52

标签: botframework

(Microsoft Bot Framework的新功能)是否可以找到用户的所有现有对话?我正在使用Microsoft Bot Framework(SDK4)制作聊天机器人。

要求:我想列出用户到现在为止的所有对话。

1 个答案:

答案 0 :(得分:0)

Bot框架目前无法从笔录或商店中提取所有过去的对话。

但是,有两种方法可以捕获用户对话,因此您不必依赖对话的完整记录。

第一个选择是实现记录所需活动或活动元素的中间件。您选择要捕获的内容以及要执行的操作由您决定。在以下代码中,我在控制台中登录了所有用户响应以及不是键入事件或endOfConversation事件的所有bot活动。您将用存储数据的自定义代码替换console.log()调用。请记住,您在此处进行的任何调用都会在每个用户/机器人活动中发生。如果要进行API调用,请考虑将数据存储在一个对象中,并在返回“ endOfConversation”(或类似内容)时将其保存。

adapter.use(async (turnContext, next) => {
    // turnContext.(async (ctx, activities, next) => {
    //     activities.filter(a => a.type === 'message').forEach(a => console.log('From user: ', a));
    // });
    const userActivity = turnContext.activity;
    if (userActivity.from.role === 'user' && turnContext.activity.text.length > 0) {
        console.log('From user: ', userActivity);
    }

    turnContext.onSendActivities(async (sendContext, activities, nextSend) => {
        await nextSend();

        activities.filter(a => a.type !== 'typing' && a.type !== 'endOfConversation').forEach(a => console.log('From bot: ', a));
    });
    await next();
});

第二种方法是在Botbuilder-Samples回购的logger / transcript-logger样本之后对您的机器人进行建模。您可以修改customLogger.js文件以适应您的需求并输出到商店。

希望有帮助!