我无法理解如何在Dialogs中使用该IDialogContext方法Fail.我知道它应该向父对话框发送一个异常,但这会发生在哪里?我想在ResumeAfter方法中,但我不完全确定.
我问这个是因为我有一个从根对话框分支的几个对话框,我正在试图找出一种方法将异常一直传播回root并返回到我最初Conversations.SendAsync在Controller中调用的位置.这样做的任何例子都会很棒.
在群集之后,它无法按预期工作,并一次又一次地询问我的名字.
我错过了什么吗?
这是我的微软机器人框架代码.
server.js
var worker = require('./worker');
var cluster = require('cluster');
var spawnWorker = function() {
worker.createServer();
};
var createCluster = function() {
if(cluster.isMaster) {
var cpus = require('os').cpus().length;
for(var i = 0; i < cpus; i++) {
cluster.fork();
}
cluster.on('online', function(wkr) {
console.log('Worker started', wkr.process.pid);
});
cluster.on('exit', function(wkr) {
console.log('Worker died, respawing', wkr.process.pid);
cluster.fork();
});
} else {
spawnWorker();
}
};
createCluster();
Run Code Online (Sandbox Code Playgroud)
worker.js
exports.createServer = function(){
var builder = require('botbuilder');
var connector = new builder.ConsoleConnector().listen();
var bot = …Run Code Online (Sandbox Code Playgroud) 我已经阅读了一些我们可以IScorable.cs用来实现全局可用命令的地方,例如在聊天流程中的任何地方输入"设置"以打开设置对话框.但似乎没有关于如何使用它的文档.
请帮忙.
我正在尝试创建一个聊天机器人,为了避免用户打开聊天窗口而不知道可用的选项,我想在用户打开聊天窗口时给出一些基本的说明.
用户打开聊天窗口时是否有可用的触发器?也许那时我可以检查,如果没有正在进行的对话,我可以提供基本的指示.
我做了一些谷歌搜索,没有发现这一点.是否可以执行此类操作,如果没有,是否有办法缓解此问题,并向用户提供有关聊天机器人功能和支持的说明的信息?
每当用户输入'exit'作为消息时,我想调用session.endDialog.
目前,我的机器人有许多类型的对话,但我希望机器人在用户输入"退出"时结束对话,而不管用户当前在哪个对话中.
有没有办法做到这一点?
我在botframework仪表板中遇到了这个问题.
我已将谷歌地图添加为白名单域名.
{
"setting_type" : "domain_whitelisting",
"domain_action_type": "add",
"whitelisted_domains":[
"https://www.google.com/maps/place/"
]
}
Run Code Online (Sandbox Code Playgroud)
完整链接:
https://www.google.com/maps/place/51%C2%B030 '40 .1%22N + 0%C2%B005'02.0%22W/@ 51.5111351,-0.0860752,17z/data =!3m1!4b1!4m5 !3M4 1s0x0:!!!为0x08平方米3d51.5111351 4D-0.0838865!
为什么它不会呈现为白名单的域名?
编辑:我解决了这个问题.
我添加了那个链接.
StackOverflow社区!
我有一个聊天机器人,并集成了LUIS.ai,使其更加智能.其中一个对话即将预约与主管(教师)一切都工作正常,字面上相同的代码.几个小时前,我遇到了一些奇怪的错误.
Exception: Type 'Newtonsoft.Json.Linq.JArray' in Assembly 'Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' is not marked as serializable.
Run Code Online (Sandbox Code Playgroud)
如何重现错误?
如果用户的输入中缺少实体(教师和日期),则它工作正常,机器人构建表单,询问缺少的输入并显示建议的会议时间.
如果其中一个实体从输入中遗漏了它,它将构建一个表格并询问缺少的日期或教师实体,并显示建议的会议时间.
但
如果用户的输入同时包含实体:教师和日期,那么我收到错误.
这是我的WebApiConfig类:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Json settings
config.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
config.Formatters.JsonFormatter.SerializerSettings.Formatting = Formatting.Indented;
JsonConvert.DefaultSettings = () => new JsonSerializerSettings()
{
ContractResolver = new CamelCasePropertyNamesContractResolver(),
Formatting = Newtonsoft.Json.Formatting.Indented,
NullValueHandling = NullValueHandling.Ignore,
};
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}", …Run Code Online (Sandbox Code Playgroud) public virtual async Task ShowAnnuvalConferenceTicket(IDialogContext context, IAwaitable<IMessageActivity> activity)
{
var message = await activity;
PromptDialog.Choice(
context: context,
resume:ChoiceReceivedAsync ,
options: (IEnumerable<ProductGroups>)Enum.GetValues(typeof(ProductGroups)),
prompt: " ",
promptStyle: PromptStyle.Auto
);
}
public virtual async Task ChoiceReceivedAsync(IDialogContext context, IAwaitable<ProductGroups> activity)
{
ProductGroups response = await activity;
context.Call<object>(new AnnualPlanDialog(response.ToString()), ChildDialogComplete);
}
public virtual async Task ChildDialogComplete(IDialogContext context, IAwaitable<object> response)
{
var respond = await response as Activity;
if (respond = ProductGroups.MoreCategories)
{
await context.PostAsync("Click here to view more categories");
context.Done(this);
}
}
public enum ProductGroups …Run Code Online (Sandbox Code Playgroud) 我正在查看botAuth上的V4文档。当我查看单击Node Auth时提到的示例时,它会将我重定向到https://www.microsoft.com/zh-cn/
我也没有在官方V4 git repo下看到任何东西https://github.com/Microsoft/botbuilder-js