如何在不使用 sourceEvent 的情况下在 bot 框架中发送 gif 图像
How to send a gif image in bot framework without using sourceEvent
我正在尝试在所有平台上使用 bot 框架发送 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
在node_modules下查了一下,botframework库中的cards包下好像没有AnimationCard。在 bot 框架上跨所有平台发送 GIF 的最佳方式是什么?
我认为这里的问题是 Node.js
中使用 AnimationCard
的位还没有 public 所以我相信你需要安装 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'
}])
}
我正在尝试在所有平台上使用 bot 框架发送 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
在node_modules下查了一下,botframework库中的cards包下好像没有AnimationCard。在 bot 框架上跨所有平台发送 GIF 的最佳方式是什么?
我认为这里的问题是 Node.js
中使用 AnimationCard
的位还没有 public 所以我相信你需要安装 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'
}])
}