Передавайте значения из базы данных в dialogflow, чтобы не задавать требуемый вопрос, если значение находится в БД, используя dialogflow_v2 в Python

#python #dialogflow-es #chatbot #dialogflow-es-fulfillment

#python #dialogflow-es #чат-бот #dialogflow-es-выполнение

Вопрос:

Я настроил dialogflow следующие параметры и действия

Действия и параметры (посмотрите на это изображение)

Как вы видите, у меня есть 3 обязательных параметра. В конечном итоге эти параметры будут сохранены в базе данных. Итак, я хочу, чтобы способ передать эти параметры в dialogflow (если они у меня есть в базе данных) и каким-то образом «переключить» требуемый параметр.

Есть 3 варианта:

  1. Это пользователь, который впервые использует чат-бота, поэтому я хочу, чтобы ему были заданы все необходимые параметры
  2. Существующий пользователь, который не дал согласия на сбор своих данных (я хочу сохранить, что hi не дал согласия, и заставить dialogflow не спрашивать его об этом снова) (параметр: согласен)
  3. Существующий пользователь, который дал согласие, поэтому не следует задавать никаких обязательных параметров и только сопоставлять текст пользователя с намерением

Поэтому, если у меня есть параметр «year», например, в базе данных, я не хочу, чтобы dialogflow спрашивал «в каком вы году?» Просто пропустите его и перейдите к следующему вопросу.

Я столкнулся с выполнением для заполнения слотов, но с этим есть 2 проблемы, прежде всего, я не совсем уверен, предназначено ли это для, а также документация, я не нашел документацию очень полезной.

Код, который у меня есть до сих пор :

Я использую dialogflow_v2 из python в telegram

 def detect_intent(session_id, text):
    """Returns the result of detect intent with the query text as input
    Using the same `session_id` between requests allows continuation
    of the conversation, if context handled in dialogflow
    Also, gives a dictionary of parameters needed to fulfill the intent"""

    session_client = dialogflow.SessionsClient()
    session = session_client.session_path(PROJECT_ID, session_id)

    text_input = dialogflow.types.TextInput(
        text=text, language_code=LANGUAGE_CODE
    )

    query_input = dialogflow.types.QueryInput(text=text_input)
    response = session_client.detect_intent(session=session, query_input=query_input)
    dict_response = MessageToDict(response)

    return dict_response
  

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

     if response.get('queryResult').get('allRequiredParamsPresent', False):
  

Кто-нибудь, кто знает, как это сделать, или может подсказать мне, где искать? будь то через dialogflow_v2 или fullfilment для заполнения слота.

Заранее спасибо!

Комментарии:

1. Кажется, что заполнение слота с помощью выполнения является правильным вариантом для решения вашего варианта использования; тем не менее, я считаю, что это много для одного намерения, я имею в виду, если некоторые существующие пользователи придут к этому намерению, вы могли бы попытаться добавить намерение, прежде чем определять, существуют ли другие пользователи для пользователей, которыесуществует, но не дал согласия на сбор его данных и другого для несуществующих пользователей, затем перейдите к следующему намерению, заполняющему имеющиеся у вас данные. Разделяй и властвуй!

2. Итак, вы говорите, что у меня должно быть что-то вроде родительского намерения, и как только кто-то достигнет этого, я должен получить их данные и направить dialogflow в соответствующее намерение? (Один из 3 вариантов, которые я упомянул)

3. Да, возможно, это не единственный вариант, но кажется, что это может быть допустимым обходным путем.