【问题标题】:Add QnA users questions and answers to Insights telemetry in Node JS在 Node JS 中添加 QnA 用户对 Insights 遥测的问题和答案
【发布时间】:2020-10-05 17:38:36
【问题描述】:

我需要使用遥测技术向 QnA 用户发送有关我的 Azure 机器人见解的问题和答案。已经尝试过这个教程:

https://docs.microsoft.com/en-us/azure/bot-service/bot-builder-telemetry?view=azure-bot-service-4.0&tabs=javascript

这个 SO 帖子:

问题是,首先它是为 LUIS 完成的,并且没有向 Insights 提供任何其他信息,也没有为 QnA 提供任何内容......第二个是为 C# 编写的......

我需要使用 NodeJS 在 Azure 见解上向 customEvents 日志发送问题和答案,但我找不到方法,有什么帮助吗?

提前致谢。

///// 编辑:

这是我到目前为止所得到的(仅发布了与遥测和 QnA 相关的代码,这些代码已经可以正常工作):

索引.js

const { ApplicationInsightsTelemetryClient, TelemetryInitializerMiddleware } = require('botbuilder-applicationinsights');
const { TelemetryLoggerMiddleware } = require('botbuilder-core');

function getTelemetryClient(instrumentationKey) {
    if (instrumentationKey) {
        return new ApplicationInsightsTelemetryClient(instrumentationKey);
    }
    return new NullTelemetryClient();
}

const server = restify.createServer();
server.use(restify.plugins.bodyParser());


var telemetryClient = getTelemetryClient(process.env.InstrumentationKey);
var telemetryLoggerMiddleware = new TelemetryLoggerMiddleware(telemetryClient);
var initializerMiddleware = new TelemetryInitializerMiddleware(telemetryLoggerMiddleware);
adapter.use(initializerMiddleware);


const mybot = new MYBOT(conversationState,userState, telemetryClient);

mybot.js

class MYBOT extends ActivityHandler {
    constructor(conversationState,userState,telemetryClient) {
        super();

        this.conversationState = conversationState;
        this.userState = userState;
        this.telemetryClient = telemetryClient;
    }
}

//This is how I get my qna result:
console.log(this.telemetryClient);
var result = await this.qnaMaker.getAnswers(context);

如您所见,我将 telemetryClient 传递给 bot 文件,如果我在控制台记录该项目,我将获得完整的遥测对象,但我如何将用户问题和答案传递给它,以便节省洞察力 customevents ??

【问题讨论】:

    标签: node.js azure-application-insights botframework


    【解决方案1】:

    找到了一种方法,以防正在寻找 Node 可能解决方案之一的人可能需要它:

    基本上,我们使用官方文档中描述的相同遥测代码过程来在 index.js 上实例化遥测:

    const { ApplicationInsightsTelemetryClient, TelemetryInitializerMiddleware } = require('botbuilder-applicationinsights');
    const { TelemetryLoggerMiddleware } = require('botbuilder-core');
    
    function getTelemetryClient(instrumentationKey) {
        if (instrumentationKey) {
            return new ApplicationInsightsTelemetryClient(instrumentationKey);
        }
        return new NullTelemetryClient();
    }
    
    const server = restify.createServer();
    server.use(restify.plugins.bodyParser());
    
    
    var telemetryClient = getTelemetryClient(process.env.InstrumentationKey);
    var telemetryLoggerMiddleware = new TelemetryLoggerMiddleware(telemetryClient);
    var initializerMiddleware = new TelemetryInitializerMiddleware(telemetryLoggerMiddleware);
    adapter.use(initializerMiddleware);
    
    
    const mybot = new MYBOT(conversationState,userState, telemetryClient);
    

    然后,我们将其传递给机器人文件(bot.js 或您正在使用的文件):

    class MYBOT extends ActivityHandler {
        constructor(conversationState,userState,telemetryClient) {
            super();
    
            this.conversationState = conversationState;
            this.userState = userState;
            this.telemetryClient = telemetryClient;
        }
    }
    

    稍后在代码中,您可以使用 telemetry.trackEvent 方法(官方文档仅在 C# 中),但基本上,它允许您创建要在特定事件中跟踪的自定义事件您的代码,例如当您的机器人出现错误或找不到用户的答案时。根据前几行的代码是这样的:

    this.telemetryClient.trackEvent(
            {name: "myEvent", 
             properties: {my_user_question: 'Context activity text here or your captured question', 
             my_bot_answer: 'bot reply or whatever'}
            }
    ); // name and properties are part of the sintaxys, values inside properties object as you may need.
    

    这样,在 Azure 洞察 customEvents 模型上,您将看到使用您使用的事件名称捕获的记录,以及属性对象作为 customdimensions 字段中的字典。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多