Я пытаюсь создать очень простого чат-бота с помощью диалогового потока, чтобы я мог задать вопрос и получить обратно сообщение об исполнении. Я смог использовать библиотеку диалоговых потоков python, чтобы заставить это работать, но когда я попытался изменить его на обычный запрос, он не работал. Вот рабочий код:
import os
import dialogflow
from google.api_core.exceptions import InvalidArgument
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = PATH_TO_JSON
DIALOGFLOW_PROJECT_ID = PROJECT_ID
DIALOGFLOW_LANGUAGE_CODE = 'en'
SESSION_ID = 'me'
text_to_be_analyzed = "How are my stocks"
session_client = dialogflow.SessionsClient()
session = session_client.session_path(DIALOGFLOW_PROJECT_ID, SESSION_ID)
text_input = dialogflow.types.TextInput(text=text_to_be_analyzed, language_code=DIALOGFLOW_LANGUAGE_CODE)
query_input = dialogflow.types.QueryInput(text=text_input)
try:
response = session_client.detect_intent(session=session, query_input=query_input)
except InvalidArgument:
raise
#print(response)
print("Response:", response.query_result.fulfillment_text)
и он печатает
your stocks are good
Используя библиотеку запросов, я попробовал аналогичную настройку и написал это:
my_key = CLIENT_ACCESS_TOKEN
url = "https://api.dialogflow.com/v1/query?v=20170712"
headers = {
'Authorization': 'Bearer ' + my_key ,
'Content-Type' : 'application/json'
}
body = {
"lang": "en",
"query": "how are my stocks",
"sessionId": "me",
}
r.post(url,headers=headers,data=body).text
и Я получаю сообщение об ошибке:
{
"status": {
"code": 400,
"errorType": "bad_request",
"errorDetails": "Cannot parse json. Please validate your json. Code: 400"
}
}
Я получаю свой пример из этого url для запроса пост-запроса. Причина, по которой я хочу, чтобы это работало как http-запрос, заключается в том, что я хотел бы иметь возможность использовать его в других приложениях и иметь согласованный способ доступа к своим намерениям. Спасибо за помощь!