From d40ce81a3d4284848aa24274d04d767282516a0c Mon Sep 17 00:00:00 2001 From: T3chC0wb0y Date: Fri, 24 Apr 2026 15:19:08 -0500 Subject: [PATCH] fix(msteams): send threaded replies via replyToId --- nanobot/channels/msteams.py | 3 +-- tests/test_msteams.py | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/nanobot/channels/msteams.py b/nanobot/channels/msteams.py index 427b35f8c..fc25f2fbb 100644 --- a/nanobot/channels/msteams.py +++ b/nanobot/channels/msteams.py @@ -220,7 +220,6 @@ class MSTeamsChannel(BaseChannel): token = await self._get_access_token() base_url = f"{ref.service_url.rstrip('/')}/v3/conversations/{ref.conversation_id}/activities" use_thread_reply = self.config.reply_in_thread and bool(ref.activity_id) - url = f"{base_url}/{ref.activity_id}" if use_thread_reply else base_url headers = { "Authorization": f"Bearer {token}", "Content-Type": "application/json", @@ -233,7 +232,7 @@ class MSTeamsChannel(BaseChannel): payload["replyToId"] = ref.activity_id try: - resp = await self._http.post(url, headers=headers, json=payload) + resp = await self._http.post(base_url, headers=headers, json=payload) resp.raise_for_status() logger.info("MSTeams message sent to {}", ref.conversation_id) except Exception as e: diff --git a/tests/test_msteams.py b/tests/test_msteams.py index f5597c38d..b4ed59092 100644 --- a/tests/test_msteams.py +++ b/tests/test_msteams.py @@ -371,7 +371,7 @@ async def test_get_access_token_uses_configured_tenant(make_channel): @pytest.mark.asyncio -async def test_send_replies_to_activity_when_reply_in_thread_enabled(make_channel): +async def test_send_posts_to_conversation_with_reply_to_id_when_reply_in_thread_enabled(make_channel): ch = make_channel(replyInThread=True) fake_http = FakeHttpClient() ch._http = fake_http @@ -387,7 +387,7 @@ async def test_send_replies_to_activity_when_reply_in_thread_enabled(make_channe assert len(fake_http.calls) == 1 url, kwargs = fake_http.calls[0] - assert url == "https://smba.trafficmanager.net/amer/v3/conversations/conv-123/activities/activity-1" + assert url == "https://smba.trafficmanager.net/amer/v3/conversations/conv-123/activities" assert kwargs["headers"]["Authorization"] == "Bearer tok" assert kwargs["json"]["text"] == "Reply text" assert kwargs["json"]["replyToId"] == "activity-1"