Dialogflow Google Api создать учетные данные - PullRequest
0 голосов
/ 22 марта 2020

может кто-нибудь мне помочь. Я разрабатываю некоторый диалоги API Api Logi c в nodejs, и я хочу создать пост-операцию createIntent для создания простого намерения / ответа по умолчанию для бота. В конце концов, я хочу добавить пост-операцию из пользовательского веб-интерфейса, чтобы кормить бота вопросами и ответами.

Кажется, я не могу заставить запрос работать, я думаю, что это индикатор учетных данных Google, вот фрагмент сообщения.

https://googleapis.dev/nodejs/dialogflow/latest/v2beta1.IntentsClient.html#createIntent

const config = {
    dialogFlowSessionLanguageCode: 'en-US',
    googleProjectID: 'gmailwhatever-xwwytd',
    googleClientEmail: 'gmailwhatever@gmail-xxwftd.iam.gserviceaccount.com',
    googlePrivateKey:"-----BEGIN PRIVATE KEY-----\\nMIIEvSZqoF5a\\njTV.....rj65mBQ=\\n-----END PRIVATE KEY-----\\n",
}
const email = 'gmailaccount@gmail.com' //the mail which I use for signup/loggin to the dialogflow console/service

const optionsPath = {
    credentials: {client_email: config.googleClientEmail, private_key: config.googlePrivateKey}, email
};
const languageCode = config.dialogFlowSessionLanguageCode;

const client = new dialogflow.v2.IntentsClient(optionsPath);
const agentPath = client.projectAgentPath(config.googleProjectID);

router.post('/createIntent', async (req, res) => {

    const trainingPhrases = [{type:0, parts: [{text: req.body.question}]}];
    const request = {
            parent: agentPath,
            intent: {
                trainingPhrases,
                name: req.body.name,
                displayName: req.body.displayName,
                messages: [{text: [req.body.answerMe]}],
            },
            languageCode,
    };

    // Send request and log resulz
    console.log('lets see the request', request);
    const responses = await client.createIntent(request);
    console.log('intent created');
    console.log(responses);
    const result = responses[0].queryResult;
    console.log(`  Query: ${result.queryText}`);
    console.log(`  Response: ${result.fulfillmentText}`);
    res.send(result)
})```
///http://localhost:5000/api/dialogflow/createIntent (post)
///this is the a snippet of payload i'm trying to pass/send to/from postman (body raw json)
{
    "name": "askAboutWhatever",
    "displayName": "askAboutQuestionWhatever",
    "question": "Can I add a question?",
    "answerMe": "Yes you can add a question, so I can learn more"
}```
//I think construction of the payload is ok but i think i'm missing some/having wrong credentials.
//I get this error what does it mean?

///Auth error:Error: error:0909006C:PEM routines:get_name:no start line
///(node:44077) UnhandledPromiseRejectionWarning: Error: 14 UNAVAILABLE: Getting metadata from ///plugin failed with error: error:0909006C:PEM routines:get_name:no start line
...