예제 #1
0
        public static async Task Resume(ConversationHistory history)
        {
            Activity message = null;

            Trace.TraceInformation($"Resuming  {history.PartitionKey} {history.PartitionKey}");
            try
            {
                message = JsonConvert.DeserializeObject <ConversationReference>(history.Conversation).GetPostToBotMessage();
                ConnectorClient client = new ConnectorClient(new Uri(message.ServiceUrl));

                using (ILifetimeScope scope = DialogModule.BeginLifetimeScope(Conversation.Container, message))
                {
                    IBotData botData = scope.Resolve <IBotData>();

                    await botData.LoadAsync(CancellationToken.None);

                    string todayDate = DateTime.UtcNow.ToShortDateString();
                    if (botData.ConversationData.GetValueOrDefault <string>("today") != todayDate)
                    {
                        botData.ConversationData.SetValue("today", todayDate);
                        await botData.FlushAsync(CancellationToken.None);

                        await botData.LoadAsync(CancellationToken.None);

                        IMessageActivity temp = message.CreateReply().AsMessageActivity();

                        IMessageActivity reply = await RootDialog.PostNewQuestion(botData.ConversationData, temp);

                        if (reply != null)
                        {
                            await client.Conversations.SendToConversationAsync((Activity)reply);
                        }

                        //flush dialog stack
                        await botData.FlushAsync(CancellationToken.None);
                    }
                }
            }
            catch (Exception ex)
            {
                Trace.TraceError($"Exception when resuming conversation {message.Conversation?.Id}", ex);
            }
        }
예제 #2
0
        public static void SaveConversation(IMessageActivity message)
        {
            Trace.TraceInformation($"SaveConversation { message.Conversation.Id}, { message.Conversation.Name}, { message.Conversation.IsGroup}; " +
                                   $"from: {message.From.Id}, {message.From.Name}; type: {message.Type}; channel: {message.ChannelId}");

            try
            {
                CloudTable table = GetTable();

                ConversationHistory conversation = new ConversationHistory(message);

                TableOperation insertOperation = TableOperation.InsertOrReplace(conversation);
                table.Execute(insertOperation);
            }
            catch (Exception ex)
            {
                Trace.TraceError("Exception when saving conversation", ex);
            }
        }