Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Botframework 创建团队频道对话失败,错误代码为ConversationNotFound_Botframework_Microsoft Teams - Fatal编程技术网

Botframework 创建团队频道对话失败,错误代码为ConversationNotFound

Botframework 创建团队频道对话失败,错误代码为ConversationNotFound,botframework,microsoft-teams,Botframework,Microsoft Teams,我有一个Bot框架V3 Bot代码库,在六个左右不同的客户团队租户中运行,在我们的内部团队租户中运行,没有问题 在一个特定的客户租户中,当我调用ConnectorClient.Conversations.CreateConversationAsync()时,尝试创建到团队通道的主动消息失败,出现ConversationNotFound 404错误 我创建对话并在频道中发布活动的代码如下所示: "Response": { "StatusCode": 404, "ReasonPhrase": "No

我有一个Bot框架V3 Bot代码库,在六个左右不同的客户团队租户中运行,在我们的内部团队租户中运行,没有问题

在一个特定的客户租户中,当我调用ConnectorClient.Conversations.CreateConversationAsync()时,尝试创建到团队通道的主动消息失败,出现ConversationNotFound 404错误

我创建对话并在频道中发布活动的代码如下所示:

"Response": {
"StatusCode": 404,
"ReasonPhrase": "Not Found",
"Content": "{\"error\":{\"code\":\"ConversationNotFound\",\"message\":\"Conversation not found.\"}}",
"Headers": {
  "Date": [
    "Wed, 04 Sep 2019 14:43:24 GMT"
  ],
  "Server": [
    "Microsoft-HTTPAPI/2.0"
  ],
  "Content-Length": [
    "77"
  ],
  "Content-Type": [
    "application/json; charset=utf-8"
  ]
}
var teamsChannelId=“19:deadbeef1234@thread.skype"; // 插入从图形API查找中获得的真实通道ID。。。 var botCredentials=新的MicrosoftAppCredentials(/*机器人ID和密码*/); MicrosoftAppCredentials.TrustServiceUrl(“https://smba.trafficmanager.net/amer/,DateTime.MaxValue); 使用(var connectorClient=newconnectorclient(新Urihttps://smba.trafficmanager.net/amer/)(证书){ var botId=新的ChannelAccount(“28:+botCredentials.MicrosoftAppId”); var msg=Activity.CreateMessageActivity(); msg.From=botId; var card=MakeCard();//生成一个AdaptiveCard。。。 msg.Attachments.Add(新附件(AdaptiveCard.ContentType,内容:卡片)); var参数=新的ConversationParameters(){ Bot=botId, ChannelData=新团队SchannelData(){ 频道=新频道信息(teamsChannelId) }, 活动=(活动)消息 }; //这将抛出一个代码为“ConversationNotFound”的Microsoft.Bot.Connector.ErrorResponseException ConversationResourceResponse ConvolaResponse=等待connectorClient.Conversations.CreateConversationAsync(参数); } 正如我最初提到的,这段代码可能并不完美,但它在许多不同的团队和Azure环境中工作,但在这个特定的环境中失败了。来自Bot框架的HTTP响应如下所示:

"Response": {
"StatusCode": 404,
"ReasonPhrase": "Not Found",
"Content": "{\"error\":{\"code\":\"ConversationNotFound\",\"message\":\"Conversation not found.\"}}",
"Headers": {
  "Date": [
    "Wed, 04 Sep 2019 14:43:24 GMT"
  ],
  "Server": [
    "Microsoft-HTTPAPI/2.0"
  ],
  "Content-Length": [
    "77"
  ],
  "Content-Type": [
    "application/json; charset=utf-8"
  ]
}
堆栈跟踪:

Microsoft.Bot.Connector.ErrorResponseException: Operation returned an invalid status code 'NotFound'
   at Microsoft.Bot.Connector.Conversations.<CreateConversationWithHttpMessagesAsync>d__6.MoveNext()
    --- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Bot.Connector.ConversationsExtensions.<CreateConversationAsync>d__3.MoveNext()
Microsoft.Bot.Connector.ErrorResponseException:操作返回无效的状态代码“NotFound”
在Microsoft.Bot.Connector.Conversations.d_u6.MoveNext()中
---来自引发异常的上一个位置的堆栈结束跟踪---
在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()中
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在Microsoft.Bot.Connector.ConversationsExtensions.d_u3.MoveNext()中
  • bot能够通过webchat、directline和Teams连接器处理传入的1-1聊天对话,因此我认为bot凭据或bot注册配置没有任何问题
  • bot已作为Microsoft团队的应用程序添加,并上载到租户,然后添加到相应的团队
  • 我已经探讨了Azure中的Bot框架注册区域可能会导致问题的可能性,但我已经在我们端复制了客户端的配置,无法复制该问题

欢迎提供任何建议。

我感觉您的
参数
缺少
租户
。这也许可以解释为什么它对一些租户而不是其他租户不起作用。试着这样做:

"Response": {
"StatusCode": 404,
"ReasonPhrase": "Not Found",
"Content": "{\"error\":{\"code\":\"ConversationNotFound\",\"message\":\"Conversation not found.\"}}",
"Headers": {
  "Date": [
    "Wed, 04 Sep 2019 14:43:24 GMT"
  ],
  "Server": [
    "Microsoft-HTTPAPI/2.0"
  ],
  "Content-Length": [
    "77"
  ],
  "Content-Type": [
    "application/json; charset=utf-8"
  ]
}
var参数=新会话参数
{
Members=new[]{new ChannelAccount(userId)},
ChannelData=新团队SchannelData
{
租户=新租户信息(activity.Conversation.TenantId),
},
};
@Trinetra MSFT也是正确的。您不应该硬编码服务URL;您的一些用户可能在
/amer
之外

尽管在某种程度上是可能的,“主动消息传递”不应该被认为是“没有与机器人对话的消息传递用户”,而是。一般来说,主动消息传递需要由机器人过去与之进行过对话的用户完成。这就是Bot框架如何定义主动消息传递

对于团队,请参见:

只要您的机器人在个人、群组聊天或团队范围内具有通过先前添加获得的用户信息,机器人就可以创建与单个Microsoft team用户的新对话。此信息使您的机器人能够主动通知他们。例如,如果您的机器人被添加到团队中,它可以查询团队名册并在个人聊天中向用户发送个人消息,或者用户可以@提及另一个用户以触发机器人向该用户发送直接消息

看。注意:它是为V4机器人编写的,因此您可能需要进行一些调整


如果遇到问题,请告诉我,我将相应调整我的答案。

请不要硬编码
serviceURL
value。当用户向bot发送消息时,传入的请求包含一个活动对象,该对象具有
serviceUrl
属性,该属性指定bot应向其发送响应的端点。请使用特定租户的服务URL,然后重试。我没有有效的传入响应-这是一条主动消息,与来自用户的任何传入请求通过不同的渠道发送。是否有一个列表记录了可用的服务URL是什么以及它们应该对应什么?这是令人沮丧的,因为所有地狱试图做任何事情适度的快乐之路以外的机器人框架,因为这么少的文件和这么多是混淆。你能得到这个工作与我的答案吗?如果是这样,请“接受”并投票,这样其他人可以快速找到答案,我可以从我的支持跟踪中清除这个问题。如果没有,让我知道我还能提供什么帮助!我通过使服务URL可配置解决了这个问题。它仍然需要一些尝试和错误来找到合适的值-我不认为可能的值会发布在任何地方,但是如果您记录事件并使用Teams用户initia