借助https://portal.azure.com
,我设法创建了QnA Bot
。
我还设法从Bot Framework Emulator
到机器人的MS Teams
和Test 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 Chat
和Teams
之间的通信)
什么是最好的方法?
我当时在考虑Azure中的后端,但是我不知道可以使用什么,甚至可能。
我的想法是:
已发送消息Web Chat
。在代码中,我会将Web Chat
信息上载到Web Chat Conversation
。现在,在团队中也出现了与Azure
中相同的消息。 Web Chat
中的会话ID也需要立即上传,而Teams
发送给的会话ID也需要更新(因为这是必需的,因此{{ 1}}中的一个会话和来自该Web Chat
会话的所有消息现在都在一个线程中。)现在通过Teams
在Web Chat
的会话中进行回答,我将编写并发送回答。在发送答案之前,我需要Web Chat
中的对话ID。因此Bot将从Teams
下载信息,以便它知道将答案发送到哪里。
这是一个很好的方法还是您知道更好的方法?另外,我可以使用Azure中的哪些资源来实现这一目标?
答案 0 :(得分:1)
听起来您正在考虑正确的方法。基本上,您希望将两个对话参考(一个在团队中,另一个在网络聊天中)配对在一起,然后在两者之间转发消息。
BotFramework SDK v4(C#)
我建议创建两个函数-AddConversationReferenceAsync
和GetConversationReferenceAsync
。在这些功能中,您应该管理如何存储,连接和检索对话引用。您可以检查频道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");
}
}
屏幕截图
我建议您查看BotBuilder Proactive Messaging示例,@tompaana构建一个Hunan Handoff Bot示例,以连接Teams和Slack中的对话,这可能会有所帮助。
希望这会有所帮助!