Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于botframework v4 node.js在bot中查看Azure blob存储中保存的聊天记录_Node.js_Azure_Botframework - Fatal编程技术网

基于botframework v4 node.js在bot中查看Azure blob存储中保存的聊天记录

基于botframework v4 node.js在bot中查看Azure blob存储中保存的聊天记录,node.js,azure,botframework,Node.js,Azure,Botframework,我正在保存基于核心bot示例并在node.js中编写的bot的成绩单 我使用了这个解决方案: 我正试图找出如何从blob中提取聊天记录,并以一种好的格式显示或查看保存的聊天记录,但到目前为止我还无法确定 我还没有找到这方面的任何参考资料,所以如果可以的话,请帮助我 如果您使用AzureBlobTranscriptStore和TranscriptLoggerMaddware记录您的机器人聊天历史记录,日志将存储在blob存储中的文件夹下:/。每个活动都将记录为.json文件 例如,我使用bot e

我正在保存基于核心bot示例并在node.js中编写的bot的成绩单

我使用了这个解决方案:

我正试图找出如何从blob中提取聊天记录,并以一种好的格式显示或查看保存的聊天记录,但到目前为止我还无法确定


我还没有找到这方面的任何参考资料,所以如果可以的话,请帮助我

如果您使用
AzureBlobTranscriptStore
TranscriptLoggerMaddware
记录您的机器人聊天历史记录,日志将存储在blob存储中的文件夹下:
/
。每个活动都将记录为.json文件

例如,我使用bot emulator对其进行测试,所有日志存储如下:

您可以使用或阅读它们

在这种情况下,我使用Azure powershell获取聊天日志,请尝试下面的powershell:

$storageAccount = "<your storage account name>"
$resourceGroup = "<your resource group name>"
$containerName = "<your container name>"
$storage = Get-AzStorageAccount -name $storageAccount -ResourceGroupName $resourceGroup
$channel="emulator"
$conversationID = "<conversationID>"
$prefix = $channel+"/"+$conversationID 

$chatlogs = Get-AzStorageBlob -Prefix $prefix -Container $containerName -Context $storage.Context 

$tempPath = "d:/temp/"
mkdir $tempPath
foreach($log in $chatlogs){
    $jsonFile = Get-AzStorageBlobContent -Blob $log.Name -Container $containerName -Context $storage.Context -Destination $tempPath -Force
    Get-Content -Raw -Path ($tempPath+$jsonFile.Name) | ConvertFrom-Json | select type,timestamp,from,recipient,text
}

Remove-Item -Recurse -Force $tempPath 
$storageAccount=“”
$resourceGroup=“”
$containerName=“”
$storage=Get-AzStorageAccount-name$storageAccount-ResourceGroupName$resourceGroup
$channel=“emulator”
$conversationID=“”
$prefix=$channel+“/”+$conversationID
$chatlogs=Get-AzStorageBlob-Prefix$Prefix-Container$containerName-Context$storage.Context
$tempPath=“d:/temp/”
mkdir$tempPath
foreach($login$chatlogs){
$jsonFile=Get-AzStorageBlobContent-Blob$log.Name-Container$containerName-Context$storage.Context-Destination$tempPath-Force
Get Content-Raw-Path($tempPath+$jsonFile.Name)| ConvertFrom Json |选择类型、时间戳、发件人、收件人、文本
}
删除项-递归-强制$tempPath
您可以在emulator中找到对话ID:

结果:

希望能有帮助

更新:

请尝试以下代码,通过存储节点JS SDK获取聊天日志内容:

var azure = require('azure-storage');

var storageAccount = "<storage account name>"
var key = "<storage key>"
var container ="chatlog"
var conversationID = "<conversation ID>"
var channel = "emulator"
var prefix = channel + "/" + conversationID

var blobService = azure.createBlobService(storageAccount,key);

 blobService.listBlobsSegmentedWithPrefix(container,prefix,null,function(err, results, resp){

    results.entries.forEach(element => {

     blobService.getBlobToText(container,element.name,function(err, results, resp){console.log(results);
     });

  });
 });
var azure=require('azure-storage');
var storageAccount=“”
var key=“”
var container=“chatlog”
var conversationID=“”
var channel=“仿真器”
var前缀=通道+“/”+会话ID
var blobService=azure.createBlobService(storageAccount,key);
blobService.listBlobsSegmentedWithPrefix(容器、前缀、null、函数(错误、结果、响应){
results.entries.forEach(元素=>{
getBlobToText(容器、元素、名称、函数(err、results、resp){console.log(results);
});
});
});
结果:


更多关于nodejs存储SDK的示例

您好,您的问题已经解决了吗?您好,这真的很有帮助,但是您是否知道如何使用azure nodejs存储SDK执行相同的操作?您好,我已经更新了我的答案,添加了示例代码以使用nodejs存储SDK获取聊天日志。如果对你有帮助,请在我的帖子上注明答案。非常感谢,先生!