Как изменить значение параметра из webhook с помощью python - Chatbot Dialogflow
Я создаю бота для головоломки. Пользователю будет предложена головоломка, а затем, если ему понадобится подсказка, бот предоставит по одной. Я решил смоделировать это с двумя намерениями - "Supply_puzzle" и последующим намерением "Supply_puzzle - get_a_hint". Когда пользователь запрашивает головоломку, Supply_puzzle свяжется с веб-крючком, и головоломка будет предоставлена. Последующий запрос на подсказку будет рассмотрен последующим намерением путем вызова веб-крюка. Поскольку несколько пользователей могут играть с одной и той же головоломкой одновременно, важно, чтобы мы отслеживали индекс подсказок для каждой сессии. Кроме того, если я добавлю параметр, скажем, hint_index, то каждый раз, когда webhook получает запрос от последующего намерения, webhook получает последний hint_index. Затем веб-крючок может предоставить следующую подсказку, а также может изменить значение параметра, чтобы при следующем вызове из этого намерения ранее установленное значение hint_index было возвращено веб-крюку. Надеюсь, что это обеспечивает контекст для моего запроса.
Текущий код: я использую продолжительность жизни на данный момент
import urllib
import json
import os
import re
from flask import Flask
from flask import request
from flask import make_response
@app.route('/webhook',methods=['POST'])
def webhook():
req = request.get_json(silent=True, force=True)
identified_entity=extract_identified_entity(req)
parent_of_followup_intent=extract_parent_of_followup_intent(req)
ret_txt=processFollowUpIntent(parent_of_followup_intent, identified_entity, req)
x = {
"fulfillmentText": "ABC1",
"fulfillmentMessages": [{
"text": {
"text": [ ret_txt
]}}]
}
x = json.dumps(x, indent=4)
r = make_response(x)
r.headers['Content-type'] = 'application/json'
return r
def processFollowUpIntent(parent_of_followup_intent, identified_entity, req):
print("inside processFollowUpIntent key [%s]" %(identified_entity))
LIFESPAN_INITIAL_VALUE=10 #Currently I set this to 10 in 'Supply_puzzle' intent
current_lifespan=req['queryResult']['outputContexts'][0]['lifespanCount']
stepIndx=LIFESPAN_INITIAL_VALUE - 1 - current_lifespan
puzzleId=getPuzzleId(req)
return hint_map[puzzleId][stepIndx]
Ищете пример кода на Python - любая помощь очень ценится. Более конкретно, я хочу изменить значение параметра 'hint_index' (см. Ниже) на другое значение и вернуться к боту.
"outputContexts": [{
"name": "Supply_puzzle – followup"
"lifespanCount": 10,
"parameters": {
"hint_index": "0",
...
}}],
PS Вместо преследования-намерения мы можем использовать это намерение на верхнем уровне, и его все еще можно связать, установив соответствующий входной контекст. Тем не менее, потребность в использовании параметра и возможности его изменения через веб-крючок все еще остается.