You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

66 lines
2.0 KiB

import os
import bot_app.fulfillment.utility as util
import bot_app.fulfillment.buying_drink as buying_drink
import bot_app.fulfillment.system_pic as system_pic
import bot_app.fulfillment.whl_family as whl_family
import bot_app.fulfillment.whl_report as whl_report
from flask import Blueprint, Flask, jsonify, request, json
import threading
import time
import requests
from queue import Queue
# app = Flask(__name__)
fulfillment = Blueprint('fulfillment', __name__, url_prefix='/qa_bot/fulfillment')
result = None
@fulfillment.route('', methods=['GET', 'POST'])
def index():
jsonObj = request.get_json()
try:
handleName = jsonObj.get('queryResult').get('intent')['displayName']
print('Handler:', handleName)
return eval(handleName + '(jsonObj)')
except Exception as e:
print(str(e))
return util.simple_response(fulfillmentObj=util.reset_all_contexts(fulfillmentObj=jsonObj))
# return util.simple_response(str(e))
@fulfillment.route("/short_call", methods=['GET', 'POST'])
def five_secend_call():
global result
result = None
curr = time.time()
thread = threading.Thread(target=fetch_url, name='query_qa_thread')
thread.start()
while (curr + 4.5) > time.time():
if not result == None:
return jsonify(result.json())
else:
time.sleep(0.3)
return jsonify({"respone": "None"})
def fetch_url():
global result
my_headers = {'Authorization': 'EndpointKey 365cdd9c-7af2-48bd-9dfe-031986319115',
'Content-Type': 'application/json'}
res = requests.post(
'https://whlqakb.azurewebsites.net/qnamaker/knowledgebases/f15e1174-339e-4a81-a95e-747143f77b02/generateAnswer'
, headers=my_headers
, json={"question": "outlook有問題可以找誰?"})
print(res.json())
result = res
return res
def init_app(app):
app.register_blueprint(fulfillment)
util.init_app(app)
buying_drink.init_app(app)
system_pic.init_app(app)
whl_report.init_app(app)
whl_family.init_app(app)