마이크로 소프트의 Luis + bot 프레임 워크와 놀아나는 나의 "좋은 타입 제공자가 될 것"이라는 느낌이 들리기 시작했다. 유감스럽게도 유형 제공자는 차별화 된 공용체를 출력 할 수 없습니다. 나는 다음과 같은 뭔가를 기대했다, 그러나 수 없습니다 :Microsoft의 Luis 용 F # Type Provider를 작성하는 좋은 방법은 무엇입니까?
type Luis = LuisProvider<@"LuisId",@"LuisPasskey">
let IntentMatcher Intent =
match intent with
| Luis.Intents.Greeting -> GreetingHandler()
| Luis.Intents.SetAlarm title startDate startTime -> AlarmHandler title startDate startTime
| _ -> CouldNotUnderstand()
루이스의 의도와 자신의 매개 변수를 API를 통해 사용할 수있는 모든 수 있습니다 참고로 typeProviderization
그들에게 훌륭한 후보자를 만드는 여기하는 인 예를 들어 C#을 봇에서 핸들러 (I 생각 청소기 될 수 있으며, F 번호에 안전 더 타입) :
public const string Entity_Alarm_Title = "builtin.alarm.title";
public const string Entity_Alarm_Start_Time = "builtin.alarm.start_time";
public const string Entity_Alarm_Start_Date = "builtin.alarm.start_date";
public const string DefaultAlarmWhat = "default";
[LuisIntent("builtin.intent.alarm.set_alarm")]
public async Task SetAlarm(IDialogContext context, LuisResult result)
{
EntityRecommendation title;
if (!result.TryFindEntity(Entity_Alarm_Title, out title))
{
title = new EntityRecommendation(type: Entity_Alarm_Title) { Entity = DefaultAlarmWhat };
}
EntityRecommendation date;
if (!result.TryFindEntity(Entity_Alarm_Start_Date, out date))
{
date = new EntityRecommendation(type: Entity_Alarm_Start_Date) { Entity = string.Empty };
}
EntityRecommendation time;
if (!result.TryFindEntity(Entity_Alarm_Start_Time, out time))
{
time = new EntityRecommendation(type: Entity_Alarm_Start_Time) { Entity = string.Empty };
}
var parser = new Chronic.Parser();
var span = parser.Parse(date.Entity + " " + time.Entity);
if (span != null)
{
var when = span.Start ?? span.End;
var alarm = new Alarm() { What = title.Entity, When = when.Value };
this.alarmByWhat[alarm.What] = alarm;
string reply = $"alarm {alarm} created";
await context.PostAsync(reply);
}
else
{
await context.PostAsync("could not find time for alarm");
}
context.Wait(MessageReceived);
}
어쨌든 질문은 : 더 많은 경험 건물 유형 공급자와 사람이 어떻게 할 수에서 좋은 아이디어를 가지고 ac 인 읽을 수있는 DSL을 구조화한다. 빌드가 가능한가?
토마스 당신은 스타입니다! 두 사람의 후자가 완벽하게 보인다 :) –