我有一个在机器人framework v4
的帮助下编写的机器人。该机器人与Microsoft Teams集成在一起。我想在用户安装漫游器并加入1:1对话时向用户发送欢迎消息。在团队中,conversationUpdate
仅被触发一次(这是当订户加入1:1对话时),然后对该用户不再触发。我的想法是编写一个由聊天消息触发的函数,以手动发送updateConversation
活动来调试欢迎消息。
我到目前为止失败了,得到了
BadArgument:未知的活动类型异常。
我尝试通过ConnectorClient
使用Microsoft.Bot.Builder.Teams nuget将conversationUpdate
活动发送到对话。
我还设置了一个控制台应用程序,并尝试使用v3/directline/conversations/{conversationId}/activities
并收到了Forbidden
错误。
private async Task SendConversationUpdateToTeamsAsync(ITurnContext turnContext, CancellationToken cToken = default)
{
var connectorClient = turnContext.TurnState.Get<IConnectorClient>();
var conversationUpdateMessage = new Activity
{
Type = ActivityTypes.ConversationUpdate,
Id = turnContext.Activity.Id,
ServiceUrl = turnContext.Activity.ServiceUrl,
From = turnContext.Activity.From,
Recipient = turnContext.Activity.Recipient,
Conversation = turnContext.Activity.Conversation,
ChannelData = turnContext.Activity.ChannelData,
ChannelId = turnContext.Activity.ChannelId,
Timestamp = turnContext.Activity.Timestamp,
MembersAdded = new List<ChannelAccount>
{
turnContext.Activity.From,
turnContext.Activity.Recipient
},
};
var result = await connectorClient.Conversations.SendToConversationAsync(conversationUpdateMessage, cToken);
}
我希望手动发送conversationUpdate
来调试Teams中的行为是可行的。在办公室门户中创建新用户并为其安装机器人以调试conversationUpdate
行为对于我来说是不可行的,因为这很耗时。如果还有其他解决方法可以触发团队中的conversationUpdate
,请告诉我。
答案 0 :(得分:1)
我不确定是否可以以您尝试的方式强制发送ConversationUpdate
。相反,我只是在OnMessageAsync()
中丢了这样的东西:
if (turnContext.Activity.Text == "fakeConversationUpdate")
{
var fakeTurnContext = new TurnContext(turnContext.Adapter, MessageFactory.Text(string.Empty));
fakeTurnContext.Activity.AsConversationUpdateActivity();
fakeTurnContext.Activity.Type = ActivityTypes.ConversationUpdate;
fakeTurnContext.Activity.MembersAdded = new List<ChannelAccount>()
{
new ChannelAccount()
{
Id = "fakeUserId",
Name = "fakeUserName"
}
};
await OnConversationUpdateActivityAsync(new DelegatingTurnContext<IConversationUpdateActivity>(fakeTurnContext), cancellationToken);
}
然后进行调试,您只需在聊天室中将“ fakeConversationUpdate”(您可以更改/自定义)写入机器人,它将通过fakeTurnContext
发送您的OnConversationUpdateActivityAsync()
(您可以更改/自定义)