在对 WebSockets 的技能协议更改之后,我们一直在等待新的流扩展库可用于 Typescript,以前仅可用于 C#。 这将在使用 Typescript 时解锁虚拟助手的技能调用场景。
作为......开发人员
我希望……能够将技能连接到虚拟助手的 TypeScript 版本
所以...... C# 和 Typescript 之间存在奇偶校验
嗨,达伦吉,
是否有任何关于要修复的问题的预计到达时间?
谢谢,
库马尔
希望本周的测试工作能够顺利进行。
谢谢@darrenj的更新。
这个问题有没有更新@darrenj
嗨,达伦,
@darrenj能否请您提供有关此工作项目的更新。 我们需要为我们的用例开发这个关键功能。
感谢你的帮助。
谢谢,
库马尔
嗨@darrenj ,
很抱歉再次打扰您,这有什么更新吗?
我看到该库已经发布了 4.6.0 版本(https://botbuilder.myget.org/feed/botbuilder-v4-js-daily/package/npm/botframework-streaming),这是否与 Botframework 兼容4.5.0 和虚拟助手?
这里有一些事情正在发展,一个是你发现的流媒体扩展的可用性,另一个是新 GA 版本的技能库的打字稿可用性。 我期待下周的 Skills 库的第一个打包版本,届时我们可以开始更新 C# 和 Typescript 模板以测试和提供(简单)迁移步骤。
我们的目标是在 1 月份准备好这项工作,并将更新此问题的进度,包括每日构建可用的时间。
同时,Javascript/Typescript VA Bot 可以调用在 JavaScript/Typescript 中创建的技能,因为由于缺乏流扩展依赖项,它使用 HTTP。 当您希望调用像日历这样的 C# 技能时会出现问题,上述更改将在所有语言中保持一致。
@darrenj是固定的,我可以从 typescript VA 连接 C# Skill 吗? 我对你最后的评论感到困惑。
你好@darrenj ,
一旦解决了这个问题,是否可以从 VA 上的 TypeScript 版本调用像ToDo这样的 cSharp 技能?
目前,我收到与 C# 技能上使用的 WebSocketTransport 相关的错误。 但我的 VA 是打字稿。
是的,迁移到 GA 版本的 Skills 消除了对 Websockets 的依赖,从而实现了跨平台技能的无缝混合/匹配。 我们拥有 C# 和 JS 的最新版本并致力于初始集成,目标是在接下来的几周内将更改添加到日常构建中,以解除场景阻塞。
嗨@darrenj ,
我还有另一个用例是 Typescript VA 和 Typescript Skill。
我的问题是 updateActivity 在整个 VA 到技能不可用,我需要为此使用流媒体库(据我所知)。 现在我实际上注意到 WebSocket 依赖项已从最新的技能库 (4.4.9) 中删除。
不明白为什么 :) 要搬到别处吗? 或者?
好的,我有关于 Bot Framework SDK 中技能功能 GA 的最新进展。 这将 Virtual Assistant 孵化的工作转变为正式的 GA 版本。
提供了一个示例,展示了一个 Bot 如何调用另一个 Bot(技能)。 关键的变化是我们现在有一个统一的适配器,这意味着不需要使用不同的适配器或流扩展。 C#和JS 。
我们正在更新虚拟助手/技能模板,以提供开箱即用的(小)更改,并提供有关更新现有技能所需的几个步骤的文档。 以 1 月底为目标,很快就会在我们的日常构建基础上进行构建。
如果您渴望在此之前取得进展,上述示例应该可以为您提供所需的一切。 一旦准备就绪,我将使用指向每日构建/更改的指针更新此问题。
@darrenj感谢您提供这个很棒的更新。 在我们开始在我们的生产虚拟助手中利用统一适配器之前,我只是想知道
这是否意味着我们可以在 Typescript VA 中使用统一适配器并且仍然可以调用 c# 技能?
期待已久的更新!
我们昨天发布了0.8 版本,其中包括对所有示例技能的更新,以支持新的GA 技能功能,不再进行预览。 Websockets 已被淘汰,转而支持技能之间的 Web 服务通信,技能使用“回调”HTTP 连接异步通信回机器人。
因此,需要对现有的虚拟助手和技能进行一些直接更新。 C# VA 更新记录在此处,C# 技能更新记录在此处。
等效的 JS/Typescript 生成器更改正在完成,因为我们的目标是在 2 月 14 日之前发布新的生成器和现有 VA/技能的文档。 作为背景参考,可以在此处找到支持调用技能的高级步骤
一旦这些更改完成,就意味着 JS/typescript VA 可以调用 C# Skills,反之亦然,实际上 Python 也是如此。
@darrenj ,对上面关于打字稿项目的评论有什么想法吗?
如上所述,是的,我们正在完成一些迁移步骤
谢谢你。
嘿@darrenj ,关于JS/TS 生成器更改和文档更新何时发布的任何消息?
嘿@darrenj ,您能否让我们知道从 VA (C#) 到打字稿技能工作的交流是否在您上面提到的新框架 (SDK) 中完成。 你说过它会在 2 月 14 日之前完成。
感谢你的帮助
@darrenj这张票有什么更新吗?
@darrenj今天我尝试迁移或修复以从 VA/RootBot (Typescript) 调用 C# 技能。 我找到了没有打字稿 rootbot/VA 示例的实现技能消费者的指南。 是否有计划支持基于打字稿的迁移指南? 请让我知道 ETA 或任何其他可以帮助实现相同目标的指南。
我们有一组正在进行的拉取请求,用于使新的打字稿 VA/技能能够使用新的 GA 技能的更改。 一旦我们将它们合并并且每日构建可用,我将更新票证。
同时,这里有一份关于迁移现有 VA 的步骤的草稿文件,欢迎反馈。
https://github.com/microsoft/botframework-solutions/pull/3123
嗨@darrenj ,感谢您的更新,我目前唯一的问题是关于“botbuilder-solutions”。 我们必须使用本地版本吗? 来自哪里? 我在这里找到了这个看起来像未来版本的分支(https://github.com/microsoft/botframework-solutions/tree/feature/southworks/0.7/parity-botbuilder-solutions/sdk/typescript/libraries/botbuilder-solutions) , 那正确吗?
提前致谢。
@Batta32您能否快速确认人们可以使用哪个代码分支来测试指令(在新库发布之前)
@tommyJimmy87 - 您可以查看 PR #3122,其中包含 TypeScript 中 GA Skills SDK BotBuilder-Solutions 的所有必要更改。
分支: feature/southworks/ga-skills-sdk/botbuilder-solutions
要在本地使用库,请按照以下步骤操作(使用提到的分支):
npm install
以安装依赖项npm run build
以编译解决方案npm pack
创建库 .tgz 文件package.json
文件npm install
以安装将安装本地包的依赖项我们目前正在验证这些更改,请随时在该 PR 中提供任何反馈,我们将尽快对其进行审核。
此问题已过时,因为它已打开 30 天而没有任何活动。 删除陈旧的标签或评论,否则这将在 5 天内关闭
@darrenj - 您能否让我们知道下面提到的更改是否可以用于从 VA(C#) 到 Skill 节点 js 的连接。
@Batta32对于迁移,我们可以开始使用 botbuilder-solutions 4.5.0-preview 吗? 我想是迁移的新版本吧?
@Batta32新的 SDK 什么时候发布使用? 我正在构建一个具有 13 项技能的 VA,其中一项要求是使用 TypeScript 构建。 我目前正在使用 Next 分支中的 SDK 来启动项目。
嗨@tommyJimmy87 & @tomSauret847 ,在它们发布之前,您可以使用
要集成botbuilder-solutions
每日构建,您有两个不同的选项,我们推荐第一个选项,因为它是最简单的一个(考虑删除机器人的package-lock
和node_modules
) :
https://botbuilder.myget.org/F/aitemplates/npm
的.npmrc
文件,并更新package.json
以将botbuilder-solutions
版本指向4.5.0-preview223
botbuilder-solutions
的 tgz,直接在 package.json 中使用绝对路径引用它npm pack [email protected] --registry https://botbuilder.myget.org/F/aitemplates/npm
如果你想使用generator-botbuilder-assistant
,你应该卸载它,如果你已经有一个,然后安装 MyGet 之一:
npm uninstall -g generator-botbuilder-assistant
npm install -g [email protected] --registry https://botbuilder.myget.org/F/aitemplates/npm
@Batta32我们需要在哪里报告我们在预览版本中发现的问题? 我已经使用预览生成器生成了一个新的 VA,并使用了预览 SDK 并收到一个错误,指出在尝试运行 VA 而不进行任何自定义时正在添加一个无效的对话框。
错误:DialogSet.add():添加的对话框无效。
@darrenj - 报告每日构建问题的最佳方法是什么?
@tomSauret847 - 同时,您可以在此线程中与您的环境和重现步骤分享您的问题😊!
环境在windows 10电脑本地运行
步骤:运行预览生成器以构建空白 VA
更新appsettings.json 和cognitivemodels.json
添加指向https://botbuilder.myget.org/F/aitemplates/npm 的.npmrc 文件
删除 node_modules 和 package-lock.json
运行 npm install [email protected]
运行 npm install 安装所有其他包
运行 NPM 构建
运行 npm 运行开始
然后我收到以下错误
C:UsersuserDesktopBlankVAtestassistantnode_modulesapplicationinsightsoutAutoCollectionExceptions.js:34
抛出 THIS_IS_APPLICATION_INSIGHTS_RETHROWING_YOUR_EXCEPTION; // 错误源自您应用程序的其他地方
^
错误:DialogSet.add():添加的对话框无效。
在 DialogSet.add (C:UsersuserDesktopBlankVAtestassistantnode_modulesbotbuilder-dialogslibdialogSet.js:87:19)
在 MainDialog.addDialog (C:UsersuserDesktopBlankVAtestassistantnode_modulesbotbuilder-dialogslibcomponentDialog.js:148:22)
在新的 MainDialog (C:UsersuserDesktopBlankVAtestassistantlibdialogsmainDialog.js:34:14)
在对象。
在 Module._compile (internal/modules/cjs/loader.js:778:30)
在 Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
在 Module.load (internal/modules/cjs/loader.js:653:32)
在 tryModuleLoad (internal/modules/cjs/loader.js:593:12)
在 Function.Module._load (internal/modules/cjs/loader.js:585:3)
在 Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
谢谢! 我们按照您的步骤重现了该问题,但是当安装botbuilder-solutions
时,安装依赖项的顺序存在错误,导致冲突。
尝试按照以下步骤操作:(删除node_modules
和package-lock
)
package.json
中的4.5.0-preview223
版本更新package.json
botbuilder-solutions
npm install
的依赖npm run build
的解决方案npm run start
@tomSauret847如果您发现任何其他问题,请告诉我。 我们正在完成最终验证,并将在完成后将新构建推送到 npm。
嗨@darrenj ,我在尝试使用新模板管理器解析 lg 文件时遇到错误,基本上发生的情况是我从 MS Teams 接收语言环境 en-US 但我只设置了 en-us(小写)和不会被认可。 也许在此处添加小写字母if (this.templateEnginesPerLocale.has(locale))
可以解决问题(LocaleTemplateEngineManager.ts line 61)。 为了暂时避免这个问题,我不得不在我的 index.ts 中添加它:
const supportedLocales: string[] = ['en-us', 'en-US','de-de'];
supportedLocales.forEach((locale: string) => {
const localeTemplateFiles: string[] = [];
templateFiles.forEach(template => {
// LG template for en-us does not include locale in file extension.
if (locale === 'en-us' || locale === 'en-US') {
localeTemplateFiles.push(path.join(__dirname, 'responses', `${ template }.lg`));
}
else {
localeTemplateFiles.push(path.join(__dirname, 'responses', `${ template }.${ locale }.lg`));
}
});
localizedTemplates.set(locale, localeTemplateFiles);
});
这很有效,但我不知道是否可以以更好的方式完成。
谢谢。 @Batta32 - 您能检查一下在使用MultiLanguageLG
提供的 SDK 的解决方案库中是否对 LocaleTemplateEngine 进行了更改吗? 我希望这能优雅地处理混合大小写,但一些测试会很好地验证。
@lzc850612我们能否使用 csharp GA RC 运行快速验证,以在混合大小写区域设置进入 Activity 的 Bot 时仔细检查它是否按预期工作?
当然@darrenj ,我们将检查该更改!
@darrenj感谢您更新进度! 我有与 tommyJimmy 指出的相同的语言环境问题,但通过在 localeTemplateManager 中添加 locale.toLowerCase 解决了它。 我目前正在将自定义技能附加到 VA,但仍然收到我试图追踪的错误。 该技能正在向 VA 返回 501 错误,但它正在处理 defaultActitivityHandler.ts 中的 onMessage 函数中的消息,只是没有将活动传递到主对话框以供技能处理。 我通过更新 appSettings.json 文件添加了该技能,并且该技能正在接收活动。
@ Batta32我想检查前进的路径是否仍然包含 localTemplateEngineManager。 我注意到它在预览版本中丢失了,只有 responseManager 存在。 继续前进,我们将需要使用响应管理器还是要重新添加区域设置模板?
@Batta32我能够追踪我在与 VA 的技能交流时收到的错误。 在 dialogEx 模块中有一个发送跟踪,它将跟踪发送回技能启动的 VA。 调用此 sendActivity 时会引发以下错误:
错误:/api/messages/v3/conversations/5659a380-841b-11ea-bed3-831b5a6aa1eb%7Clivechat-dlpskill-emulator-skillconvo/activities/5b61c920-841b-11ea-b148-8581
当会话 ID 附加到 SkillConversationIdFactory 中时,该技能无法回发到新的会话 ID。
更新:
我在导致此问题的 SkillHostEndpoint 中有一个拼写错误。 一旦我更正了我现在可以附加技能并让它们与 VA 交互。
@Batta32 @darrenj我在尝试使用 VA聊天时遇到意外行为:基本上每次用户向 Bot 提问时,introstep 都会重新提示初始消息,这在聊天的情况下不如 UX . 这是预期的还是我遗漏了什么?
(请稍等消息是自定义消息不要担心
)
@Batta32我能够追踪我在与 VA 的技能交流时收到的错误。 在 dialogEx 模块中有一个发送跟踪,它将跟踪发送回技能启动的 VA。 调用此 sendActivity 时会引发以下错误:
错误:/api/messages/v3/conversations/5659a380-841b-11ea-bed3-831b5a6aa1eb%7Clivechat-dlpskill-emulator-skillconvo/activities/5b61c920-841b-11ea-b148-8581
当会话 ID 附加到 SkillConversationIdFactory 中时,该技能无法回发到新的会话 ID。更新:
我在导致此问题的 SkillHostEndpoint 中有一个拼写错误。 一旦我更正了我现在可以附加技能并让它们与 VA 交互。
@tomSauret847你的问题是什么? 因为我有同样的错误,不明白这是什么。 在我的虚拟助手中,我有这个:
"skillHostEndpoint": "https://1c34e472.ngrok.io/api/skills"
哪个是 VA 的端点。
Error: /api/skills/v3/conversations/a%3A1QIRXOg6VwVn2aGC-eTj9sj3YYd6YUVrRKf8J7wLrjH1fPYcpn2dYpMyQpr_aHLHSp9Z2SHVzu8lKbdj_ArEh06kvjyF48IG1tgE1ctKTWdIASDloNgy51_eBFoGzwwIN-waSearchSkill-msteams-skillconvo/activities/1588679971133 does not exist
at new RestError (/Users/em.tomaselli/Desktop/repository/BMW/wa-search-skill/node_modules/@azure/ms-rest-js/dist/msRest.node.js:1397:28)
at /Users/em.tomaselli/Desktop/repository/BMW/wa-search-skill/node_modules/@azure/ms-rest-js/dist/msRest.node.js:1849:37
at process._tickCallback (internal/process/next_tick.js:68:7)
@Batta32我能够将我的 VA 和 1 项技能部署到 Azure。 当我使用网络聊天时,一切都按预期进行。 当我尝试使用团队频道时,我收到以下错误。 这似乎与团队频道隔离,因为网络聊天路由正确。
错误:在“https://{app name}.azurewebsites.net/api/skill/messages”调用技能 ID:“dlpskill”时出错(状态为 500)。
错误:/ API / / V3 /会话/一个技巧:1lFWWXG9CVtdrkA76VLFeS9CbYWzsHVr9mQ4S7BqDpL4K5WNIc0ND6mqaaj_QsSqH-qUU-Gb2vLX3HQ4CpG3ZDPCbR0XKLtJGOqW0kwKUbe2HKv5C9fs1sjLSO4EvoE5h-dlpskill-msteams-skillconvo /活动/ 1588712064379不存在
在技能对话。
在 Generator.next (
已完成 (D:homesitewwwrootnode_modulesbotbuilder-dialogslibskillDialog.js:11:58)
在 process._tickCallback (internal/process/next_tick.js:68:7)
@tommyJimmy87我没有使用 ngrok 从 VA 与本地技能进行通信,因此我能够使用localhost:3979/api/skills作为 SkillHostEndpoint 并且能够达到技能。 由于您也在使用 Teams 频道,我会说这是 Teams 频道的问题。 您可以尝试使用网络聊天获得技能,看看是否可以与 VA 的 azure 技能交流。
嗨@Batta32 ,我同意@tomSauret847 的观点,即团队频道很可能存在某种问题。
经过一些调试后,我可能会尝试解释我发现的内容:
1)在ChannelServiceHandler
所有的方法都没有实现,这意味着当/api/skills
被调用时,每次都会返回一个错误代码;
即文件:ChannelServiceHandler.ts(botbuilder),行:219
protected async onGetActivityMembers(claimsIdentity: ClaimsIdentity, conversationId: string, activityId: string): Promise<ChannelAccount[]> {
throw new StatusCodeError(StatusCodes.NOT_IMPLEMENTED, `ChannelServiceHandler.onGetActivityMembers(): ${StatusCodes.NOT_IMPLEMENTED}: ${STATUS_CODES[StatusCodes.NOT_IMPLEMENTED]}`);
}
2) /api/skills/v3/conversations/a%3A1QIRXOg6VwVn2aGC-eTj9sj3YYd6YUVrRKf8J7wLrjH1fPYcpn2dYpMyQpr_aHLHSp9Z2SHVzu8lKbdj_ArEh06kvjyF48IG1tgE1ctKTWdIASDloNgy51_eBFoGzwwIN-waSearchSkill-msteams-skillconvo/activities/1588761991793
在这种情况下,在解析会话 ID 时会出现一些问题,错误结果总是资源不存在,但是如果您尝试使用更简单的字符串调用相同的 URL 更改会话 ID它将起作用(但结果仍然是由于前一点而未实现该方法)。
嗨@tommyJimmy87 , @tomSauret847 - 很抱歉延迟。 我们将使用 GA Skills SDK 更改审查 Teams Channel 的场景,稍后我们将回到此主题😊。
@tommyJimmy87 - 我们使用 Microsoft Teams Channel成功重现了该问题。 我们将在解决问题后立即返回此线程。
谢谢!
嗨@tommyJimmy87 , @tomSauret847 ,我们成功找到了问题的原因。
问题在于,当活动从技能发送回虚拟助手时,_':'_ 字符被替换为 _'%3A'_,从而导致两个机器人之间的 _conversationId_ 不匹配。
显然,这种行为是在axios依赖项中执行的,替换了前面提到的字符。
最后但并非最不重要的一点是,microsoft/botbuilder-js#2182 中存在一个问题,它替换了 botbuilder 中的 axios,并且它被标记为已为 _R10_
我们将更新解释问题的已知问题文档
最后,一旦我们为你们提供新的更新,我们将回到这个线程😊
_conversationIds 不匹配_
_axios 依赖项将“:”替换为“%3A”_
@Batta32您认为会很快修复还是需要一些时间?
@tommyJimmy87 、 @tomSauret847 - 我们注意到问题出在ms-rest-js而不是axios 。
问题是技能和虚拟助手之间的conversationId
不匹配。 提出此问题是因为来自 Teams 的 _conversationId_ 的 _':'_ 字符被替换为 _'%3A'_,而后者应该被替换回_':'_。 最后一次转换不像_axios_那样在
抱歉弄错了😊。
_encodeURIComponent 不会将“%3A”替换回“:”_
_axios 和 ms-rest-js 编码的区别_
@Batta32 ms-rest-js 版本 < 2.0 的默认代理是 axios https://github.com/Azure/ms-rest-js/blob/1.x/lib/axiosHttpClient.ts
我认为解决此问题的一种方法是在 SkillConversationIdFactory 实现中使用 encodeURI。 这样,底层代理不会改变工厂中存储的对话.id。
谢谢@EricDahlvang ,我们将审查在SkillConversationIdFactory
中使用encodeURI
的替代方法!
@EricDahlvang - 在SkillConversationIdFactory
中添加encodeURI
并不能解决问题,因为在将活动发送回虚拟助手之前,技能已经对conversationId
进行了编码。
我们意识到该问题可能与从 Microsoft Teams 收到的对话 ID 的长度有关。 我们注意到使用原始的conversationId
没有命中 VA 的端点,但是,从conversationId
修剪一些字符是正确命中的。
最后但并非最不重要的是,这个问题在 C# 中不存在。
_端点未命中原始conversationId_
_端点被修剪后的对话 ID 命中_
_这个问题在C#中不存在_
@Batta32如果 SkillConversationIdFactory 使用 encodeURI,则该技能将接收该 session.id 并相应地对其做出响应。 我很确定这是必需的。
同样是的,使用 restify 时长对话 id 存在问题。 我们在此示例中提到了如何解决该问题: https :
// 默认情况下,此键有 100 个字符的限制。 在 index.js 中用
restify.createServer({ maxParamLength: 1000 });
增加。
@EricDahlvang感谢您提供此信息。 我为我的 VA 和技能添加了更新。 我现在可以让 VA 与 Teams 频道中的技能无误地进行交流。
感谢@EricDahlvang提供的信息! 我们创建了 PR #3359,改进了maxParamLength
并更新了@types/restify@^8.4.2
。
谢谢@tommyJimmy87 , @tomSauret847 ,一旦这些更改合并,您就可以测试它😊。
@Batta32很抱歉再次打扰您,首先,我应用了更改,现在可以正常工作了。 现在我在通过 VA 更新技能活动时遇到问题,在 SkillHandler 中没有实现,您能提供一个吗? 谢谢
嗨@tommyJimmy87 ,我们注意到C#和JS中的SkillHandler
不包含您提到的onUpdateActivity()
,同时您可以添加自己的处理程序,从SkillHandler
或ChannelServiceHandler
扩展
@darrenj -你可以确认没有onUpdateActivity()
的方法SkillHandler是正确的还是有实现它什么计划吗?
@Batta32我实际上试过这个,实现看起来像这样:
protected async onUpdateActivity(claimsIdentity: ClaimsIdentity, conversationId: string, activityId: string, activity: Activity): Promise<ResourceResponse> {
return await this.updateActivity(claimsIdentity, conversationId, activityId, activity);
}
updateActivity
函数如下:
private async updateActivity(claimsIdentity: ClaimsIdentity, conversationId: string, replyToActivityId: string, activity: Activity): Promise<ResourceResponse> {
let skillConversationReference: SkillConversationReference;
try {
skillConversationReference = await this.conversationIdFactory.getSkillConversationReference(conversationId);
} catch (err) {
// If the factory has overridden getSkillConversationReference, call the deprecated getConversationReference().
// In this scenario, the oAuthScope paired with the ConversationReference can only be used for talking with
// an official channel, not another bot.
if (err.message === 'Not Implemented') {
const conversationReference = await this.conversationIdFactory.getConversationReference(conversationId);
skillConversationReference = {
conversationReference,
oAuthScope: JwtTokenValidation.isGovernment(this.channelService) ?
GovernmentConstants.ToChannelFromBotOAuthScope :
AuthenticationConstants.ToChannelFromBotOAuthScope
};
} else {
// Re-throw all other errors.
throw err;
}
}
if (!skillConversationReference) {
throw new Error('skillConversationReference not found');
}
if (!skillConversationReference.conversationReference) {
throw new Error('conversationReference not found.');
}
const activityConversationReference = TurnContext.getConversationReference(activity);
/**
* Callback passed to the BotFrameworkAdapter.createConversation() call.
* This function does the following:
* - Caches the ClaimsIdentity on the TurnContext.turnState
* - Applies the correct ConversationReference to the Activity for sending to the user-router conversation.
* - For EndOfConversation Activities received from the Skill, removes the ConversationReference from the
* ConversationIdFactory
*/
const callback = async (context: TurnContext): Promise<void> => {
const adapter: BotFrameworkAdapter = (context.adapter as BotFrameworkAdapter);
// Cache the ClaimsIdentity and ConnectorClient on the context so that it's available inside of the bot's logic.
context.turnState.set(adapter.BotIdentityKey, claimsIdentity);
context.turnState.set(this.SkillConversationReferenceKey, activityConversationReference);
activity = TurnContext.applyConversationReference(activity, skillConversationReference.conversationReference) as Activity;
const client = adapter.createConnectorClient(activity.serviceUrl);
context.turnState.set(adapter.ConnectorClientKey, client);
context.activity.id = replyToActivityId;
await context.updateActivity(context.activity);
return;
};
// Add the channel service URL to the trusted services list so we can send messages back.
// the service URL for skills is trusted because it is applied based on the original request
// received by the root bot.
AppCredentials.trustServiceUrl(skillConversationReference.conversationReference.serviceUrl);
await (this.adapter as BotFrameworkAdapter).continueConversation(skillConversationReference.conversationReference, skillConversationReference.oAuthScope, callback);
return { id: uuid() };
}
它基本上是processActivity
函数的副本,该函数已经在SkillHandler
但最后调用了context.updateActivity(context.activity)
。
说我收到此错误:
(node:68325) UnhandledPromiseRejectionWarning: Error: Failed to decrypt conversation id
可能是我遗漏了一些东西,或者我做错了。
@tommyJimmy87 - 我们将尝试重现您的场景,稍后我们会回复您😊。
@Batta32我在虚拟助手的“帮助卡”上注意到它没有显示主动技能的帮助卡。 当您在技能对话框中点击“帮助”中断时,它仍然显示 VA 的帮助卡而不是技能。 我已更新到最新版本,其中包括使用活动技能设置 activeSkillProperty 状态。 有关如何解决此问题的任何想法? 注销活动对话的状态仍然注册为我在 VA 中的对话,而不是活动技能。
嗨@tommyJimmy87 , @tomSauret847 ,感谢您报告这些问题。
由于[email protected] 、 [email protected]和[email protected]在中发布并合并到分支master
,您可以在存储库中创建问题以便更好地解释问题,我们会跟进他们😊。
最有用的评论
@Batta32如果 SkillConversationIdFactory 使用 encodeURI,则该技能将接收该 session.id 并相应地对其做出响应。 我很确定这是必需的。
同样是的,使用 restify 时长对话 id 存在问题。 我们在此示例中提到了如何解决该问题: https :