#python #flask #dialogflow-es
#python #flask #dialogflow-es
Вопрос:
Я пытаюсь использовать Dialogflow в своем приложении Flask 403 IAM permission 'dialogflow.sessions.detectIntent'
, но я получаю, что дважды проверил, что моя роль — владелец проекта в облачной консоли. Я следую этому руководству.
Это мой app.py
from flask import Flask
from flask import request, jsonify
import os
import dialogflow
from google.api_core.exceptions import InvalidArgument
import requests
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = 'service_key.json'
DIALOGFLOW_PROJECT_ID = 'whatsappbotagent-gmsl'
DIALOGFLOW_LANGUAGE_CODE = 'en'
SESSION_ID = 'me'
app = Flask(__name__)
app.config["DEBUG"] = True
@app.route('/')
def root():
return "Hello World"
@app.route('/api/getMessage', methods = ['POST'])
def home():
message = request.form.get('Body')
mobnu = request.form.get('From')
session_client = dialogflow.SessionsClient()
session = session_client.session_path(DIALOGFLOW_PROJECT_ID, SESSION_ID)
text_input = dialogflow.types.TextInput(text = message, 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("Query text: ", response.query_result.query_text)
# sendMessage()
return response.query_result.fullfilment_text
if __name__ == '__main__':
app.run()
Комментарии:
1. Попробуйте импортировать GOOGLE_APPLICATION_CREDENTIALS в виде файла JSON в код вместо использования переменных среды (использование environ — лучшая практика, и это то, что вы должны сделать в конечном итоге, но может привести к ошибке, если неправильно настроить). Я предполагаю, что это вызывает ошибку, потому что я не вижу никаких проблем с остальной частью кода.
Ответ №1:
Итак, после долгих поисков, проб и ошибок я обнаружил проблему.
На самом деле при создании учетной записи службы пользователь получает служебное электронное письмо, и это электронное письмо будет иметь доступ к использованию проекта, но я не добавлял это электронное письмо в электронные письма с разрешением на проект. Добавление этого электронного IAM amp; Admin > IAM > ADD
письма заставит его работать.
Возможно, было лучшее решение, но это то, что работает для меня и, надеюсь, решит проблему других, если возникнет подобная проблема.