У меня есть собственный HTTP-сервер со статическим IP.на этом сервере я запускаю приложение фляги, чтобы получать запросы от диалогового потока выполнения, который работает на v2 API.когда я использую свой агент с английским языком, то он правильно анализирует его в приложении фляги, но когда я использую русский язык, то на стороне фляги я получаю вывод мусора, содержащий последовательность ????????.
Я пытаюсь установить charset = Unicode в диалоговом окне, но он все еще не работает.
import json,os,sys,logging
from flask import Flask, request
from flask import jsonify
from configparser import ConfigParser
import objectpath
def setup_custom_logger(name):
formatter = logging.Formatter(fmt='%(asctime)s %(levelname)-8s
%(message)s',datefmt='%Y-%m-%d %H:%M:%S')
handler = logging.FileHandler('log.txt', mode='w')
handler.setFormatter(formatter)
screen_handler = logging.StreamHandler(stream=sys.stdout)
screen_handler.setFormatter(formatter)
logger = logging.getLogger(name)
logger.setLevel(logging.DEBUG)
logger.addHandler(handler)
logger.addHandler(screen_handler)
return logger
logger = setup_custom_logger('myapp')
app = Flask(__name__)
@app.route('/flightSearchByRoute', methods=['POST'])
def interactionPredictions():
try:
response = {
"status": 0,
"query": "ERROR"
}
if request.json['result']: #if key doesn't exist, returns None
print("request",request)
print("key output",request.json['queryResult']['queryText'])
print("parsed",json.dumps(request.json,indent=4, sort_keys=True))
toLocation = request.json['queryResult']['parameters']['to']
fromLocation = request.json['queryResult']['parameters']['from']
qTime = request.json['queryResult']['parameters']['time']
outputContexts = request.json['session']#['outputContexts'][0]['name']
print("parameters",fromLocation,toLocation,qTime,outputContexts)
response = { "fulfillmentText": "Success API HIT to: "+toLocation+" from: "+fromLocation+ " time: "+qTime ,"fulfillmentMessages":[ { "text": { "text": [ "Success API HIT to: "+toLocation+" from: "+fromLocation+ " time: "+qTime,] } } ] ,"source":"" }
print(json.dumps(response,indent=4, sort_keys=True))
return jsonify(response),200
except Exception as e:
exc_type, exc_obj, exc_tb = sys.exc_info()
fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1]
print(exc_type, fname, exc_tb.tb_lineno, e)
response = {
"status": 0,
"query": "ERROR"
}
return jsonify(response),400
@app.errorhandler(404)
def page_not_found(e):
response = {
"status": 0,
"query": "ERROR"
}
return jsonify(response),400
if __name__ == '__main__':
app.run(host='0.0.0.0',debug=True, port=8888) #run app in debug mode on port 5344
response send from dialog flow:
{
"id": "97feddb0-c24d-4a4e-bec5-5823a3374fb2",
"timestamp": "2019-04-11T13:46:07.884Z",
"lang": "ru",
"result": {
"source": "agent",
"resolvedQuery": "из Лондона в Нью-Йорк 5 утра",
"action": "",
"actionIncomplete": false,
"parameters": {
"time": "05:00:00",
"from": "Лондона",
"to": "Нью-Йорк"
}
response getting at flask end
{
"originalDetectIntentRequest": {
"payload": {}
},
"queryResult": {
"allRequiredParamsPresent": true,
"fulfillmentMessages": [
{
"text": {
"text": [
"okk"
]
}
}
],
"fulfillmentText": "okk",
"intent": {
"displayName": "bookFlight",
"name": "projects/flightquery-82f02/agent/intents/c032518b-f882-4f7f-a49b-fcf57155eeaf"
},
"intentDetectionConfidence": 1.0,
"languageCode": "ru",
"parameters": {
"from": "???????",
"time": "2019-04-12T05:00:00+05:30",
"to": "???-????"
},
"queryText": "?? ??????? ? ???-???? 5 ????"
},
"responseId": "ec09cc39-6c41-44f9-819a-dd7564ef4f92",
"session": "projects/flightquery-82f02/agent/sessions/559a2540-07d1-fc35-4002-04d179f0b55f"
}
фактический queryText: "из Лондона в Нью-Йорке 5 утра" получил queryText: "?? ???????? ??? - ???? 5 ???? "