gpt4 book ai didi

node.js - 将 QnA 用户问题和答案添加到 Node JS 中的 Insights 遥测

转载 作者:行者123 更新时间:2023-12-04 08:48:05 25 4
gpt4 key购买 nike

我需要使用遥测向 QnA 用户发送有关我的 Azure 机器人见解的问题和答案。已经尝试过本教程:
https://docs.microsoft.com/en-us/azure/bot-service/bot-builder-telemetry?view=azure-bot-service-4.0&tabs=javascript
这个SO帖子:

  • How to get the Qna Maker "Q" from Analytics Application Insights?
  • How can I save some custom qna maker data in azure app insights?

  • 事情是,首先它是为 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 文件,如果我控制台记录该项目,我将获得完整的遥测对象,但我如何将用户问题和答案传递给它以节省洞察力自定义事件?

    最佳答案

    找到了一种方法,以防正在寻找 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 文件(bot.js 或您正在使用的文件):
    class MYBOT extends ActivityHandler {
    constructor(conversationState,userState,telemetryClient) {
    super();

    this.conversationState = conversationState;
    this.userState = userState;
    this.telemetryClient = telemetryClient;
    }
    }
    稍后在代码中,您可以使用 遥测.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 字段中的 dict 的属性对象。

    关于node.js - 将 QnA 用户问题和答案添加到 Node JS 中的 Insights 遥测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64213598/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com