创建对话选项卡

对话子实体提供了一种允许用户在选项卡中就子实体进行对话的方法。例如特定任务、患者和销售机会,而不是讨论整个选项卡(也称为实体)。 传统频道或可配置选项卡允许用户就选项卡进行对话,但用户需要更专注的对话。 如果内容太多而无法集中讨论,或者内容随时间而更改,则可能会产生更集中的对话的要求,从而使对话与显示的内容无关。 对话子实体为动态选项卡提供了更集中的聊天体验。

对话子实体仅在通道中受支持。 可以从个人或静态选项卡使用它们,在已固定到频道的选项卡中创建或继续对话。 如果要为用户提供一个位置,以便查看和访问跨多个通道发生的对话,则静态选项卡非常有用。

先决条件

若要支持对话子实体,选项卡 Web 应用程序必须能够在后端数据库中存储子实体↔会话之间的映射。 conversationId提供了 ,但你必须存储它conversationId并将其返回到 Teams,以便用户继续对话。

开始新对话

若要开始新的对话,请使用 openConversation() 函数。 开始和继续对话均由此方法处理。 从用户的角度来看,函数的输入会根据要采取的操作而更改,这会打开屏幕右侧的对话面板,以启动对话或继续对话。

microsoftTeams.conversations.openConversation(openConversationRequest);

openConversation 采用以下输入在频道中启动对话:

  • subEntityId:特定子实体的 ID。 例如,task-123。
  • entityId:创建选项卡实例时的 ID。 ID 对于回引用同一选项卡实例非常重要。
  • channelId:选项卡实例所在的通道。

    注意

    channelId 对于通道选项卡是可选的。 但是,如果要使跨通道和静态选项卡的实现保持一致,则建议这样做。

  • title:在聊天面板中向用户显示的游戏。

还可以从 app.getContext() TeamsJS v1) microsoftTeams.getContext() 中的 API (检索这些值中的大多数值。 有关详细信息,请参阅 PageInfo 接口

microsoftTeams.conversations.openConversation({“subEntityId”:”task-1”, “entityId”: “tabInstanceId-1”, “channelId”: ”19:baa6e71f65b948d189bf5c892baa8e5a@thread.skype”, “title”: "Task Title”});

下图显示了对话面板:

开始对话

如果用户启动会话,请务必侦听该事件的回调以检索和保存 conversationId

⁠microsoftTeams.conversations.openConversation({
    ...,
    onStartConversation: (conversationResponse) => {
        ⁠// console.log(conversationResponse)
    },
});

对象 conversationResponse 包含与已启动的会话相关的信息。 建议保存此响应对象的所有属性以供以后使用。

继续对话

会话开始后,后续调用 openConversation() 要求提供与 开始新对话相同的输入,但还包括 conversationId。 此时会为视图中具有相应对话的用户打开对话面板。 用户可以实时查看新消息或传入消息。

下图显示了具有相应对话的会话面板:

继续对话

增强对话

选项卡必须包含 指向子实体的深层链接,这一点很重要。 例如,用户从频道对话中选择选项卡 chiclet 深层链接。 预期行为是接收深层链接,打开该子实体,然后打开该子实体的对话面板。

若要支持个人或静态选项卡中的对话子实体,无需在实现中更改任何内容。 我们仅支持从已固定的频道选项卡开始或继续对话。 通过支持静态选项卡,你可以为用户提供一个位置,以便与所有子实体交互。 在频道中最初创建选项卡时,请务必保存 subEntityIdentityIdchannelId ,以在静态选项卡中打开对话视图时具有正确的属性。

关闭对话

可以通过调用 closeConversation() 函数手动关闭对话视图。

microsoftTeams.conversations.closeConversation();

当用户在对话视图中选择 “关闭 (X) ”时,还可以侦听事件。

⁠microsoftTeams.conversations.openConversation({
    ...,
    onCloseConversation: (conversationResponse) => {
        ⁠// console.log(conversationResponse)
    },
});

代码示例

示例名称 Description .NET Node.js 清单
“创建对话”选项卡 用于演示“创建对话”选项卡的 Microsoft Teams 选项卡示例应用。 View View View

后续步骤

另请参阅