8000 update BotAdapter class to take context param, a test for MiddlewareS… · openvelora/botbuilder-python@6388b1a · GitHub
[go: up one dir, main page]

Skip to content

Commit 6388b1a

committed
update BotAdapter class to take context param, a test for MiddlewareSet now properly implements Middleware
1 parent 7854369 commit 6388b1a

File tree

5 files changed

+31
-22
lines changed

5 files changed

+31
-22
lines changed

libraries/botbuilder-core/botbuilder/core/bot_adapter.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,28 @@ def __init__(self):
1414
self._middleware = MiddlewareSet()
1515

1616
@abstractmethod
17-
async def send_activity(self, activities: List[Activity]):
17+
async def send_activities(self, context: BotContext, activities: List[Activity]):
1818
raise NotImplementedError()
1919

2020
@abstractmethod
21-
async def update_activity(self, activity: Activity):
21+
async def update_activity(self, context: BotContext, activity: Activity):
2222
raise NotImplementedError()
2323

2424
@abstractmethod
25-
async def delete_activity(self, reference: ConversationReference):
25+
async def delete_activity(self, context: BotContext, reference: ConversationReference):
2626
raise NotImplementedError()
2727

2828
def use(self, middleware):
2929
self._middleware.use(middleware)
3030

31-
async def run_middleware(self, context: BotContext, callback: Callable=None):
32-
return await self._middleware.receive_activity_with_status(context, callback)
31+
async def run_pipeline(self, context: BotContext, callback: Callable=None):
32+
if callable(callback):
33+
if context.activity:
34+
return await self._middleware.receive_activity_with_status(context, callback)
35+
36+
async def create_conversation(self, channel_id: str, callback: Callable[[BotContext, Callable], None]):
37+
raise NotImplementedError()
38+
39+
async def continue_conversation(self, reference: ConversationReference,
40+
callback: Callable[[BotContext, Callable], None]):
41+
raise NotImplementedError()

libraries/botbuilder-core/botbuilder/core/bot_context.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,16 @@
1414
class BotContext(object):
1515
def __init__(self, adapter, request: Activity):
1616
self.adapter = adapter
17-
self.request: Activity = request
17+
self.activity: Activity = request
1818
self.responses: List[Activity] = []
1919
self._services: dict = {}
2020
self._responded: bool = False
2121
self._on_send_activity: Callable[[]] = []
2222
self._on_update_activity: Callable[[]] = []
2323
self._on_delete_activity: Callable[[]] = []
2424

25-
if not self.request:
26-
raise TypeError('BotContext must be instantiated with a request parameter of type Activity.')
25+
if not self.activity:
26+
raise TypeError('BotContext must be instantiated with a activity parameter of type Activity.')
2727

2828
def get(self, key: str) -> object:
2929
if not key or not isinstance(key, str):
@@ -56,13 +56,13 @@ def set(self, key: str, value: object) -> None:
5656
self._services[key] = value
5757

5858
async def send_activity(self, *activity_or_text: Tuple[Activity, str]):
59-
reference = BotContext.get_conversation_reference(self.request)
59+
reference = BotContext.get_conversation_reference(self.activity)
6060
output = [BotContext.apply_conversation_reference(
6161
Activity(text=a, type='message') if isinstance(a, str) else a, reference)
6262
for a in activity_or_text]
6363

6464
async def callback(context: 'BotContext', output):
65-
responses = await context.adapter.send_activity(output)
65+
responses = await context.adapter.send_activities(context, output)
6666
context._responded = True
6767
return responses
6868

@@ -93,7 +93,7 @@ def get_conversation_reference(activity: Activity) -> ConversationReference:
9393
bject and then later used to message the user proactively.
9494
9595
Usage Example:
96-
reference = BotContext.get_conversation_reference(context.request)
96+
reference = BotContext.get_conversation_reference(context.activity)
9797
:param activity:
9898
:return:
9999
"""

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ async def process_request(self, req, auth_header: str, logic: Callable):
3333
await self.authenticate_request(request, auth_header)
3434
context = self.create_context(request)
3535

36-
return await self.run_middleware(context, logic)
36+
return await self.run_pipeline(context, logic)
3737

3838
async def authenticate_request(self, request: Activity, auth_header: str):
3939
await JwtTokenValidation.assert_valid_activity(request, auth_header, self._credential_provider)
@@ -73,14 +73,14 @@ async def validate_activity(activity: Activity):
7373
except BaseException as e:
7474
raise e
7575
else:
76-
raise TypeError('BotFrameworkAdapter.parse_request(): received invalid request')
76+
raise TypeError('BotFrameworkAdapter.parse_request(): received invalid activity')
7777
else:
7878
# The `req` has already been deserialized to an Activity, so verify the Activity.type and return it.
7979
is_valid_activity = await validate_activity(req)
8080
if is_valid_activity:
8181
return req
8282

83-
async def update_activity(self, activity: Activity):
83+
async def update_activity(self, context: BotContext, activity: Activity):
8484
try:
8585
connector_client = ConnectorClient(self._credentials, activity.service_url)
8686
return connector_client.conversations.update_activity(
@@ -90,15 +90,15 @@ async def update_activity(self, activity: Activity):
9090
except BaseException as e:
9191
raise e
9292

93-
async def delete_activity(self, conversation_reference: ConversationReference):
93+
async def delete_activity(self, context: BotContext, conversation_reference: ConversationReference):
9494
try:
9595
connector_client = ConnectorClient(self._credentials, conversation_reference.service_url)
9696
connector_client.conversations.delete_activity(conversation_reference.conversation.id,
9797
conversation_reference.activity_id)
9898
except BaseException as e:
9999
raise e
100100

101-
async def send_activity(self, activities: List[Activity]):
101+
async def send_activities(self, context: BotContext, activities: List[Activity]):
102102
try:
103103
for activity in activities:
104104
if activity.type == 'delay':

libraries/botbuilder-core/tests/test_middleware_set.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ async def runs_after_pipeline(context):
3131
@pytest.mark.asyncio
3232
async def test_middleware_set_receive_activity_internal(self):
3333

34-
class PrintMiddleware(object):
34+
class PrintMiddleware(Middleware):
3535
def __init__(self):
3636
super(PrintMiddleware, self).__init__()
3737

samples/Echo.Connector.Bot.Adapter/main.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@ async def create_reply_activity(request_activity, text) -> Activity:
2424

2525

2626
async def handle_message(context: BotContext) -> web.Response:
27-
response = await create_reply_activity(context.request, 'You said %s.' % context.request.text)
27+
response = await create_reply_activity(context.activity, 'You said %s.' % context.activity.text)
2828
await context.send_activity(response)
2929
return web.Response(status=202)
3030

3131

3232
async def handle_conversation_update(context: BotContext) -> web.Response:
33-
if context.request.members_added[0].id != context.request.recipient.id:
34-
response = await create_reply_activity(context.request, 'Welcome to the Echo Adapter Bot!')
33+
if context.activity.members_added[0].id != context.activity.recipient.id:
34+
response = await create_reply_activity(context.activity, 'Welcome to the Echo Adapter Bot!')
3535
await context.send_activity(response)
3636
return web.Response(status=200)
3737

@@ -41,9 +41,9 @@ async def unhandled_activity() -> web.Response:
4141

4242

4343
async def request_handler(context: BotContext) -> web.Response:
44-
if context.request.type == 'message':
44+
if context.activity.type == 'message':
4545
return await handle_message(context)
46-
elif context.request.type == 'conversationUpdate':
46+
elif context.activity.type == 'conversationUpdate':
4747
return await handle_conversation_update(context)
4848
else:
4949
return await unhandled_activity()

0 commit comments

Comments
 (0)
0