From 73b063b66c79b24757ce1c36f21e9dcdebda2447 Mon Sep 17 00:00:00 2001 From: Hagenoneill Date: Thu, 29 Feb 2024 12:36:05 -0500 Subject: [PATCH] added teams connector --- backend/danswer/configs/constants.py | 1 + backend/danswer/connectors/factory.py | 2 + backend/danswer/connectors/teams/__init__.py | 0 backend/danswer/connectors/teams/connector.py | 223 +++++++++++++++ web/public/Teams.png | Bin 0 -> 126479 bytes web/src/app/admin/connectors/teams/page.tsx | 264 ++++++++++++++++++ web/src/components/icons/icons.tsx | 13 + web/src/lib/sources.ts | 6 + web/src/lib/types.ts | 11 + 9 files changed, 520 insertions(+) create mode 100644 backend/danswer/connectors/teams/__init__.py create mode 100644 backend/danswer/connectors/teams/connector.py create mode 100644 web/public/Teams.png create mode 100644 web/src/app/admin/connectors/teams/page.tsx diff --git a/backend/danswer/configs/constants.py b/backend/danswer/configs/constants.py index 0151634ed..76fc419c0 100644 --- a/backend/danswer/configs/constants.py +++ b/backend/danswer/configs/constants.py @@ -83,6 +83,7 @@ class DocumentSource(str, Enum): ZENDESK = "zendesk" LOOPIO = "loopio" SHAREPOINT = "sharepoint" + TEAMS = "teams" class DocumentIndexType(str, Enum): diff --git a/backend/danswer/connectors/factory.py b/backend/danswer/connectors/factory.py index f4a9ee290..4272de302 100644 --- a/backend/danswer/connectors/factory.py +++ b/backend/danswer/connectors/factory.py @@ -26,6 +26,7 @@ from danswer.connectors.notion.connector import NotionConnector from danswer.connectors.productboard.connector import ProductboardConnector from danswer.connectors.requesttracker.connector import RequestTrackerConnector from danswer.connectors.sharepoint.connector import SharepointConnector +from danswer.connectors.teams.connector import TeamsConnector from danswer.connectors.slab.connector import SlabConnector from danswer.connectors.slack.connector import SlackPollConnector from danswer.connectors.slack.load_connector import SlackLoadConnector @@ -70,6 +71,7 @@ def identify_connector_class( DocumentSource.ZENDESK: ZendeskConnector, DocumentSource.LOOPIO: LoopioConnector, DocumentSource.SHAREPOINT: SharepointConnector, + DocumentSource.TEAMS: TeamsConnector, } connector_by_source = connector_map.get(source, {}) diff --git a/backend/danswer/connectors/teams/__init__.py b/backend/danswer/connectors/teams/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/backend/danswer/connectors/teams/connector.py b/backend/danswer/connectors/teams/connector.py new file mode 100644 index 000000000..97495b1e5 --- /dev/null +++ b/backend/danswer/connectors/teams/connector.py @@ -0,0 +1,223 @@ +import io +import os +import tempfile +from datetime import datetime +from datetime import timezone +from typing import Any +from html.parser import HTMLParser + +import docx # type: ignore +import msal # type: ignore +import openpyxl # type: ignore +# import pptx # type: ignore +from office365.graph_client import GraphClient # type: ignore +from office365.teams.team import Team +from office365.teams.channels.channel import Channel +from office365.teams.chats.messages.message import ChatMessage +from office365.outlook.mail.item_body import ItemBody + +from danswer.configs.app_configs import INDEX_BATCH_SIZE +from danswer.configs.constants import DocumentSource +from danswer.connectors.cross_connector_utils.file_utils import is_text_file_extension +from danswer.connectors.cross_connector_utils.file_utils import read_pdf_file +from danswer.connectors.interfaces import GenerateDocumentsOutput +from danswer.connectors.interfaces import LoadConnector +from danswer.connectors.interfaces import PollConnector +from danswer.connectors.interfaces import SecondsSinceUnixEpoch +from danswer.connectors.models import BasicExpertInfo +from danswer.connectors.models import ConnectorMissingCredentialError +from danswer.connectors.models import Document +from danswer.connectors.models import Section +from danswer.utils.logger import setup_logger + +UNSUPPORTED_FILE_TYPE_CONTENT = "" # idea copied from the google drive side of things + + +logger = setup_logger() + + +class HTMLFilter(HTMLParser): + text = "" + def handle_data(self, data): + self.text += data + +def get_created_datetime(obj: ChatMessage): + # Extract the 'createdDateTime' value from the 'properties' dictionary + created_datetime_str = obj.properties['createdDateTime'] + + # Convert the string to a datetime object + return datetime.strptime(created_datetime_str, '%Y-%m-%dT%H:%M:%S.%f%z') + + +class TeamsConnector(LoadConnector, PollConnector): + def __init__( + self, + batch_size: int = INDEX_BATCH_SIZE, + teams: list[str] = [], + ) -> None: + self.batch_size = batch_size + self.graph_client: GraphClient | None = None + self.requested_team_list: list[str] = teams + + def load_credentials(self, credentials: dict[str, Any]) -> dict[str, Any] | None: + aad_client_id = credentials["aad_client_id"] + aad_client_secret = credentials["aad_client_secret"] + aad_directory_id = credentials["aad_directory_id"] + + def _acquire_token_func() -> dict[str, Any]: + """ + Acquire token via MSAL + """ + authority_url = f"https://login.microsoftonline.com/{aad_directory_id}" + app = msal.ConfidentialClientApplication( + authority=authority_url, + client_id=aad_client_id, + client_credential=aad_client_secret, + ) + token = app.acquire_token_for_client( + scopes=["https://graph.microsoft.com/.default"] + ) + return token + + self.graph_client = GraphClient(_acquire_token_func) + return None + + def get_message_list_from_channel(self, channel_object: Channel) -> list[ChatMessage]: + message_list: list[ChatMessage] = [] + message_object_collection = channel_object.messages.get().execute_query() + message_list.extend(message_object_collection) + + return message_list + + def get_all_channels( + self, + team_object_list: list[Team], + start: datetime | None = None, + end: datetime | None = None, + ) -> list[Channel]: + filter_str = "" + if start is not None and end is not None: + filter_str = f"last_modified_datetime ge {start.isoformat()} and last_modified_datetime le {end.isoformat()}" + + channel_list: list[Channel] = [] + for team_object in team_object_list: + query = team_object.channels.get() + if filter_str: + query = query.filter(filter_str) + channel_objects = query.execute_query() + channel_list.extend(channel_objects) + + return channel_list + + def get_all_teams_objects(self) -> list[Team]: + team_object_list: list[Team] = [] + + teams_object = self.graph_client.teams.get().execute_query() + + if len(self.requested_team_list) > 0: + for requested_team in self.requested_team_list: + adjusted_request_string = requested_team.replace(" ", "") + for team_object in teams_object: + adjusted_team_string = team_object.display_name.replace(" ", "") + if adjusted_team_string == adjusted_request_string: + team_object_list.append(team_object) + else: + team_object_list.extend(teams_object) + + return team_object_list + + def _fetch_from_teams( + self, start: datetime | None = None, end: datetime | None = None + ) -> GenerateDocumentsOutput: + if self.graph_client is None: + raise ConnectorMissingCredentialError("Teams") + + team_object_list = self.get_all_teams_objects() + + channel_list = self.get_all_channels( + team_object_list=team_object_list, + start=start, + end=end, + ) + + # goes over channels, converts them into Document objects and then yields them in batches + doc_batch: list[Document] = [] + batch_count = 0 + for channel_object in channel_list: + doc_batch.append( + self.convert_channel_object_to_document(channel_object) + ) + + batch_count += 1 + if batch_count >= self.batch_size: + yield doc_batch + batch_count = 0 + doc_batch = [] + yield doc_batch + + def convert_channel_object_to_document( + self, + channel_object: Channel, + ) -> Document: + channel_text, most_recent_message_datetime = self.extract_channel_text_and_latest_datetime(channel_object) + channel_members = self.extract_channel_members(channel_object) + doc = Document( + id=channel_object.id, + sections=[Section(link=channel_object.web_url, text=channel_text)], + source=DocumentSource.TEAMS, + semantic_identifier=channel_object.properties["displayName"], + doc_updated_at=most_recent_message_datetime, + primary_owners=channel_members, + metadata={}, + ) + return doc + + def extract_channel_members(self, channel_object: Channel)->list[BasicExpertInfo]: + channel_members_list: list[BasicExpertInfo] = [] + member_objects = channel_object.members.get().execute_query() + for member_object in member_objects: + channel_members_list.append( + BasicExpertInfo(display_name=member_object.display_name) + ) + return channel_members_list + + def extract_channel_text_and_latest_datetime(self, channel_object: Channel): + message_list = self.get_message_list_from_channel(channel_object) + sorted_message_list = sorted(message_list, key=get_created_datetime, reverse=True) + most_recent_datetime: datetime | None = None + if sorted_message_list: + most_recent_message = sorted_message_list[0] + most_recent_datetime = datetime.strptime(most_recent_message.properties["createdDateTime"], + '%Y-%m-%dT%H:%M:%S.%f%z') + messages_text = "" + for message in message_list: + if message.body.content: + html_parser = HTMLFilter() + html_parser.feed(message.body.content) + messages_text += html_parser.text + + return messages_text, most_recent_datetime + + def load_from_state(self) -> GenerateDocumentsOutput: + return self._fetch_from_teams() + + def poll_source( + self, start: SecondsSinceUnixEpoch, end: SecondsSinceUnixEpoch + ) -> GenerateDocumentsOutput: + start_datetime = datetime.utcfromtimestamp(start) + end_datetime = datetime.utcfromtimestamp(end) + return self._fetch_from_teams(start=start_datetime, end=end_datetime) + + +if __name__ == "__main__": + connector = TeamsConnector(sites=os.environ["SITES"].split(",")) + + connector.load_credentials( + { + "aad_client_id": os.environ["AAD_CLIENT_ID"], + "aad_client_secret": os.environ["AAD_CLIENT_SECRET"], + "aad_directory_id": os.environ["AAD_CLIENT_DIRECTORY_ID"], + } + ) + document_batches = connector.load_from_state() + print(next(document_batches)) diff --git a/web/public/Teams.png b/web/public/Teams.png new file mode 100644 index 0000000000000000000000000000000000000000..c8479db6933c6693817c2a91ce63bb03894ab197 GIT binary patch literal 126479 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­f#&HzIayF+s(+V7}HrmgnxALhM9jTa9E8|9l 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 { + const { mutate } = useSWRConfig(); + const { + data: connectorIndexingStatuses, + isLoading: isConnectorIndexingStatusesLoading, + error: isConnectorIndexingStatusesError, + } = useSWR[]>( + "/api/manage/admin/connector/indexing-status", + fetcher + ); + + const { + data: credentialsData, + isLoading: isCredentialsLoading, + error: isCredentialsError, + refreshCredentials, + } = usePublicCredentials(); + + if ( + (!connectorIndexingStatuses && isConnectorIndexingStatusesLoading) || + (!credentialsData && isCredentialsLoading) + ) { + return ; + } + + if (isConnectorIndexingStatusesError || !connectorIndexingStatuses) { + return
Failed to load connectors
; + } + + if (isCredentialsError || !credentialsData) { + return
Failed to load credentials
; + } + + const teamsConnectorIndexingStatuses: ConnectorIndexingStatus< + TeamsConfig, + TeamsCredentialJson + >[] = connectorIndexingStatuses.filter( + (connectorIndexingStatus) => + connectorIndexingStatus.connector.source === "teams" + ); + + const teamsCredential: Credential | undefined = + credentialsData.find( + (credential) => credential.credential_json?.aad_client_id + ); + + return ( + <> + + The Teams connector allows you to index and search through your + Teams channels. Once setup, all messages from the channels contained + in the specified teams will be queryable within Danswer. + + + + Step 1: Provide Teams credentials + + {teamsCredential ? ( + <> +
+ Existing Azure AD Client ID: + + {teamsCredential.credential_json.aad_client_id} + + +
+ + ) : ( + <> + + As a first step, please provide Application (client) ID, Directory + (tenant) ID, and Client Secret. You can follow the guide{" "} + + here + {" "} + to create an Azure AD application and obtain these values. + + + + formBody={ + <> + + + + + } + validationSchema={Yup.object().shape({ + aad_client_id: Yup.string().required( + "Please enter your Application (client) ID" + ), + aad_directory_id: Yup.string().required( + "Please enter your Directory (tenant) ID" + ), + aad_client_secret: Yup.string().required( + "Please enter your Client Secret" + ), + })} + initialValues={{ + aad_client_id: "", + aad_directory_id: "", + aad_client_secret: "", + }} + onSubmit={(isSuccess) => { + if (isSuccess) { + refreshCredentials(); + } + }} + /> + + + )} + + + Step 2: Manage Teams Connector + + + {teamsConnectorIndexingStatuses.length > 0 && ( + <> + + The latest messages from the specified teams are + fetched every 10 minutes. + +
+ + connectorIndexingStatuses={teamsConnectorIndexingStatuses} + liveCredential={teamsCredential} + getCredential={(credential) => + credential.credential_json.aad_directory_id + } + onUpdate={() => + mutate("/api/manage/admin/connector/indexing-status") + } + onCredentialLink={async (connectorId) => { + if (teamsCredential) { + await linkCredential(connectorId, teamsCredential.id); + mutate("/api/manage/admin/connector/indexing-status"); + } + }} + specialColumns={[ + { + header: "Connectors", + key: "connectors", + getValue: (ccPairStatus) => { + const connectorConfig = + ccPairStatus.connector.connector_specific_config; + return `${connectorConfig.teams}`; + }, + }, + ]} + includeName + /> +
+ + )} + + {teamsCredential ? ( + + + nameBuilder={(values) => + values.teams && values.teams.length > 0 + ? `Teams-${values.teams.join("-")}` + : "Teams" + } + ccPairNameBuilder={(values) => + values.teams && values.teams.length > 0 + ? `Teams-${values.teams.join("-")}` + : "Teams" + } + source="teams" + inputType="poll" + // formBody={<>} + formBodyBuilder={TextArrayFieldBuilder({ + name: "teams", + label: "Teams:", + subtext: + "Specify 0 or more Teams to index. " + + "For example, specifying the Team 'Support' for the 'danswerai' Org will cause " + + "us to only index messages sent in channels belonging to the 'Support' Team. " + + "If no Teams are specified, all Teams in your organization will be indexed.", + })} + validationSchema={Yup.object().shape({ + teams: Yup.array() + .of(Yup.string().required("Team names must be strings")) + .required(), + })} + initialValues={{ + teams: [], + }} + credentialId={teamsCredential.id} + refreshFreq={10 * 60} // 10 minutes + /> + + ) : ( + + Please provide all Azure info in Step 1 first! Once you're done + with that, you can then specify which teams you want to + make searchable. + + )} + + ); +}; + +export default function Page() { + return ( +
+
+ +
+ + } title="Teams" /> + + +
+ ); +} diff --git a/web/src/components/icons/icons.tsx b/web/src/components/icons/icons.tsx index e5ae456cf..537d747db 100644 --- a/web/src/components/icons/icons.tsx +++ b/web/src/components/icons/icons.tsx @@ -51,6 +51,7 @@ import document360Icon from "../../../public/Document360.png"; import googleSitesIcon from "../../../public/GoogleSites.png"; import zendeskIcon from "../../../public/Zendesk.svg"; import sharepointIcon from "../../../public/Sharepoint.png"; +import teamsIcon from "../../../public/Teams.png"; import { FaRobot } from "react-icons/fa"; interface IconProps { @@ -526,6 +527,18 @@ export const SharepointIcon = ({ ); +export const TeamsIcon = ({ + size = 16, + className = defaultTailwindCSS, +}: IconProps) => ( +
+ Logo +
+); + export const GongIcon = ({ size = 16, className = defaultTailwindCSS, diff --git a/web/src/lib/sources.ts b/web/src/lib/sources.ts index bcd821121..eb883cb4e 100644 --- a/web/src/lib/sources.ts +++ b/web/src/lib/sources.ts @@ -19,6 +19,7 @@ import { ProductboardIcon, RequestTrackerIcon, SharepointIcon, + TeamsIcon, SlabIcon, SlackIcon, ZendeskIcon, @@ -154,6 +155,11 @@ const SOURCE_METADATA_MAP: SourceMap = { displayName: "Sharepoint", category: SourceCategory.AppConnection, }, + teams: { + icon: TeamsIcon, + displayName: "Teams", + category: SourceCategory.AppConnection, + }, requesttracker: { icon: RequestTrackerIcon, displayName: "Request Tracker", diff --git a/web/src/lib/types.ts b/web/src/lib/types.ts index 373f409e7..106fb6d05 100644 --- a/web/src/lib/types.ts +++ b/web/src/lib/types.ts @@ -33,6 +33,7 @@ export type ValidSources = | "google_sites" | "loopio" | "sharepoint" + | "teams" | "zendesk"; export type ValidInputTypes = "load_state" | "poll" | "event"; @@ -110,6 +111,10 @@ export interface SharepointConfig { sites?: string[]; } +export interface TeamsConfig { + teams?: string[]; +} + export interface ProductboardConfig {} export interface SlackConfig { @@ -314,6 +319,12 @@ export interface SharepointCredentialJson { aad_directory_id: string; } +export interface TeamsCredentialJson { + aad_client_id: string; + aad_client_secret: string; + aad_directory_id: string; +} + // DELETION export interface DeletionAttemptSnapshot {