#python #dialogflow-es #chatbot #dialogflow-es-fulfillment
#python #dialogflow-es #чат-бот #dialogflow-es-выполнение
Вопрос:
Я настроил dialogflow
следующие параметры и действия
Как вы видите, у меня есть 3 обязательных параметра. В конечном итоге эти параметры будут сохранены в базе данных. Итак, я хочу, чтобы способ передать эти параметры в dialogflow (если они у меня есть в базе данных) и каким-то образом «переключить» требуемый параметр.
Есть 3 варианта:
- Это пользователь, который впервые использует чат-бота, поэтому я хочу, чтобы ему были заданы все необходимые параметры
- Существующий пользователь, который не дал согласия на сбор своих данных (я хочу сохранить, что hi не дал согласия, и заставить dialogflow не спрашивать его об этом снова) (параметр: согласен)
- Существующий пользователь, который дал согласие, поэтому не следует задавать никаких обязательных параметров и только сопоставлять текст пользователя с намерением
Поэтому, если у меня есть параметр «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. Да, возможно, это не единственный вариант, но кажется, что это может быть допустимым обходным путем.