MS Bot blob存储无法找到当前用户

问题描述 投票:0回答:1

我们正在尝试在Blob存储中保留用户信息。我们可以编写,验证文件是否存在,但是当我们尝试在context的对话框中访问它时,找不到用户。

在我们的初始连接端点中,检查用户是否存在,如果不存在,我们创建一个:

await storage.write({
  [`directline/users/${userId}`]: {
    [USER_STATE_PROPERTY]: {
      customData: {},
    }
  }
});

记录在blob存储中。我们拥有的blob存储是这样的:

import {
  AutoSaveStateMiddleware,
  BotFrameworkAdapter,
  UserState,
  ConversationState
 } from 'botbuilder';
import { log } from './logger';
import { BlobStorage } from 'botbuilder-azure';
import Bot from '../bot';

const storage = new BlobStorage({
  containerName: BLOB_CONTAINER_NAME,
  storageAccountOrConnectionString: BLOB_CONNECTION_STRING
});

const userState = new UserState(storage);
const conversationState = new ConversationState(storage);
const botInstance = new Bot(conversationState, userState);

const adapter = new BotFrameworkAdapter({
  appId: APP_ID,
  appPassword: APP_PASSWORD,
});

adapter.use(new AutoSaveStateMiddleware(conversationState, userState));

...

但是,当对话开始时,我们找不到当前用户:

class Bot {
  private conversationState;
  private userState;
  private dialogState;
  private dialogs;
  private userProfile;

  constructor(conversationState: ConversationState, userState) {
    this.conversationState = conversationState;
    this.userState = userState;
    this.dialogState = this.conversationState.createProperty(DIALOG_STATE_PROPERTY);
    this.userProfile = this.userState.createProperty(USER_STATE_PROPERTY);
    this.dialogs = new DialogSet(this.dialogState);
  }

  public async onTurn(turnContext) {
    const { type, membersAdded, recipient } = turnContext.activity;

    if (type === ActivityTypes.Message || type === ActivityTypes.Event) {
      const user = await this.userProfile.get(turnContext, {});
      // user is always {}
    }
  }
botframework azure-blob-storage
1个回答
0
投票

太糟了。错误缺少跟踪MS附加到每个id的/

© www.soinside.com 2019 - 2024. All rights reserved.