我有一个简单的表格,
[Serializable]
class CreateNewLeadForm
{
public string FirstName;
public string LastName;
public static IForm<CreateNewLeadForm> BuildForm()
{
return new FormBuilder<CreateNewLeadForm>()
.Message("Lets create a New Lead")
.Field(nameof(FirstName))
.Field(nameof(LastName))
.Build();
}
};
Run Code Online (Sandbox Code Playgroud)
还有一个简单的对话框,
public class GreetDialog : IDialog<object>
{
public async Task StartAsync(IDialogContext context)
{
context.Wait(MessageReceivedAsync);
}
public async Task MessageReceivedAsync(IDialogContext context, IAwaitable<Message> argument)
{
context.Wait(MessageReceivedAsync);
}
}
Run Code Online (Sandbox Code Playgroud)
如何从主对话本身调用启动FormDialog?一般来说,我们如何在Dialog中开始新的对话框?
我正在尝试使用LUIS构建一个机器人,但它比我想象的要难得多.到目前为止,我已经设法创建我的LUIS应用程序并创建一个Intent和一个实体,我创建了一些似乎工作正常的话语.
然后我创建了我的机器人,并将它连接到路易斯.当我测试我的机器人时,它按预期工作.现在是有趣的部分.我想处理参数.在Luis上我向我的意图添加了一个动作:
如您所见,我添加了提示.我机器人中的代码目前看起来像这样:
/// <summary>
/// Tries to find the category
/// </summary>
/// <param name="result">The Luis result</param>
/// <param name="alarm"></param>
/// <returns></returns>
public string TryFindCategory(LuisResult result)
{
// Variable for the title
EntityRecommendation title;
// If we find our enenty, return it
if (result.TryFindEntity(PiiiCK.Category, out title))
return title.Entity;
// Default fallback
return null;
}
[LuisIntent("Choose category")]
public async Task ChooseCategory(IDialogContext context, LuisResult result)
{
// Get our category
var category = …Run Code Online (Sandbox Code Playgroud) 让机器人通过短信工作得很好.现在寻找检索用户在SMS对话中使用的电话号码的最佳方法.
看起来它应该非常简单(在原生的Twilio应用程序中很容易),但只是没有找到示例代码或使用C#库从Bot框架中获取它的方法.
我玩了一段关于Activity的ChannelData,但是它没有,或者我没有正确使用它.
任何指向相关文档或示例代码的指针都将非常有用!
我想将聊天控件嵌入到许多网站中,我想获取我嵌入的网站的Url,以便我的机器人可以获得与网站URL匹配的数据.但是,当我嵌入从WebChat生成的iframe时,我总是得到相同的ServiceUrl,那就是https://webchat.botframework.com/,它不是网站的Url,所以如何将聊天控件嵌入到任何网站中网站和我的机器人可以获取网站Url而不是WebChat或DirectLine的网址.
这是我尝试过的:直线聊天控制
我注意到,当我使用Bot框架模拟器测试我的僵尸程序时,它总是返回发件人的确切URL(如果是本地测试,它将返回http:// localhost:XXXX /).那我们怎么能这样做呢?
我正在通过使用FormFlow构建机器人来构建Coratana技能.我使用LUIS检测我的意图和实体,并将实体传递给我的FormFlow对话框.如果未填写一个或多个FormFlow字段,FormFlow对话框将提示用户填写缺少的信息,但不会说出此提示,仅显示在cortana屏幕上.FormFlow有没有办法说出提示?
在下面显示的屏幕截图中,提示"你需要机场班车吗?" 刚刚显示而没有说出来:
我的formFlow定义如下所示:
[Serializable]
public class HotelsQuery
{
[Prompt("Please enter your {&}")]
[Optional]
public string Destination { get; set; }
[Prompt("Near which Airport")]
[Optional]
public string AirportCode { get; set; }
[Prompt("Do you need airport shuttle?")]
public string DoYouNeedAirportShutle { get; set; }
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用自适应卡,将其添加到我的路易斯响应中,并遵循指南:https://docs.microsoft.com/en-us/bot-framework/dotnet/bot-builder-dotnet-add-富卡附件.
为什么我的按钮没有显示在我的机器人模拟器上?我错过了什么吗?看图:
我的代码:
[LuisIntent("Test")]
public async Task Test(IDialogContext context, LuisResult result)
{
Activity replyToConversation = (Activity)context.MakeMessage();
//Activity replyToConversation = message.CreateReply("Should go to conversation");
replyToConversation.Attachments = new List<Attachment>();
AdaptiveCard card = new AdaptiveCard();
// Add text to the card.
card.Body.Add(new TextBlock()
{
Text = "Adaptive Card design session",
Size = TextSize.Large,
Weight = TextWeight.Bolder
});
// Add text to the card.
card.Body.Add(new TextBlock()
{
Text = "Conf Room 112/3377 (10)"
});
// Add text to the card. …Run Code Online (Sandbox Code Playgroud) 我在微软团队上发布了我的机器人.现在我想要包含一个功能,用户可以将文件作为附件上传,bot会将其上传到blob存储,如何在bot框架中处理?
我正在使用MS bot生成器node.js SDK。在最近的更新之一之前,重试提示时,它正在向用户发送与重试提示相同的消息文本。
但是,现在它正在系统中发送默认文本消息,即“我听不懂,请重试”。但是,我希望重试提示始终与原始消息相同,并且如果可能的话,希望将其全局应用,这意味着我不想为发送给用户的每个提示自定义重试提示。
我一直在环顾四周,但找不到方法。
谢谢!
是否可以使用Bot Framework在FormDialog中更改Quit突击队的关键字?
我想在键入某个单词时抛出FormCanceledException(不使用英语作为语言).
如果我可以更改关键字,或者添加另一个与Quit相同的关键字,那将是完美的
我可以使用cURL来获得令牌,但是Postman还是没有运气。这是curl命令:
curl -X POST -H "Cache-Control: no-cache" -H "Content-Type: application/x-www-form-urlencoded" -d 'client_id=<your_id>&client_secret=<your_secret>&grant_type=client_credentials&scope=https%3A%2F%2Fapi.botframework.com%2F.default' 'https://login.microsoftonline.com/botframework.com/oauth2/v2.0/token'
Run Code Online (Sandbox Code Playgroud)
按照Microsoft官方文档中有关使用REST开发机器人的说明,我在Postman中发送了一个请求,要求获取oauth令牌以与机器人REST API配合使用。
这是我在Postman中的设置(正在使用Interceptor,因此我可以指定Host):
标头

身体

而且,这是响应:
{
"error": "invalid_scope",
"error_description": "AADSTS70011: The provided value for the input parameter 'scope'
is not valid. The scope https%3A%2F%2Fapi.botframework.com%2F.default is not valid.
\r\nTrace ID: 8b09d0ba-3ec0-4f15-9280-7527d46c1600\r\nCorrelation ID: 43b0fa8f-5b73-444c-
a1e4-9f3dd82c0d86\r\nTimestamp: 2017-05-30 22:17:05Z",
"error_codes": [70011],
"timestamp": "2017-05-30 22:17:05Z",
"trace_id": "8b09d0ba-3ec0-4f15-9280-7527d46c1600",
"correlation_id": "43b0fa8f-5b73-444c-a1e4-9f3dd82c0d86"
}
Run Code Online (Sandbox Code Playgroud)
有谁知道这是什么问题吗?我按照说明进行操作,并且确定客户端ID和机密ID是正确的。在此先感谢您的帮助!
我成功创建了我的意图.

创建intent后,LUIS应允许根据其文档发布应用程序.
为什么LUIS不允许发布我的申请?
我正在使用Microsoft Bot Framework开发一个聊天机器人,我最近将框架3.0升级到3.5.升级之前它工作正常,但现在
当用户向我的机器人发送消息时,他会收到欢迎消息.但是当用户响应时,bot再次发送欢迎消息.我怎样才能解决这个问题?这是代码.
private Activity HandleSystemMessage(Activity message)
{
if (message.Type == ActivityTypes.DeleteUserData)
{
// Implement user deletion here
// If we handle user deletion, return a real message
}
else if (message.Type == ActivityTypes.ContactRelationUpdate)
{
// Handle conversation state changes, like members being added and removed
// Use Activity.MembersAdded and Activity.MembersRemoved and Activity.Action for info
// Not available in all channels
}
else if (message.Type == ActivityTypes.ConversationUpdate)
{
// Handle conversation state changes, like members being added and removed …Run Code Online (Sandbox Code Playgroud) 我正在使用MS bot框架,我无法找到表单流中的枚举选项的自定义消息.我尝试过提示属性,但它不起作用.
我想要的是:bot将为用户显示如下选项:
1)是的,我想成为DayNinja!
2)不,我不想解锁流量来实现我的目标.
3)稍后,我将从基础开始
现在,我得到的是:"是","否","后来"
任何帮助将不胜感激谢谢!
