Skip to content

Commit 9c65e2f

Browse files
authored
Merge branch 'master' into trboehre-remove_mention_text
2 parents f809521 + 64e2d12 commit 9c65e2f

File tree

19 files changed

+447
-172
lines changed

19 files changed

+447
-172
lines changed

ci-pr-pipeline.yml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,17 +41,14 @@ jobs:
4141
pip install -e ./libraries/botbuilder-dialogs
4242
pip install -e ./libraries/botbuilder-azure
4343
pip install -e ./libraries/botbuilder-testing
44+
pip install -e ./libraries/botbuilder-integration-applicationinsights-aiohttp
4445
pip install -r ./libraries/botframework-connector/tests/requirements.txt
4546
pip install -r ./libraries/botbuilder-core/tests/requirements.txt
4647
pip install coveralls
4748
pip install pylint
4849
pip install black
4950
displayName: 'Install dependencies'
5051
51-
- script: 'pip install requests_mock'
52-
displayName: 'Install requests mock (REMOVE AFTER MERGING INSPECTION)'
53-
enabled: false
54-
5552
- script: |
5653
pip install pytest
5754
pip install pytest-cov

libraries/botbuilder-core/botbuilder/core/activity_handler.py

Lines changed: 43 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,15 @@
77

88

99
class ActivityHandler:
10+
"""
11+
Handles activities and should be subclassed.
12+
13+
.. remarks::
14+
Derive from this class to handle particular activity types.
15+
Yon can add pre and post processing of activities by calling the base class
16+
in the derived class.
17+
"""
18+
1019
async def on_turn(self, turn_context: TurnContext):
1120
"""
1221
Called by the adapter (for example, :class:`BotFrameworkAdapter`) at runtime
@@ -22,8 +31,8 @@ async def on_turn(self, turn_context: TurnContext):
2231
process, which allows a derived class to provide type-specific logic in a controlled way.
2332
In a derived class, override this method to add logic that applies to all activity types.
2433
Also
25-
- Add logic to apply before the type-specific logic and before calling :meth:`ActivityHandler.on_turn()`.
26-
- Add logic to apply after the type-specific logic after calling :meth:`ActivityHandler.on_turn()`.
34+
- Add logic to apply before the type-specific logic and before calling :meth:`on_turn()`.
35+
- Add logic to apply after the type-specific logic after calling :meth:`on_turn()`.
2736
"""
2837
if turn_context is None:
2938
raise TypeError("ActivityHandler.on_turn(): turn_context cannot be None.")
@@ -71,21 +80,22 @@ async def on_message_activity( # pylint: disable=unused-argument
7180
async def on_conversation_update_activity(self, turn_context: TurnContext):
7281
"""
7382
Invoked when a conversation update activity is received from the channel when the base behavior of
74-
:meth:`ActivityHandler.on_turn()` is used.
83+
:meth:`on_turn()` is used.
7584
7685
:param turn_context: The context object for this turn
7786
:type turn_context: :class:`botbuilder.core.TurnContext`
7887
7988
:returns: A task that represents the work queued to execute
8089
8190
.. remarks::
82-
When the :meth:'ActivityHandler.on_turn()` method receives a conversation update activity, it calls this
91+
When the :meth:`on_turn()` method receives a conversation update activity, it calls this
8392
method.
84-
If the conversation update activity indicates that members other than the bot joined the conversation,
85-
it calls the :meth:`ActivityHandler.on_members_added_activity()` method.
86-
If the conversation update activity indicates that members other than the bot left the conversation,
87-
it calls the :meth:`ActivityHandler.on_members_removed_activity()` method.
88-
In a derived class, override this method to add logic that applies to all conversation update activities.
93+
Also
94+
- If the conversation update activity indicates that members other than the bot joined the conversation,
95+
it calls the :meth:`on_members_added_activity()` method.
96+
- If the conversation update activity indicates that members other than the bot left the conversation,
97+
it calls the :meth:`on_members_removed_activity()` method.
98+
- In a derived class, override this method to add logic that applies to all conversation update activities.
8999
Add logic to apply before the member added or removed logic before the call to this base class method.
90100
"""
91101
if (
@@ -120,7 +130,7 @@ async def on_members_added_activity(
120130
:returns: A task that represents the work queued to execute
121131
122132
.. remarks::
123-
When the :meth:'ActivityHandler.on_conversation_update_activity()` method receives a conversation
133+
When the :meth:`on_conversation_update_activity()` method receives a conversation
124134
update activity that indicates
125135
one or more users other than the bot are joining the conversation, it calls this method.
126136
"""
@@ -142,7 +152,7 @@ async def on_members_removed_activity(
142152
:returns: A task that represents the work queued to execute
143153
144154
.. remarks::
145-
When the :meth:'ActivityHandler.on_conversation_update_activity()` method receives a conversation
155+
When the :meth:`on_conversation_update_activity()` method receives a conversation
146156
update activity that indicates one or more users other than the bot are leaving the conversation,
147157
it calls this method.
148158
"""
@@ -152,7 +162,7 @@ async def on_members_removed_activity(
152162
async def on_message_reaction_activity(self, turn_context: TurnContext):
153163
"""
154164
Invoked when an event activity is received from the connector when the base behavior of
155-
:meth:'ActivityHandler.on_turn()` is used.
165+
:meth:`on_turn()` is used.
156166
157167
:param turn_context: The context object for this turn
158168
:type turn_context: :class:`botbuilder.core.TurnContext`
@@ -162,15 +172,18 @@ async def on_message_reaction_activity(self, turn_context: TurnContext):
162172
.. remarks::
163173
Message reactions correspond to the user adding a 'like' or 'sad' etc. (often an emoji) to a previously
164174
sent activity.
175+
165176
Message reactions are only supported by a few channels. The activity that the message reaction corresponds
166177
to is indicated in the reply to Id property. The value of this property is the activity id of a previously
167178
sent activity given back to the bot as the response from a send call.
168-
When the :meth:'ActivityHandler.on_turn()` method receives a message reaction activity, it calls this
179+
When the :meth:`on_turn()` method receives a message reaction activity, it calls this
169180
method.
170-
If the message reaction indicates that reactions were added to a message, it calls
171-
:meth:'ActivityHandler.on_reaction_added().
172-
If the message reaction indicates that reactions were removed from a message, it calls
173-
:meth:'ActivityHandler.on_reaction_removed().
181+
182+
- If the message reaction indicates that reactions were added to a message, it calls
183+
:meth:`on_reaction_added()`.
184+
- If the message reaction indicates that reactions were removed from a message, it calls
185+
:meth:`on_reaction_removed()`.
186+
174187
In a derived class, override this method to add logic that applies to all message reaction activities.
175188
Add logic to apply before the reactions added or removed logic before the call to the this base class
176189
method.
@@ -202,8 +215,9 @@ async def on_reactions_added( # pylint: disable=unused-argument
202215
203216
.. remarks::
204217
Message reactions correspond to the user adding a 'like' or 'sad' etc. (often an emoji)
205-
to a previously sent message on the conversation. Message reactions are supported by only a few channels.
206-
The activity that the message is in reaction to is identified by the activity's reply to Id property.
218+
to a previously sent message on the conversation.
219+
Message reactions are supported by only a few channels.
220+
The activity that the message is in reaction to is identified by the activity's reply to ID property.
207221
The value of this property is the activity ID of a previously sent activity. When the bot sends an activity,
208222
the channel assigns an ID to it, which is available in the resource response Id of the result.
209223
"""
@@ -235,17 +249,17 @@ async def on_reactions_removed( # pylint: disable=unused-argument
235249
async def on_event_activity(self, turn_context: TurnContext):
236250
"""
237251
Invoked when an event activity is received from the connector when the base behavior of
238-
:meth:'ActivityHandler.on_turn()` is used.
252+
:meth:`on_turn()` is used.
239253
240254
:param turn_context: The context object for this turn
241255
:type turn_context: :class:`botbuilder.core.TurnContext`
242256
243257
:returns: A task that represents the work queued to execute
244258
245259
.. remarks::
246-
When the :meth:'ActivityHandler.on_turn()` method receives an event activity, it calls this method.
247-
If the activity name is `tokens/response`, it calls :meth:'ActivityHandler.on_token_response_event()`;
248-
otherwise, it calls :meth:'ActivityHandler.on_event()`.
260+
When the :meth:`on_turn()` method receives an event activity, it calls this method.
261+
If the activity name is `tokens/response`, it calls :meth:`on_token_response_event()`;
262+
otherwise, it calls :meth:`on_event()`.
249263
250264
In a derived class, override this method to add logic that applies to all event activities.
251265
Add logic to apply before the specific event-handling logic before the call to this base class method.
@@ -265,7 +279,7 @@ async def on_token_response_event( # pylint: disable=unused-argument
265279
):
266280
"""
267281
Invoked when a `tokens/response` event is received when the base behavior of
268-
:meth:'ActivityHandler.on_event_activity()` is used.
282+
:meth:`on_event_activity()` is used.
269283
If using an `oauth_prompt`, override this method to forward this activity to the current dialog.
270284
271285
:param turn_context: The context object for this turn
@@ -274,7 +288,7 @@ async def on_token_response_event( # pylint: disable=unused-argument
274288
:returns: A task that represents the work queued to execute
275289
276290
.. remarks::
277-
When the :meth:'ActivityHandler.on_event()` method receives an event with an activity name of
291+
When the :meth:`on_event()` method receives an event with an activity name of
278292
`tokens/response`, it calls this method. If your bot uses an `oauth_prompt`, forward the incoming
279293
activity to the current dialog.
280294
"""
@@ -285,7 +299,7 @@ async def on_event( # pylint: disable=unused-argument
285299
):
286300
"""
287301
Invoked when an event other than `tokens/response` is received when the base behavior of
288-
:meth:'ActivityHandler.on_event_activity()` is used.
302+
:meth:`on_event_activity()` is used.
289303
290304
291305
:param turn_context: The context object for this turn
@@ -294,7 +308,7 @@ async def on_event( # pylint: disable=unused-argument
294308
:returns: A task that represents the work queued to execute
295309
296310
.. remarks::
297-
When the :meth:'ActivityHandler.on_event_activity()` is used method receives an event with an
311+
When the :meth:`on_event_activity()` is used method receives an event with an
298312
activity name other than `tokens/response`, it calls this method.
299313
This method could optionally be overridden if the bot is meant to handle miscellaneous events.
300314
"""
@@ -317,7 +331,7 @@ async def on_unrecognized_activity_type( # pylint: disable=unused-argument
317331
):
318332
"""
319333
Invoked when an activity other than a message, conversation update, or event is received when the base
320-
behavior of :meth:`ActivityHandler.on_turn()` is used.
334+
behavior of :meth:`on_turn()` is used.
321335
If overridden, this method could potentially respond to any of the other activity types.
322336
323337
:param turn_context: The context object for this turn
@@ -326,7 +340,7 @@ async def on_unrecognized_activity_type( # pylint: disable=unused-argument
326340
:returns: A task that represents the work queued to execute
327341
328342
.. remarks::
329-
When the :meth:`ActivityHandler.on_turn()` method receives an activity that is not a message,
343+
When the :meth:`on_turn()` method receives an activity that is not a message,
330344
conversation update, message reaction, or event activity, it calls this method.
331345
"""
332346
return

libraries/botbuilder-core/botbuilder/core/bot_state.py

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ def __init__(self, storage: Storage, context_service_key: str):
6363

6464
def create_property(self, name: str) -> StatePropertyAccessor:
6565
"""
66-
Create a property definition and register it with this :class:`BotState`.
66+
Creates a property definition and registers it with this :class:`BotState`.
6767
6868
:param name: The name of the property
6969
:type name: str
@@ -84,7 +84,7 @@ async def load(self, turn_context: TurnContext, force: bool = False) -> None:
8484
Reads the current state object and caches it in the context object for this turn.
8585
8686
:param turn_context: The context object for this turn
87-
:type turn_context: :class:`botbuilder.core.TurnContext`
87+
:type turn_context: :class:`TurnContext`
8888
:param force: Optional, true to bypass the cache
8989
:type force: bool
9090
"""
@@ -107,7 +107,7 @@ async def save_changes(
107107
If the state has changed, it saves the state cached in the current context for this turn.
108108
109109
:param turn_context: The context object for this turn
110-
:type turn_context: :class:`botbuilder.core.TurnContext`
110+
:type turn_context: :class:`TurnContext`
111111
:param force: Optional, true to save state to storage whether or not there are changes
112112
:type force: bool
113113
"""
@@ -127,7 +127,7 @@ async def clear_state(self, turn_context: TurnContext):
127127
Clears any state currently stored in this state scope.
128128
129129
:param turn_context: The context object for this turn
130-
:type turn_context: :class:`botbuilder.core.TurnContext`
130+
:type turn_context: :class:`TurnContext`
131131
132132
:return: None
133133
@@ -147,7 +147,7 @@ async def delete(self, turn_context: TurnContext) -> None:
147147
Deletes any state currently stored in this state scope.
148148
149149
:param turn_context: The context object for this turn
150-
:type turn_context: :class:`botbuilder.core.TurnContext`
150+
:type turn_context: :class:`TurnContext`
151151
152152
:return: None
153153
"""
@@ -168,7 +168,7 @@ async def get_property_value(self, turn_context: TurnContext, property_name: str
168168
Gets the value of the specified property in the turn context.
169169
170170
:param turn_context: The context object for this turn
171-
:type turn_context: :class:`botbuilder.core.TurnContext`
171+
:type turn_context: :class:`TurnContext`
172172
:param property_name: The property name
173173
:type property_name: str
174174
@@ -195,7 +195,7 @@ async def delete_property_value(
195195
Deletes a property from the state cache in the turn context.
196196
197197
:param turn_context: The context object for this turn
198-
:type turn_context: :class:`botbuilder.core.TurnContext`
198+
:type turn_context: :TurnContext`
199199
:param property_name: The name of the property to delete
200200
:type property_name: str
201201
@@ -215,7 +215,7 @@ async def set_property_value(
215215
Sets a property to the specified value in the turn context.
216216
217217
:param turn_context: The context object for this turn
218-
:type turn_context: :class:`botbuilder.core.TurnContext`
218+
:type turn_context: :class:`TurnContext`
219219
:param property_name: The property name
220220
:type property_name: str
221221
:param value: The value to assign to the property
@@ -252,10 +252,7 @@ def __init__(self, bot_state: BotState, name: str):
252252
@property
253253
def name(self) -> str:
254254
"""
255-
Gets the name of the property.
256-
257-
:return: The name of the property
258-
:rtype: str
255+
The name of the property.
259256
"""
260257
return self._name
261258

@@ -264,7 +261,7 @@ async def delete(self, turn_context: TurnContext) -> None:
264261
Deletes the property.
265262
266263
:param turn_context: The context object for this turn
267-
:type turn_context: :class:`botbuilder.core.TurnContext`
264+
:type turn_context: :class:`TurnContext`
268265
"""
269266
await self._bot_state.load(turn_context, False)
270267
await self._bot_state.delete_property_value(turn_context, self._name)
@@ -278,7 +275,7 @@ async def get(
278275
Gets the property value.
279276
280277
:param turn_context: The context object for this turn
281-
:type turn_context: :class:`botbuilder.core.TurnContext`
278+
:type turn_context: :class:`TurnContext`
282279
:param default_value_or_factory: Defines the default value for the property
283280
"""
284281
await self._bot_state.load(turn_context, False)
@@ -303,7 +300,7 @@ async def set(self, turn_context: TurnContext, value: object) -> None:
303300
Sets the property value.
304301
305302
:param turn_context: The context object for this turn
306-
:type turn_context: :class:`botbuilder.core.TurnContext`
303+
:type turn_context: :class:`TurnContext`
307304
308305
:param value: The value to assign to the property
309306
"""

libraries/botbuilder-core/botbuilder/core/conversation_state.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ def get_storage_key(self, turn_context: TurnContext) -> object:
3232
Gets the key to use when reading and writing state to and from storage.
3333
3434
:param turn_context: The context object for this turn.
35-
:type turn_context: :class:`botbuilder.core.TurnContext`
35+
:type turn_context: :class:`TurnContext`
3636
3737
:raise: :class:`TypeError` if the :meth:`TurnContext.activity` for the current turn is missing
3838
:class:`botbuilder.schema.Activity` channelId or conversation information or the conversation's

0 commit comments

Comments
 (0)