Elastic Microsoft Teams 连接器参考

编辑

Microsoft Teams 连接器使用 Elastic 连接器框架 以 Python 编写。

查看此连接器的 源代码 (分支 *8.16*,兼容 Elastic *8.16*)。

Elastic 托管连接器参考

编辑
查看 Elastic 托管连接器 参考
可用性和先决条件
编辑

此托管连接器在 Elastic 8.14.0 中作为 Elastic Cloud 上的托管服务引入。

要在 Elastic Cloud 中原生使用此连接器,请满足所有 托管连接器要求

此连接器处于 技术预览 状态,可能随时更改。其设计和代码不如正式 GA 功能成熟,按原样提供,不提供任何担保。技术预览功能不受正式 GA 功能支持 SLA 的约束。

创建 Microsoft Teams 连接器
编辑

使用 UI

编辑

创建新的 Microsoft Teams 连接器:

  1. 在 Kibana UI 中,从主菜单导航到 搜索 → 内容 → 连接器 页面,或使用 全局搜索字段
  2. 按照说明创建新的原生 Microsoft Teams 连接器。

有关其他操作,请参见 Kibana 中的连接器 UI

使用 API

编辑

您可以使用 Elasticsearch 创建连接器 API 创建新的原生 Microsoft Teams 连接器。

例如

resp = client.connector.put(
    connector_id="my-{service-name-stub}-connector",
    index_name="my-elasticsearch-index",
    name="Content synced from {service-name}",
    service_type="{service-name-stub}",
    is_native=True,
)
print(resp)
const response = await client.connector.put({
  connector_id: "my-{service-name-stub}-connector",
  index_name: "my-elasticsearch-index",
  name: "Content synced from {service-name}",
  service_type: "{service-name-stub}",
  is_native: true,
});
console.log(response);
PUT _connector/my-microsoft_teams-connector
{
  "index_name": "my-elasticsearch-index",
  "name": "Content synced from Microsoft Teams",
  "service_type": "microsoft_teams",
  "is_native": true
}
您还需要 创建 API 密钥 供连接器使用。

用户需要集群权限 manage_api_keymanage_connectorwrite_connector_secrets才能以编程方式生成 API 密钥。

为连接器创建 API 密钥:

  1. 运行以下命令,替换指示的值。请注意响应中返回的 idencoded 值。

    resp = client.security.create_api_key(
        name="my-connector-api-key",
        role_descriptors={
            "my-connector-connector-role": {
                "cluster": [
                    "monitor",
                    "manage_connector"
                ],
                "indices": [
                    {
                        "names": [
                            "my-index_name",
                            ".search-acl-filter-my-index_name",
                            ".elastic-connectors*"
                        ],
                        "privileges": [
                            "all"
                        ],
                        "allow_restricted_indices": False
                    }
                ]
            }
        },
    )
    print(resp)
    const response = await client.security.createApiKey({
      name: "my-connector-api-key",
      role_descriptors: {
        "my-connector-connector-role": {
          cluster: ["monitor", "manage_connector"],
          indices: [
            {
              names: [
                "my-index_name",
                ".search-acl-filter-my-index_name",
                ".elastic-connectors*",
              ],
              privileges: ["all"],
              allow_restricted_indices: false,
            },
          ],
        },
      },
    });
    console.log(response);
    POST /_security/api_key
    {
      "name": "my-connector-api-key",
      "role_descriptors": {
        "my-connector-connector-role": {
          "cluster": [
            "monitor",
            "manage_connector"
          ],
          "indices": [
            {
              "names": [
                "my-index_name",
                ".search-acl-filter-my-index_name",
                ".elastic-connectors*"
              ],
              "privileges": [
                "all"
              ],
              "allow_restricted_indices": false
            }
          ]
        }
      }
    }
  2. 使用 encoded 值存储连接器密钥,并记下此响应返回的 id 值。

    resp = client.connector.secret_post(
        body={
            "value": "encoded_api_key"
        },
    )
    print(resp)
    const response = await client.connector.secretPost({
      body: {
        value: "encoded_api_key",
      },
    });
    console.log(response);
    POST _connector/_secret
    {
      "value": "encoded_api_key"
    }
  3. 使用 API 密钥 id 和连接器密钥 id 更新连接器。

    resp = client.connector.update_api_key_id(
        connector_id="my_connector_id>",
        api_key_id="API key_id",
        api_key_secret_id="secret_id",
    )
    print(resp)
    const response = await client.connector.updateApiKeyId({
      connector_id: "my_connector_id>",
      api_key_id: "API key_id",
      api_key_secret_id: "secret_id",
    });
    console.log(response);
    PUT /_connector/my_connector_id>/_api_key_id
    {
      "api_key_id": "API key_id",
      "api_key_secret_id": "secret_id"
    }

有关所有可用连接器 API 的详细信息,请参阅 Elasticsearch API 文档

用法
编辑

要在 UI 中使用此连接器,请在 搜索 → 连接器 下创建新连接器时选择 Teams 磁贴。

如果您已经熟悉连接器的使用方法,也可以使用 连接器 API

有关其他操作,请参见 Kibana 中的连接器 UI

连接到 Microsoft Teams
编辑

要连接到 Microsoft Teams,您需要 创建一个可以访问资源的 Azure Active Directory 应用程序和服务主体。请按照以下步骤操作:

  1. 转到 Azure 门户 并使用您的 Azure 帐户登录。
  2. 导航到 Azure Active Directory 服务。
  3. 从左侧菜单中选择 应用注册
  4. 单击 新建注册 按钮以注册新的应用程序。
  5. 为您的应用提供 名称,并 *可选地* 选择受支持的帐户类型(例如,单租户、多租户)。
  6. 单击 注册 按钮以创建应用注册。
  7. 注册完成后,您将被重定向到应用的概述页面。记下 应用程序(客户端)ID 值,以后您将需要它。
  8. 向下滚动到 API 权限 部分,然后单击“添加权限”按钮。
  9. 在“请求 API 权限”窗格中,选择“Microsoft Graph”作为 API。
  10. 选择以下 权限

    • TeamMember.Read.All(委托)
    • Team.ReadBasic.All(委托)
    • TeamsTab.Read.All(委托)
    • Group.Read.All(委托)
    • ChannelMessage.Read.All(委托)
    • Chat.Read(委托)& Chat.Read.All(应用程序)
    • Chat.ReadBasic(委托)& Chat.ReadBasic.All(应用程序)
    • Files.Read.All(委托和应用程序)
    • Calendars.Read(委托和应用程序)
  11. 单击 添加权限 按钮将所选权限添加到您的应用。
  12. 单击 授予管理员同意 按钮以向应用授予所需的权限。此步骤需要管理员权限。如果您不是管理员,则需要请求管理员通过其 Azure 门户授予同意
  13. 在“证书和密钥”选项卡下,转到 客户端密钥。生成一个新的客户端密钥,并记下Value列下的字符串。

完成后,使用以下配置参数配置连接器。

配置
编辑

需要以下配置字段:

client_id(必需)

Azure 应用程序的唯一标识符,位于应用的概述页面。例如:

  • ab123453-12a2-100a-1123-93fd09d67394
secret_value(必需)

应用程序在请求令牌时用来证明其身份的字符串值,可在 Azure 应用程序菜单的 Certificates & Secrets 选项卡下找到。例如:

  • eyav1~12aBadIg6SL-STDfg102eBfCGkbKBq_Ddyu
tenant_id(必需)

Azure Active Directory 实例的唯一标识符,位于应用的概述页面。例如:

  • 123a1b23-12a3-45b6-7c8d-fc931cfb448d
username(必需)

Azure 应用程序的用户名。例如:

password(必需)

Azure 应用程序的密码。例如:

  • changeme
内容提取
编辑

请参阅 内容提取

文档和同步
编辑

连接器同步以下对象和实体:

  • USER_CHATS_MESSAGE
  • USER_CHAT_TABS
  • USER_CHAT_ATTACHMENT
  • USER_CHAT_MEETING_RECORDING
  • USER_MEETING
  • TEAMS
  • TEAM_CHANNEL
  • CHANNEL_TAB
  • CHANNEL_MESSAGE
  • CHANNEL_MEETING
  • CHANNEL_ATTACHMENT
  • CALENDAR_EVENTS
  • 大于 10 MB 的文件将不会被提取。
  • 权限不会同步。所有文档 索引到 Elastic 部署后将对 所有有权访问 该 Elastic 部署的用户可见。
同步类型
编辑

默认情况下,所有连接器都支持 完全同步

此连接器还支持 增量同步

同步规则
编辑

所有连接器的 基本同步规则 都相同,默认情况下可用。

高级同步规则
编辑

当前版本中此连接器不支持高级同步规则。

已知问题
编辑
  • 与自己聊天用户的单人聊天中的消息不会通过 Graph API 获取。因此,这些消息不会索引到 Elasticsearch 中。

请参阅 已知问题,了解所有连接器的已知问题列表。

故障排除
编辑

请参见 故障排除

安全性
编辑

请参见 安全性

自管理连接器参考

编辑
查看 自管理连接器 参考
可用性和先决条件
编辑

此连接器可作为自管理 自管理连接器 使用。要使用此连接器,请满足所有 自管理连接器先决条件

此连接器处于 技术预览 状态,可能随时更改。其设计和代码不如正式 GA 功能成熟,按原样提供,不提供任何担保。技术预览功能不受正式 GA 功能支持 SLA 的约束。

创建 Microsoft Teams 连接器
编辑

使用 UI

编辑

创建新的 Microsoft Teams 连接器:

  1. 在 Kibana UI 中,从主菜单导航到 搜索 → 内容 → 连接器 页面,或使用 全局搜索字段
  2. 按照说明创建新的 Microsoft Teams 自管理连接器。

使用 API

编辑

您可以使用 Elasticsearch 创建连接器 API 创建新的自管理 Microsoft Teams 自管理连接器。

例如

resp = client.connector.put(
    connector_id="my-{service-name-stub}-connector",
    index_name="my-elasticsearch-index",
    name="Content synced from {service-name}",
    service_type="{service-name-stub}",
)
print(resp)
const response = await client.connector.put({
  connector_id: "my-{service-name-stub}-connector",
  index_name: "my-elasticsearch-index",
  name: "Content synced from {service-name}",
  service_type: "{service-name-stub}",
});
console.log(response);
PUT _connector/my-microsoft_teams-connector
{
  "index_name": "my-elasticsearch-index",
  "name": "Content synced from Microsoft Teams",
  "service_type": "microsoft_teams"
}
您还需要 创建 API 密钥 供连接器使用。

用户需要集群权限 manage_api_keymanage_connectorwrite_connector_secrets才能以编程方式生成 API 密钥。

为连接器创建 API 密钥:

  1. 运行以下命令,替换指示的值。请注意响应中返回的 encoded 值。

    resp = client.security.create_api_key(
        name="connector_name-connector-api-key",
        role_descriptors={
            "connector_name-connector-role": {
                "cluster": [
                    "monitor",
                    "manage_connector"
                ],
                "indices": [
                    {
                        "names": [
                            "index_name",
                            ".search-acl-filter-index_name",
                            ".elastic-connectors*"
                        ],
                        "privileges": [
                            "all"
                        ],
                        "allow_restricted_indices": False
                    }
                ]
            }
        },
    )
    print(resp)
    const response = await client.security.createApiKey({
      name: "connector_name-connector-api-key",
      role_descriptors: {
        "connector_name-connector-role": {
          cluster: ["monitor", "manage_connector"],
          indices: [
            {
              names: [
                "index_name",
                ".search-acl-filter-index_name",
                ".elastic-connectors*",
              ],
              privileges: ["all"],
              allow_restricted_indices: false,
            },
          ],
        },
      },
    });
    console.log(response);
    POST /_security/api_key
    {
      "name": "connector_name-connector-api-key",
      "role_descriptors": {
        "connector_name-connector-role": {
          "cluster": [
            "monitor",
            "manage_connector"
          ],
          "indices": [
            {
              "names": [
                "index_name",
                ".search-acl-filter-index_name",
                ".elastic-connectors*"
              ],
              "privileges": [
                "all"
              ],
              "allow_restricted_indices": false
            }
          ]
        }
      }
    }
  2. 使用 API 密钥 encoded 值更新您的 config.yml 文件。

有关所有可用连接器 API 的详细信息,请参阅 Elasticsearch API 文档

用法
编辑

要将此连接器用作 自管理连接器,请使用连接器列表 自定义连接器 工作流程中的 Microsoft Teams 磁贴。

有关其他操作,请参见 Kibana 中的连接器 UI

连接到 Microsoft Teams
编辑

要连接到 Microsoft Teams,您需要 创建一个可以访问资源的 Azure Active Directory 应用程序和服务主体。请按照以下步骤操作:

  1. 转到 Azure 门户 并使用您的 Azure 帐户登录。
  2. 导航到 Azure Active Directory 服务。
  3. 从左侧菜单中选择 应用注册
  4. 单击 新建注册 按钮以注册新的应用程序。
  5. 为您的应用提供 名称,并 *可选地* 选择受支持的帐户类型(例如,单租户、多租户)。
  6. 单击 注册 按钮以创建应用注册。
  7. 注册完成后,您将被重定向到应用的概述页面。记下 应用程序(客户端)ID 值,以后您将需要它。
  8. 向下滚动到 API 权限 部分,然后单击“添加权限”按钮。
  9. 在“请求 API 权限”窗格中,选择“Microsoft Graph”作为 API。
  10. 选择以下 权限

    • TeamMember.Read.All(委托)
    • Team.ReadBasic.All(委托)
    • TeamsTab.Read.All(委托)
    • Group.Read.All(委托)
    • ChannelMessage.Read.All(委托)
    • Chat.Read(委托)& Chat.Read.All(应用程序)
    • Chat.ReadBasic(委托)& Chat.ReadBasic.All(应用程序)
    • Files.Read.All(委托和应用程序)
    • Calendars.Read(委托和应用程序)
  11. 单击 添加权限 按钮将所选权限添加到您的应用。
  12. 单击 授予管理员同意 按钮以向应用授予所需的权限。此步骤需要管理员权限。如果您不是管理员,则需要请求管理员通过其 Azure 门户授予同意
  13. 在“证书和密钥”选项卡下,转到 客户端密钥。生成一个新的客户端密钥,并记下Value列下的字符串。

完成后,使用以下配置参数配置连接器。

配置
编辑

需要以下配置字段:

client_id(必需)

Azure 应用程序的唯一标识符,位于应用的概述页面。例如:

  • ab123453-12a2-100a-1123-93fd09d67394
secret_value(必需)

应用程序在请求令牌时用来证明其身份的字符串值,可在 Azure 应用程序菜单的 Certificates & Secrets 选项卡下找到。例如:

  • eyav1~12aBadIg6SL-STDfg102eBfCGkbKBq_Ddyu
tenant_id(必需)

Azure Active Directory 实例的唯一标识符,位于应用的概述页面。例如:

  • 123a1b23-12a3-45b6-7c8d-fc931cfb448d
username(必需)

Azure 应用程序的用户名。例如:

password(必需)

Azure 应用程序的密码。例如:

  • changeme
使用 Docker 部署
编辑

您可以使用 Docker 将 Microsoft Teams 连接器部署为自管理连接器。请按照以下说明操作:

步骤 1:下载示例配置文件

下载示例配置文件。您可以手动下载它,也可以运行以下命令:

curl https://raw.githubusercontent.com/elastic/connectors/main/config.yml.example --output ~/connectors-config/config.yml

如果您的目录名称不同,或者您想要使用不同的配置文件名,请记住更新 --output 参数值。

步骤 2:更新自管理连接器的配置文件

使用以下设置更新配置文件以匹配您的环境:

  • elasticsearch.host
  • elasticsearch.api_key
  • connectors

如果您针对 Elasticsearch 和 Kibana 的 Docker 化版本运行连接器服务,您的配置文件将如下所示:

# When connecting to your cloud deployment you should edit the host value
elasticsearch.host: http://host.docker.internal:9200
elasticsearch.api_key: <ELASTICSEARCH_API_KEY>

connectors:
  -
    connector_id: <CONNECTOR_ID_FROM_KIBANA>
    service_type: microsoft_teams
    api_key: <CONNECTOR_API_KEY_FROM_KIBANA> # Optional. If not provided, the connector will use the elasticsearch.api_key instead

推荐使用 elasticsearch.api_key 进行身份验证。但是,您也可以使用 elasticsearch.usernameelasticsearch.password 来连接您的 Elasticsearch 实例。

注意:您可以通过取消配置文件中特定设置的注释并修改其值来更改其他默认配置。

步骤 3:运行 Docker 镜像

使用以下命令运行包含连接器服务的 Docker 镜像:

docker run \
-v ~/connectors-config:/config \
--network "elastic" \
--tty \
--rm \
docker.elastic.co/integrations/elastic-connectors:8.16.0.0 \
/app/bin/elastic-ingest \
-c /config/config.yml

有关更多详细信息,请参考 elastic/connectors 代码库中的 DOCKER.md

您可以在 官方注册表 中找到所有可用的 Docker 镜像。

我们还提供了一个使用 Docker Compose 的快速启动自托管选项,您可以一次性启动所有必需的服务:Elasticsearch、Kibana 和连接器服务。有关更多信息,请参考 elastic/connectors 代码库中的 README

内容提取
编辑

请参阅 内容提取

文档和同步
编辑

连接器同步以下对象和实体:

  • USER_CHATS_MESSAGE
  • USER_CHAT_TABS
  • USER_CHAT_ATTACHMENT
  • USER_CHAT_MEETING_RECORDING
  • USER_MEETING
  • TEAMS
  • TEAM_CHANNEL
  • CHANNEL_TAB
  • CHANNEL_MESSAGE
  • CHANNEL_MEETING
  • CHANNEL_ATTACHMENT
  • CALENDAR_EVENTS
  • 大于 10 MB 的文件将不会被提取。
  • 权限不会同步。所有文档 索引到 Elastic 部署后将对 所有有权访问 该 Elastic 部署的用户可见。
同步类型
编辑

默认情况下,所有连接器都支持 完全同步

此连接器还支持 增量同步

同步规则
编辑

所有连接器的 基本同步规则 都相同,默认情况下可用。

高级同步规则
编辑

当前版本中此连接器不支持高级同步规则。

端到端测试
编辑

连接器框架使操作员能够针对真实数据源运行功能测试。有关更多详细信息,请参考 连接器测试

要对 Teams 连接器执行端到端测试,请运行以下命令:

$ make ftest NAME=microsoft_teams

为了加快测试速度,请添加 DATA_SIZE=small 标志

make ftest NAME=microsoft_teams DATA_SIZE=small
已知问题
编辑
  • 与自己聊天用户的单人聊天中的消息不会通过 Graph API 获取。因此,这些消息不会索引到 Elasticsearch 中。

请参阅 已知问题,了解所有连接器的已知问题列表。

故障排除
编辑

请参见 故障排除

安全
编辑

请参见 安全性