Функции Google Cloud не вызываются в диалоге Dialogflow - PullRequest
1 голос
/ 31 марта 2020

Я создаю действие Google Assistant, в котором я использовал облачную функцию Firebase и развернул код для облачных функций Firebase.

Я скопировал URL-адрес webhook и вставил его в консоль Dialogflow, а также включил вызов Webhook для приветствия по умолчанию.

Когда я запускаю код, я получаю ошибку, как показано ниже

enter image description here

Вот код облачной функции

const { dialogflow, Suggestions } = require("actions-on-google");

const functions = require("firebase-functions");

const app = dialogflow({ debug: true });

app.intent("Default Welcome Intent", conv => {
  if (conv.user.last.seen) {
    conv.ask(`Welcome back to Standup Sheet`);
  } else {
    const ssml = `<speak>Welcome to Standup Sheet. I will assist you to know about your teams daily task as well the over all time taken for each project.</speak>`;
    conv.ask(ssml);
  }
  conv.ask(
    new Suggestions(["Todays entries", "Yesterday entries", "Team", "Projects"])
  );
});

exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);

Package. json file

{
  "name": "functions",
  "description": "Cloud Functions for Firebase",
  "scripts": {
    "serve": "firebase serve --only functions",
    "shell": "firebase functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log"
  },
  "engines": {
    "node": "8"
  },
  "dependencies": {
    "actions-on-google": "^2.12.0",
    "firebase-admin": "^8.0.0",
    "firebase-functions": "^3.0.0"
  },
  "devDependencies": {
    "firebase-functions-test": "^0.1.6"
  },
  "private": true
}

Журналы из облачной функции Firebase

dialogflowFirebaseFulfillment
{
    "@type":"type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo":{
      "principalEmail":"nidhinkumar06@gmail.com"
    },
    "requestMetadata":{
        "callerIp":"2409:4072:9e:14e2:ddf4:6a38:779f:f147",
        "callerSuppliedUserAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36,gzip(gfe)",
        "requestAttributes":{
            "time":"2020-03-31T17:07:39.032Z",
            "auth":{}
        },
        "destinationAttributes":{}
    },
    "serviceName":"cloudfunctions.googleapis.com",
    "methodName":"google.cloud.functions.v1.CloudFunctionsService.UpdateFunction",
    "authorizationInfo":[
        {
            "resource":"projects/standup-sheet/locations/us-central1/functions/dialogflowFirebaseFulfillment",
            "permission":"cloudfunctions.functions.update",
            "granted":true,
            "resourceAttributes":{}
        }
    ],
    "resourceName":"projects/standup-sheet/locations/us-central1/functions/dialogflowFirebaseFulfillment",
    "request":{
        "updateMask":"description,entryPoint,timeout,availableMemoryMb,labels,environmentVariables,runtime,httpsTrigger,maxInstances,ingressSettings,vpcConnector,serviceAccountEmail,sourceUploadUrl",
        "@type":"type.googleapis.com/google.cloud.functions.v1.UpdateFunctionRequest",
        "function":{
            "ingressSettings":"ALLOW_ALL",
            "httpsTrigger":{},
            "serviceAccountEmail":"standup-sheet@appspot.gserviceaccount.com",
            "entryPoint":"dialogflowFirebaseFulfillment",
            "labels":{
                "deployment-tool":"console-cloud"
            },
            "sourceUploadUrl":"https://storage.googleapis.com/gcf-upload-us-central1-6a75406d-6f0b-41ee-aeb5-e264da4377bc/22bd91a1-48f6-4daa-981a-e76122332e1c.zip?GoogleAccessId=service-1064672465268@gcf-admin-robot.iam.gserviceaccount.com&Expires=1585676258&Signature=QqhcwyJXqap%2BWXvJ6Xu2hqINSaw5uNAdRadrfIFAyXEd%2F5DTkKeEmUBjlOWrcHOrbdR6lXzgLeiIERBGHud4sZ5FQSWHOJ6HBJ3OHTI0PhEuUPBhEyuGSn%2FqI3kav9QHf5tETNw2L1DXvUw0oU%2BcD6V0MSwC35D4pGCUPoqvxW38W0q7Yz0bXm26Wnlk3HwTm%2FjP2OwbQEH5Ae5mntn%2BdQHH4n2RFjXyg2JIIDVBe1f1rOzSh0vDL4Eg6Fc9n7HMfOSfJ04RoqnAj1gUUZo38uQSVfIfjVjSqEjbR%2BGvF8E2lw5CUX%2FS8BKeqq4hvSpTUmvdmGJe0qGt8ohBq524Lw%3D%3D",
            "timeout":"60s",
            "availableMemoryMb":256,
            "name":"projects/standup-sheet/locations/us-central1/functions/dialogflowFirebaseFulfillment",
            "runtime":"nodejs8"
        }
    },
    "resourceLocation":{
        "currentLocations":["us-central1"]
    }
}

1 Ответ

1 голос
/ 01 апреля 2020

Теперь код работает, теперь выполните следующие шаги, чтобы заставить его работать. Если кто-то сталкивается с такой проблемой, пожалуйста, проверьте следующие шаги:

Root причина # 1

В консоли Dialogflow я удалил все ответы по умолчанию в Default Добро пожаловать намерение, которое вызывает вышеуказанную ошибку. Поэтому я добавил ответ по умолчанию и протестировал действие, которое работает нормально. Но ответ от облачной функции не был показан.

Root причина # 2

Попытка использовать встроенный редактор в диалоге и проверить, получает ли эта функция звонил или нет. Попытка включить встроенный редактор, но он не позволяет указать Необходимо предоставить Google Cloud, пожалуйста, refre sh страница . Посмотрел консоль GCP и сравнил другие действия, которые я создал, у каждого действия есть хранилище, но у этого действия нет, поэтому я создал хранилище в Firebase после включения встроенного редактора хранилища (поднял запрос в диалоге, чтобы убедиться, что это из-за Хранение делает встроенный редактор не открытым).

Решение 1

После того, как встроенный редактор открыт, вставьте приведенный выше код и пакет. json файл и разверните код и протестировано, он работает, как ожидалось

Решение 2

Попытался развернуть тот же код с моей машины и включил Webhook вместо встроенного Редактор и протестировал действие, работает как ожидалось код и тестирование не работает, поэтому сравнил обе функции и обнаружил, что функция выполнение не имеет разрешения как показано ниже:

enter image description here

Если вы заметили на изображении выше, есть роль с именем allUsers , тогда как в выполнение функция не имеет роли allUsers

enter image description here

А также, если вы посмотрите на панель инструментов функций (dialogflowFirebasefulfillment), вы можете обратите внимание на разницу

enter image description here

выполнение (панель инструментов)

enter image description here

К чтобы активировать разрешение, нажмите на информационную панель и нажмите Добавить участников и добавьте allUsers , как показано ниже

enter image description here

Как только это будет сделано, добавьте роль для всех пользователей, нажав Облачные функции и Облачные функции Invoker и нажмите Сохранить.

enter image description here

Теперь вы можете увидеть обновленную панель, как показано ниже:

enter image description here

Теперь, если вы протестируете действие, оно вызовет функцию облака. * 11 02 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...