Microsoft Bot Framework, Luis 및 Google Calendar를 사용하여 LUIS가 자신의 밥을 결정하게 만들고 싶습니다.
18428 단어 LUISBotFrameworkGoogleCalendarbot
gloops AdventCalendar 12일차
gloops advent calendar 12 일째입니다
생일입니다
집에 빨리 돌아와 케이크를 먹을 예정이 이런 시간이 되었습니다.
11일째는 @m_nabeta씨의 「지금까지 세상에 보내 버리고 나중에 맹성 한 파이썬 패턴」이었습니다.
좋아요가 많이 붙었습니다.
저는 웹 애플리케이션 엔지니어인 Mgr을 하고 있고 평소 코드를 만질 기회가 적고,
다이어트를 하고 있으므로, 양쪽 모두를 채워 주는 취미 어플리케이션 작성하고 있습니다.
아직 미완성이므로, 각각의 API 제휴 코드를 실어 드리겠습니다.
※ 아직 작성 중입니다. 업데이트에 따라 업데이트하겠습니다.
Google Calendar API
C#에서 특정 사용자의 GoogleCalendar 정보를 검색하려고했습니다.
GetGoogleAsync
public async Task<List<Calendar>> GetGoogleAsync(DateTime Today)
{
var CalendarList = new List<Calendar>();
try
{
const string calendarId = "取得したいカレンダーのID";
const string apiKey = "GoogleCalendarAPIで発行したAPIKey";
const string apiUrl = "https://www.googleapis.com/calendar/v3/calendars/" + calendarId + "/events?key=" + apiKey + "&singleEvents=true";
//スケジュールstartTime順 上限15件
var paramList = "orderBy=startTime&maxResults=15";
//日付のスタート設定
paramList += "&timeMin=" + Today.ToString("yyyy-MM-dd") + "T00:00:00%2b0900";
//日付のエンド設定
paramList += "&timeMax=" + Today.AddDays(1).ToString("yyyy-MM-dd") + "T00:00:00%2b0900";
var url = apiUrl + "&" + paramList;
var httpClient = new HttpClient();
var clientResponse = await httpClient.GetAsync(url);
//APIのデータを成形
CalendarList.AddRange(JsonConvert.DeserializeObject<GoogleCalendarList>(await clientResponse.Content.ReadAsStringAsync())
.items.Select(item => new Calendar
{
summary = item.summary,
start = item.start.dateTime == null ? new DateTime(1901, 1, 1) : DateTime.Parse(item.start.dateTime),
end = item.end.dateTime == null ? new DateTime(1901, 1, 1) : DateTime.Parse(item.end.dateTime)
}));
}
catch (AggregateException ex)
{
}
return CalendarList;
}
public class GoogleCalendarList
{
public GoogleCalendar[] items { get; set; }
}
public class GoogleCalendar
{
public string summary { get; set; }
public start start { get; set; }
public end end { get; set; }
}
public class start
{
public string dateTime { get; set; }
}
public class end
{
public string dateTime { get; set; }
}
public class Calendar
{
public string summary { get; set; }
public DateTime start { get; set; }
public DateTime end { get; set; }
}
참고 사이트) htp : // bg. 호 wdy ぃ 케 s. jp/엔트리/20120806/1344265078
BotFramework와 LUIS 간의 협력
야간 캘린더의 데이터를 취득하여 회식인지 여부 판정
Post
public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
{
if (activity.Type == ActivityTypes.Message || activity.Text.Contains("夜")){
var text = activity.Text;
var calendarList = await GetGoogleAsync();
var nightSchedule = "なし";
// 19時半以降の予定取得
var night = calendarList.FirstOrDefault(
x => x.start >= new DateTime(Today.Year, Today.Month, Today.Day, 19, 30, 0));
if (night?.summary != null)
nightSchedule = night.summary;
var baseurl = $"https://api.projectoxford.ai/luis/v2.0/apps/AppのId?subscription-key=AppのKey&q=";
var url = $"{baseurl + text}&verbose=true";
var httpClient = new HttpClient();
var clientResponse = await httpClient.GetAsync(url);
var content = await clientResponse.Content.ReadAsStringAsync();
// メッセージを返答
ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl));
Activity reply = activity.CreateReply(content);
await connector.Conversations.ReplyToActivityAsync(reply);
}
var response = Request.CreateResponse(HttpStatusCode.OK);
return response;
}
참고 사이트) htps : // 찢어졌다. jp/dml/ぅ이 s_1
LUIS 측 데이터 상황
LUIS 측에 Google 캘린더 데이터를 보낸 응답 데이터
꽤 정확한 응답을 돌려줍니다.
송년회가 술집이 되거나 체육관이 왠지 술자리로 판정되기 때문에,
앞으로도 LUIS에게 학습시키고 싶습니다.
향후 구현 예정
・낮의 google 캘린더 데이터와 밤의 회식 상황을 가미해, 점심・밤 밥을 결정해 준다
요약
LUIS를 처음 사용해 보고, 육성시키고 싶다는 애착이 나왔습니다.
향후 교육을 계속해 실시해, 나의 컨디션 관리를 관리해 주는 아이에게 키워 가고 싶습니다.
Reference
이 문제에 관하여(Microsoft Bot Framework, Luis 및 Google Calendar를 사용하여 LUIS가 자신의 밥을 결정하게 만들고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/t_sudo_gloops/items/22999dc20acb127d9e7a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
C#에서 특정 사용자의 GoogleCalendar 정보를 검색하려고했습니다.
GetGoogleAsync
public async Task<List<Calendar>> GetGoogleAsync(DateTime Today)
{
var CalendarList = new List<Calendar>();
try
{
const string calendarId = "取得したいカレンダーのID";
const string apiKey = "GoogleCalendarAPIで発行したAPIKey";
const string apiUrl = "https://www.googleapis.com/calendar/v3/calendars/" + calendarId + "/events?key=" + apiKey + "&singleEvents=true";
//スケジュールstartTime順 上限15件
var paramList = "orderBy=startTime&maxResults=15";
//日付のスタート設定
paramList += "&timeMin=" + Today.ToString("yyyy-MM-dd") + "T00:00:00%2b0900";
//日付のエンド設定
paramList += "&timeMax=" + Today.AddDays(1).ToString("yyyy-MM-dd") + "T00:00:00%2b0900";
var url = apiUrl + "&" + paramList;
var httpClient = new HttpClient();
var clientResponse = await httpClient.GetAsync(url);
//APIのデータを成形
CalendarList.AddRange(JsonConvert.DeserializeObject<GoogleCalendarList>(await clientResponse.Content.ReadAsStringAsync())
.items.Select(item => new Calendar
{
summary = item.summary,
start = item.start.dateTime == null ? new DateTime(1901, 1, 1) : DateTime.Parse(item.start.dateTime),
end = item.end.dateTime == null ? new DateTime(1901, 1, 1) : DateTime.Parse(item.end.dateTime)
}));
}
catch (AggregateException ex)
{
}
return CalendarList;
}
public class GoogleCalendarList
{
public GoogleCalendar[] items { get; set; }
}
public class GoogleCalendar
{
public string summary { get; set; }
public start start { get; set; }
public end end { get; set; }
}
public class start
{
public string dateTime { get; set; }
}
public class end
{
public string dateTime { get; set; }
}
public class Calendar
{
public string summary { get; set; }
public DateTime start { get; set; }
public DateTime end { get; set; }
}
참고 사이트) htp : // bg. 호 wdy ぃ 케 s. jp/엔트리/20120806/1344265078
BotFramework와 LUIS 간의 협력
야간 캘린더의 데이터를 취득하여 회식인지 여부 판정
Post
public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
{
if (activity.Type == ActivityTypes.Message || activity.Text.Contains("夜")){
var text = activity.Text;
var calendarList = await GetGoogleAsync();
var nightSchedule = "なし";
// 19時半以降の予定取得
var night = calendarList.FirstOrDefault(
x => x.start >= new DateTime(Today.Year, Today.Month, Today.Day, 19, 30, 0));
if (night?.summary != null)
nightSchedule = night.summary;
var baseurl = $"https://api.projectoxford.ai/luis/v2.0/apps/AppのId?subscription-key=AppのKey&q=";
var url = $"{baseurl + text}&verbose=true";
var httpClient = new HttpClient();
var clientResponse = await httpClient.GetAsync(url);
var content = await clientResponse.Content.ReadAsStringAsync();
// メッセージを返答
ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl));
Activity reply = activity.CreateReply(content);
await connector.Conversations.ReplyToActivityAsync(reply);
}
var response = Request.CreateResponse(HttpStatusCode.OK);
return response;
}
참고 사이트) htps : // 찢어졌다. jp/dml/ぅ이 s_1
LUIS 측 데이터 상황
LUIS 측에 Google 캘린더 데이터를 보낸 응답 데이터
꽤 정확한 응답을 돌려줍니다.
송년회가 술집이 되거나 체육관이 왠지 술자리로 판정되기 때문에,
앞으로도 LUIS에게 학습시키고 싶습니다.
향후 구현 예정
・낮의 google 캘린더 데이터와 밤의 회식 상황을 가미해, 점심・밤 밥을 결정해 준다
요약
LUIS를 처음 사용해 보고, 육성시키고 싶다는 애착이 나왔습니다.
향후 교육을 계속해 실시해, 나의 컨디션 관리를 관리해 주는 아이에게 키워 가고 싶습니다.
Reference
이 문제에 관하여(Microsoft Bot Framework, Luis 및 Google Calendar를 사용하여 LUIS가 자신의 밥을 결정하게 만들고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/t_sudo_gloops/items/22999dc20acb127d9e7a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
{
if (activity.Type == ActivityTypes.Message || activity.Text.Contains("夜")){
var text = activity.Text;
var calendarList = await GetGoogleAsync();
var nightSchedule = "なし";
// 19時半以降の予定取得
var night = calendarList.FirstOrDefault(
x => x.start >= new DateTime(Today.Year, Today.Month, Today.Day, 19, 30, 0));
if (night?.summary != null)
nightSchedule = night.summary;
var baseurl = $"https://api.projectoxford.ai/luis/v2.0/apps/AppのId?subscription-key=AppのKey&q=";
var url = $"{baseurl + text}&verbose=true";
var httpClient = new HttpClient();
var clientResponse = await httpClient.GetAsync(url);
var content = await clientResponse.Content.ReadAsStringAsync();
// メッセージを返答
ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl));
Activity reply = activity.CreateReply(content);
await connector.Conversations.ReplyToActivityAsync(reply);
}
var response = Request.CreateResponse(HttpStatusCode.OK);
return response;
}
・낮의 google 캘린더 데이터와 밤의 회식 상황을 가미해, 점심・밤 밥을 결정해 준다
요약
LUIS를 처음 사용해 보고, 육성시키고 싶다는 애착이 나왔습니다.
향후 교육을 계속해 실시해, 나의 컨디션 관리를 관리해 주는 아이에게 키워 가고 싶습니다.
Reference
이 문제에 관하여(Microsoft Bot Framework, Luis 및 Google Calendar를 사용하여 LUIS가 자신의 밥을 결정하게 만들고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/t_sudo_gloops/items/22999dc20acb127d9e7a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Microsoft Bot Framework, Luis 및 Google Calendar를 사용하여 LUIS가 자신의 밥을 결정하게 만들고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/t_sudo_gloops/items/22999dc20acb127d9e7a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)