0

すべてのプラットフォームでボット フレームワークを使用して GIF 画像を送信しようとしています。sourceEvent を使用して、各プラットフォームで個別にカスタム GIF を送信したくありません。私の現在のコードは以下のようになります

こんにちは、まず第一に、このライブラリを維持する素晴らしい努力に感謝します。すべてのチャネルで 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

node_modules で確認したところ、botframework lib の cards パッケージの下に AnimationCard がないようです。ボット フレームワークのすべてのプラットフォームで GIF を送信する最良の方法は何ですか?

4

2 に答える 2

1

AnimationCardここでの問題は、使用するためのビットNode.jsがまだ公開されていないことだと思います。そのため、BotBuilder のプレリリース バージョンをインストールする必要があると思います。

npm install --save botbuilder@next
于 2016-12-20T12:42:53.103 に答える
1

your code is perfectly fine, just replace the new builder.MediaUrl() with an object. It's often the case, that structures that as simple as MediaUrl have to be directly initialized and do not have a constructor in the framework.

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'
        }])
}
于 2017-01-10T09:46:50.597 に答える