8000 Adding helper for starting thread in Teams (#653) · TheCompuGuru/botbuilder-python@1780305 · GitHub
[go: up one dir, main page]

Skip to content

Commit 1780305

Browse files
Virtual-Joshaxelsrztracyboehrer
authored
Adding helper for starting thread in Teams (microsoft#653)
* adding helper for starting thread in Teams * updating for black * adding helper for starting thread in Teams * updating for black * fixing imports and PR feedback * saving changes * removing merge conflict leftover * black Co-authored-by: Axel Suárez <axsuarez@microsoft.com> Co-authored-by: tracyboehrer <tracyboehrer@users.noreply.github.com>
1 parent 53c7ab8 commit 1780305

File tree

5 files changed

+46
-11
lines changed

5 files changed

+46
-11
lines changed

libraries/botbuilder-adapters-slack/botbuilder/adapters/slack/slack_client.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,14 @@
99

1010
import aiohttp
1111
from aiohttp.web_request import Request
12-
from slack.web.client import WebClient
13-
from slack.web.slack_response import SlackResponse
1412

1513
from botbuilder.schema import Activity
1614
from botbuilder.adapters.slack import SlackAdapterOptions
1715
from botbuilder.adapters.slack.slack_message import SlackMessage
1816

17+
from slack.web.client import WebClient
18+
from slack.web.slack_response import SlackResponse
19+
1920
POST_MESSAGE_URL = "https://slack.com/api/chat.postMessage"
2021
POST_EPHEMERAL_MESSAGE_URL = "https://slack.com/api/chat.postEphemeral"
2122

libraries/botbuilder-adapters-slack/botbuilder/adapters/slack/slack_helper.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
from aiohttp.web_request import Request
88
from aiohttp.web_response import Response
9-
from slack.web.classes.attachments import Attachment
109

1110
from botbuilder.schema import (
1211
Activity,
@@ -15,6 +14,8 @@
1514
ActivityTypes,
1615
)
1716

17+
from slack.web.classes.attachments import Attachment
18+
1819
from .slack_message import SlackMessage
1920
from .slack_client import SlackClient
2021
from .slack_event import SlackEvent

libraries/botbuilder-adapters-slack/botbuilder/adapters/slack/slack_payload.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33

44
from typing import Optional, List
55

6-
from slack.web.classes.actions import Action
7-
86
from botbuilder.adapters.slack.slack_message import SlackMessage
97

8+
from slack.web.classes.actions import Action
9+
1010

1111
class SlackPayload:
1212
def __init__(self, **kwargs):

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,9 @@ async def create_conversation(
305305
)
306306
)
307307
client = await self.create_connector_client(reference.service_url)
308-
308+
resource_response = await client.conversations.create_conversation(
309+
parameters
310+
)
309311
# Mix in the tenant ID if specified. This is required for MS Teams.
310312
if reference.conversation is not None and reference.conversation.tenant_id:
311313
# Putting tenant_id in channel_data is a temporary while we wait for the Teams API to be updated
@@ -316,9 +318,6 @@ async def create_conversation(
316318
# Permanent solution is to put tenant_id in parameters.tenant_id
317319
parameters.tenant_id = reference.conversation.tenant_id
318320

319-
resource_response = await client.conversations.create_conversation(
320-
parameters
321-
)
322321
request = TurnContext.apply_conversation_reference(
323322
Activity(type=ActivityTypes.event, name="CreateConversation"),
324323
reference,

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

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
# Copyright (c) Microsoft Corporation. All rights reserved.
22
# Licensed under the MIT License.
33

4-
from typing import List
5-
from botbuilder.core.turn_context import TurnContext
4+
from typing import List, Tuple
5+
from botbuilder.schema import ConversationParameters, ConversationReference
6+
from botbuilder.core.turn_context import Activity, TurnContext
67
from botbuilder.schema.teams import (
78
ChannelInfo,
89
TeamDetails,
@@ -14,6 +15,39 @@
1415

1516

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

0 commit comments

Comments
 (0)
0