我正在嘗試 Bot Framework SDK V4 Python GA。使用 LUIS 檢測到意圖后,我希望能夠處理一些業(yè)務(wù)邏輯并做出響應(yīng)。我希望能夠在業(yè)務(wù)邏輯的同時發(fā)送消息,因為我想讓用戶知道邏輯正在處理并且需要他稍等片刻。我知道機器人通常不用于長時間運行的進程,但我有一個需要這樣做的用例。我正在嘗試將 turncontext 傳遞給業(yè)務(wù)邏輯并從那里發(fā)送消息,但它會引發(fā)以下錯誤。不能腌制協(xié)程對象我是異步編程的新手,不確定這里到底發(fā)生了什么。以下是我嘗試過的。我嘗試通過將業(yè)務(wù)邏輯完全放在不同的類中來做同樣的事情,但遇到了同樣的問題。來自 on_message_activity 的初始消息運行良好,但是當(dāng)嘗試從業(yè)務(wù)發(fā)送消息時,它會拋出上述錯誤。我在這里錯過了什么?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."))
1 回答

慕標(biāo)琳琳
TA貢獻1830條經(jīng)驗 獲得超9個贊
async def
函數(shù)返回應(yīng)該等待的可等待對象。您遇到的錯誤很可能是因為您試圖將協(xié)程傳遞給期望在此行發(fā)生活動的函數(shù):
return await turn_context.send_activity(self.someUseCase(turn_context))
send_activity
期望一個活動但someUseCase
返回一個協(xié)程。
您可以在 Python 文檔中閱讀有關(guān)協(xié)程的更多信息:https ://docs.python.org/3/library/asyncio-task.html
添加回答
舉報
0/150
提交
取消