Как отправить изображение GIF в рамках бота без использования sourceEvent

Я пытаюсь отправить изображение в формате GIF с помощью платформы бота на всех платформах. Я не хочу использовать sourceEvent для отправки пользовательских GIFS на каждую платформу отдельно. Мой текущий код выглядит как показано ниже

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

Мой код выглядит так

function onMessage(session) {
    var msg = new builder.Message(session).addAttachment(createAnimationCard(session, 'title', 'subtitle', 'text'));
    session.send(msg);
}

function createAnimationCard(session, title, subtitle, text) {
    return new builder.AnimationCard(session)
        .title(title)
        .subtitle(subtitle)
        .text(text)
        .media([
            new builder.MediaUrl()
                .profile('GIF test')
                .url('http://media2.giphy.com/media/FiGiRei2ICzzG/giphy.gif')
        ])
}

Как я получаю эту ошибку, говоря

TypeError: builder.AnimationCard is not a constructor
    at createAnimationCard (D:\bots\fastrivia\index.js:65:12)
    at Array.onMessage (D:\bots\fastrivia\index.js:60:58)
    at SimpleDialog.waterfallAction [as fn] (D:\bots\fastrivia\node_modules\botbuilder\lib\dialogs\DialogAction.js:131:25)
    at SimpleDialog.begin (D:\bots\fastrivia\node_modules\botbuilder\lib\dialogs\SimpleDialog.js:15:14)
    at Session.beginDialog (D:\bots\fastrivia\node_modules\botbuilder\lib\Session.js:180:16)
    at routeToDialog (D:\bots\fastrivia\node_modules\botbuilder\lib\Session.js:421:23)
    at D:\bots\fastrivia\node_modules\botbuilder\lib\Session.js:449:29
    at D:\bots\fastrivia\node_modules\botbuilder\lib\Session.js:505:25
    at ActionSet.recognizeAction (D:\bots\fastrivia\node_modules\botbuilder\lib\dialogs\ActionSet.js:44:9)
    at D:\bots\fastrivia\node_modules\botbuilder\lib\Session.js:501:43

Кажется, что в libf botframework нет пакета AnimationCard под карточками, когда я проверял в node_modules. Каков наилучший способ отправки GIF на все платформы в среде ботов?

2 ответа

Решение

Я считаю, что проблема здесь в том, что биты для использования AnimationCard в Node.js еще не опубликованы, поэтому я считаю, что вам нужно установить предварительную версию BotBuilder:

npm install --save botbuilder@next

Ваш код в порядке, просто замените new builder.MediaUrl() с объектом. Часто бывает так, что структуры, такие простые, как MediaUrl, должны быть инициализированы напрямую и не имеют конструктора в каркасе.

function createAnimationCard(session, title, subtitle, text) {
    return new builder.AnimationCard(session)
        .title(title)
        .subtitle(subtitle)
        .text(text)
        .media([{ profile: 'GIF test',
                  url: 'http://media2.giphy.com/media/FiGiRei2ICzzG/giphy.gif'
        }])
}
Другие вопросы по тегам