我正在研究一個可以預訂航班的機器人。我正在使用最新版本的bot框架(1.1),因爲這裏提供了suggested。連接LUIS對話框以形成對話框並映射正確的字段
你可以說「下週一預定我從阿姆斯特丹飛往波士頓的航班」。
現在,我配置LUIS與意圖「的bookFlight」在我的BOT我做了一個LuisDialog和FormDialog像這樣迴應:
[LuisIntent("BookFlight")]
public async Task Process(IDialogContext context, LuisResult result)
{
var form = new BookFlightForm();
var entities = new List<EntityRecommendation>(result.Entities);
var formDialog = new FormDialog<BookFlightForm>(form, BuildForm, FormOptions.PromptInStart, entities);
context.Call(formDialog, OnComplete);
}
[Serializable]
public class BookFlightForm
{
[Prompt("From which city do you want to leave from? {||}", AllowDefault = BoolDefault.True)]
[Describe("Location, example: Amsterdam")]
public string LocationFrom { get; set; }
[Prompt("To which city you want to fly to? {||}", AllowDefault = BoolDefault.True)]
[Describe("Location, example: Las Vegas")]
public string LocationTo { get; set; }
[Prompt("When do you want to leave? {||}", AllowDefault = BoolDefault.True)]
[Describe("Departure date, example: tomorrow, next week or any date like 12-06-2016")]
public DateTime DepartureDate { get; set; }
}
我從路易斯以下回應:
{
"intent": "BookFlight",
"score": 0.987034,
"actions": [
{
"triggered": true,
"name": "BookFlight",
"parameters": [
{
"name": "locationFrom",
"required": true,
"value": [
{
"entity": "amsterdam",
"type": "Flight::LocationFrom",
"score": 0.8548711
}
]
},
{
"name": "locationTo",
"required": true,
"value": [
{
"entity": "boston",
"type": "Flight::LocationTo",
"score": 0.962294638
}
]
},
{
"name": "departureDate",
"required": true,
"value": [
{
"entity": "next monday",
"type": "builtin.datetime.date",
"resolution":
{
"date": "2016-05-09"
}
}
]
}
]
}
]
}
問題
形式不充滿了來自LUIS正確的價值觀。所以機器人會要求您填寫您的出發地點,日期和您想要飛往的位置。但是這已經被LUIS描述。
什麼我試過到目前爲止
- 做了一個新的應用程序,沒有實體孩子,但與正確的實體名稱,沒有值填寫表格。
- 在運行時將實體的'類型'從'Flight :: LocationTo'重命名爲'LocationTo'等等。這有效,但它不適用於該日期。
- 使用正確的值預填充'BookFlightForm'的新實例,但機器人仍會詢問日期的值。
所以我有點困惑如何解決這個問題。我是否正確配置LUIS?我需要配置EntityRecognizer嗎? A LUIS entity attribute會很好。
希望你能幫助我!
快速的問題。你是如何在LUIS獲得這種出發日期結構的?您將它作爲自己的實體「departureDate」,但它也是「builtin.datetime.date」,這意味着您可以解析日期。 – Arcadia