首页 > 解决方案 > 向 MS Teams 发送主动消息

问题描述

我无法向 MS Teams 发送主动消息。您可以在下面看到代码和错误。错误信息如下: 对话创建参数不正确

当我将应用程序日志放在托管机器人的 azure 门户中时:我看到以下错误:Microsoft.Bot.Builder.Integration.AspNet.Core.BotFrameworkHttpAdapter:异常捕获:发生了一个或多个错误。(操作返回无效状态代码“BadRequest”)

2019-09-16T13:32:57 Microsoft.WindowsAzure.Storage.StorageException:远程服务器返回错误:(409) 冲突。---> System.Net.WebException:远程服务器返回错误:(409) Conflict.at System.Net.HttpWebRequest.GetResponse()at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T]( REST命令1 cmd, IRetryPolicy policy, OperationContext operationContext)--- End of inner exception stack trace ---at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommandMicrosoft.WindowsAzure.Storage.Blob.CloudBlobContainer.ListBlobsSegmented(字符串前缀,布尔值 useFlatBlobListing,BlobListingDetails blobListingDetails,Nullable`1 maxResults,BlobContinuationToken currentToken,BlobRequestOptions 选项,OperationContext operationContext)上的 1 cmd,IRetryPolicy 策略,OperationContext operationContext)。 WebSites.Diagnostics.AzureBlobTraceListener.CleanupOldBlobLogs(Object state)Request InformationRequestID:a8f8929d-001e-0005-4693-6ccae9000000RequestDate:Mon, 16 Sep 2019 13:32:57 GMTStatusMessage:该版本无法识别容器中的 blob 类型。错误代码:功能版本不匹配。请你帮助我好吗?谢谢

 MicrosoftAppCredentials.TrustServiceUrl(turnContext.Activity.ServiceUrl);
            var teamConversationData = turnContext.Activity.GetChannelData<TeamsChannelData>();
            var connectorClient = new ConnectorClient(new Uri(turnContext.Activity.ServiceUrl), _credentialProvider.AppId, _credentialProvider.Password);

            var userId = "28:2c988176-cea6-4aaa-9a69-8ace544a43e3";
            var tenantId = teamConversationData.Tenant.Id;
            var parameters = new ConversationParameters
            {
                Members = new[] { new ChannelAccount(userId) },
                ChannelData = new TeamsChannelData
                {
                    Tenant = new TenantInfo(tenantId),
                },
            };

            var conversationResource = await connectorClient.Conversations.CreateConversationAsync(parameters);
            var message = Activity.CreateMessageActivity();
            message.Text = "This is a proactive message1.";
            await connectorClient.Conversations.SendToConversationAsync(conversationResource.Id, (Activity)message);

            // Save any state changes that might have occured during the turn.


标签: c#botframework

解决方案


我在电子邮件中提到了这一点,但我在这里为其他人重新发布:

那是因为您没有使用 Teams UserId。它们的格式如下:

29:1I9Is_Sx0O-Iy2rQ7Xz1lcaPKlO9eqmBRTBuW6XzXXXXXXXXMij8BVMdBcL9L_RwWNJyAHFQb0TXXXXXX

我在这个答案中有一堆团队格式的例子。

获取所有信息的最简单方法是与用户开始一条消息并设置断点以获取传入消息。

或者,您可以查询 roster


推荐阅读