当前位置: 首页 > 知识库问答 >
问题:

Bot Framework Emulator处理新成员的方式是否与Bot Framework Webchat不同?

何博涛
2023-03-14

根据这个官方的样本项目(https://github.com/microsoft/BotBuilder-Samples/blob/master/samples/typescript_nodejs/13.core-bot/src/bots/dialogAndWelcomeBot.ts)我可以使用以下(我的代码)标识新成员并向他们发送欢迎信息:

this.onMembersAdded(async (context) => {
   const welcomeCardTemplate = require("../lib/data/resources/cards/welcomeCard.json");
      const membersAdded = context.activity.membersAdded;
      for (const member of membersAdded) {
         if (member.id !== context.activity.recipient.id) {
            const welcomeCard = CardFactory.adaptiveCard(welcomeCardTemplate );
            await context.sendActivity({ attachments: [welcomeCard] });
         }
      }
   });

它在使用模拟器时工作得很好。一旦我连接到聊天,我就会收到我的欢迎消息,但是在Azure或网络聊天上使用聊天时,直到我第一次向聊天输入某种文本输入,它才会被触发。

我注意到的一件事是,当我使用emulator时,只要我连接到聊天室,就会向bot发送两个活动,一个包含bot的Id,另一个包含用户的Id,但当使用其他聊天选项(Azure聊天和WebChat)时,只发送一个活动(其中memberId与recipientId相同)所以它永远不会超过if语句。

我在这里遗漏了什么,为什么Azure聊天和网络帽只发送了一个活动?

共有1个答案

郎羽
2023-03-14

此时,WebChat和DirectLine在某些场景(如您描述的场景)中的行为与emulator不同。在这种特殊情况下,您可以找到更多信息,这是一个悬而未决的问题。

如本期所述,有一种解决方法可以强制ConversationUpdate事件,您可以尝试并测试它是否适合您的需要(我自己还没有尝试过)。

 类似资料:
  • 问题内容: 围绕静态最终常量进行一些优化(例如用文字替换变量等)以提高性能似乎是合乎逻辑的 问题答案: 对于可以内联常数(字符串,数字),编译 并 表现不同,是的。 当编译器发现一个常量表达式时,它将该常量表达式的结果嵌入到使用该常量表达式的代码中,而不是每次都对其进行计算。因此,如果您有: 那么常量值50将直接嵌入代码中。 请注意,这具有与之相关的版本说明警告- 如果更改或,则还需要重新编译引用

  • 问题内容: 使用列表理解和生成器理解时,我得到不同的输出。这是预期的行为还是错误? 请考虑以下设置: 如果再运行以下代码,则会得到: 这是在python 3.6.0上: 问题答案: 在列表理解中,对表达式进行热切评估。在生成器表达式中,仅根据需要查找它们。 因此,当生成器表达式遍历时,它引用但仅在循环完成后查找,因此它仅对两个元组使用最新值。相比之下,列表推导会立即进行评估,因此它将创建第一个值为

  • 问题内容: 我有一个Redis集。此集最多可存储20个成员(添加命令)。我的问题是;我需要在需要时更新该成员。成员每个成员最多需要进行10次修改。集合成员是json作为字符串。我脑子里只有soltotoin,也没有让所有成员更新并重新创建该集合。但这似乎很愚蠢。 我知道有一个排序集及其分数支持,这似乎也很合适,我还需要像JSON中的数据一样更新分数,但是我只是想知道是否有任何方法可以有效地更新成员

  • 我正在尝试使用spark df读取spark中的CSV文件。文件没有标题列,但我想有标题列。如何做到这一点?我不知道我是否正确,我写了这个命令- 并将列名作为列的_c0和_c1。然后我尝试使用:val df1=df.with列重命名("_c0","系列")将列名更改为所需的名称,但我得到"with列重命名"不是单元上的成员。 PS:我已经导入了spark.implicits._和spark.sql

  • 根据Spring batch JobOperator类的文档, https://docs.spring.io/spring-batch/4.0.x/api/org/springframework/batch/core/launch/JobOperator.html#restart-long- 重新启动失败或停止的作业执行。如果提供的id不存在或对应于在正常情况下已成功完成的JobInstance,

  • 学习js事件时,有三种不同的写法, 第一种 第二种 第三种 我想实现一下点击事件的防抖效果,但是直接在button标签中加点击事件没有效果。 第一个问题:第一种写法哪里有问题?应该怎么改正? 第二个问题:这三种写法是不是在运行的时候有区别?区别是什么? 希望有人解答一下