Как изменить значение параметра из webhook с помощью python - Chatbot Dialogflow - PullRequest
0 голосов
/ 28 января 2019

Я создаю бота для головоломки.Пользователю будет предложена головоломка, а затем, если ему понадобится подсказка, бот предоставит по одной.Я решил смоделировать это с двумя намерениями - «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 Вместо намерения продолжения мы можем использовать это намерение вверхний уровень и все еще может быть связан, устанавливая соответствующий входной контекст.Однако потребность в использовании параметра и возможности его изменения из веб-крюка все еще сохраняется.

...