python - Botframework V4:Python Cosmos DB 配置
问题描述
我目前正在尝试使用 CosmosDB 作为状态存储,但是当机器人尝试在 CosmosDB 中保存状态时遇到了一些问题。
下面是我使用 CosmosDB 作为中间件的代码
LOOP = asyncio.get_event_loop()
APP = Flask(__name__)
APP.config.update(VaultConfig.get_config())
APP.wsgi_app = BotTelemetryMiddleware(APP.wsgi_app)
PORT = APP.config["Settings"]["Port"]
INSTRUMENTATION_KEY = APP.config['Settings']["appinsight_instrumentation_key"]
TELEMETRY_CLIENT = ApplicationInsightsTelemetryClient(INSTRUMENTATION_KEY)
SETTINGS = BotFrameworkAdapterSettings(
APP.config["Settings"]["AppId"], APP.config["Settings"]["AppPassword"]
)
cosmos_config = APP.config['COSMOS']
# Create CosmosStorage and ConversationState
cosmos = CosmosDbStorage(CosmosDbConfig(endpoint=cosmos_config['endpoint'], masterkey=cosmos_config['masterKey'],
database=cosmos_config['database'], container=cosmos_config['container'], partition_key='/id'))
# Create MemoryStorage, UserState and ConversationState
USER_STATE = UserState(cosmos)
CONVERSATION_STATE = ConversationState(cosmos)
ADAPTER = BotFrameworkAdapter(SETTINGS)
ADAPTER.on_turn_error = on_error
我收到的错误:
Traceback (most recent call last):
File "/bot/venv/lib/python3.7/site-packages/botbuilder/core/bot_adapter.py", line 95, in run_pipeline
context, callback
File "/bot/venv/lib/python3.7/site-packages/botbuilder/core/middleware_set.py", line 69, in receive_activity_with_status
return await self.receive_activity_internal(context, callback)
File "/bot/venv/lib/python3.7/site-packages/botbuilder/core/middleware_set.py", line 79, in receive_activity_internal
return await callback(context)
File "/bot/main.py", line 146, in aux_func
await BOT.on_turn(turn_context)
File "/bot/bots/dialog_bot.py", line 46, in on_turn
await self.conversation_state.save_changes(turn_context, False)
File "/bot/venv/lib/python3.7/site-packages/botbuilder/core/bot_state.py", line 88, in save_changes
await self._storage.write(changes)
File "/bot/venv/lib/python3.7/site-packages/botbuilder/azure/cosmosdb_storage.py", line 196, in write
raise error
File "/bot/venv/lib/python3.7/site-packages/botbuilder/azure/cosmosdb_storage.py", line 168, in write
e_tag = change.e_tag
AttributeError: 'dict' object has no attribute 'e_tag'
尝试修改此文件 /bot/venv/lib/python3.7/site-packages/botbuilder/azure/cosmosdb_storage.py 以获取临时补丁似乎让我陷入了一个兔子洞,这使得 CosmosDB 似乎没有完全实现/经测试可以使用。我这样做对吗?
当前没有可使用的样本。
解决方案
推荐阅读
- mysql - 跟踪 MySQL 中的重复事件
- asp.net-core - 使用 [Authorize] 标签时重定向到自定义页面
- java - Java Spring:@Autowired(Controller 中的字段存储库需要一个名为 Repository 的 bean,但无法找到。)
- azure - 将 Azure 文件共享映射到应用服务 linux 容器会导致容器失败
- r - 为什么在尝试安装 gdalUtils 包(在 R 中)时出现“无效指针”错误?
- android - Nativescript 锁定字体大小,防止系统缩放
- python - 如何正确使用 OpenCV VideoWriter?
- python - 使用非十进制数据点 Matplotlib Python 生成正态分布
- c++ - 如何在 omnet++ 中访问子模块名称?
- .net - 使用运行时特定的实现有什么好处?