MicrosoftDocs / msteams-docs

Source for the Microsoft Teams developer platform documentation.
https://aka.ms/teamsdev
Creative Commons Attribution 4.0 International
281 stars 502 forks source link

TeamsFxBotCommandHandler excludes uploaded files from context.activity.attachments when the filename contains "+" and upload from device option is selected #11466

Open ChetanSharma-msft opened 1 month ago

ChetanSharma-msft commented 1 month ago

Steps to reproduce

Copied bug from: https://github.com/OfficeDev/teams-toolkit/issues/9366

Details from original post: Describe the bug

If a file contains the "+" character in its name it will not have an entry in context.activity.attachments.

I have validated this behaviour with the following file types:

.txt .pdf .js I have also confirmed that:

A single "+" with or without surrounding spaces will cause the bug. The onMessage handler of TeamsActivityHandler is also affected by the same bug. Submitting the same file through the "Attach Cloud Files" option works - using OneDrive. The "+" looks to be encoded as "%2B" in the contentUrl. To Reproduce Steps to reproduce the behavior:

Use the Command and Response sample. Inside manifest.json, set bots.supportsFiles to true. Inside HelloWorldCommandHandler > handleCommandReceived, add the following line: console.log(context.activity.attachments) It may also help to place a breakpoint on this line. Create a text file called "test1.txt", add some contents (they are irrelevant). Copy the previous text file and put a "+" somewhere in the name e.g. "test+1.txt" or "test + 1.txt". Run the sample. Upload the first text file (without the "+" in the name). select the from this device option, and enter a test message in the chat window (the message is irrelevant), send the message. Note that attachments contains two elements (the message and the attached file). Upload the second text file (with the "+" in the name), select the from this device option, and enter a test message in the chat window (the message is irrelevant), send the message. Note that the attachments array only contains a single element (the message). Expected behavior The uploaded file to be present in turn.activity.attachments regardless of which option is used to attach it to the message.

Screenshots Upload from device options (default): image

Upload from device behaviour: image

Attach cloud file options (default): image

Attach Cloud files behaviour: image

VS Code Extension Information (please complete the following information):

OS: Windows 11 Enterprise Version VS Code: v1.80, Teams Toolkit v5.0.1, Node: v18.17.0, CLI Information (please complete the following information):

OS: Windows 11 Enterprise Version @microsoft/teamsfx v2.2.0 Additional context package.json

{ "name": "TeamsToolkitTutorialCommandBot", "version": "1.0.0", "description": "Microsoft Teams Toolkit Command and Response Bot Sample", "engines": { "node": "16 || 18" }, "author": "Microsoft", "license": "MIT", "main": "./lib/index.js", "scripts": { "dev:teamsfx": "env-cmd --silent -f .localConfigs npm run dev", "dev": "nodemon --watch ./src --exec node --inspect=9239 --signal SIGINT -r ts-node/register ./src/index.ts", "build": "tsc --build && shx cp -r ./src/adaptiveCards ./lib/src", "start": "node ./lib/src/index.js", "watch": "nodemon --watch ./src --exec \"npm run start\"", "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { "type": "git", "url": "https://github.com" }, "dependencies": { "@azure/identity": "^3.2.3", "@microsoft/teamsfx": "^2.2.0", "@types/axios": "^0.14.0", "axios": "^1.4.0", "botbuilder": "^4.18.0", "openai": "^3.3.0", "pdfjs-dist": "^3.8.162", "restify": "^10.0.0" }, "devDependencies": { "@types/node": "^14.18.54", "@types/restify": "^8.5.5", "env-cmd": "^10.1.0", "nodemon": "^2.0.7", "shx": "^0.3.4", "ts-node": "^10.4.0", "typescript": "^4.9.5" } } /

Expected behavior

NA

Actual behavior

NA

Error details

No response

Nivedipa-MSFT commented 1 month ago

@BeigeBadger - Thanks for reporting your issue. We are able to repro your issue. We have raised a bug for the same. We will update you once we get any update on it.