Я бы хотел использовать промежуточное ПО ShowTypingMiddleware в боте python, но не могу найти, как правильно подключить это промежуточное ПО.
botbuilder-core 4.7.1
botbuilder-schema 4.7.1
#app.py
ADAPTER = BotFrameworkAdapter(SETTINGS)
# show typing indicator on long activities
ADAPTER.use(ShowTypingMiddleware(delay=0.5, period=2.0))
#bot.py
...
async def on_message_activity(self, turn_context: TurnContext):
if turn_context.activity.text == "middleware":
await asyncio.sleep(10) # mock getting some data
await turn_context.send_activity("done")
...
Я ожидаю, что при вызове промежуточного программного обеспечения - показывает TI для операций, занимающих более 0,5 секунд - повторять отправку TI клиенту каждые 2 секунды
фактические результаты:
- TI отправляется только один раз
- нет повторных TI отправляются
- отображается предупреждение во время выполнения:
c:\develop\x\pybot1\.venv\lib\site-packages\botbuilder\core\show_typing_middleware.py:79:
RuntimeWarning: coroutine 'ShowTypingMiddleware.on_turn.<locals>.start_interval' was never awaited
start_interval(context, period, period)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
В журнале эмулятора ясно что отправляется только один индикатор TI, и повторений не видно
[16:55:12]<- messageYou said 'middleware'
[16:55:12]POST200conversations.:conversationId.activities.:activityId
[16:55:12]POST201directline.conversations.:conversationId.activities
[16:55:43]-> messagemiddleware
[16:55:44]<- typing
[16:55:44]POST200conversations.:conversationId.activities.:activityId
[16:55:54]<- messagedone
[16:55:54]POST200conversations.:conversationId.activities.:activityId
[16:55:54]POST201directline.conversations.:conversationId.activities