了解活动的名称

时间:2017-09-29 14:45:36

标签: botframework direct-line-botframework

我有一个试图模仿反向通道示例的聊天机器人。

一切都是正确的,除非我无法理解下面的代码究竟应该如何工作。

  botConnection.activity$
    .filter(function (activity) {
      console.log("show me the activity name passed" + activity.name);
      return activity.type === 'event' && activity.name === 'changeBackground';
    })
    .subscribe(function (activity) {
      changeBackgroundColor(activity.value);
    });

我假设我需要在我的机器人中命名一些changeBackground? activity.type也不应该是'message'而不是event?

当我执行console.log向我显示activity.name时,我传递的每条消息都是“未定义”。我在哪里设置活动的名称,以便我可以触发更改背景?

1 个答案:

答案 0 :(得分:1)

activity是一个通用信封,其中message(用户和机器人之间发送的文本和/或附件)是最常见的类型。如果您希望客户端和机器人无形地向用户交换信息,则可以使用event类型。按照惯例,Web Chat等客户将忽略它们。

编写方式时,您的示例代码将从机器人发送到客户端的每个活动记录下来。字段name适用于event类型但不包含message的活动,这就是它显示为undefined的原因。

在此示例中,changeBackground是客户端函数的名称,只要机器人发送类型为event的活动,它就会执行某些操作。

您现在缺少的是实际发送该事件的(服务器)机器人代码。有关此示例,请参阅Ryan Volum的backchannel sample bot