如何解决ApplicationInsightsTelemetryClient不记录机器人标识符
我正在使用botframework的JavaScript版本。我已遵循the documentation在Application Insights中启用遥测日志记录。当我访问日志时,可以看到正在记录自定义事件。
问题是未记录机器人特定的标识符,例如user_Id,session_Id和session_Id。可以在下面的屏幕截图中看到
在<rewrite>
<rules>
<rule name="Imported Rule 1" stopProcessing="true">
<match url="^" ignoreCase="false" />
<conditions logicalGrouping="MatchAny">
<add input="{DOCUMENT_ROOT}{URL}" matchType="IsFile" ignoreCase="false" />
<add input="{DOCUMENT_ROOT}{URL}" matchType="IsDirectory" ignoreCase="false" />
</conditions>
<action type="None" />
</rule>
<!--# Fallback all other routes to index.html-->
<rule name="Imported Rule 2" stopProcessing="true">
<match url="^" ignoreCase="false" />
<action type="Rewrite" url="/path/to/subfolder/index.html" />
</rule>
</rules>
</rewrite>
文件中,有一个名为applicationInsightsTelemetryClient.js
的函数。据我所知,正是这个功能负责添加机器人特定的标识符。
函数的第一行如下所示:
addBotIdentifiers
检查此功能将显示function addBotIdentifiers(envelope,context) {
if (context.correlationContext && context.correlationContext.activity) {
参数始终为context
。
这使我想到了问题。
- 为什么它为空?
- 关于我需要做哪些设置适当的建议?
更新
进一步研究时,似乎未调用代码starting at line 26 in the applicationInsightsTelemetryClient.js文件。稍后可能会导致null
函数中缺少上下文吗?
解决方法
在第7步中,文档似乎缺少一行。我们将尽快更正该文档。同时,请在https://github.com/microsoft/BotBuilder-Samples/blob/main/samples/javascript_nodejs/21.corebot-app-insights/index.js#L113
之后将以下内容添加到您的index.js中// Enable the Application Insights middleware,which helps correlate all activity
// based on the incoming request.
server.use(restify.plugins.bodyParser());
,
进一步的调查显示了问题所在。这不是立即显而易见的。
我将int main()
{
float a = 10.000;
float b = 3.000;
float c=a/b;
float d = (int)(c * 1000+1) / 1000.0;
cout << d;//d=3.334
return 0;
}
文件中的代码与21.corebot-app-insights BotBuilder示例中的代码进行了比较。
请注意,Restify服务器的设置会在创建适配器漫游器适配器后 进行。这也是在配置主对话框和中间件之后。
在我的代码中,Restify服务器和bot adatper /对话框的设置混合在一起。这似乎是问题的原因。
对我以及以后偶然发现本文的人来说,主要课程是Restify服务器的设置应位于index.js
文件的末尾。为了确保首先安装所有bot框架。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。