Comments (4)
After an intense search in other projects, I have found the solution to my problem.
When a file is uploaded to a private room, the content of that file is encrypted. Once downloaded, it is necessary to decrypt it using external libraries.
Here I show an example code to decrypt files from Matrix:
@match_event(File)
async def file_skill(self, event):
try:
data_in_bytes = await event.get_file_bytes()
content = event.raw_event['content']
if ('file' in content):
# The file is encoded
file_data = event.raw_event['content']['file']
data_in_bytes = crypto.attachments.decrypt_attachment(
data_in_bytes,
file_data["key"]["k"],
file_data["hashes"]["sha256"],
file_data["iv"],
)
return data_in_bytes.decode('utf-8')
except BaseException as e:
logging.error(e)
return None
In my opinion, this information should be added to the connectors documentation.
If anyone has any comments, fell free to post it. Otherwise, this issue can be closed.
from opsdroid.
Thanks for figuring this one out and providing the code to decrypt the attachment. We should definitely add this to the connector so it's transparent to the skills.
from opsdroid.
Hi there, was wondering if this has been done and if not if I could be assigned to it? I am a first time contributor so I might ask a few questions about it if I get stuck. Thanks and looking forward to hearing back!
from opsdroid.
@Cadair just in case I needed to mention you :)
from opsdroid.
Related Issues (20)
- Docker build failing in CI
- Rasa intents multilanguage support
- Opsdroid exits with a weird error when Rasa is not reachable
- [maybe Matrix related] constraints.py, line 34, in constraint_callback 'NoneType' object has no attribute 'connector' HOT 2
- [Feature request] I would like to configure matchers through configuration.yaml
- Handle rate limits in slack connector method`search_history_messages`
- Idea for connector HOT 3
- Help with configure file HOT 4
- [python upgrade request]upgrade python to 3.11 HOT 4
- latency issue with multi-workspace slack channel
- Two Matrix connector tests fail on 'main' branch HOT 3
- Matrix connector is not correctly ignoring messages before the bot starts
- Putting room_ids in the matrix connector rooms config doesn't work
- Does opsdroid support respond to a message which is only visible to the user only? HOT 4
- Telegram Get Chat Id Issue
- Failed to change default editor for Windows HOT 1
- Opsdroid does not install with python 3.12 HOT 1
- Does opsdroid support GovSlack HOT 1
- Please implement back off for matrix sync retries HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from opsdroid.