Microsoft Tems:邮件扩展程序在加载的应用程序(zip)中失败:“无法访问应用程序”

时间:2019-09-03 15:16:53

标签: microsoft-teams

我正在使用Microsoft TEAMS应用程序,因此需要向我的应用程序添加呼叫。我的问题:

--------------问题1 --------------

我正在尝试使用TEAMS应用程序中的HelloWorld Web应用程序(HW),但出现“无法访问应用程序”消息。

我的HW编译后的文件(在Visual Studio 2017中为Microsoft.Teams.Samples.HelloWorld)在本地运行(浏览器在http://localhost:3333/中打开)

使用ngrok,我可以远程访问(https://5d4c6462.ngrok.io)          ngrok http 3333 -host-header = localhost:3333

此硬件客户端生成一个包含2个.png文件和manifest.json文件的.zip

然后在我的TEAMS应用程序(左面板)中,转到Apps-“上传自定义应用程序”,浏览并获取该.zip。我的用户可以看到我的硬件

在“团队”选项卡中,选择一个团队(MyTeam),在“管理团队”-应用程序中,我安装了HW应用程序(“更多应用程序”按钮),但是对“ Bot” /“ Tab”和“信息”选项(所有选项都有一个“设置”按钮,似乎什么都不做)

此后,在MyTeam中,当我编写@hello时,我可以看到HW应用程序,并且来自composeExtensions(清单)的命令可用

但是当我输入文字时,显示“无法访问应用程序”

我想我的问题在清单文件中,但是我不知道在哪里...与ID相关的任何内容?确实没有Message Extension URL可以访问我的应用程序...

在我的Visual项目中,“装配体信息”中有一个GUID值:“ f543a88 ...”

我已在清单中将此值用于“ id”,“ bots”和“ composeExtensions”中的“ botId” 清单文件中的其余值默认情况下为

--------------问题2 --------------

即使在阅读了app-bots文档之后,我还是有一些概念并没有真正理解。

  • 如果我有一个应用程序(例如,以前的Hello World),则可以从Teams应用程序中将其上传(如上所述)。而且它可以将消息发送到我的应用程序(或者在找到Web应用程序时会发送消息)
  • 但是如何使用正在运行的机器人来做到这一点?例如来自.NET Framework示例(例如csharp_dotnetcore解决方案中的EchoBot项目)?我的意思是该项目没有要上载的清单,在此处可见可供TEAMS显示的命令...我必须从TEAMS创建一个应用并在创建过程中加载此bot吗?
  • 在HW示例应用程序中,我有一个MessagesController:ApiController来接收消息,并且可以使用以下命令检查它是否是Message Extension:

    public async Task<HttpResponseMessage> Post([FromBody] Activity activity)
    {
        using (var connector = new ConnectorClient(new Uri(activity.ServiceUrl)))
        {
            if (activity.IsComposeExtensionQuery())
    

但是我可以在BOT中检查一下吗? AsFarAsIKnow,ActivityHandler用于处理接收到的消息及其方法(OnMessageActivityAsync,...)

  • 在类似HW sample的应用中,是否可以在收到文本时返回比文本更复杂的内容?例如,一张卡片

  • 在应用清单文件中,“ composeExtensions”具有“ commands”,其中需要参数(可用的不同类型:text,date,...),但是可以创建不带参数的命令吗?我的意思是也许我只想向我的应用程序发送命令

对不起,如果我无话可说,我真的是TEAMS应用程序/机器人的新手...

有什么帮助吗?

谢谢, 迭戈

4 个答案:

答案 0 :(得分:0)

@Deigo

关于问题1:

您是否创建了自己的机器人?我可以看到您正在清单中使用默认值。请尝试creating a bot并将bot's messaging endpoint设置为“ https://yourngrokurl/api/messages”。

一旦创建了漫游器,请在清单文件中添加生成的Bot ID和密码。将botid添加到“ bots”和“ composeExtensions”中的“ botId”。创建一个zip文件和upload it into teams

关于问题2:

  

我的意思是该项目没有要上传的清单,

您可以使用App Studio创建自己的清单文件。

  

在以下情况下是否可能返回比文本更复杂的内容:   收到短信吗?例如,一张卡片

是的,您可以返回cards。请检查此示例的Adaptive cards

  

但是可以创建不带参数的命令吗?

Parameters对象是可选的。您可以配置不带参数的消息扩展。

请让我知道我是否错过了答案。另外,如果遇到任何问题,请与我们联系。

答案 1 :(得分:0)

感谢您的回复。非常感谢您的宝贵时间... 我添加了一个答复,因为有太多文本需要评论...:(

问题1。

我尝试使用https://dev.botframework.com/bots/new创建一个机器人:

  1. 我输入NameBot,消息传递端点并生成一个新的应用程序ID(创建Ms应用程序ID并通过->应用程序注册门户):我看到一个新的AppID,但没有密码...
  2. 我设置了AppID并注册:“创建了机器人”(此ID是机器人ID?)
  3. 我可以在https://dev.botframework.com/bots中看到:“网络聊天”“正在运行”,并且将TEAMS添加为频道->我看到了两个“正在运行”,但TEST righe面板不起作用(发送失败。重试)

那我必须在HW应用程序或WebConfig文件中更改清单吗? 我必须在哪里设置新ID(在上一步2中获得)?

a。我必须更改最上面的ID(这是我的应用原始ID)

b。我必须将此ID设置为botId吗? (机器人和composeExtensions)->我做到了

c。我在清单中设置密码的位置?我找不到那个地方

那我该如何构建机器人呢? (“创建漫游器”链接中的第2步)。我以为我必须重新编译Visual项目,然后将新的zip加载到TEAMS中。

我做错了,我确定与ID有关:尝试使用我的Message Extension命令时,总是收到“无法访问应用程序”消息

我的身份证:

  • 在我的HW应用程序清单(Visual Studio示例)中,我有2个id(顶部和2xbot)
  • 在我的HW Web.config文件中,我有一个MicrosoftAppId和一个MicrosoftAppPassword

  • 在Azure门户(https://portal.azure.com)中,我的新(必需)应用程序注册了1.应用程序(客户端)ID,2。目录(租户)ID,3。ObjectID。 / p>

  • 在Bot Framework(https://dev.botframework.com)中,我有一个新创建的机器人,在其中,我从Azure门户设置了应用程序(客户端)ID ...对吗?

此外,当我使用ngrok时,我看到POST / api / messages是401未经授权...为什么会这样?


我还尝试过使用App Studio创建一个机器人:

  • “导入现有应用”并加载现有的HelloWorld zip
  • 在应用程序详细信息中,加载清单中的当前值
  • 在“功能/机器人”中,我创建了一个机器人(获取了新的ID和密码),并添加了机器人的端点地址
  • 在消息扩展中,我使用此漫游器(已加载相同的值) 但是当我尝试安装(测试并分发)时,出现“不允许上传自定义应用程序”

问题2 ****************************

我有DoNetCore示例,并且可以看到如何使用ActivityHandler(OnMessageActivityAsync方法)发送复杂的响应BUT

我的疑问是如何从HelloWorld应用发送卡片(例如),该应用没有ITurnContext(使用SendActivityAsync方法)。这个应用程序使用ApiController和这种方法来管理传入的请求

   public async Task<HttpResponseMessage> Post([FromBody] Activity activity)

我看到了ComposeExtensionResponse,但是在这里看不到如何发送复杂的响应 我看到了activity.CreateReply(),但仅包含文本

在dotNet机器人样本中,我具有Microsoft.Bot.Schema.Activity,但是在Hello World应用程序中,我具有Microsoft.Bot.Connector.Activity

恐怕我混合了一些概念(1. app-ApiController-POST和2. Bot-ActivityHandler),而且我不懂阅读文档...

我的目标是拥有一个带有Message Extension的应用程序(HelloWorld示例应用程序),以从TEAMS获取命令(通过@MyApp ...),但是我需要将卡片或富文本格式的内容发送到TEAMS( dotNet机器人示例)


关于“参数对象”,当在Messaging Extension中添加新命令(App Studio-ManifestEditor-导入应用)时,我看到这是必填项

非常感谢您,

迭戈

答案 2 :(得分:0)

我遇到了同样的问题。如果用户没有足够的权限安装bot应用程序,则似乎会出现问题。可以安装应用程序并使用选项卡,但该漫游器无法正常工作。我已经设法按照related problem中的说明为用户提供了必需的权限。

机器人现在在我这边工作。

答案 3 :(得分:0)

在尝试使示例机器人在C#Hello World Teams演示(https://github.com/OfficeDev/msteams-samples-hello-world-csharp)中工作时,使用类似的问题进行搜索,这一点来自上述@Diego的答复之一:

c。我在清单中设置密码的位置?我看不到那个地方

让我意识到,尽管如上所述,我已在manifest.json中输入了botid,但必须在appsettings.json文件中输入了bot密码。