2016-07-18 3 views
4

저는 C# .NET/LUIS 용 Microsoft의 Bot Framework/Bot Builder를 사용하여 테스트 봇을 구축하고 있습니다. Azure에 배포됩니다. 내 테스트 프로젝트에 대한 아이디어는 사용자에게 알림을 보내는 것입니다.Microsoft Bot Framework + C#에서 작업을 예약하는 방법?

예를 들어, 사용자가 "우유를 사기 위해 2 시간 후에 알림"이라고 말하면 사용자는 2 시간 이내에 대화를 시작하거나 기존 대화에 답장을 보내야합니다.

LUIS를 사용하여 날짜와 작업에 자연어를 구문 분석하는 데 아무런 문제가 없습니다. 그러나 프레임 워크가 어떻게 든 나중에 사용자에게 회신을 보내도록 작업을 예약하는 방법을 알지 못합니다.

문서를 읽고 https://docs.botframework.com/en-us/csharp/builder/sdkreference/에서 예제를 확인하고 StackOverflow에서 검색했지만 프레임 워크가 지원하지 않는 것으로 보입니다. 나는 Azure Scheduler를 살펴 봤지만, 봇이 단지 하나의 예약 된 작업을 가진 100 명의 사용자 만 가질지라도 엄청나게 비싸다.

봇이 지정된 시간에 사용자에게 메시지를 보내도록 작업을 예약하는 다른 방법은 무엇입니까?

답변

16

그래서 내가 제대로 이해한다면, 귀하의 질문에 두 부분을 포함한다 : 대화 버전 3.0에서

을 시작하는 방법

1. MS는 (그룹을 새로운 대화를 시작하는 새로운 방법을 도입 또는 1 대 1). 참조 : https://docs.botframework.com/en-us/csharp/builder/sdkreference/routing.html#conversation

샘플 코드 :

var connector = new ConnectorClient(incomingMessage.ServiceUrl); 
var ConversationId = await connector.Conversations.CreateDirectConversationAsync(incomingMessage.Recipient, incomingMessage.From); 
IMessageActivity message = Activity.CreateMessageActivity(); 
message.From = botChannelAccount; 
message.Recipient = new ChannelAccount() { name: "Larry", "id":"@UV357341"}; 
message.Conversation = new ConversationAccount(id: ConversationId.Id); 
message.Text = "Hello"; 
message.Locale = "en-Us"; 
var reply = await connector.Conversations.ReplyToActivityAsync(message); 

2. 그 일을 여러 가지 방법이 있습니다

, 외부 큐 서비스, 푸른 웹 작업을 사용할 수 있습니다 작업을 예약하는 방법, 웹 역할을 사용하거나 ASP.NET 자체에 등록하려고합니다.

Hangfire (http://hangfire.io/)는 내 봇용입니다.

코드 샘플 :

BackgroundJob.Schedule(
() => TriggerConversation(), // <= the start conversation code here 
TimeSpan.FromDays(1)); // <= when the job should be ran 
+0

무료 버전을 사용하고 있습니까? –

+1

@AlokRajasukumaran : 무료 버전을 사용 중입니다. –

+0

어떻게 할 수 있습니까? –

1

Quartz.NET은 작업 예약을위한 대중적인 해결책이 될 것으로 보인다. Azure의 데이터베이스에 저장할 수 있습니다.

+0

이렇게하는 방법에 대한 데모 코드를 제공해 줄 수 있습니까? –

+0

구현을 제공하면 좋을까요? –

관련 문제