Я пробую Bot Framework SDK V4 Python GA. Как только я обнаружу намерение с помощью LUIS, я хочу иметь возможность обрабатывать некоторую бизнес-логику и отвечать. Я хочу иметь возможность отправлять сообщения во время бизнес-логики, поскольку я хочу, чтобы пользователь знал, что логика обрабатывается, и ему нужно немного подождать. Я понимаю, что боты обычно не используются для длительных процессов, но у меня есть вариант использования, когда это необходимо. Я пытаюсь передать поворотный контекст в бизнес-логику и отправить оттуда сообщение, но выдает следующую ошибку.
не могу распарить объекты сопрограммы
Я новичок в асинхронном программировании и не уверен, что именно здесь происходит. Ниже то, что я пробовал. Я попытался сделать то же самое, поместив бизнес-логику в другой класс, но получил ту же проблему. Первоначальное сообщение от on_message_activity проходит хорошо, но при попытке отправить сообщение из бизнеса выдает указанную выше ошибку. Что мне здесь не хватает?
async def someUseCase(self,turncontext: TurnContext):
await turncontext.send_activity(MessageFactory.text("Processing your query. Give me a moment."))
output = someLongRunningBusinessLogic()
return MessageFactory.text(output)
async def on_message_activity(self, turn_context: TurnContext):
luisResult = await self.LuisRecog.recognize(turn_context)
print(luisResult.get_top_scoring_intent())
intent = LuisRecognizer.top_intent(luisResult,min_score=0.40)
if intent != "None":
await turn_context.send_activity("processing your query...")
return await turn_context.send_activity(self.someUseCase(turn_context))
else:
await turn_context.send_activity(MessageFactory.text("No intent detected."))
someUseCase
является асинхронным, так почему вы его не ждете? Кроме того, почему вашon_message_activity
возвращает результатsend_activity
в одном случае? - person Kyle Delaney   schedule 29.06.2020