在 Teams 应用中发起业务对话

Microsoft Teams 中的应用使用户能够在他们交流和协作的地方工作,从而推动协作。 使您的应用具有协作功能的一种方法是添加有关您的应用或应用中数据的对话的功能。 Teams 是您进行此类对话的首选位置。

例如,在 Teams 的 Profile+ 示例应用模板中,当您在应用中选择一张或多张个人资料卡时,您可以直接在 Teams 中与所选人员开始聊天。

您可能还希望对应用使用此功能。 例如,如果您正在为销售经理构建销售商机跟踪器以查看即将到来的交易,您可能希望添加一个按钮,供用户与销售人员讨论商机。

这样,Teams 中的 Power Apps 可以使用与其他 Teams 功能的深度集成来使应用程序具有协作功能。 在本文中,我们将了解如何将 Power Apps 与 Teams 集成以促进对话。

观看此视频,了解如何在 Teams 应用中配置进行有关业务数据的对话:

先决条件

要完成本课程,我们需要能够在 Teams 中创建可作为指定 Microsoft 365 订阅的一部分提供的应用。

登录到 Teams

使用桌面应用或 Web 应用登录到 Teams

创建新团队

在本节中,我们将创建一个新的 Teams 团队,然后在该团队中创建一个应用。 如果您已经有一个要使用的团队,请改为跳过此部分。

  1. 若要创建新团队,请选择“Teams”选项卡,然后选择屏幕左下角的加入或创建一个团队

  2. 选择创建团队 > 从头开始 > 公用,为团队命名,例如“通话和会议集成”,然后选择创建

  3. (可选)如果您希望将组织中的任何成员添加到团队中以进行测试,请选择他们,然后将其添加到用于添加成员的弹出窗口中。

  4. 选择关闭

系统将创建一个新团队,该团队列在“Teams”选项卡下。

创新一个新应用

我们将创建一个应用,用户可以在其中通过选择按钮并在文本框中输入消息以针对特定团队和渠道开始对话。 然后,用户可以选择提交按钮,以在 Teams 内的特定团队和渠道中发布消息,然后其他用户可以加入对话。

  1. 打开 Teams。

  2. 从右侧窗格中选择 Power Apps

  3. 选择最近应用下面的 + 新建应用

  4. 选择之前创建的团队,然后选择创建

    系统会创建应用并且 Power Apps Studio 会打开以允许编辑该应用。

  5. 输入应用的名称(如“对话应用”)并选择保存

    本应用使用屏幕 1 上的默认库创建。

将 Teams 添加为连接器

我们需要将 Teams 作为连接器添加到应用中,因为我们想要能够从登录用户的帐户访问团队和渠道。

  1. 从左侧窗格中选择数据
  2. 选择 + 添加数据,然后选择连接器
  3. 向下滚动并选择查看所有连接器
  4. 搜索并选择 Teams 连接器。

添加新表以捕获公司记录

我们需要添加一个表来维护我们将用作公司记录的公司列表,并开始有关它的对话。

  1. 从左侧窗格中选择数据

  2. 选择 + 添加数据,然后创建名称为“Company”且复数名称为“Companies”的新表。

  3. 向表中添加几个公司名称,然后选择关闭

添加新屏幕以选择客户

接下来,我们将向应用添加一个屏幕,以便用户可以选择要发起与其相关的对话的客户。

  1. 在树视图中,选择 + 新建屏幕 > 选择方案选项卡 > 选择列表

    系统会通过库列表添加新屏幕。

  2. 将库的标题更新为“Companies List”。

  3. 选择 Companies 作为库的数据源。

    添加的公司列表会显示在 TemplateGalleryList1 库中。

  4. 从树视图中删除 Screen1,将新屏幕重命名为 Screen1

添加新表以捕获对话详细信息

我们需要添加另一个表来捕获详细信息,如与应用中已启动的对话相关的 Teams 对话 ID、团队和渠道。

  1. 选择数据 > + 添加数据 > 创建新表

  2. 将表名输入为 Conversation,将复数名称输入为 Conversations

  3. 将默认名称列名称更改为 ID

  4. 将以下列添加到对话表中:

    Column 类型
    团队 文本
    团队渠道 文本
    团队名称 文本
    渠道名称 文本
    公司 查找,相关表= Company
  5. 保存并关闭该表。

添加新屏幕以开始或加入对话

现在,我们将添加一个新屏幕,应用用户可以在其中开始或加入对话。

  1. 在树视图中,选择 + 新建屏幕 > 空白布局

  2. 将屏幕的填充属性更新为白色以外的其他颜色。

    在我们的示例中,我们已将屏幕的“填充”属性设置为 RGBA(224, 224, 237, 1)

  3. 选择 +(插入)> 输入 > 按钮

  4. 更新此按钮的下列属性。

    属性 价值
    客户 startaconversation_Button
    文本 “开始对话”
    宽度 200
    高度 32
    字号 12
    X Parent.Width/2 - startaconversation_Button.Width/2
    Y 100
    OnSelect Set(enterMessage,true)
  5. 选择 +(插入)> 输入 > 组合框

  6. 更新此组合框的下列属性。

    属性 价值
    客户 team_Combobox
    多个项 MicrosoftTeams.GetAllTeams().value
    宽度 320
    高度 32
    X Parent.Width/2 - team_ComboBox.Width/2
    Y 200
    文本 “团队”
    工具提示 “团队”
    可见 enterMessage
  7. 添加另一个组合框并更新以下属性。

    属性 价值
    客户 channel_Combobox
    多个项 If(!IsBlank(team_ComboBox.Selected.id),MicrosoftTeams.GetChannelsForGroup(team_ComboBox.Selected.id).value)
    宽度 320
    高度 32
    X Parent.Width/2 - channel_ComboBox.Width/2
    Y 200
    文本 “频道”
    工具提示 “频道”
    可见 enterMessage
  8. 选择 +(插入)> 输入 > 文本框

  9. 更新此文本框的下列属性。

    属性 价值
    客户 message_TextBox
    价值 ""
    宽度 500
    高度 180
    X Parent.Width/2 - message_TextBox.Width/2
    Y 300
    占位符 在此处键入消息
    可见 enterMessage
  10. 选择 +(插入)> 输入 > 按钮

  11. 更新此按钮的下列属性。

    属性 价值
    客户 submit_Button
    价值 “提交”​​
    宽度 96
    高度 32
    字号 12
    X Parent.Width/2 - submit_Button.Width/2
    Y 500
    可见 enterMessage
  12. 在按钮的 OnSelect 事件中复制以下公式。

    Patch(Conversations,Defaults(Conversations),{ID:MicrosoftTeams.PostMessageToChannelV3(team_ComboBox.Selected.id,channel_ComboBox.Selected.id,{content:message_TextBox.Value,contentType: "text"},{subject:"New conversation"}).id,Team:team_ComboBox.Selected.id,'Team Channel':channel_ComboBox.Selected.id, 'Team Name':team_ComboBox.Selected.displayName,'Channel Name':channel_ComboBox.Selected.displayName, Company: TemplateGalleryList1.Selected}); Set(enterMessage,false); Reset(team_ComboBox);Reset(channel_ComboBox);Reset(message_TextBox)
    

    备注

    • 在上述公式中,我们将使用修补程序函数在对话表中创建一个行,以捕获对话 ID 以及团队、团队名称、渠道和渠道名称。 同时,我们还将在相应的团队和渠道中使用 PostMessageToChannelV3 函数发布消息。 然后,我们将 enterMessage 变量设置回“false”,以隐藏其可见性取决于此变量的一些字段和按钮。
    • 主题被硬编码为“新对话”以使应用保持简单,而不是添加另一个文本框控件来捕获。 但是可以为主题添加一个文本框到屏幕上,并且此文本框可被用户捕获。 需要相应地调整该公式以引用该控件。 重置函数对于 Fluent UI 组合框控件不起作用。 如果要在发布消息后不选择任何团队或渠道,则需要此函数。
  13. 选择 +(插入)> 输入 > 按钮

  14. 更新此按钮的下列属性。

    属性 价值
    客户 joinconversation_Button
    文本 “加入对话”
    宽度 200
    高度 32
    字号 12
    X Parent.Width/2 - submit_Button.Width/2
    Y 500
    可见 enterMessage
  15. 在按钮的 OnSelect 事件中复制以下公式。

    Launch(Concatenate("msteams://teams.microsoft.com/l/message/",Last(Sort(Conversations, 'Created On', Ascending)).'Team Channel',"/",Gallery1.Selected.etag,"?tenantId=",Param("tenandId"),"&groupId=",Last(Sort(Conversations, 'Created On', Ascending)).Team,"&parentMessageId=",LookUp(MicrosoftTeams.GetMessagesFromChannel(Last(Sort(Conversations, 'Created On', Ascending)).Team,Last(Sort(Conversations, 'Created On', Ascending)).'Team Channel').value,id = Last(Sort(Conversations, 'Created On', Ascending)).Team).etag,"&teamName=",Last(Sort(Conversations, 'Created  On', Ascending)).'Team Name',"&channelName=",Last(Sort(Conversations, 'Created On', Ascending)).'Channel Name'),{},LaunchTarget.New)
    

    备注

    • 在上述公式中,我们使用启动函数,以使用在对话表中创建的最后一条记录的团队和渠道参数来启动 Teams。 我们之所以这样做,是为了当用户开始对话并提交要发布到渠道的消息时,用户可以选择加入对话按钮直接转到 Teams 帖子。
    • 我们在此处使用最后一个函数使其简化。 如果您预计会更广泛地使用此应用并且会发起多个对话,您可以使用对话库并让用户选择他们想要加入的对话来发挥创意。*

然后,我们将更新公司库的 OnSelect 属性,以便当用户从列表中选择公司时,应用将转到第二个屏幕。

  1. 从树视图中选择 Screen1 以打开 Companies 库。

  2. 将库项的 OnSelect 属性设置为 Navigate(Screen2)

保存并发布应用

  1. 选择右上方上的保存以保存应用。

  2. 选择右上方上的发布以发布应用。

  3. 选择下一步

  4. 添加到渠道下,确保应在其中显示应用的渠道已列出并显示为“1 个活动选项卡”,而不是“0 个活动选项卡”。

  5. 选择保存并关闭以完成应用的发布。

测试应用

在预览模式下运行本应用或转到创建该应用所在的团队。

  1. Companies 库应显示为第一个屏幕。

  2. 选择其中一个公司。

  3. 您应该只会看到以下两个按钮:启动对话加入对话

  4. 选择开始对话

  5. 其他字段应显示:

    • 团队(具有一系列团队的下拉列表)
    • 渠道(选定团队中的渠道下拉列表)
    • 消息框(用于键入要发送给团队的消息的文本框)
    • 提交按钮(用于提交消息)
  6. 选择团队。

  7. 选择团队中的渠道。

  8. 输入消息。

  9. 选择提交。 将隐藏所有其他字段/控件。

  10. 选择加入对话,以加入到发送最后一条消息所在的团队和渠道聊天中。

    测试应用

备注

您能告诉我们您的文档语言首选项吗? 进行简短调查。(请注意,此调查是英文版调查)

此调查大约需要七分钟。 不会收集个人数据(隐私声明)。