This repository has been archived by the owner on Dec 4, 2023. It is now read-only.
Using TranscriptLoggerMiddleware breaks Bot on Azure Infrastructure #139
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The TranscriptLoggerMiddleware works on the Emulator, but fails when run
on Azure Infrastructure. This is caused by the invalid modification of
the incoming Activity. While outgoing activities are cloned before they
are modified, the incoming activity is modified in place.
The modifications then create invalid data leading to this JSON fragment
for reply activities:
The role key in the properties subobject should not be there and while
the second role entry should indeed be set, it should be set to a
string, not an object. This results in a http 400 status from the bot
framework:
While adding the role information to the from property of the activity
is convenient, it should not modify the incoming activity.
To fix this, the incoming activity is cloned before it is modified, as
the outgoing activity also lacks the role information, the update of the
role attribute is applied to both types. In addition the correct
atttribute is updated for the role information.