Skip to content

Commit ea8208b

Browse files
committed
adding helper for starting thread in Teams
1 parent b9cc417 commit ea8208b

File tree

2 files changed

+34
-6
lines changed

2 files changed

+34
-6
lines changed

libraries/botbuilder-core/botbuilder/core/bot_framework_adapter.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,9 @@ async def create_conversation(
198198
)
199199
)
200200
client = await self.create_connector_client(reference.service_url)
201-
201+
resource_response = await client.conversations.create_conversation(
202+
parameters
203+
)
202204
# Mix in the tenant ID if specified. This is required for MS Teams.
203205
if reference.conversation is not None and reference.conversation.tenant_id:
204206
# Putting tenant_id in channel_data is a temporary while we wait for the Teams API to be updated
@@ -209,9 +211,6 @@ async def create_conversation(
209211
# Permanent solution is to put tenant_id in parameters.tenant_id
210212
parameters.tenant_id = reference.conversation.tenant_id
211213

212-
resource_response = await client.conversations.create_conversation(
213-
parameters
214-
)
215214
request = TurnContext.apply_conversation_reference(
216215
Activity(type=ActivityTypes.event, name="CreateConversation"),
217216
reference,

libraries/botbuilder-core/botbuilder/core/teams/teams_info.py

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
# Licensed under the MIT License.
33

44
from typing import List
5-
from botbuilder.core.turn_context import TurnContext
5+
from botbuilder.schema import ConversationParameters
6+
from botbuilder.core.turn_context import Activity, TurnContext
67
from botbuilder.schema.teams import (
78
ChannelInfo,
89
TeamDetails,
@@ -12,8 +13,36 @@
1213
from botframework.connector.aio import ConnectorClient
1314
from botframework.connector.teams.teams_connector_client import TeamsConnectorClient
1415

15-
1616
class TeamsInfo:
17+
@staticmethod
18+
async def send_message_to_teams_channel(
19+
turn_context: TurnContext, activity: Activity, teams_channel_id: str
20+
) -> tuple:
21+
if not turn_context:
22+
raise ValueError("The turn_context cannot be None")
23+
if not turn_context.activity:
24+
raise ValueError("The turn_context.activity cannot be None")
25+
if not teams_channel_id:
26+
raise ValueError("The teams_channel_id cannot be None or empty")
27+
28+
old_ref = TurnContext.get_conversation_reference(turn_context.activity)
29+
conversation_parameters = ConversationParameters(
30+
is_group=True,
31+
channel_data={"channel": {"id": teams_channel_id}},
32+
activity=activity,
33+
)
34+
35+
result = await turn_context.adapter.create_conversation(
36+
old_ref, TeamsInfo._create_conversation_callback, conversation_parameters
37+
)
38+
return (result[0], result[1])
39+
40+
@staticmethod
41+
async def _create_conversation_callback(new_turn_context) -> tuple:
42+
new_activity_id = new_turn_context.activity.id
43+
conversation_reference = TurnContext.get_conversation_reference(new_turn_context.activity)
44+
return (conversation_reference, new_activity_id)
45+
1746
@staticmethod
1847
async def get_team_details(
1948
turn_context: TurnContext, team_id: str = ""

0 commit comments

Comments
 (0)