团队之间的通讯和通过Bot的网络聊天

时间:2019-07-26 07:55:38

标签: c# azure botframework bots microsoft-teams

借助https://portal.azure.com,我设法创建了QnA Bot

我还设法从Bot Framework Emulator到机器人的MS TeamsTest Web Chat发送了一条消息。 (尽管它是非常静态的,并且到目前为止已经手动完成)

我从Token获得了https://login.microsoftonline.com/botframework.com/oauth2/v2.0/token。有了该Token,我可以向https://smba.trafficmanager.net/emea/v3/conversations/ConversationID/activities(即Teams)发送一条消息,并且可以向https://webchat.botframework.com/v3/conversations/ConversationID/activities(即Test Web Chat)发送一条消息。

有点题外话:由于我是Azure的新手,所以我想知道到目前为止所做的一切是否正确或完全错误?

反正...

到目前为止,我的目标是在Test Web Chat中写一条消息时,该消息也应该以{{1​​}}结尾。然后,我想从MS Teams答复类似Teams的消息。然后,该小组回答也应以@Bot This is my Answer结尾。 (所以基本上Test Web ChatTeams之间的通信)

什么是最好的方法?

我当时在考虑Azure中的后端,但是我不知道可以使用什么,甚至可能。

我的想法是:

已发送消息Web Chat。在代码中,我会将Web Chat信息上载到Web Chat Conversation。现在,在团队中也出现了与Azure中相同的消息。 Web Chat中的会话ID也需要立即上传,而Teams发送给的会话ID也需要更新(因为这是必需的,因此{{ 1}}中的一个会话和来自该Web Chat会话的所有消息现在都在一个线程中。)现在通过TeamsWeb Chat的会话中进行回答,我将编写并发送回答。在发送答案之前,我需要Web Chat中的对话ID。因此Bot将从Teams下载信息,以便它知道将答案发送到哪里。

这是一个很好的方法还是您知道更好的方法?另外,我可以使用Azure中的哪些资源来实现这一目标?

1 个答案:

答案 0 :(得分:1)

听起来您正在考虑正确的方法。基本上,您希望将两个对话参考(一个在团队中,另一个在网络聊天中)配对在一起,然后在两者之间转发消息。

BotFramework SDK v4(C#)

我建议创建两个函数-AddConversationReferenceAsyncGetConversationReferenceAsync。在这些功能中,您应该管理如何存储,连接和检索对话引用。您可以检查频道ID-activity.ChannelId-确定您要如何处理引用。然后,您可以在OnMessageActivityAsync中添加和检索相应的对话参考,以向其他频道发送主动消息。

protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
    AddConversationReferenceAsync(turnContext.Activity as Activity);
    var conversationReference = GetConversationReferenceAsync(turnContext.Activity as Activity);

    if (conversationReference != null) {
      await turnContext.Adapter.ContinueConversationAsync(_appId, conversationReference, (ITurnContext context, CancellationToken cancellationToken) => {
        await context.SendActivityAsync(turnContext.Activity);
      }, cancellationToken);
    } else {
      await turnContext.SendActivityAsync("You are not connected to anyone at the moment");
    }
}

屏幕截图

enter image description here

我建议您查看BotBuilder Proactive Messaging示例,@tompaana构建一个Hunan Handoff Bot示例,以连接Teams和Slack中的对话,这可能会有所帮助。

希望这会有所帮助!