javascript - 机器人获取频道数据
问题描述
团队,我使用机器人框架 SDK4 开发了一个机器人。我正在使用 Directline 频道与我的机器人进行通信。我的要求基于“requestWelcomeDialog”消息上的通道数据,我必须显示欢迎消息。
来自我的机器人客户端的代码:
BotChat.App({
botConnection: botConnection,
user: userOption,
bot: { id: model.botId, name: model.botName },
resize: 'window',
speechOptions: speechOptions,
locale: 'en',
sendTypingIndicator: true,
}, document.getElementById('BotChatElement'));
PostBotConfiguration();
botConnection
.postActivity({
from: user,
name: 'requestWelcomeDialog',
type: 'event',
value: { 'BotType': 'abcd' }
})
.subscribe(function (id) {
setWCScreenChatPosition();
model.botRender = true;
console.log('"trigger requestWelcomeDialog" sent');
});
在上面的代码中,我将 BotType 作为“abcd”发送。我正在尝试从我的机器人中读取此值。
我在机器人中的代码。
protected override async Task OnMembersAddedAsync(IList<ChannelAccount> membersAdded, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
{
Utility util = new Utility();
try
{
foreach (var member in membersAdded)
{
if (member.Id != turnContext.Activity.Recipient.Id)
{
BotChannelData cdata = new BotChannelData();
turnContext.Activity.TryGetChannelData(out cdata);
}
}
}
catch
{
}
}
在这我总是得到空引用异常。
我可以知道我在这方面缺少什么吗?
解决方案
推荐阅读
- javascript - For循环不检查数组中的所有元素
- javascript - 从 ObjectsLoop 数组创建一个新对象
- android - 在 Android Studio 3.6.1 中启用禁用 Gradle 离线模式
- javascript - 带有刀片 SourceMap 的 laravel 项目错误
- javascript - 通过异步调用在D3中调用JSON后如何保留数据?
- chocolatey - 如何查看用于使用 Chocolatey 安装已安装包的参数?
- ada - Ada 编译警告
- universe - 如何选择 TCL 中的值标记字符?
- hash - 意外失败与 :exists in raku
- unit-testing - 获取当前的 URLCodeception 并打印它