我正在尝试从驻留在我的Teams Bot中的主动的第三方WebHook回调中向Teams Channel发送消息,该回调在我的机器人对话结束后的某个时间从外部触发。
我的config.ServiceURL是“ https://smba.trafficmanager.net/amer/”,是我在会话中进行会话时从机器人上获得的。
我的config.MicrosoftAppId值是分配给Azure中我的机器人应用程序注册的ApplicationID。
我的配置。MicrosoftAppPassword是我为注册的机器人应用程序创建的客户端密码。
我的ChannelInfo值是我通过枚举另一个应用程序中所有目标团队的渠道而发现的值。我用“ f”代替了实际值。
在Azure中,我向注册的应用程序添加了以下权限:委托-Group.ReadWrite.All
当我尝试创建对话时,我得到了禁止响应。如果将下面的ChannelInfo更改为虚假值,则会收到预期的Not Found响应,因此至少ChannelInfo似乎是有效值。
我需要添加其他权限吗?我错过了一步吗?我做错了什么吗?
代码如下:
AuthenticationConfig config = AuthenticationConfig.ReadFromJsonFile("appsettings.json");
var credentials = new MicrosoftAppCredentials(config.MicrosoftAppId, config.MicrosoftAppPassword);
if (!MicrosoftAppCredentials.IsTrustedServiceUrl(config.ServiceURL))
{
MicrosoftAppCredentials.TrustServiceUrl(config.ServiceURL);
}
var serviceUri = new Uri(config.ServiceURL);
var botConnector = new ConnectorClient(serviceUri, credentials);
Activity message = (Activity)Activity.CreateMessageActivity();
message.Text = "Hello World";
var conversationParameters = new ConversationParameters
{
Bot = message.From,
IsGroup = true,
ChannelData = new TeamsChannelData
{
Channel = new ChannelInfo("19:ffffffffffffffffffffffffffffffff@thread.skype")
},
Activity = (Activity)message
};
var conversationResponse = await botConnector.Conversations.CreateConversationAsync(conversationParameters);
await botConnector
.Conversations
.SendToConversationAsync(message);
答案 0 :(得分:0)
您的代码对我来说效果很好。您可以尝试以下操作:
.SendToConversationAsync(message);
更改为.SendToConversationAsync(conversationResponse.Id, message);
,确保您将邮件发送到正确的会话中还要注意,Microsoft.Bot.Builder.Teams
软件包已被弃用,因为Bot <-> Teams功能已直接引入到Bot Framework SDK中。我强烈建议您远离它。
您可能要发送this sample中所示的主动消息。其他Teams Samples是数字50-60。
如果您想继续使用该软件包,请告诉我,我可以继续尝试提供支持。