Fix Telegram inbound reply threading
This commit is contained in:
parent
6cd3fdc18f
commit
e4703c73d6
3 changed files with 55 additions and 1 deletions
|
|
@ -1577,7 +1577,9 @@ func (al *AgentLoop) processSystemMessage(
|
|||
UserMessage: fmt.Sprintf("[System: %s] %s", msg.SenderID, msg.Content),
|
||||
DefaultResponse: "Background task completed.",
|
||||
EnableSummary: false,
|
||||
SendResponse: true,
|
||||
// System messages are synthetic inbound events, so there is no delivery
|
||||
// callback chain from a channel send to feed assistant message IDs back.
|
||||
SendResponse: true,
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -708,6 +708,9 @@ func (c *TelegramChannel) handleMessage(ctx context.Context, message *telego.Mes
|
|||
"first_name": user.FirstName,
|
||||
"is_group": fmt.Sprintf("%t", message.Chat.Type != "private"),
|
||||
}
|
||||
if message.ReplyToMessage != nil {
|
||||
metadata["reply_to_message_id"] = fmt.Sprintf("%d", message.ReplyToMessage.MessageID)
|
||||
}
|
||||
|
||||
// Set parent_peer metadata for per-topic agent binding.
|
||||
if message.Chat.IsForum && threadID != 0 {
|
||||
|
|
|
|||
|
|
@ -686,6 +686,21 @@ func TestHandleMessage_EmptyContent_Ignored(t *testing.T) {
|
|||
From: &telego.User{
|
||||
ID: 789,
|
||||
FirstName: "User",
|
||||
=======
|
||||
msg := &telego.Message{
|
||||
Text: "reply in group",
|
||||
MessageID: 30,
|
||||
Chat: telego.Chat{
|
||||
ID: -100999,
|
||||
Type: "supergroup",
|
||||
},
|
||||
From: &telego.User{
|
||||
ID: 10,
|
||||
FirstName: "Dana",
|
||||
},
|
||||
ReplyToMessage: &telego.Message{
|
||||
MessageID: 25,
|
||||
>>>>>>> 7b6328f (Fix Telegram inbound reply threading)
|
||||
},
|
||||
}
|
||||
|
||||
|
|
@ -699,3 +714,37 @@ func TestHandleMessage_EmptyContent_Ignored(t *testing.T) {
|
|||
default:
|
||||
}
|
||||
}
|
||||
|
||||
func TestHandleMessage_ReplyToMessageID_Preserved(t *testing.T) {
|
||||
messageBus := bus.NewMessageBus()
|
||||
ch := &TelegramChannel{
|
||||
BaseChannel: channels.NewBaseChannel("telegram", nil, messageBus, nil),
|
||||
chatIDs: make(map[string]int64),
|
||||
ctx: context.Background(),
|
||||
}
|
||||
|
||||
msg := &telego.Message{
|
||||
Text: "reply in group",
|
||||
MessageID: 30,
|
||||
Chat: telego.Chat{
|
||||
ID: -100999,
|
||||
Type: "supergroup",
|
||||
},
|
||||
From: &telego.User{
|
||||
ID: 10,
|
||||
FirstName: "Dana",
|
||||
},
|
||||
ReplyToMessage: &telego.Message{
|
||||
MessageID: 25,
|
||||
},
|
||||
}
|
||||
|
||||
err := ch.handleMessage(context.Background(), msg)
|
||||
require.NoError(t, err)
|
||||
|
||||
inbound, ok := <-messageBus.InboundChan()
|
||||
require.True(t, ok)
|
||||
assert.Equal(t, "30", inbound.MessageID)
|
||||
assert.Equal(t, "25", inbound.ReplyToMessageID)
|
||||
assert.Equal(t, "25", inbound.Metadata["reply_to_message_id"])
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue