Возникли проблемы с путем (nodejs botbuilder) - PullRequest
0 голосов
/ 04 марта 2019

Я работаю над ботом, используя Bot Framework, файл .env и файл JSON.Проблема в том, что мне кажется, что значок не появляется, если я не установил путь вручную, как показано ниже:


var invite = new Welcome(process.env.IconUrl = "C:/Users/2203609/Desktop/Mybot/bot.jpg");

Это не практичный способ, так какнам нужно будет менять путь вручную каждый раз, когда мы переносим на другой компьютер.Вот и я пришёл с этой идеей.Я покажу свои файлы .js, .env и .json.

Я создаю 3 переменные, а именно:

.js:

const loc = '\\bot.jpg';
const pathname = __dirname;
const assa = pathname + loc;

class welcome(){
    constructor(IconUrl, botVersion) {
    this.IconUrl = IconUrl
    this.BotVersion = botVersion
}

}
async Menu(turnContext) {
    var invite = new Welcome(process.env.IconUrl = assa);
    await turnContext.sendActivity({
        attachments: [invite.welcome()]
    });
}

.env :

IconUrl =

"items": [{
     "type": "Image",
     "style": "Person",
     "url": "%IconUrl%",
     "size": "Large"
  }],

Вывод для этого:

[onTurnError]: SyntaxError: неожиданный токен U в JSON в позиции 633

ОБНОВЛЕНИЕ:переменная pathname не может использоваться в качестве параметра в классе приветствия.

1 Ответ

0 голосов
/ 12 марта 2019

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

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

const { ActivityTypes, CardFactory } = require('botbuilder');
const loc = '\\bot.jpg';
const pathname = __dirname;
const assa = pathname + loc;

const hero = CardFactory.heroCard(
    'Hero Card',
    CardFactory.images([assa])
);

class Welcome {
    constructor(IconUrl, botVersion) {
        this.IconUrl = IconUrl;
        this.BotVersion = botVersion;
    }

    async onTurn(turnContext) {
        if (turnContext.activity.type === ActivityTypes.Message) {
            if (!turnContext.responded) {
                const reply = { type: ActivityTypes.Message };
                reply.attachments = [hero];
                return await turnContext.sendActivity(reply);
            }
        }
    }
}

module.exports.Welcome = Welcome;

Я бы порекомендовал прочитать через документы .Более того, я бы порекомендовал вам ознакомиться с различными сэмплами в Botbuilder-Samples GitHub.Каждый образец основан на предыдущем и представляет основные идеи и лучшие практики.

Надежда на помощь!

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