-1
사용자로부터받은 간단한 작업 수행 방법에 대한 쿼리입니다. 예 : 합계, 나누기, 곱하기.Bot Framework에서 사용자가 입력 한 변수를 처리하는 방법
저는 초보자입니다. 질문의 단순함으로 인해 미안합니다.
미리 감사드립니다.
사용자로부터받은 간단한 작업 수행 방법에 대한 쿼리입니다. 예 : 합계, 나누기, 곱하기.Bot Framework에서 사용자가 입력 한 변수를 처리하는 방법
저는 초보자입니다. 질문의 단순함으로 인해 미안합니다.
미리 감사드립니다.
여기에 수학 연산자를 수행 할 수있는 봇의 예가 나와 있습니다. 이 예제에서는 컨텍스트 개체에서 멀티 턴 봇, 제안 된 동작 및 데이터베이스 ConversationData
을 사용하는 방법을 보여줍니다. 솔직히 질문은 매우 형편 없었기 때문에 찾고자하는 바를 정확하게 말하기가 어려웠습니다. 이 GitHub Repo
에서 전체 프로젝트를 찾을 수 있습니다 MessagesController.cs
[BotAuthentication]
public class MessagesController : ApiController
{
public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
{
if (activity.Type == ActivityTypes.Message)
{
await Conversation.SendAsync(activity,() => new Dialogs.RootDialog());
}
else
{
HandleSystemMessage(activity);
}
var response = Request.CreateResponse(HttpStatusCode.OK);
return response;
}
private Activity HandleSystemMessage(Activity message)
{
if (message.Type == ActivityTypes.DeleteUserData)
{
}
else if (message.Type == ActivityTypes.ConversationUpdate)
{
IConversationUpdateActivity update = message;
var client = new ConnectorClient(new Uri(message.ServiceUrl), new MicrosoftAppCredentials());
if (update.MembersAdded != null && update.MembersAdded.Any())
{
foreach (var newMember in update.MembersAdded)
{
if (newMember.Id != message.Recipient.Id)
{
var reply = message.CreateReply();
reply.Text = "Please enter 2 numbers seperated by a space"; ;
client.Conversations.ReplyToActivityAsync(reply);
}
}
}
}
return null;
}
}
RootDialog.cs
[Serializable]
public class RootDialog : IDialog<object>
{
public Task StartAsync(IDialogContext context)
{
context.Wait(MessageReceivedAsync);
return Task.CompletedTask;
}
private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<object> result)
{
var activity = await result as Activity;
var reply = activity.CreateReply();
int a;
int b;
int[] numbers = new int[2];
bool success = false;
if (!activity.Text.Contains("Add") &&
!activity.Text.Contains("Subtract") &&
!activity.Text.Contains("Multiply") &&
!activity.Text.Contains("Divide"))
{
try
{
string[] strNumbers = activity.Text.Split(' ');
numbers[0] = Convert.ToInt32(strNumbers[0]);
numbers[1] = Convert.ToInt32(strNumbers[1]);
context.ConversationData.SetValue("numbers", numbers);
reply.Text = "please select an operation";
}
catch (Exception e)
{
reply.Text = "Try again, Please enter 2 numbers seperated by a space";
await context.PostAsync(reply);
return;
}
reply.SuggestedActions = new SuggestedActions()
{
Actions = new List<CardAction>()
{
new CardAction() {Title = "Add", Type = ActionTypes.PostBack, Value = "Add"},
new CardAction() {Title = "Subtract", Type = ActionTypes.PostBack, Value = "Subtract"},
new CardAction() {Title = "Multiply", Type = ActionTypes.PostBack, Value = "Multiply"},
new CardAction() {Title = "Divide", Type = ActionTypes.PostBack, Value = "Divide"}
}
};
}
else if (activity.Text.Contains("Add") ||
activity.Text.Contains("Subtract") ||
activity.Text.Contains("Multiply") ||
activity.Text.Contains("Divide"))
{
numbers =context.ConversationData.GetValue<int[]>("numbers");
a = numbers[0];
b = numbers[1];
switch (activity.Text)
{
case "Add":
reply.Text = Sum(a, b).ToString();
success = true;
break;
case "Subtract":
reply.Text = Difference(a, b).ToString();
success = true;
break;
case "Multiply":
reply.Text = Product(a, b).ToString();
success = true;
break;
case "Divide":
reply.Text = Quotient(a, b).ToString();
success = true;
break;
}
}
await context.PostAsync(reply);
if (success)
{
await context.PostAsync("To try it again please enter 2 numbers separated by a space");
}
context.Wait(MessageReceivedAsync);
}
private int Sum(int a, int b)
{
return a + b;
}
private int Difference(int a, int b)
{
return a - b;
}
private int Product(int a, int b)
{
return a * b;
}
private double Quotient(int a, int b)
{
return (double)a/(double)b;
}
}
I 좋겠 간단 작업하고보다 약간 쉽게로서, 첫 번째 작업에 "Hello World"를 얻을 구축 할 실례가 있습니다. http://aihelpwebsite.com/Blog/EntryId/6/Creating-a-Hello-World-Bot-Using-The-Microsoft-Bot-Framework –
이 테스트는 이미 끝났지 만 2 데이터 처리를 그것이 어떻게 작동하는지보십시오. 이 작업을 수행하는 방법을 알고 계십니까? 미리 감사드립니다. –