403 IAM 权限 'dialogflow.sessions.detectIntent' flask 错误

403 IAM permission 'dialogflow.sessions.detectIntent' error in flask

我正在尝试在我的 Flask 应用程序中使用 Dialogflow,但我得到了 403 IAM permission 'dialogflow.sessions.detectIntent' 我已经检查了两次我的角色是云控制台中的项目所有者。我正在关注 this 教程。

这是我的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()

好的,经过大量的搜索和反复试验,我发现了问题。

实际上,在创建服务帐户时,用户会收到一封服务电子邮件,该电子邮件将有权使用该项目,但我没有在项目许可电子邮件中添加该电子邮件。在 IAM & Admin > IAM > +ADD 中添加该电子邮件将使其生效。

也许有更好的解决方案,但这对我有用,如果遇到类似问题,希望能解决其他问题。