8000 Merge branch 'master' into anclear/teamDetails · itsmokha/botbuilder-python@975e22f · GitHub
[go: up one dir, main page]

Skip to content

Commit 975e22f

Browse files
authored
Merge branch 'master' into anclear/teamDetails
2 parents 07dd069 + 61fe14f commit 975e22f

File tree

10 files changed

+60
-24
lines changed

10 files changed

+60
-24
lines changed

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

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
ConversationAccount,
3838
ConversationParameters,
3939
ConversationReference,
40+
ExpectedReplies,
4041
TokenResponse,
4142
ResourceResponse,
4243
DeliveryModes,
@@ -459,12 +460,12 @@ async def process_activity_with_identity(
459460

460461
# Return the buffered activities in the response. In this case, the invoker
461462
# should deserialize accordingly:
462-
# activities = [Activity().deserialize(activity) for activity in response.body]
463-
if context.activity.delivery_mode == DeliveryModes.buffered_replies:
464-
serialized_activities = [
465-
activity.serialize() for activity in context.buffered_replies
466-
]
467-
return InvokeResponse(status=200, body=serialized_activities)
463+
# activities = ExpectedReplies().deserialize(response.body).activities
464+
if context.activity.delivery_mode == DeliveryModes.expect_replies:
465+
expected_replies = ExpectedReplies(
466+
activities=context.buffered_reply_activities
467+
).serialize()
468+
return InvokeResponse(status=200, body=expected_replies)
468469

469470
return None
470471

libraries/botbuilder-core/botbuilder/core/bot_framework_http_client.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from logging import Logger
77
import aiohttp
88

9-
from botbuilder.schema import Activity
9+
from botbuilder.schema import Activity, ExpectedReplies
1010
from botframework.connector.auth import (
1111
ChannelProvider,
1212
CredentialProvider,
@@ -110,14 +110,14 @@ async def post_buffered_activity(
110110
) -> [Activity]:
111111
"""
112112
Helper method to return a list of activities when an Activity is being
113-
sent with DeliveryMode == bufferedReplies.
113+
sent with DeliveryMode == expectReplies.
114114
"""
115115
response = await self.post_activity(
116116
from_bot_id, to_bot_id, to_url, service_url, conversation_id, activity
117117
)
118118
if not response or (response.status / 100) != 2:
119119
return []
120-
return [Activity().deserialize(activity) for activity in response.body]
120+
return ExpectedReplies().deserialize(response.body).activities
121121

122122
async def _get_app_credentials(
123123
self, app_id: str, oauth_scope: str

libraries/botbuilder-core/botbuilder/core/turn_context.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ def __init__(self, adapter_or_context, request: Activity = None):
5151

5252
self._turn_state = {}
5353

54-
# A list of activities to send when `context.Activity.DeliveryMode == 'bufferedReplies'`
55-
self.buffered_replies = []
54+
# A list of activities to send when `context.Activity.DeliveryMode == 'expectReplies'`
55+
self.buffered_reply_activities = []
5656

5757
@property
5858
def turn_state(self) -> Dict[str, object]:
@@ -198,10 +198,10 @@ def activity_validator(activity: Activity) -> Activity:
198198
async def logic():
199199
nonlocal sent_non_trace_activity
200200

201-
if self.activity.delivery_mode == DeliveryModes.buffered_replies:
201+
if self.activity.delivery_mode == DeliveryModes.expect_replies:
202202
responses = []
203203
for activity in output:
204-
self.buffered_replies.append(activity)
204+
self.buffered_reply_activities.append(activity)
205205
responses.append(ResourceResponse())
206206

207207
if sent_non_trace_activity:

libraries/botbuilder-core/tests/test_bot_framework_adapter.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
ConversationResourceResponse,
2121
ChannelAccount,
2222
DeliveryModes,
23+
ExpectedReplies,
2324
)
2425
from botframework.connector.aio import ConnectorClient
2526
from botframework.connector.auth import (
@@ -578,7 +579,7 @@ async def callback(context: TurnContext):
578579
refs, callback, claims_identity=skills_identity, audience=skill_2_app_id
579580
)
580581

581-
async def test_delivery_mode_buffered_replies(self):
582+
async def test_delivery_mode_expect_replies(self):
582583
mock_credential_provider = unittest.mock.create_autospec(CredentialProvider)
583584

584585
settings = BotFrameworkAdapterSettings(
@@ -595,7 +596,7 @@ async def callback(context: TurnContext):
595596
type=ActivityTypes.message,
596597
channel_id="emulator",
597598
service_url="http://tempuri.org/whatever",
598-
delivery_mode=DeliveryModes.buffered_replies,
599+
delivery_mode=DeliveryModes.expect_replies,
599600
text="hello world",
600601
)
601602

@@ -613,11 +614,11 @@ async def callback(context: TurnContext):
613614
)
614615
assert invoke_response
615616
assert invoke_response.status == 200
616-
activities = invoke_response.body
617+
activities = ExpectedReplies().deserialize(invoke_response.body).activities
617618
assert len(activities) == 3
618-
assert activities[0]["text"] == "activity 1"
619-
assert activities[1]["text"] == "activity 2"
620-
assert activities[2]["text"] == "activity 3"
619+
assert activities[0].text == "activity 1"
620+
assert activities[1].text == "activity 2"
621+
assert activities[2].text == "activity 3"
621622
assert (
622623
adapter.connector_client_mock.conversations.send_to_conversation.call_count
623624
== 0

libraries/botbuilder-schema/botbuilder/schema/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
from ._models_py3 import ConversationReference
2828
from ._models_py3 import ConversationResourceResponse
2929
from ._models_py3 import ConversationsResult
30+
from ._models_py3 import ExpectedReplies
3031
from ._models_py3 import Entity
3132
from ._models_py3 import Error
3233
from ._models_py3 import ErrorResponse, ErrorResponseException
@@ -74,6 +75,7 @@
7475
from ._models import ConversationReference
7576
from ._models import ConversationResourceResponse
7677
from ._models import ConversationsResult
78+
from ._models import ExpectedReplies
7779
from ._models import Entity
7880
from ._models import Error
7981
from ._models import ErrorResponse, ErrorResponseException
@@ -136,6 +138,7 @@
136138
"ConversationReference",
137139
"ConversationResourceResponse",
138140
"ConversationsResult",
141+
"ExpectedReplies",
139142
"Entity",
140143
"Error",
141144
"ErrorResponse",

libraries/botbuilder-schema/botbuilder/schema/_connector_client_enums.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ class DeliveryModes(str, Enum):
9999

100100
normal = "normal"
101101
notification = "notification"
102-
buffered_replies = "bufferedReplies"
102+
expect_replies = "expectReplies"
103103

104104

105105
class ContactRelationUpdateActionTypes(str, Enum):

libraries/botbuilder-schema/botbuilder/schema/_models.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ class Activity(Model):
133133
:param delivery_mode: A delivery hint to signal to the recipient alternate
134134
delivery paths for the activity.
135135
The default delivery mode is "default". Possible values include: 'normal',
136-
'notification'
136+
'notification', 'expectReplies'
137137
:type delivery_mode: str or ~botframework.connector.models.DeliveryModes
138138
:param listen_for: List of phrases and references that speech and language
139139
priming systems should listen for
@@ -806,6 +806,21 @@ def __init__(self, **kwargs):
806806
self.conversations = kwargs.get("conversations", None)
807807

808808

809+
class ExpectedReplies(Model):
810+
"""ExpectedReplies.
811+
812+
:param activities: A collection of Activities that conforms to the
813+
ExpectedReplies schema.
814+
:type activities: list[~botframework.connector.models.Activity]
815+
"""
816+
817+
_attribute_map = {"activities": {"key": "activities", "type": "[Activity]"}}
818+
819+
def __init__(self, **kwargs):
820+
super(ExpectedReplies, self).__init__(**kwargs)
821+
self.activities = kwargs.get("activities", None)
822+
823+
809824
class Entity(Model):
810825
"""Metadata object pertaining to an activity.
811826

libraries/botbuilder-schema/botbuilder/schema/_models_py3.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ class Activity(Model):
133133
:param delivery_mode: A delivery hint to signal to the recipient alternate
134134
delivery paths for the activity.
135135
The default delivery mode is "default". Possible values include: 'normal',
136-
'notification'
136+
'notification', 'expectReplies'
137137
:type delivery_mode: str or ~botframework.connector.models.DeliveryModes
138138
:param listen_for: List of phrases and references that speech and language
139139
priming systems should listen for
@@ -978,6 +978,21 @@ def __init__(
978978
self.conversations = conversations
979979

980980

981+
class ExpectedReplies(Model):
982+
"""ExpectedReplies.
983+
984+
:param activities: A collection of Activities that conforms to the
985+
ExpectedReplies schema.
986+
:type activities: list[~botframework.connector.models.Activity]
987+
"""
988+
989+
_attribute_map = {"activities": {"key": "activities", "type": "[Activity]"}}
990+
991+
def __init__(self, *, activities=None, **kwargs) -> None:
992+
super(ExpectedReplies, self).__init__(**kwargs)
993+
self.activities = activities
994+
995+
981996
class Entity(Model):
982997
"""Metadata object pertaining to an activity.
983998

libraries/swagger/ConnectorAPI.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2293,7 +2293,8 @@
22932293
"description": "Values for deliveryMode field",
22942294
"enum": [
22952295
"normal",
2296-
"notification"
2296+
"notification",
2297+
"expectReplies"
22972298
],
22982299
"type": "string",
22992300
"properties": {},

samples/experimental/skills-buffered/parent/bots/parent_bot.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ async def on_message_activity(self, turn_context: TurnContext):
2626
TurnContext.apply_conversation_reference(
2727
activity, TurnContext.get_conversation_reference(turn_context.activity)
2828
)
29-
activity.delivery_mode = DeliveryModes.buffered_replies
29+
activity.delivery_mode = DeliveryModes.expect_replies
3030

3131
activities = await self.client.post_buffered_activity(
3232
None,

0 commit comments

Comments
 (0)
0