Как отправить один запрос различным агентам диалогового потока в цикле? - PullRequest
0 голосов
/ 01 января 2019

Я пытаюсь отправить однопользовательский запрос нескольким агентам в разных проектах Google, чтобы получить показатель доверия, а затем выбрать лучшего агента для продолжения.Когда я отправляю запрос одному агенту, он работает нормально, но когда я пытаюсь выполнить цикл, консоль показывает «Отказ в доступе IAM».

Я пытался обновить GOOGLE_APPLICATION_CREDENTIALS в переменной среды и создать другой SessionClient длязапрос к другому агенту в цикле.Данный код похож на то, что я пытаюсь сделать.

let agents = [{projectID:"xyz", keyfile: "xyz.json"}, {projectID:"abc", keyfile: "abc.json"}]    

let sessionClient;
let sessionPath;
let dfRequest = <some queryInput object set>;

for(let agent of agents){
  process.env.GOOGLE_APPLICATION_CREDENTIALS = agent.keyfile;
  sessionClient = new dialogflow.SessionsClient();
  sessionPath = sessionClient.sessionPath(agent.projectID,'123sessionID');
  dfRequest.session = sessionPath;
  sessionClient.detectIntent(dfRequest);
}

Я считаю, что DetectIntent возвращает обещание, и эти вещи могут быть обработаны позже.Но здесь мой первый запрос дает мне правильный ответ, а следующий запрос вызывает проблему аутентификации.Пожалуйста помоги!

Точная ошибка, которую я получаю:

{ Error: 7 PERMISSION_DENIED: IAM permission 'dialogflow.sessions.detectIntent' on 'projects/xyz-123/agent' denied.
    at Object.exports.createStatusError (D:\myProject\node_modules\google-gax\node_modules\grpc\src\common.js:91:15)
    at Object.onReceiveStatus (D:\myProject\node_modules\google-gax\node_modules\grpc\src\client_interceptors.js:1204:28)
    at InterceptingListener._callNext (D:\myProject\node_modules\google-gax\node_modules\grpc\src\client_interceptors.js:568:42)
    at InterceptingListener.onReceiveStatus (D:\myProject\node_modules\google-gax\node_modules\grpc\src\client_interceptors.js:618:8)
    at callback (D:\myProject\node_modules\google-gax\node_modules\grpc\src\client_interceptors.js:845:24)
  code: 7,
  metadata:
   Metadata { _internal_repr: { 'grpc-server-stats-bin': [Array] } },
  details:
   'IAM permission \'dialogflow.sessions.detectIntent\' on \'projects/xyz-123/agent\' denied.' }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...