DirectLine API:定义新的ChannelId

时间:2018-08-31 05:01:06

标签: node.js botframework direct-line-botframework

我正在使用botframework-directlinejs NodeJS SDK为我的机器人前端实现新的渠道。该通道将提供一些自定义的反向通道功能。但是,我的机器人需要知道与之通信的对话是通过此渠道进行的,然后才能构造活动来使用它。

从我可以从API 'Activity' object中收集的信息来看,/api/arsys/v1/entry/字段应由渠道设置。

但是,

channelId

确实将消息“ hi”发送到我的机器人,但channelId以“ directline”出现。

在Fiddler中执行相同的操作与发给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) ); 的帖子具有相同的响应。

我怀疑Activity对象的'channelId'属性是只读的,并且API添加了该值。

是否可以设置频道的自定义ID?

1 个答案:

答案 0 :(得分:1)

否,无法设置自定义频道ID。每种通道类型都有相应的连接器服务。如果您使用的是Direct Line,则channelId应该为 directline

您可以通过渠道数据发送自定义信息:

BotChat.App({
  botConnection: Object.assign({}, dl, {
     postActivity: activity => {
     var newActivity = Object.assign({}, activity, { channelData: { "MyKey": "MyValue" } });
     return dl.postActivity(newActivity);
    }
  }),
  bot: bot,
  user: user,
  resize: 'detect',
}, document.getElementById('bot'));