-
Notifications
You must be signed in to change notification settings - Fork 3
/
MessagesController.cs
75 lines (61 loc) · 2.61 KB
/
MessagesController.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
using System;
using System.Web.Http;
using System.Threading.Tasks;
using Microsoft.Bot.Connector;
using Microsoft.Bot.Builder.FormFlow;
using Microsoft.Bot.Builder.Dialogs;
using System.Web.Http.Description;
using System.Net.Http;
using System.Diagnostics;
using BotTranslator;
using BotTranslator.Services;
namespace Microsoft.Bot.Sample.PizzaBot
{
[BotAuthentication]
public class MessagesController : ApiController
{
/// <summary>
/// POST: api/Messages
/// receive a message from a user and send replies
/// </summary>
/// <param name="activity"></param>
[ResponseType(typeof(void))]
public virtual async Task<HttpResponseMessage> Post([FromBody] Activity activity)
{
TranslatorService.Instance.SetKey("[Your key here]");
if (activity != null)
{
if (activity.Text != null && activity.Text.ToLowerInvariant().Contains("command language"))
{
var t = activity.Text.ToLowerInvariant().Replace("command language", "");
t = t.Trim();
await TranslatorService.Instance.SetLanguage(activity, t);
ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl));
Activity reply =
activity.CreateReply(await TranslatorService.Instance.TranslateBack(activity,
"Your language preference has been set!"));
await connector.Conversations.ReplyToActivityAsync(reply);
}
else
{
await TranslatorService.Instance.TranslateIn(activity, true);
// one of these will have an interface and process it
switch (activity.GetActivityType())
{
case ActivityTypes.Message:
await Conversation.SendAsync(activity, () => new PizzaOrderDialog());
break;
case ActivityTypes.ConversationUpdate:
case ActivityTypes.ContactRelationUpdate:
case ActivityTypes.Typing:
case ActivityTypes.DeleteUserData:
default:
Trace.TraceError($"Unknown activity type ignored: {activity.GetActivityType()}");
break;
}
}
}
return new HttpResponseMessage(System.Net.HttpStatusCode.Accepted);
}
}
}