当前位置: 首页 > 知识库问答 >
问题:

在GCP中的StackDrive中没有对DialogFlow日志的json_payload

颛孙成益
2023-03-14

最近,我尝试从StackDriver检索DialogFlow日志(即,包含有关会话信息/交互的所有信息),以通过启用以下选项来执行仪表板自定义分析

但是,在我检查了DialogFlow日志条目的格式之后,似乎只有非结构化text_payload可用(即)并且没有结构化json_payload。

痛苦的是,我无法轻易地解析text_payload从中得到我想要的数据。因此,我的问题是:

    < li >通过启用我错过的一些设置,json_payload是否可用? < li >如果由于某种原因json_payload不可用,有没有其他容易用于数据检索的格式?或者任何我可以用在text_payload上的解析器?

提前感谢。

Dialogflow请求的日志条目格式:

{ “textPayload”: “Dialogflow Request : {”session“:”44885105“,”query_input“:”{\n \“event\”: {\n \“name\”: \“WELCOME\”,\n \“parameters\”: {\n }\n }\n}“,”timezone“:”Australia/Sydney“}”, “insertId”: “gnp3xsg27351ns”, “resource”: { “type”: “global”, “labels”: { “project_id”: “ai-hackathon-2020-lrwc” } }, “timestamp”: “2020-08-07T04:11:29.737Z”, “severity”: “INFO”, “labels”: { “request_id”: “05f6f343-a646-42e0-8181-48c2e853e21b-0820055c”, “protocol”: “V2”, “type”: “dialogflow_request” }, ”logName“: ”projects/ai-hackathon-2020-lrwc/logs/dialogflow_agent“, ”trace“: ”44885105“, ”receiveTimestamp“: ”2020-08-07T04:11:29.800030654Z“ }

Dialogflow响应的日志条目格式:{“textPayload”:“DialogFlowResponse:id:“05f6f343-a646-42e0-8181-48c2e853e21b-0820055c”\nlang:“en”\n会话id:“44885105”\ntimestamp:“2020-08-07T04:11:29.747Z”\n结果来源:“代理”\n解析的查询:“欢迎”\n操作:“输入。欢迎”\nScore:1.0\n参数\n上下文{\n名称:“defaultwelcomeintent Follow”OWUP“\n寿命:2\n参数{\n}\n{n}\n元数据{}\nIntent_id:“22498e9a-efcf-43e0-a945-36a7ef4c702d”\n intent_ name:“默认欢迎意向”\n webhook_used:“false”\n webhook_for_slot_filling_Use:“false”\n is_fallback_intent:“Fas”\n}履行{\n语音:“你好!您想报告什么样的问题?”\n消息{lang:“en”\n类型{\n number_value:0.0\n}\n语音{\n string_value:“你好!您想报告什么样的问题?”\n}\n}\n}46-42e0-8181-48c2e853e21b-0820055c“},“日志名”:projects/ai-hackathon-2020-lrwc/logs/dialogflow_agent,“跟踪”:“44885105”,“接收时间戳”:“2020-08-07T04:11:29.800030654Z”}

共有2个答案

陆正德
2023-03-14

您可以像这样使用parse dialogflow日志模块:

  1. 首先删除对话流实现响应:对话流实现请求:对话流请求:和对话流响应:

对于前3个,只需使用JSON.parse()解析,最后一个使用parse-dialogflow-log模块解析,如我做的这个简单函数所示。(

async function parsePayload(odj){
let result = await odj.map((e)=>{
let a = e.textPayload;
let g;
let c;
let w = a.slice(0, 31);

if(w.includes(':')){
    let t = a.slice(0,21)
     g = a.replace(t, '{') + '}'
     try {
         c = parser.parse(g);  
         e.textPayload = c;
     } catch (error) {
          console.log('ERROR AT: ' + t) 
          try {
              g = a.replace(t, '');
              let df = JSON.parse(g)
               e.textPayload = df
           } catch (error) {
               console.log('cannot parse req')
           }
      }
        
      }else{
        let u = a.slice(0, 32)
        if(u.includes(':')){
            g = a.replace(u, '') 
            try {
                c = parser.parse(g);
                console.log(u)
                console.log(c)
            } catch (error) {
                console.log('ERROR AT: ' + u) 
                try {
                let dd = JSON.parse(g)
                e.textPayload = dd;
                } catch (error) {
                console.log('cannot parse')
                }
            }
        }else{
            let v = a.slice(0, 34);
            g = a.replace(v, '') 
            try {
                c = parser.parse(g);
            } catch (error) {
                console.log('ERROR AT: ' + v) 
                try {
                let dd = JSON.parse(g)
                e.textPayload = dd;
                } catch (error) {
                console.log('cannot parse')
                }
            }
            
        }
      }
    
      return e
})
return result

}

高正初
2023-03-14

我查看了这个关于处理有效负载的文档,发现当日志行是序列化的JSON对象并且启用detect_json选项时,输出插件会将日志条目转换为结构化(JSON)有效负载。默认情况下,此选项为在App Engine灵活环境和Google库伯内特斯上运行的VM实例启用Engine.Whereas默认情况下,在App Engine标准环境上运行的VM实例中不启用此选项。

但是,可以自定义代理的配置以支持从其他资源引入结构化日志。有关流式结构化 (JSON) 日志记录到云日志记录的文档可能会有所帮助。

由自定义配置的日志记录代理流式传输的日志记录的有效负载可以是单个非结构化文本消息(textPayload),也可以是结构化 JSON 消息 (jsonPayload)。

 类似资料:
  • 我正在使用 雄猫 9 日食版本: 2020-09 (4.17.0) Apache Maven 3.6.3 我开始编写一个servlet,它运行在Tomcat容器中。当我在Ecplise(在服务器上调试)中运行它时,我可以看到一些来自Tomcat的日志输出。喜欢 servlet运行良好,开始如下所示: 但我看不到调试行。 对于日志记录,我使用的是slf4j 1.7和log4j2。我有以下<code>

  • 我正在尝试通过使用spring-cloud d-gcp-starter-log将SpringBootApplication(微服务)与StackdriverLogging集成。我能够在GCP中看到日志,但在日志中traceId和SPANId丢失。为此,我也尝试使用Spring-cloud d-sleuth,但由于我在我的微服务中使用apache kafka,因此侦探无法正常工作。有人能帮我吗我如何

  • 在日志中看到这个错误消息,有人能知道发生了什么吗 “javax.net.ssl.sslhandShakeException:sun.security.validator.validatoreXception:PKIX路径验证失败:java.security.cert.certPathValidatoreXception:时间戳检查失败” 证书过期后,日志中开始显示此错误消息。我得到了新证书,生成了

  • 我正在创建一个Apache Beam streaming处理管道,以在GCP Dataflow中运行。我有许多扩展DoFn和combinefn的转换。在DoFn中,使用数据流作业详细信息中的日志窗口,日志可以很好地可视化。但是,不显示来自CombineFn转换的日志。

  • 2)当前以美国为中心的托管是否影响英国等地的性能?例如,如果有人导航到我在伦敦的web应用程序,那么调用GCP云功能的网页是否位于美国,而GCP云功能反过来获取位于伦敦等地的数据?

  • 问题内容: 美好时光。我想在Kibana中查看我的日志。为了查看它们,我使用Serilog并在docker中运行我的应用程序Elasticsearch和Kibana。不幸的是,日志未在Kibana中显示。我也找不到kibana索引。 有我的文件: 我的档案: 但是, 当我在本地运行应用程序(使用)时,索引也会出现并记录。 有人知道热点是什么问题吗? 谢谢! 更新 我检查了docker输出并发现以下