Beispiel #1
0
        public async Task MessageReceivedAsync(IDialogContext context, IAwaitable <IMessageActivity> argument)
        {
            var message   = await argument;
            var testReply = new TestBotCSharp.TestReply(context);
            var reply     = await testReply.CreateMessage((Activity)message);

            if (reply != null)
            {
                await context.PostAsync(reply);
            }

            //Dump payload if requested:
            var dumpReply = testReply.DumpMessage((Activity)message, reply);

            if (dumpReply != null)
            {
                await context.PostAsync(dumpReply);
            }

            //if we had a reply, we handled simple message so wait:
            if (reply != null)
            {
                context.Wait(MessageReceivedAsync);
            }
        }
Beispiel #2
0
        /// <summary>
        /// POST: api/Messages
        /// Receive a message from a user and reply to it
        /// </summary>
        public async Task <HttpResponseMessage> Post([FromBody] Activity activity)
        {
            ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl));
            Activity        reply     = null;
            Activity        dumpReply = null;

            TestBotReply testReply = null;

            if (activity.Type == ActivityTypes.Message || activity.Type == ActivityTypes.Invoke)
            {
                if (true)
                {
                    await Conversation.SendAsync(activity, () => new TestBotDialog());
                }
                else
                {
                    testReply = new TestBotCSharp.TestReply(connector);
                    reply     = await testReply.CreateMessage(activity);

                    dumpReply = testReply.DumpMessage(activity, reply);
                }
            }
            else
            {
                testReply = new TestBotCSharp.SystemReply(connector);
                reply     = await testReply.CreateMessage(activity);
            }

            if (reply != null)
            {
                if (reply.Conversation == null)
                {
                    ConversationParameters conversationParams = testReply.GetConversationParameters();

                    await connector.Conversations.CreateConversationAsync(conversationParams);

                    if (dumpReply != null)
                    {
                        await connector.Conversations.ReplyToActivityAsync(dumpReply);
                    }
                }
                else if (reply.Conversation.Id != activity.Conversation.Id)
                {
                    await connector.Conversations.SendToConversationAsync(reply);

                    if (dumpReply != null)
                    {
                        await connector.Conversations.SendToConversationAsync(dumpReply);
                    }
                }
                else
                {
                    await connector.Conversations.ReplyToActivityAsync(reply);

                    if (dumpReply != null)
                    {
                        await connector.Conversations.ReplyToActivityAsync(dumpReply);
                    }
                }
            }


            var response = Request.CreateResponse(HttpStatusCode.OK);

            return(response);
        }