Интеграция лямбды с ошибкой IBM tone_chat - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь интегрировать свою лямбда-функцию с анализатором настроений IBM Tone_chat. Я получаю сообщение об ошибке:

"errorMessage": "Первый аргумент должен быть одним из типа string или Buffer. Полученный тип не определен"

вот мое событие:

{ "utterances": [
        {"text": "Hello, can you help me", "user": "customer"},
        {"text": "How are you ?", "user": "agent"},
        {"text": "Nothing is working", "user": "customer"},
        {"text": "Sorry to hear this", "user": "agent"}
    ]}

Если я изменяю событие на:

{"text":"hello, this is test test, Happy sad"}

Я получаю сообщение об ошибке: "{\" code \ ": 400, \" sub_code \ ": \" C00012 \ ", \ "error \": \ "Неверный JSON ввод в строке 1, столбец 2 \"} "

Вот мой код:


            const AWS = require('aws-sdk');
            var http = require('https');
            exports.handler = (event, context, callback) => {
                    var text = event.text;
                    var options = {
                           method: process.env.method,
                           hostname: process.env.watson_hostname,
                           port: null,
                           path: process.env.path,
                           headers: {
                               'content-type': process.env.content_type,
                                authorization: process.env.authorization,
                               'cache-control': process.env.cache_control,
                               'X-Watson-Learning-Opt-Out': 'true'
                           }
                     };
                       var req = http.request(options, function (res) {
                       var chunks = [];
                       res.on("data", function (chunk) {
                       chunks.push(chunk);
                          });
                    res.on("end", function () { 
                           var sentimentResponse = JSON.parse(Buffer.concat(chunks));
                       console.log("Sent respose");
                        callback(null, JSON.stringify(sentimentResponse));
                   });
                   })
      req.write(text);
      req.end()
        }

Может кто-нибудь, пожалуйста, помогите мне, я ' Я новичок в этом, и я на некоторое время застрял в этом!

Спасибо

1 Ответ

0 голосов
/ 07 апреля 2020

Я немного удивлен, что вы не получаете одинаковую ошибку для обоих входов, поскольку вы фактически не передаете event, event.text или text в запрос http. То, как вы это сделаете, зависит от того, используете ли вы POST или GET.

Если бы я дал рекомендацию, это было бы как POST, где вы добавили бы text как часть запроса body.

Поправка к ответу: после вашего обновления похоже, что вы используете POST. в этом случае вам нужно указать json. Поэтому, если event.text является вашим json объектом -

let text = JSON.stringify(event.text);

Для использования см. Документацию API - https://cloud.ibm.com/apidocs/tone-analyzer#analyze -общ-тон

...