Skip to content

Commit d83c7fb

Browse files
authored
Merge pull request #97 from hchen2020/master
Fix FileRepository bug.
2 parents 692f6b7 + 2b57a14 commit d83c7fb

File tree

7 files changed

+37
-34
lines changed

7 files changed

+37
-34
lines changed

src/Infrastructure/BotSharp.Abstraction/Conversations/ConversationCompletionHookBase.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public IConversationCompletionHook SetChatCompletion(IChatCompletion chatComplet
4141
return this;
4242
}
4343

44-
public virtual Task OnStateLoaded(ConversationState state, Action<Agent, string>? onAgentSwitched = null)
44+
public virtual Task OnStateLoaded(ConversationState state, Action<Agent>? onAgentSwitched = null)
4545
{
4646
return Task.CompletedTask;
4747
}

src/Infrastructure/BotSharp.Abstraction/Conversations/IConversationCompletionHook.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public interface IConversationCompletionHook
1717
IChatCompletion ChatCompletion { get; }
1818
IConversationCompletionHook SetChatCompletion(IChatCompletion chatCompletion);
1919

20-
Task OnStateLoaded(ConversationState state, Action<Agent, string>? onAgentSwitched = null);
20+
Task OnStateLoaded(ConversationState state, Action<Agent>? onAgentSwitched = null);
2121
Task BeforeCompletion();
2222
Task OnFunctionExecuting(string name, string args);
2323
Task AfterCompletion(RoleDialogModel message);

src/Infrastructure/BotSharp.Core/Conversations/Services/ConversationService.cs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using BotSharp.Abstraction.Conversations;
12
using BotSharp.Abstraction.Conversations.Models;
23
using BotSharp.Abstraction.Functions;
34
using BotSharp.Abstraction.Knowledges.Models;
@@ -118,9 +119,20 @@ public async Task<bool> SendMessage(string agentId, string conversationId, List<
118119
{
119120
var agent = await _services.GetRequiredService<IAgentService>()
120121
.GetAgent(agentId);
121-
122+
122123
var converation = await GetConversation(conversationId);
123124

125+
// Create conversation if this conversation not exists
126+
if (converation == null)
127+
{
128+
var sess = new Conversation
129+
{
130+
Id = conversationId,
131+
AgentId = agentId
132+
};
133+
converation = await NewConversation(sess);
134+
}
135+
124136
// load state
125137
var stateService = _services.GetRequiredService<IConversationStateService>();
126138
var state = stateService.Load(conversationId);
@@ -149,11 +161,7 @@ public async Task<bool> SendMessage(string agentId, string conversationId, List<
149161
.SetDialogs(wholeDialogs)
150162
.SetChatCompletion(chatCompletion);
151163

152-
await hook.OnStateLoaded(state, onAgentSwitched: (x, prompt) =>
153-
{
154-
agent = x;
155-
wholeDialogs.Add(new RoleDialogModel("user", prompt));
156-
});
164+
await hook.OnStateLoaded(state, onAgentSwitched: x => agent = x);
157165
await hook.BeforeCompletion();
158166
}
159167

src/Infrastructure/BotSharp.Core/Repository/FileRepository.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,12 @@ public IQueryable<ConversationRecord> Conversation
101101
_conversations = new List<ConversationRecord>();
102102
foreach (var d in Directory.GetDirectories(dir))
103103
{
104-
var json = File.ReadAllText(Path.Combine(d, "conversation.json"));
105-
_conversations.Add(JsonSerializer.Deserialize<ConversationRecord>(json, _options));
104+
var path = Path.Combine(d, "conversation.json");
105+
if (File.Exists(path))
106+
{
107+
var json = File.ReadAllText(path);
108+
_conversations.Add(JsonSerializer.Deserialize<ConversationRecord>(json, _options));
109+
}
106110
}
107111
return _conversations.AsQueryable();
108112
}

src/Plugins/BotSharp.Plugin.AzureOpenAI/Providers/ChatCompletionProvider.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,10 @@ public async Task<bool> GetChatCompletionsAsync(Agent agent, List<RoleDialogMode
130130

131131
_logger.LogInformation(message.Content);
132132

133-
await onMessageReceived(new RoleDialogModel(ChatRole.Assistant.ToString(), message.Content));
133+
if (!string.IsNullOrEmpty(message.Content))
134+
{
135+
await onMessageReceived(new RoleDialogModel(ChatRole.Assistant.ToString(), message.Content));
136+
}
134137

135138
return true;
136139
}

src/Plugins/BotSharp.Plugin.ChatbotUI/ChatbotUiController.cs

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -66,18 +66,6 @@ public async Task SendMessage([FromBody] OpenAiMessageInput input)
6666

6767
var conversationService = _services.GetRequiredService<IConversationService>();
6868

69-
// Check if this conversation exists
70-
var converation = await conversationService.GetConversation(input.ConversationId);
71-
if(converation == null)
72-
{
73-
var sess = new Conversation
74-
{
75-
Id = input.ConversationId,
76-
AgentId = input.AgentId
77-
};
78-
converation = await conversationService.NewConversation(sess);
79-
}
80-
8169
var result = await conversationService.SendMessage(input.AgentId,
8270
input.ConversationId,
8371
conversations,

src/Plugins/BotSharp.Plugin.MetaMessenger/Controllers/WebhookController.cs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public async Task<ActionResult<WebhookResponse>> Messages([FromRoute] string age
6767
var conv = _services.GetRequiredService<IConversationService>();
6868

6969
string content = "";
70-
var sessionId = req.Entry[0].Messaging[0].Sender.Id;
70+
var senderId = req.Entry[0].Messaging[0].Sender.Id;
7171
var input = req.Entry[0].Messaging[0].Message.Text;
7272

7373
var setting = _services.GetRequiredService<MetaMessengerSetting>();
@@ -78,38 +78,38 @@ public async Task<ActionResult<WebhookResponse>> Messages([FromRoute] string age
7878
};
7979

8080
// Marking seen
81-
/*await messenger.SendMessage(setting.ApiVersion, setting.PageId, new SendingMessageRequest
81+
await messenger.SendMessage(setting.ApiVersion, setting.PageId, new SendingMessageRequest
8282
{
8383
AccessToken = setting.PageAccessToken,
84-
Recipient = JsonSerializer.Serialize(new { Id = sessionId }, jsonOpt),
84+
Recipient = JsonSerializer.Serialize(new { Id = senderId }, jsonOpt),
8585
SenderAction = SenderActionEnum.MarkSeen
86-
});*/
86+
});
8787

8888
// Typing on
8989
await messenger.SendMessage(setting.ApiVersion, setting.PageId, new SendingMessageRequest
9090
{
9191
AccessToken = setting.PageAccessToken,
92-
Recipient = JsonSerializer.Serialize(new { Id = sessionId }, jsonOpt),
92+
Recipient = JsonSerializer.Serialize(new { Id = senderId }, jsonOpt),
9393
SenderAction = SenderActionEnum.TypingOn
9494
});
9595

9696
// Go to LLM
97-
var result = await conv.SendMessage(agentId, sessionId, new RoleDialogModel("user", input), async msg =>
97+
var result = await conv.SendMessage(agentId, senderId, new RoleDialogModel("user", input), async msg =>
9898
{
9999
content = msg.Content;
100100
}, async fn =>
101101
{
102-
await messenger.SendMessage(setting.ApiVersion, setting.PageId, new SendingMessageRequest
102+
/*await messenger.SendMessage(setting.ApiVersion, setting.PageId, new SendingMessageRequest
103103
{
104104
AccessToken = setting.PageAccessToken,
105105
Recipient = JsonSerializer.Serialize(new { Id = sessionId }, jsonOpt),
106106
Message = JsonSerializer.Serialize(new { Text = "I'm pulling the relevent information, please wait a second ..." }, jsonOpt)
107-
});
107+
});*/
108108

109109
await messenger.SendMessage(setting.ApiVersion, setting.PageId, new SendingMessageRequest
110110
{
111111
AccessToken = setting.PageAccessToken,
112-
Recipient = JsonSerializer.Serialize(new { Id = sessionId }, jsonOpt),
112+
Recipient = JsonSerializer.Serialize(new { Id = senderId }, jsonOpt),
113113
SenderAction = SenderActionEnum.TypingOn
114114
});
115115
});
@@ -118,15 +118,15 @@ public async Task<ActionResult<WebhookResponse>> Messages([FromRoute] string age
118118
await messenger.SendMessage(setting.ApiVersion, setting.PageId, new SendingMessageRequest
119119
{
120120
AccessToken = setting.PageAccessToken,
121-
Recipient = JsonSerializer.Serialize(new { Id = sessionId }, jsonOpt),
121+
Recipient = JsonSerializer.Serialize(new { Id = senderId }, jsonOpt),
122122
Message = JsonSerializer.Serialize(new { Text = content }, jsonOpt)
123123
});
124124

125125
// Typing off
126126
await messenger.SendMessage(setting.ApiVersion, setting.PageId, new SendingMessageRequest
127127
{
128128
AccessToken = setting.PageAccessToken,
129-
Recipient = JsonSerializer.Serialize(new { Id = sessionId }, jsonOpt),
129+
Recipient = JsonSerializer.Serialize(new { Id = senderId }, jsonOpt),
130130
SenderAction = SenderActionEnum.TypingOff
131131
});
132132
}

0 commit comments

Comments
 (0)