Выполнение слота DialogFlow V2 Webhook - PullRequest
0 голосов
/ 03 февраля 2020

Я пытаюсь поместить информацию из предыдущего намерения в новое, чтобы потом использовать ее при преобразовании, так как все, вероятно, знают, что документация не велика, мне просто нужно понять, как сохранить данные Я работаю с в том же сеансе, в противном случае он исчезает

Вот мой текущий код

@app.route('/get_bookings', methods=['POST'])
def get_bookings():
    reply = ""
    data = request.get_json(silent=True)
    print("Intial Query "+ str(data['queryResult']['parameters']))
    if data != None:
        if data['queryResult']['parameters'].get('confirm') != None:
            if data['queryResult']['parameters']['confirm'] == 1:
                #Send data to GolfNow API and set time slot on calendar 
                print("sending request to GolfNowAPI")
                if not session["query"] is  None:
                    print ("current session data : "+ str(session["query"]))
                    reply = {"fulfillmentText":"Great let me get that sorted for you now.",}
            if data['queryResult']['parameters']['confirm'] == 0:
                #Clear data and return to start of booking
                reply = {
                    "fulfillmentText"
                        : "Lets start over then."
                }
            print(reply)
        elif data['queryResult']['parameters'].get("confirm") == None:
            booking_data = CBS.Split_time_date(data)
            #check that the date and time is avalible on the calender and or on golfnow API if avalible
            if Cal_S.OutlookCal.Check_date_time_conflict(booking_data) == True:
                if "no" in booking_data['booking-buggy']:
                    Booking_buggy = "no buggy"
                else:
                    Booking_buggy = "a buggy"
                session["query"] ={ "parameters":{
                            "date":booking_data["returnedDate"], "time":booking_data["returnedDate"], "booking-buggy":booking_data["booking-buggy"] ,"round-type":booking_data["round-type"]
                }}
                reply = {
                    "fulfillmentText"
                        : "You are booking for {} at {}, and you would like {}. Can you confirm for me?".format(booking_data['date'] ,booking_data['time'], Booking_buggy)
                    }
            else:
                reply = {"fulfillmentText"
                        : "Unfortunatly this time has been taken by someone else, can you say: start over."
                }
            print(reply)
        else: 
            print("Failed to check booking or other : " +str(data['queryResult']['parameters'].get("confirm")) + str(booking_data) )
            reply= "  Error: " +str(data['queryResult']['parameters'].get("confirm")) 
    print (reply)
    return jsonify(reply)

Использование сессий флэш, похоже, не работает, и G, кажется, больше для целых клиентских систем на стороне сервера ,

Редактировать

Сейчас я использую простой алгоритм для извлечения данных из предыдущих запросов на выполнение.

def Find_previous_data(full_data, Check_dict):
    found_data = None
    for outputcontext in full_data["queryResult"]["outputContexts"]:
        if Check_dict in outputcontext["name"]:
            found_data = outputcontext["parameters"]
            break
    found_data = Split_time_date(found_data) #used to change the data into a more readable form
    return found_data
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...