标签: botframework

如何在LUIS Dialog中调用LUIS Dialog?

我的机器人有LUIS对话框,有几个意图.我从MessageController调用LUIS对话框.如果检测到意图,我会启动一个子对话框.子对话框完成后,我调用context.Done("response from user").After该ChlildDialogDone任务被调用.

在内部ChildDialogDone任务中我想再次调用LUIS对话框来检测用户消息的意图(来到 ChildDialogDone).现在ChildDialogDone我有内容context.Wait(MessageReceived).当执行这行代码时,没有任何反应,我的机器人正在等待来自用户的下一条消息.

这是代码:

    [Serializable]
        public partial class DefiningIntentDialog : LuisDialog<object>
        {

            [LuisIntent("")]
            public async Task NoIntent(IDialogContext context, LuisResult result)
            {        
                var dialog = new GreetingsDialog();
                dialog.InitialMessage = result.Query;
                context.Call(dialog, GreetingDialogDone);      
            }

            [LuisIntent("Email")]
            public virtual async Task ConfirmationEmail(IDialogContext context, LuisResult result)
            {
                await context.Forward(new EmailDialog, EmailDialogDone, "message", CancellationToken.None);
            }

            private async Task EmailDialogDone(IDialogContext context, IAwaitable<string> argument)
            {
                var messageHandled = await argument;

                context.Wait(MessageReceived);
            }
      }
Run Code Online (Sandbox Code Playgroud)

所以在EmailDialogDone中我有一些来自用户的消息,我想再次使用此消息执行DefiningIntent对话框.我该怎么做?

c# botframework azure-language-understanding

7
推荐指数
1
解决办法
2345
查看次数

路由Microsoft LUIS请求和Bot框架 - 最好在企业参考应用程序中

我和我的同事正在使用Microsoft bot框架和Microsoft LUIS构建一个非常大的应用程序.从本质上讲,我们正在尝试创建一个机器人,来自整个组织的人员可以向机器人发送消息(通过松弛)并接收相关信息.不同类型的请求涉及不同的主题领域(销售,营销,后勤和研发).如何将多个LUIS模型,实体和子实体链接在一起,以便请求在到达正确的实体之前不会查询每个实体?

现在,如果用户询问"我们今年在研究上花了多少钱?",它首先查询销售实体,然后查询营销实体,然后查询物流实体,最后在获得响应之前查询研发实体.我正在尝试限制API请求的数量.我目前知道3个可能的解决方案来处理这个路由问题,并且它们似乎都没有依赖LUIS来路由到适当的实体.

解决方案1涉及让机器人给出对应于每个域的UI选择器.

解决方案2涉及连接NLP库以从句子中提取主题,然后使用加权字典库匹配主题.

解决方案3涉及设置纯RegEx.这是我最不喜欢的解决方案,原因很明显.

使用Microsoft bot框架和Microsoft LUIS的企业级参考应用程序的链接将是一个理想的答案.

c# azure microsoft-cognitive botframework azure-language-understanding

7
推荐指数
1
解决办法
512
查看次数

如何使用Bot Framework C#Bot Builder记录聊天对话

我想记录我的机器人对话(到文本文件或数据库).我想捕获机器人的所有输入和输出,包括由FormFlow,Confirms等生成的任何文本.我不需要像卡片这样的图形元素,但是从它们获取文本也会很好.

在我的应用程序中的每个输入/输出之后添加日志记录语句似乎不太实际,特别是因为我无法轻易确定FormFlow向用户发送了什么文本.

最好的方法是什么?

logging bots botframework botbuilder

7
推荐指数
2
解决办法
3953
查看次数

Bot框架facebook messenger并不总是响应

我使用Microsoft Bot Framework(C#)制作了一个机器人并在Azure上发布了它.它在模拟器和Skype上运行得非常好.但是在Facebook Messenger上,似乎有时,它没有正确地接收消息(即使没有显示错误),但是多次重新输入消息似乎将其唤醒.

有没有人遇到这个问题或者知道发生了什么?

c# bots azure messenger botframework

7
推荐指数
0
解决办法
267
查看次数

计划在Bot Framework SDK中支持.NET Core?

是否有计划在不久的将来支持.NET Core?我的意思是,没有重构我的机器人代码.仍有与之不兼容的组件.

.net-core botframework azure-bot-service

7
推荐指数
1
解决办法
1469
查看次数

Microsoft bot框架自行破解

我得到了这个令牌请求:

{
    "error": "invalid_request",
    "error_description": "AADSTS90002: No service namespace named 'botframework.com' was found in the data store.\r\nTrace ID: d164a5d4-2c28-4491-bd88-1f8b31b52800\r\nCorrelation ID: 3ab5127e-690e-40b6-a433-2986bd711541\r\nTimestamp: 2017-07-25 18:38:00Z",
    "error_codes": [90002],
    "timestamp": "2017-07-25 18:38:00Z",
    "trace_id": "d164a5d4-2c28-4491-bd88-1f8b31b52800",
    "correlation_id": "3ab5127e-690e-40b6-a433-2986bd711541"
}
Run Code Online (Sandbox Code Playgroud)

命名空间是否已更改?无法想出任何地方.它也是V3.1所以不明白为什么它不工作?

我发送请求 https://login.microsoftonline.com/botframework.com/oauth2/v2.0/token

api rest bots access-token botframework

7
推荐指数
2
解决办法
469
查看次数

Microsoft Bot Framework - 清除会话状态

我正在使用Microsoft的Bot Framework制作机器人,我注意到当我进行更改并部署到Microsoft Teams时,它使用相同的会话状态,我必须编写"/ deleteprofile"来清除状态.

我想在我的代码中清除状态,但不知道这样做的好方法.我不确定哪个文件和用什么代码来清除对话状态.

作为参考,我目前正在使用C#.

c# botframework

7
推荐指数
1
解决办法
1949
查看次数

机器人如何在Slack中启动一个线程

我试图通过启动一个线程让我的机器人框架机器人回复用户.通过这种方式,我可以在一个有很多人的频道中保持机器人正在与谁交谈.

根据松弛的文档,我需要做的是将thread_ts属性设置为ts发送到我的机器人的属性.我尝试了一些事情并且无法实现这一目标.这是我最简洁的例子:

var reply = (Activity)activity;
reply = reply.CreateReply("reply");

reply.ChannelData = JObject.Parse($"{{thread_ts:'{ts}'}}");
await context.PostAsync(reply);
Run Code Online (Sandbox Code Playgroud)

这不适合我.

c# slack botframework

7
推荐指数
1
解决办法
425
查看次数

团队通道1:1上的botframework集成了身份验证AAD

我想在团队频道上连接我的机器人,但我不知道如何确保仅在我们的域(组织)中使用它.

我已经测试了Azure Web App的(身份验证AAD),但它不适用于团队或网络聊天,因为端点不会重定向它.

我有测试来实现AUTH卡,但它不适用于团队.

注意:我正在使用botframework C#api BotBuilder 3.15.2.2

我看起来像其他"问": 微软团队为Bot Framework进行AAD身份验证

是否可以在MS团队的1:1聊天中访问自定义选项卡?

https://docs.microsoft.com/en-us/microsoftteams/platform/concepts/authentication/auth-flow-bot

https://docs.microsoft.com/en-us/microsoftteams/platform/concepts/authentication/auth-bot-AAD

https://docs.microsoft.com/en-us/microsoftteams/platform/concepts/authentication/authentication

https://tsmatz.wordpress.com/2016/09/06/microsoft-bot-framework-bot-with-authentication-and-signin-login/

真诚的,帕斯卡尔.

编辑:我已经实现了Adrian提取的解决方案,下面是一段在MessasController.cs(Post Function)上实现此功能的C#代码:注意==>为localhost使用添加访问权限

 //https://stackoverflow.com/questions/51090597/botframework-on-teams-channel-11-authentication-aad-integrated
 string tenantIdAAD = "";
 try
 {
     tenantIdAAD = activity.GetChannelData<TeamsChannelData>().Tenant.Id;
 }
 catch (Exception exception)
 {
     tenantIdAAD = "";
 }

 ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl));

 if ([AAD_TenantID].TenantIdAAD.Equals(tenantIdAAD) || activity.ServiceUrl.StartsWith("http://localhost") )
 {
     await Conversation.SendAsync(activity, () => new Dialogs.RootDialog().LogIfException());
 }
 else
 {
     await connector.Conversations.ReplyToActivityAsync(activity.CreateReply("Access Denied"));
 }
Run Code Online (Sandbox Code Playgroud)

c# azure-active-directory botframework microsoft-teams

7
推荐指数
1
解决办法
720
查看次数

Botbuilder SDK v4从组创建1:1对话

我正在尝试向在Microsoft Teams的频道中标记机器人的特定用户发送1:1 /私信.因为没有botbuilder-teams与botbuilder v4兼容,我想我必须自己实现这个功能.我知道主动消息,你可以使用adapter.continueConversation哪些正常,但adapter.createConversation没有.以下是我的一个对话框中的相关代码段:

let reference = TurnContext.getConversationReference(cx.activity);

await adapter.createConversation(reference, async (context) => {
    await context.sendActivity("Hello World!");
});
Run Code Online (Sandbox Code Playgroud)

botframework microsoft-teams

7
推荐指数
1
解决办法
270
查看次数