Идентификатор сеанса должен иметь формат projects/<Project ID>/agent/sessions/<Session ID>
(то есть <Project ID>
идентификатор проекта GCP, в котором находится ваш агент, и <Session ID>
идентификатор, который вы используете для текущего сеанса), как видно из эта страница документации .
В вашем коде я вижу, что вы вызываете функцию detect_intent_texts()
, например:
project_id = "newagent/agent/environments/draft/users/<User Number>"
session_id = str(uuid.uuid4())
texts = "Que tal?"
language_code = "es-ES"
Здесь я вижу две основные ошибки:
- Идентификатор проекта имеет неправильный формат, это должен быть идентификатор вашего проекта GCP, который обычно имеет формат, такой как
my-first-project
или аналогичный, и косые черты /
не поддерживаются, поэтому вы используете неправильный Идентификатор проекта .
- Текст должен представлять собой список строк в Python, например
["hello"]
, а не просто "hello"
.
В качестве примера следующий минимальный код дает следующий результат:
import dialogflow
def detect_intent_texts(project_id, session_id, texts, language_code):
session_client = dialogflow.SessionsClient()
session = session_client.session_path(project_id, session_id)
print('Session path: {}\n'.format(session))
for text in texts:
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)
print('Fulfillment text: {}\n'.format(response.query_result.fulfillment_text))
detect_intent_texts("my-project","abcd",["hello"],"en-US")
Результат:
user@my-project:~/dialogflow$ python detect_intent_minimal.py
Session path: projects/my-project/agent/sessions/abcd
Fulfillment text: Hi!
Поэтому я подозреваю, что изменение project_id
на правильное значение и texts
в список должно решить ваши проблемы.
EDIT:
Мне удалось воспроизвести проблему, с которой вы столкнулись, в сообщении 403 PermissionDenied
, используя служебную учетную запись без необходимых разрешений.
Для запуска намерений в Dialogflow вам необходимо использовать служебную учетную запись с одной из следующих ролей:
Администратор API Dialogflow и Клиент API Dialogflow может запрашивать намерения, и поэтому один из них необходим для выполнения типа запросов, которые вы пытаетесь выполнить с вашим сценарий.
Я вижу, вы сказали, что у вашего пользователя есть права владельца на проект. Однако проблема может заключаться в том, что вы используете неправильную учетную запись службы. Для правильной настройки аутентификации выполните шаги, описанные в документах . Таким образом, вам нужно будет создать учетную запись службы с соответствующими разрешениями, загрузить ее ключ JSON и использовать ее в качестве переменной среды, выполнив команду export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/key.json"
везде, где вы запускаете сценарий.