微软团队的自定义机器人获得“BotAuthenticator无法验证传入的请求!”错误

时间:2017-06-16 15:14:48

标签: c# botframework microsoft-teams

我正在为微软团队制作一个使用Bot框架的自定义机器人。我目前在本地托管机器人并通过ngrok进行隧道传输,我正在使用/ api / messages URL。我已经使用bot框架注册了bot,并将僵尸程序句柄放在BotId中,应用程序ID放在MiscrosoftAppId中,将app密码放在我的Web.config中的MicrosoftAppPassword中。团队通道已启用,并且在Bot Framework页面上的状态为“正在运行”。僵尸程序在模拟器上运行,并在Bot Framework页面上的测试连接上运行,但它不在Microsoft Teams中运行。

这是发给我机器人的东西:

"type": "message",
"id": "1497620296742",
"timestamp": "2017-06-16T13:38:19.303Z",
"localTimestamp": null,
"serviceUrl": "https://smba.trafficmanager.net/amer-client-ss.msg/",
"channelId": "msteams",
"from": {
    "id": "29:1F9b3IgxC3x5ynp7nVxdSQ0bQ9MNyf7uKDZHrrCfRLyBbjOmdWSY4gyFLuR8cTRFmbXOeDN4f_uI65xSem6M5OA",
    "name": "Ronnei, Evan T"
},
"conversation": {
    "isGroup": true,
    "id": "19:d02a9a4678924803964e6af1d9afc1ab@thread.skype;messageid=1497558943513",
    "name": null
},
"recipient": null,
"textFormat": "plain",
"attachmentLayout": null,
"membersAdded": null,
"membersRemoved": null,
"topicName": null,
"historyDisclosed": null,
"locale": null,
"text": "Test Bot",
"summary": null,
"attachments": [
    {
        "contentType": "text/html",
        "contentUrl": null,
        "content": "<div><span itemscope=\"\" itemtype=\"http://schema.skype.com/Mention\" itemid=\"0\">Test Bot</span></div>",
        "name": null,
        "thumbnailUrl": null
    }
],
"entities": [
    {
        "type": "clientInfo",
        "locale": "en-US",
        "country": "US",
        "platform": "Windows"
    }
],
"channelData": {
    "teamsChannelId": "19:d02a9a4678924803964e6af1d9afc1ab@thread.skype",
    "teamsTeamId": "19:e218343840af4d4397faf47bd3f4eada@thread.skype",
    "channel": {
        "id": "19:d02a9a4678924803964e6af1d9afc1ab@thread.skype"
    },
    "team": {
        "id": "19:e218343840af4d4397faf47bd3f4eada@thread.skype"
    },
    "tenant": {
        "id": "a9691d3f-49e3-46a8-8b23-ddad274d0523"
    }
},
"action": null,
"replyToId": null,
"value": null,
"name": null,
"relatesTo": null

它给了我401未经授权的错误:

BotAuthenticator failed to authenticate incoming request!

对于所有这些东西,我都是初学者。我遵循了Bot Framework文档中的可用教程,但它仍然不适用于团队。我有点卡在这一点上。如果有更多信息我应该提供,请告诉我。

显然我没有足够的声誉来发布更多代码...所以这是我的manifest.json:https://pastebin.com/xK7y2VHX

2 个答案:

答案 0 :(得分:2)

您附加的清单有一些问题:

  1. bots.botsId需要来自你的僵尸框架的机器人
  2. needsChannelSelectorisNotificationOnly都应该是bool,而不是字符串(例如&#34; needsChannelSelector&#34;:false)
  3. (packageName不是阻止元素,但如果适用,理想情况下应该是反向域名表示法中的唯一字符串。)

    您还可以与我们的简单僵尸程序包here进行比较,并确保您同时查看packagingsideloading说明。

答案 1 :(得分:0)

很棒,你的机器人工作得很好。您是否创建了manifest.json文件并将其加载到团队中?您的清单包含appID,botID以及有关机器人的整体信息。如果不是,packaging instructions如下。此页面下方有一个页面,显示清单架构。如果您已经侧载并且仍然遇到问题,请再次发布!