使用现有的NodeJS Bot处理网络聊天

时间:2018-08-31 13:39:42

标签: botframework

我正在使用NodeJS构建此机器人。我正在使用iFrame在Webpe上使用Skype和Embedded对其进行测试,一切工作正常。我正在尝试实现一些目标,在这里建议我应该使用DirectLine进行操作,以便在用户连接到聊天室后使用postActivity在他们连接时向他们发送消息。

现在,当阅读有关DirectLine API的文档时,似乎与正在做的事情完全不同,并且文档未显示出差异或“何时使用” DirectLine。

例如,在我的NodeJS应用程序中,紧跟NodeJS SDK的对话框是session.send(),session.sendTyping()等。

我的问题是:这是否意味着当我想使用DirectLine时需要用Activity替换整个NodeJS机器人代码?我对如何将DirectLine与现有应用程序结合使用感到困惑。 Skype频道会发生什么?我会用活动代替一切吗?我会为此使用session.sendTyping或活动吗?

1 个答案:

答案 0 :(得分:1)

activity只是用于其中一个机器人框架通道已处理的任何事件的术语。您的机器人只会在活动中发言,因此无需更改服务器端代码即可使Directline正确与您的机器人通信。

您可能需要更改的是iframe的利用率。默认情况下,Webchat由直接渠道支持,但由于iframe是一个一体式嵌入的,因此实际上无法访问该直接渠道。

该用户要求您使用this方法,如下所示:

botConnection = new BotChat.DirectLine({secret: "<secret>"});

BotChat.App({
     botConnection:  botConnection,
     user: { id: 'User', name: 'user'},
     bot: { id: 'botid' },
     resize: 'detect'
   }, document.getElementById("bot"));

要在您的网站上初始化您的漫游器,以启用以下反向渠道:

botConnection
  .postActivity({
    from: { id: '<user>' },
    value: "text",
    type: 'event',
    name: "ConversationUpdate"
  })
  .subscribe(id=> console.log("stuff" + id))

但是,如果您无法从前端启用欢迎消息,请考虑遵循主题上的this blogpost,该主题说明了如何利用服务器端的侦听器进行用户连接事件。无论如何,就不必为试图启用对活动的支持而重写任何内容,因为它们已经被利用了。