![](/img/trans.png)
[英]How to include Product video in adaptive card ? - Bot Framework V4, Node.js
[英]Bot Framework v4 Node: How to use userState in a base class
对于在 Messenger 上运行的多语言机器人,我需要将用户的当前语言存储在 botState 中。 这适用于大多数组件:
在 Index.js 中,创建了 userState 实例并将其传递给主对话框
const userState = new UserState(memoryStorage);
const dialog = new RequestProcessing(userState);
const bot = new DialogBot(conversationState, userState, dialog);
在主对话框中,我可以创建访问器并将 userState 传递给我的组件对话框
constructor(userState) {
super(LEAD_CAPTURE_DIALOG);
this.userState = userState;
this.userProfileAccessor = userState.createProperty(USER_PROFILE);
this.addDialog(new LeadCaptureDialog(userState));
在我的对话框组件中使用 userState 就像这样完美地工作。
但是:我还在使用名为 CancelAndHelpDialog ( 基于此示例)的基本 class 来处理我的组件对话框中的取消和帮助等中断。
我不知道如何将 userState 传递给这个基础 class。
非常感谢任何指导
看起来您已经知道如何使用户 state 成为主对话框构造函数的参数。 您可以在取消和帮助对话框的构造函数中执行相同操作,并在调用super
时将用户 state 传递给它。
https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/super
除了凯尔的回答。 以下方法对我有用。
我的组件对话框扩展了基础 class:
class LeadCaptureDialog extends CancelAndHelpDialog { ...
LeadCaptureDialog class 的构造函数接受 userState 并创建访问器来访问 userState
constructor(userState) {
super(LEAD_CAPTURE_DIALOG);
this.userState = userState;
this.userProfileAccessor = userState.createProperty(USER_PROFILE);
...
}
在 CancelAndHelpDialog class 我添加了一个构造函数
constructor(id) {
super(id);
...
{
使用这种方法,我可以通过使用访问此 class 中的 userState
const userProfile = await this.userProfileAccessor.get(stepContext.context, { language: 'fr' });
我不知道您可以从父 class 访问子对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.