【发布时间】:2021-01-20 16:22:49
【问题描述】:
我正在尝试在我的 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()
【问题讨论】:
-
尝试将 GOOGLE_APPLICATION_CREDENTIALS 作为 JSON 文件导入到代码中,而不是使用环境变量(使用 environ 是一种更好的做法,这是您最终应该做的,但可能会导致如果没有正确设置会出错)。我的猜测是导致错误,因为我没有看到其余代码有任何问题。
标签: python flask dialogflow-es