我有一个MS Teams机器人。我已经为租户中的几个用户安装了该机器人。现在,当我开始交谈时,很少有用户正在响应,而很少有用户没有响应。
我进行了进一步调查,发现对于从bot得到答复的用户,serviceurl为“ https://smba.trafficmanager.net/in/”。
对于未获得漫游器回复的用户,serviceurl为“ https://smba.trafficmanager.net/apac/”。
异常消息:操作返回了无效的状态码“ NotFound”
private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<object> result)
{
var activity = await result as Activity;
var reply = activity.CreateReply();
reply.Text = "Hi there";
await context.PostAsync(reply);
}
答案 0 :(得分:0)
这听起来可能是TrustServiceUrl Issue(尽管出现500 vs 401错误消息)。
您可以通过将所有ServiceUrl添加到受信任的URL列表中来解决此问题:
private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<object> result)
{
var activity = await result as Activity;
var serviceUrl = activity.ServiceUrl;
MicrosoftAppCredentials.TrustServiceUrl(serviceUrl);
var reply = activity.CreateReply();
reply.Text = "Hi there";
await context.PostAsync(reply);
}
这应该确保您的机器人“信任”它收到的任何消息的ServiceUrl。
让我知道怎么回事。我90%确信这是问题所在,但事实可能并非如此。
Here's a link,如果有帮助的话。否则,browsing these issues应该有所帮助。
此“信任服务URL问题”不仅适用于团队。尝试使用主动消息传递时,许多其他URL也会发生这种情况。只需将serviceUrl
替换为适合您的用例的内容即可。是的,如果您使用多个渠道,则可以在使用MicrosoftAppCredentials.TrustServiceUrl()
时通过多次调用来添加多个URL。
这里是the method definition。注意:您也可以为此添加到期时间。