ошибка 403 разрешения IAM ‘dialogflow.sessions.detectIntent’ в flask

#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 письма заставит его работать.

Возможно, было лучшее решение, но это то, что работает для меня и, надеюсь, решит проблему других, если возникнет подобная проблема.