我试图摆脱使用带有包装器 skype4com 的桌面 Skype API。我看向 Microsoft Bot Framework 的方向。我使用 Microsoft Bot 连接器创建并注册了我的 Skype 机器人,如下所示:连接器入门 此外,我将我的机器人添加到了几个小组对话中。现在我的任务是向特定的群组对话写一条消息。为此,我需要获取机器人所在的群组对话列表。我想获取有关我的 Skype 机器人的所有群组对话的信息,例如对话 ID 和对话名称。我一直无法找到有关它的任何信息。有人知道如何获取 Microsoft Bot 的所有群组对话列表吗?
问问题
663 次
2 回答
1
当您的机器人被添加到对话中时,它会收到一条类型的消息conversationUpdate
(请参阅此页面)。您必须自己维护对话列表,拥有某种存储,遵循此消息类型发出的更改信号。
例子:
[BotAuthentication]
public class MessagesController : ApiController
{
private List<string> m_conversationIds;
public MessagesController()
{
m_conversationIds = new List<string>();
}
public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
{
if (activity.Type != ActivityTypes.Message)
{
return await HandleSystemMessage(activity);
}
// ...
}
private async Task<HttpResponseMessage> HandleSystemMessage(Activity message)
{
if (message.Type == ActivityTypes.ConversationUpdate)
{
m_conversationIds.Add(message.Conversation.Id);
return Request.CreateResponse(HttpStatusCode.OK);
}
// ...
}
}
当然,您可能需要其他信息,而不仅仅是对话 ID。此外,您需要进行过滤,以便仅在更新是关于将您的机器人添加到对话中时存储数据(而不是例如删除它)。
注意:这个例子只是为了让你开始。像上面列表这样的内存存储既不可扩展也不健壮。
于 2016-08-26T17:05:43.860 回答
0
目前,这在 Bot Framework SDK(或协议)中是不可枚举的。当机器人被添加到给定的对话时,系统假定机器人缓存了有关其所在的消息/组的信息。 在发布时获取群组信息
于 2016-09-05T08:11:18.560 回答