【发布时间】:2018-09-06 01:39:21
【问题描述】:
我正在使用 botframework-directlinejs NodeJS SDK 为我的机器人前端实现一个新通道。该通道将提供一些自定义的反向通道功能;但是,我的机器人需要知道它正在与之通信的对话是通过这个渠道进行的,然后才能构建一个活动来使用它。
根据我从 API 中的 'Activity' object 收集到的信息,channelId 字段应该由频道设置。
然而,
myChannel.postActivity({
type: 'message',
text: 'hi',
from: {
id: "Node test user",
},
channelId: 'myChannel'
}).subscribe(
id => console.log("Posted activity, assigned ID ", id),
error => console.log("Error posting activity", error)
);
确实向我的机器人发送消息“hi”,但 channelId 以“directline”的形式出现。
在 Fiddler 中执行与 https://directline.botframework.com/v3/directline/conversations/<conversationID>/activities 的帖子相同的操作具有相同的响应。
我怀疑 Activity 对象的“channelId”属性是只读的,API 会添加这个值。
是否可以设置频道的自定义ID?
【问题讨论】:
-
我也接受一种以编程方式识别 DirectLine 实例的“站点名称”的方法;这将提供一个合适的技巧来解决这个问题
-
是的,这也困扰着我!他们提供了一个属性,但机器人收到了
directline。我有多个用于不同目的的直达实例。我使用user属性识别它们中的每一个。但这不是最好的方法。如果有合适的解决方案,我会留意这里。 -
MasterChief 提到,我们可以通过
user属性或活动的from字段传递自定义频道信息,例如from: { id: 'Node test user', channelID: "myChannel" }。然后我们可以从bot应用程序中的activity.From.Properties["channelID"]获取它。 -
我正在使用 TypeScript,所以虽然我可以这样做,但用户类型不同意它。确实,我可以像
from: { ... } as User那样强制它,但如果我能找到一个更合适的解决方案,我会更喜欢它。我想到在两个方向上都使用channelData对象(特别是因为它有any类型)。 -
你找到解决办法了吗?
标签: node.js botframework direct-line-botframework