Как проанализировать этот запрос / ответ Dialogflow в Java - PullRequest
0 голосов
/ 28 марта 2020

ребята. Мы разработали пару чат-ботов с использованием Dialogflow, и нам нужно хранить все сообщения между ботами и пользователями в elasti c. Сообщения отправляются в Stackdriver, откуда мы их читаем. Мы получаем что-то вроде этого:

Запрос:

{"insertId":"sdfgsdfgsdfg","labels":{"protocol":"V2_BETA1","request_id":"26e57863-387f-4b93-b5fb-135bc83bcd25-dd2bbea9","type":"dialogflow_request"},"logName":"projects/projectname/logs/dialogflow_agent","receiveTimestamp":"2020-03-27T11:57:58.150171409Z","resource":{"labels":{"project_id":"projectname"},"type":"global"},"severity":"INFO","textPayload":"Dialogflow Request : {\"session\":\"10001000061585310270\",\"query_input\":\"{\\n  \\\"text\\\": {\\n    \\\"textInputs\\\": [{\\n      \\\"text\\\": \\\"user input here\\\"\\n    }]\\n  }\\n}\",\"timezone\":\"Europe/Madrid\"}","timestamp":"2020-03-27T11:57:58.096Z","trace":"10001000061585310270"}

Ответ:

{
    "insertId":"116tnvwg3zk2dlm"
    "labels":{
        "protocol":"V2_BETA1"
        "request_id":"25676788-5663-b5fb-135b-c83bcd25fghf-dfgdr545"
        "type":"dialogflow_response"
    }
    "logName":"projects/myprojectid/logs/dialogflow_agent"
    "receiveTimestamp":"2020-03-10T10:35:58.150171409Z"
    "resource":{
        "labels":{
            "project_id":"myprojectid"
        }
        "type":"global"
    }
    "severity":"INFO"
    "textPayload":"Dialogflow Response : id: \"25676788-5663-b5fb-135b-c83bcd25fghf-dfgdr545\"\nlang: \"es\"\nsession_id: \"12126565412631623162\"\ntimestamp: \"2020-03-10T10:35:58.134Z\"\nresult {\n  source: \"agent\"\n  resolved_query: \"user request here\"\n  score: 0.676\n  parameters {\n    fields {\n      key: \"medida\"\n      value {\n        list_value {\n          values {\n            string_value: \"grande\"\n          }\n        }\n      }\n    }\n    fields {\n      key: \"sabores\"\n      value {\n        list_value {\n          values {\n            string_value: \"fresa\"\n          }\n        }\n      }\n    }\n  }\n  contexts {\n    name: \"haveorder\"\n    lifespan: 5\n    parameters {\n      fields {\n        key: \"medida\"\n        value {\n          list_value {\n            values {\n              string_value: \"grande\"\n            }\n          }\n        }\n      }\n      fields {\n        key: \"medida.original\"\n        value {\n          list_value {\n            values {\n              string_value: \"grande\"\n            }\n          }\n        }\n      }\n      fields {\n        key: \"sabores\"\n        value {\n          list_value {\n            values {\n              string_value: \"fresa\"\n            }\n          }\n        }\n      }\n      fields {\n        key: \"sabores.original\"\n        value {\n          list_value {\n            values {\n              string_value: \"fresa\"\n            }\n          }\n        }\n      }\n    }\n  }\n  contexts {\n    name: \"promptedpayment\"\n    lifespan: 5\n    parameters {\n      fields {\n        key: \"medida\"\n        value {\n          list_value {\n            values {\n              string_value: \"grande\"\n            }\n          }\n        }\n      }\n      fields {\n        key: \"medida.original\"\n        value {\n          list_value {\n            values {\n              string_value: \"grande\"\n            }\n          }\n        }\n      }\n      fields {\n        key: \"sabores\"\n        value {\n          list_value {\n            values {\n              string_value: \"fresa\"\n            }\n          }\n        }\n      }\n      fields {\n        key: \"sabores.original\"\n        value {\n          list_value {\n            values {\n              string_value: \"fresa\"\n            }\n          }\n        }\n      }\n    }\n  }\n  metadata {\n    intent_id: \"6685717b-381b-4ce5-8947-52d0080abf67\"\n    intent_name: \"0 - getOrder\"\n    webhook_used: \"false\"\n    webhook_for_slot_filling_used: \"false\"\n    is_fallback_intent: \"false\"\n  }\n  fulfillment {\n    speech: \"¡Claro! Uno de fresa grande ahora mismo. ¿Cómo vas a pagar? ¿Con efectivo o con tarjeta?\"\n    messages {\n      lang: \"es\"\n      type {\n        number_value: 0.0\n      }\n      speech {\n        string_value: \"¡Claro! Uno de fresa grande ahora mismo. ¿Cómo vas a pagar? ¿Con efectivo o con tarjeta?\"\n      }\n    }\n  }\n}\nstatus {\n  code: 200\n  error_type: \"success\"\n}\n"
    "timestamp":"2020-03-10T10:35:58.14Z"
    "trace":"12126565412631623162"
}

Информация, которая нас интересует, находится внутри textPayload, но я не могу ' Не могу найти способ превратить textPayload во что-то, чем я могу манипулировать, используя Java.

Применяя несколько регулярных выражений, я могу (не всегда) превратить этот текст в json и работать с ним, но решение кажется не очень надежным. Можете ли вы найти лучшее решение?

Большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...