hallowed-lizard-35251
01/17/2024, 10:12 PMwide-oyster-38514
01/18/2024, 8:50 AMwide-oyster-38514
01/18/2024, 8:50 AMhallowed-lizard-35251
01/18/2024, 9:34 AMquick-musician-29561
01/18/2024, 11:07 AMhtml
<input type="file" id="textInput" accept=".txt">
but other file formats could be for example
html
<input type="file" id="textInput" accept=".txt, .doc, .docx, .odt, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/vnd.oasis.opendocument.text">
I've uploaded images and audio to Botpress before, but for that I used an external server. Our best option is to wait for the official Botpress feature for all these. Meanwhile, we can practice with home-made alternatives so that we're prepared when the feature arrives 🚀quick-musician-29561
01/18/2024, 11:38 AMhallowed-lizard-35251
01/18/2024, 12:16 PMquick-musician-29561
01/18/2024, 12:23 PMhallowed-lizard-35251
01/18/2024, 12:24 PMquick-musician-29561
01/18/2024, 12:30 PMquick-musician-29561
01/18/2024, 1:22 PMhallowed-lizard-35251
01/18/2024, 2:31 PMquick-musician-29561
01/18/2024, 3:35 PMquick-musician-29561
01/18/2024, 3:40 PMquick-musician-29561
01/18/2024, 3:43 PMquick-musician-29561
01/18/2024, 3:51 PMquick-musician-29561
01/18/2024, 4:37 PMquick-musician-29561
01/18/2024, 4:37 PMquick-musician-29561
01/18/2024, 4:38 PMquick-musician-29561
01/18/2024, 4:39 PMquick-musician-29561
01/18/2024, 4:40 PMquick-musician-29561
01/18/2024, 4:40 PMquick-musician-29561
01/18/2024, 4:41 PMquick-musician-29561
01/18/2024, 4:42 PMquick-musician-29561
01/18/2024, 7:25 PMquick-musician-29561
01/18/2024, 7:26 PMquick-musician-29561
01/18/2024, 7:26 PMquick-musician-29561
01/18/2024, 7:29 PMquick-musician-29561
01/18/2024, 7:37 PMhtml
<html>
<body>
<h1>
Upload Files
</h1>
<p>Upload image file</p>
<script src="https://cdn.botpress.cloud/webchat/v1/inject.js"></script>
<script>
// ADD YOUR CHATBOT CONFIG SCRIPT HERE
</script>
<input type="file" id="imageInput" accept="image/*">
<br><br>
<label for="imageInput">Username:</label>
<br>
<input type="text" id="name" name="nameInput" required>
<br><br>
<button id="submit">Submit</button>
<script>
const imageInput = document.getElementById('imageInput');
const submitButton = document.getElementById('submit');
let dataURL = null;
let imageName = null;
imageInput.addEventListener('change', function(event) {
var file = event.target.files[0];
var reader = new FileReader();
reader.onloadend = function() {
dataURL = reader.result;
imageName = file.name;
};
reader.readAsDataURL(file);
});
submitButton.addEventListener('click', function() {
const nameValue = document.getElementById('name').value;
if (dataURL) {
console.log('Image Name:', imageName);
window.botpressWebChat.sendPayload({
type: 'text',
text: "Here is my image",
payload: {
name: nameValue,
image: dataURL,
imageName: imageName
}
})
}
});
</script>
</body>
</html>
quick-musician-29561
01/18/2024, 7:39 PMquick-musician-29561
01/19/2024, 4:38 AMquick-musician-29561
01/19/2024, 4:41 AMquick-musician-29561
01/19/2024, 4:46 AMhtml
<html>
<head>
<title>Upload Images</title>
<script src="https://cdn.jsdelivr.net/npm/pica/dist/pica.min.js"></script>
<style>
body {
background-color: #a7bcb9;
}
</style>
</head>
Add your chatbot confiq script here (after you have published the chatbot)
html
<body>
<h1>
Upload Files
</h1>
<p>Upload image file</p>
<script src="https://cdn.botpress.cloud/webchat/v1/inject.js"></script>
<script>
// ADD YOUR CHATBOT CONFIG SCRIPT HERE
</script>
These let your users to select the image from their local computer, and then they can click a Submit button.
html
<input type="file" id="imageInput" accept="image/*">
<br><br>
<label for="imageInput">Username:</label>
<br>
<input type="text" id="name" name="nameInput" required>
<br><br>
<button id="submit">Submit</button>
quick-musician-29561
01/19/2024, 4:52 AMhtml
<script>
const imageInput = document.getElementById('imageInput');
const submitButton = document.getElementById('submit');
let dataURL = null;
let imageName = null;
this event listener reads the selected file, sets the canvas (image) smaller and reduces the file size
html
imageInput.addEventListener('change', function (event) {
var file = event.target.files[0];
var reader = new FileReader();
var img = new Image();
reader.onloadend = function () {
img.src = reader.result;
img.onload = function () {
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
canvas.width = img.width / 2;
canvas.height = img.height / 2;
pica().resize(img, canvas, {
quality: 3,
alpha: true,
unsharpAmount: 80,
unsharpRadius: 0.6,
unsharpThreshold: 2
}).then(function (result) {
return pica().toBlob(result, 'image/jpeg', 0.90);
}).then(function (blob) {
var resizedReader = new FileReader();
resizedReader.onloadend = function () {
dataURL = resizedReader.result;
imageName = file.name;
console.log(dataURL)
};
resizedReader.readAsDataURL(blob);
});
};
};
reader.readAsDataURL(file);
});
quick-musician-29561
01/19/2024, 4:53 AMhtml
submitButton.addEventListener('click', function () {
const nameValue = document.getElementById('name').value;
if (dataURL) {
console.log('Image Name:', imageName);
window.botpressWebChat.sendPayload({
type: 'text',
text: "Here is my image",
payload: {
name: nameValue,
image: dataURL,
imageName: imageName
}
})
}
});
</script>
</body>
</html>
quick-musician-29561
01/19/2024, 5:12 AMjs
let { name, image, imageName, blob } = event.payload.payload
workflow.name = name
workflow.image = image
workflow.imageName = imageName
workflow.blob = blob
We can then display the image (uploaded by the user from their local computer) using Image card, because now it's in the correct URL format.quick-musician-29561
01/19/2024, 5:56 AMquick-musician-29561
01/19/2024, 7:05 AMhallowed-lizard-35251
01/19/2024, 12:19 PMquick-musician-29561
01/19/2024, 1:09 PMquick-musician-29561
01/19/2024, 1:23 PMquick-musician-29561
01/19/2024, 1:33 PMquick-musician-29561
01/19/2024, 2:13 PMhallowed-lizard-35251
01/19/2024, 2:17 PMquick-musician-29561
01/19/2024, 2:30 PM