首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将整个会话从机器人保存到存储中?

如何将整个会话从机器人保存到存储中?
EN

Stack Overflow用户
提问于 2020-01-02 17:40:16
回答 2查看 91关注 0票数 1

我用c#在v4框架中做了一个机器人。我希望将整个对话以可读的格式保存到存储中。我们的要求是将机器人对话保存为可读格式或纯文本。在我的例子中,只有用户信息被保存,而不是用户和机器人之间的对话。

EN

回答 2

Stack Overflow用户

发布于 2020-01-02 17:49:32

您可以使用一个中间件来实现这一点:

有关middlewares的更多信息

中间件将为您在存储中保存文字记录。

票数 4
EN

Stack Overflow用户

发布于 2020-01-02 19:20:41

您可以使用以下代码

我曾经在nodejs上工作过,但它应该类似于C#。

对于每个步骤,调用logActivity

代码语言:javascript
复制
const { preserveService } = require('../../../Service/dbService');



await preserveService.logActivity(step.context, userData,Any param);

logActivity : async function (turnContext, userData,Any param){
try{
    let userInfo = await userDataUtil.getUserInfo(turnContext,userData);
    colNameAndValueArray = [
        {
            [PROPERTY_NAME.COLUMN_NAME] : 'response_from',
            [PROPERTY_NAME.VALUE] : responsefrom,
            [PROPERTY_NAME.DATATYPE] : DATATYPE.STRING
        },

        {
            [PROPERTY_NAME.COLUMN_NAME] : 'user_session_id',
            [PROPERTY_NAME.VALUE] : userInfo.userId,
            [PROPERTY_NAME.DATATYPE] : DATATYPE.STRING
        },
        {
            //conversation_id
            [PROPERTY_NAME.COLUMN_NAME] : 'conversation_id',
            [PROPERTY_NAME.VALUE] : turnContext._activity.conversation.id,
            [PROPERTY_NAME.DATATYPE] : DATATYPE.STRING
        },
        {
            [PROPERTY_NAME.COLUMN_NAME] : 'is_answered',
            [PROPERTY_NAME.VALUE] : isAnswered,
            [PROPERTY_NAME.DATATYPE] : DATATYPE.BOOLEAN
        }

    ]
     await this.insert(CONFIG.DB.AUDIT_TABLE, colNameAndValueArray);

}catch(err){
    console.log(`------------------------`);
    console.log(`Error occurred while inserting audit logs`);
    console.log(err);
    console.log(`------------------------`);
}}


insert : async function(tableName, colNameAndValueArray, returnColumnName){
let query = null;
try{
    if(util.isNotEmptyString(tableName) && util.isNotEmptyArray(colNameAndValueArray)){
        let columnNames = dbUtil.getColNames(colNameAndValueArray);
        let columnValues = dbUtil.getColValues(colNameAndValueArray); 
        if(columnNames ==  null || columnValues == null){
            throw new Error('Invalid column name or value. Kindly check the value you have passed');
        }
        query = `INSERT INTO ${tableName} (${columnNames}) VALUES (${columnValues}) ${util.isNotEmptyString(returnColumnName)? ` RETURNING ${returnColumnName}`: ''}`;
        console.log(`------------------------`);
        console.log(`Query : ${query}`);
        console.log(`------------------------`);
        return this.executeQuery(query);
    }else{
        return Promise.reject(REQUIRED_PARAMETER_MISSING);
    }
}catch(err){
    console.log(`------------------------`);
    console.log(`Error occurred while executing insert query : ${ query != null ? query : '' }`);
    console.log(err);
    console.log(`------------------------`);
    return Promise.reject(err);
}}

希望这能有所帮助

Sanjeev Guatam

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59561135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档