ServiceUrl“ https://smba.trafficmanager.net/apac/”不起作用

时间:2019-05-26 08:21:46

标签: botframework microsoft-teams

我有一个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);
}

1 个答案:

答案 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。注意:您也可以为此添加到期时间。

I've submitted a PR for this,到目前为止已导致some updated docs