From 32157dbc06ffe55db4d8d3f34dcbfaea2668b0fa Mon Sep 17 00:00:00 2001 From: ram page Date: Sun, 21 Jan 2024 13:38:20 -0800 Subject: [PATCH 1/4] Ensure Connector Client is retrieved in teams_info.py --- .../botbuilder/core/teams/teams_info.py | 10 +++++++--- .../botbuilder/integration/aiohttp/cloud_adapter.py | 7 +++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/libraries/botbuilder-core/botbuilder/core/teams/teams_info.py b/libraries/botbuilder-core/botbuilder/core/teams/teams_info.py index 3226cb053..ada146e6e 100644 --- a/libraries/botbuilder-core/botbuilder/core/teams/teams_info.py +++ b/libraries/botbuilder-core/botbuilder/core/teams/teams_info.py @@ -21,6 +21,7 @@ TeamsPagedMembersResult, TeamsMeetingParticipant, ) +from botbuilder.integration.aiohttp import CloudAdapter class TeamsInfo: @@ -318,9 +319,12 @@ def get_team_id(turn_context: TurnContext): @staticmethod async def _get_connector_client(turn_context: TurnContext) -> ConnectorClient: - return await turn_context.adapter.create_connector_client( - turn_context.activity.service_url - ) + if isinstance(turn_context.adapter, CloudAdapter): + return await turn_context.adapter.create_connector_client(turn_context) + else: + return await turn_context.adapter.create_connector_client( + turn_context.activity.service_url + ) @staticmethod async def _get_members( diff --git a/libraries/botbuilder-integration-aiohttp/botbuilder/integration/aiohttp/cloud_adapter.py b/libraries/botbuilder-integration-aiohttp/botbuilder/integration/aiohttp/cloud_adapter.py index 0aa2ba8af..9a2af5396 100644 --- a/libraries/botbuilder-integration-aiohttp/botbuilder/integration/aiohttp/cloud_adapter.py +++ b/libraries/botbuilder-integration-aiohttp/botbuilder/integration/aiohttp/cloud_adapter.py @@ -137,6 +137,13 @@ async def _connect( await streaming_activity_processor.listen() + async def create_connector_client(self, turn_context: TurnContext): + connector_client: ConnectorClient = turn_context.turn_state.get( + self.BOT_CONNECTOR_CLIENT_KEY + ) + + return connector_client + class _StreamingActivityProcessor(StreamingActivityProcessor): def __init__( From 13f360ae23bb8344bf4a8077a2eeb28c24d415a0 Mon Sep 17 00:00:00 2001 From: Ram Page Date: Tue, 23 Jan 2024 01:40:49 -0800 Subject: [PATCH 2/4] Revert changes in cloud_adapter.py --- .../botbuilder/core/teams/teams_info.py | 10 +++------- .../botbuilder/integration/aiohttp/cloud_adapter.py | 7 ------- 2 files changed, 3 insertions(+), 14 deletions(-) diff --git a/libraries/botbuilder-core/botbuilder/core/teams/teams_info.py b/libraries/botbuilder-core/botbuilder/core/teams/teams_info.py index ada146e6e..3226cb053 100644 --- a/libraries/botbuilder-core/botbuilder/core/teams/teams_info.py +++ b/libraries/botbuilder-core/botbuilder/core/teams/teams_info.py @@ -21,7 +21,6 @@ TeamsPagedMembersResult, TeamsMeetingParticipant, ) -from botbuilder.integration.aiohttp import CloudAdapter class TeamsInfo: @@ -319,12 +318,9 @@ def get_team_id(turn_context: TurnContext): @staticmethod async def _get_connector_client(turn_context: TurnContext) -> ConnectorClient: - if isinstance(turn_context.adapter, CloudAdapter): - return await turn_context.adapter.create_connector_client(turn_context) - else: - return await turn_context.adapter.create_connector_client( - turn_context.activity.service_url - ) + return await turn_context.adapter.create_connector_client( + turn_context.activity.service_url + ) @staticmethod async def _get_members( diff --git a/libraries/botbuilder-integration-aiohttp/botbuilder/integration/aiohttp/cloud_adapter.py b/libraries/botbuilder-integration-aiohttp/botbuilder/integration/aiohttp/cloud_adapter.py index 9a2af5396..0aa2ba8af 100644 --- a/libraries/botbuilder-integration-aiohttp/botbuilder/integration/aiohttp/cloud_adapter.py +++ b/libraries/botbuilder-integration-aiohttp/botbuilder/integration/aiohttp/cloud_adapter.py @@ -137,13 +137,6 @@ async def _connect( await streaming_activity_processor.listen() - async def create_connector_client(self, turn_context: TurnContext): - connector_client: ConnectorClient = turn_context.turn_state.get( - self.BOT_CONNECTOR_CLIENT_KEY - ) - - return connector_client - class _StreamingActivityProcessor(StreamingActivityProcessor): def __init__( From a5c81b202fe5575e0f501916779fff2b465fa2b6 Mon Sep 17 00:00:00 2001 From: Ram Page Date: Tue, 23 Jan 2024 01:44:40 -0800 Subject: [PATCH 3/4] Ensure Connector Client is retrieved in teams_info.py --- .../botbuilder/core/teams/teams_info.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/libraries/botbuilder-core/botbuilder/core/teams/teams_info.py b/libraries/botbuilder-core/botbuilder/core/teams/teams_info.py index 3226cb053..b9a1f5983 100644 --- a/libraries/botbuilder-core/botbuilder/core/teams/teams_info.py +++ b/libraries/botbuilder-core/botbuilder/core/teams/teams_info.py @@ -10,7 +10,7 @@ teams_get_meeting_info, teams_get_channel_data, ) -from botbuilder.core import CloudAdapterBase, BotFrameworkAdapter, TurnContext +from botbuilder.core import CloudAdapterBase, BotFrameworkAdapter, TurnContext, BotAdapter from botbuilder.schema import Activity, ConversationParameters, ConversationReference from botbuilder.schema.teams import ( ChannelInfo, @@ -318,10 +318,18 @@ def get_team_id(turn_context: TurnContext): @staticmethod async def _get_connector_client(turn_context: TurnContext) -> ConnectorClient: - return await turn_context.adapter.create_connector_client( - turn_context.activity.service_url + if hasattr(turn_context.adapter, 'create_connector_client'): + return await turn_context.adapter.create_connector_client(turn_context.activity.service_url) + + connector_client = turn_context.turn_state.get( + BotAdapter.BOT_CONNECTOR_CLIENT_KEY ) + if connector_client is None: + raise ValueError('This method requires a connector client.') + + return connector_client + @staticmethod async def _get_members( connector_client: ConnectorClient, conversation_id: str From d75034eb6e378f0230e77cab8cff3af5f03e2f3f Mon Sep 17 00:00:00 2001 From: Ram Page Date: Tue, 23 Jan 2024 13:25:08 -0800 Subject: [PATCH 4/4] Fixed teams member added test with mock ConnectorClient --- libraries/botbuilder-core/botbuilder/core/teams/teams_info.py | 3 --- .../botbuilder-core/tests/teams/test_teams_activity_handler.py | 3 +++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/botbuilder-core/botbuilder/core/teams/teams_info.py b/libraries/botbuilder-core/botbuilder/core/teams/teams_info.py index b9a1f5983..1748aff0f 100644 --- a/libraries/botbuilder-core/botbuilder/core/teams/teams_info.py +++ b/libraries/botbuilder-core/botbuilder/core/teams/teams_info.py @@ -318,9 +318,6 @@ def get_team_id(turn_context: TurnContext): @staticmethod async def _get_connector_client(turn_context: TurnContext) -> ConnectorClient: - if hasattr(turn_context.adapter, 'create_connector_client'): - return await turn_context.adapter.create_connector_client(turn_context.activity.service_url) - connector_client = turn_context.turn_state.get( BotAdapter.BOT_CONNECTOR_CLIENT_KEY ) diff --git a/libraries/botbuilder-core/tests/teams/test_teams_activity_handler.py b/libraries/botbuilder-core/tests/teams/test_teams_activity_handler.py index 69273b27c..15df4b9a2 100644 --- a/libraries/botbuilder-core/tests/teams/test_teams_activity_handler.py +++ b/libraries/botbuilder-core/tests/teams/test_teams_activity_handler.py @@ -592,6 +592,9 @@ async def test_on_teams_members_added_activity(self): turn_context = TurnContext(SimpleAdapter(), activity) + mock_connector_client = await SimpleAdapter.create_connector_client(self, turn_context.activity.service_url) + turn_context.turn_state[BotAdapter.BOT_CONNECTOR_CLIENT_KEY] = mock_connector_client + # Act bot = TestingTeamsActivityHandler() await bot.on_turn(turn_context)