在 angular 应用程序和 v4 Bot Framework Bot 之间发送聊天记录(C# + .Net Core Web 应用程序,Angular 8 前端)

Sending chat history between angular app and v4 Bot Framework Bot (C# + .Net Core Web Application, Angular 8 Frontend)

我需要一种方法来使用直线从 angular 具有集成网络聊天 window 的应用程序向我的 MSFT 机器人框架的 C# 实现发送数据。

我们的特定用例意味着当用户在我的 angular 应用程序中打开网络聊天 window 时,我需要向团队中的用户发送消息列表。我目前在创建 window 时执行以下操作:

    window.WebChat.renderWebChat(
      {
          directLine,
          userID: id + '',
          username: 'user'
      },
      this.botWindowElement.nativeElement
  );

    directLine
      .postActivity({
          from: { id: id + '', name: 'webchat_user' },
          name: 'requestWelcomeDialog',
          type: 'event',
          value: 'token'
      })
      .subscribe(
          id => console.log(`Posted activity, assigned ID ${id}`),
          error => console.log(`Error posting activity ${error}`)
      );

然后当用户连接时我有这个方法来处理

        protected override async Task OnTeamsMembersAddedAsync(IList<TeamsChannelAccount> membersAdded, TeamInfo teamInfo, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
        {
            foreach (TeamsChannelAccount member in membersAdded)
            {
                if (member.Id != turnContext.Activity.Recipient.Id)
                {
                    await turnContext.SendActivityAsync(MessageFactory.Text($"Welcome {member.Name}!"), cancellationToken);
                }
            }
        }

我正在寻找一种方法来获取我从 angular 应用程序发送到 C# 后端的对象,而不会产生意外的副作用。然后,此对象将用于重新创建用户使用其他机器人创建的聊天记录。

我使用用户加入聊天时发送的示例事件解决了这个问题。本质上,我复制了该代码,但创建了一个自定义事件来处理我想要传递的数据。 如果您在写这个问题时和我处在同一条船上,请研究使用直达 iframe 的事件,那里已经有示例可以帮助您入门。