我的设置是一个与技能模板连接的虚拟助手模板。 如果我尝试在 Bot Emulator 中运行我的 VA,并且在 localhost 和 Azure Endpoint 中正常工作,一切都很好,但是当我尝试在 Azure WebChat 中的 VA 中启动技能对话时,我没有任何响应,我的 VA 只是停下来回答我的问题。
我有完全相同的问题,我有我的主要机器人和以 azure 发布的技能,当我在模拟器内测试机器人时,它工作得非常好,对话被移交给技能机器人。 然而,一旦它在网络聊天中或在我的例子中使用直线的 React 应用程序中使用,机器人就会停止响应。 对我而言,这两种配置之间的唯一区别是我们在模拟器中使用 AppId 和 AppPassword,也许存在身份验证问题,导致部署到 Azure 时两个机器人无法相互通信?
appinsights 中唯一的信息是一个例外:POST 到机器人端点失败,HTTP 状态为 500,没有更多详细信息。
谢谢你 - 你能确认你可以浏览到你部署的技能的技能清单端点吗? 例如http://YOURSKILLNAME.azurewebsites.net/api/skill/manifest。 这将证明该技能工作正常。
谢谢你 - 你能确认你可以浏览到你部署的技能的技能清单端点吗? 例如http://YOURSKILLNAME.azurewebsites.net/api/skill/manifest。 这将证明该技能工作正常。
是的,我的清单是在线的,看起来还可以。 另外,如果我想在我的技能资源组中使用网络聊天,它也可以工作(当然,只有技能对话,没有 VA)。 这是我的清单: https :
一切都在 Bot Emulator 内工作,使用我的 VA 和 Skill Azure 端点,当尝试重定向技能时,问题就在 VA WebChat 内部。
只是仔细检查技能的应用程序服务是使用部署脚本创建的吗? 无论哪种方式,您都可以检查技能的应用服务上是否启用了 Web 套接字? 这被设置为技能部署的一部分。
只是仔细检查技能的应用程序服务是使用部署脚本创建的吗? 无论哪种方式,您都可以检查技能的应用服务上是否启用了 Web 套接字? 这被设置为技能部署的一部分。
是的,我在两个应用程序中都启用了 websocket,在我的 VA 和我的技能应用程序中。
我按照文档执行所有流程,使用部署脚本。
谢谢 - 帮助我们重现的最后一件事,你能分享你用来“托管” VA 机器人的网络聊天 html/js 代码 - 当然减去你的秘密! 请不要使用 Azure 页面中的网络聊天控件 - 而是连接网络聊天频道并通过该方法进行测试。
如果它对您有帮助,就我而言,我还激活了网络套接字并且可以访问清单,我使用的反应代码是:
import React, {Component} from 'react';
import {connect} from 'react-redux';
import { DirectLine } from 'botframework-directlinejs';
import ReactWebChat from 'botframework-webchat';
class HomePage extends Component {
constructor(props) {
super(props);
this.directLine = new DirectLine({ token: '' });
}
render() {
return (
<div style={{height:'500px'}}>
<ReactWebChat directLine={ this.directLine }
styleOptions={{}}
locale='fr-FR'
/>
</div>
);
}
}
const mapStateToProps = state => ({
userInfo: state.auth.userInfo,
});
export default connect(mapStateToProps)(HomePage);
我的清单: https://dave-skill-jooxter.azurewebsites.net/api/skill/manifest ,我没有使用 oauth 连接。
谢谢 - 帮助我们重现的最后一件事,你能分享你用来“托管” VA 机器人的网络聊天 html/js 代码 - 当然减去你的秘密! 请不要使用 Azure 页面中的网络聊天控件 - 而是连接网络聊天频道并通过该方法进行测试。
抱歉,我没有要共享的 html/js,因为我只是在门户中尝试使用 Azure 网络聊天。 那么,不能在这个网络聊天中运行吗? 我只想知道是我做错了什么还是正常的。
从我的角度来看,我已经对我的机器人进行了更多测试,似乎来自主机器人的消息已传递给技能机器人,但是由于某种原因,主机器人没有收到技能机器人的响应,这响应不会发送到聊天客户端。
谢谢 - 我已经设法在网络聊天中重现。 奇怪 - 调查。
@darrenj对我来说它现在似乎正在工作,干得好!
太好了,谢谢你让我们知道。 我们将在本周末之前向 nuget 发布新的 .solutions 和 .skills 版本。
@darrenj对我来说,当我尝试构建我的技能项目时,我
“SkillEvents”不包含“SkillBeginEventName”的定义,MainDialog.cs,第 128 行。
删除此处理程序 - 最新的 Skills 包已移至使用 SemanticObject(通过 SkillMiddleware)而不是使用单独的事件,因此您无需继续处理此问题。
case SkillEvents.SkillBeginEventName:
{
var state = await _stateAccessor.GetAsync(dc.Context, () => new SkillState());
if (dc.Context.Activity.Value is Dictionary<string, object> userData)
{
// Capture user data from event if needed
}
break;
}
删除此处理程序 - 最新的 Skills 包已移至使用 SemanticObject(通过 SkillMiddleware)而不是使用单独的事件,因此您无需继续处理此问题。
case SkillEvents.SkillBeginEventName: { var state = await _stateAccessor.GetAsync(dc.Context, () => new SkillState()); if (dc.Context.Activity.Value is Dictionary<string, object> userData) { // Capture user data from event if needed } break; }
谢谢,现在我又部署了,新的事情发生了。 助手没有等待我的回应,而是向我发送了多回合对话的所有回合(也在机器人模拟器中)。
我认为它作为更新的一部分进行了另一个更改/修复。 @lzc850612 一觉醒来看看;-)
我们刚刚向 nuget 发布了新的 nuget 包,您可以更新和删除每日构建版本。 我们只是一些需要在您的助手中更改 MainDialog.cs 的逻辑,我认为这是您在上面看到的问题的根源。
在RouteAsync
删除此行
// Pass the activity we have
var result = await dc.ContinueDialogAsync();
WebChat 使用新的更改“开箱即用”。
确保您的所有 nuget 软件包都已更新……并且技能适用于网络聊天!
最有用的评论
谢谢 - 我已经设法在网络聊天中重现。 奇怪 - 调查。