我正在使用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文档之后,我还是有一些概念并没有真正理解。
在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应用程序/机器人的新手...
有什么帮助吗?
谢谢, 迭戈
答案 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创建一个机器人:
那我必须在HW应用程序或WebConfig文件中更改清单吗? 我必须在哪里设置新ID(在上一步2中获得)?
a。我必须更改最上面的ID(这是我的应用原始ID)
b。我必须将此ID设置为botId吗? (机器人和composeExtensions)->我做到了
c。我在清单中设置密码的位置?我找不到那个地方
那我该如何构建机器人呢? (“创建漫游器”链接中的第2步)。我以为我必须重新编译Visual项目,然后将新的zip加载到TEAMS中。
我做错了,我确定与ID有关:尝试使用我的Message Extension命令时,总是收到“无法访问应用程序”消息
我的身份证:
在我的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创建一个机器人:
问题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密码。